first commit
authorIan Weller <ian@gaslightmedia.com>
Mon, 17 Apr 2017 18:39:49 +0000 (14:39 -0400)
committerIan Weller <ian@gaslightmedia.com>
Mon, 17 Apr 2017 18:39:49 +0000 (14:39 -0400)
First commit for River Boat theme.

523 files changed:
.gitignore [new file with mode: 0644]
Gruntfile.js [new file with mode: 0644]
README.md [new file with mode: 0644]
archive.php [new file with mode: 0644]
assets/1920 x 370.jpg [new file with mode: 0644]
assets/Social-Icons-Set-color.png [new file with mode: 0644]
assets/adress-icon.png [new file with mode: 0644]
assets/arrow-left.jpg [new file with mode: 0644]
assets/arrow-right.jpg [new file with mode: 0644]
assets/block-image-wine-grapes.jpg [new file with mode: 0644]
assets/general.jpg [new file with mode: 0644]
assets/header-images-1.jpg [new file with mode: 0644]
assets/header-images-2.jpg [new file with mode: 0644]
assets/header-images-3.jpg [new file with mode: 0644]
assets/header-images-4.jpg [new file with mode: 0644]
assets/header-images-5.jpg [new file with mode: 0644]
assets/phone-icon.png [new file with mode: 0644]
assets/sample-blog-image.jpg [new file with mode: 0644]
assets/search_button.jpg [new file with mode: 0644]
assets/share-icon.png [new file with mode: 0644]
assets/social-icons-updated.png [new file with mode: 0644]
bower.json [new file with mode: 0644]
comments.php [new file with mode: 0644]
css/app.css [new file with mode: 0644]
css/app.css.map [new file with mode: 0644]
fancybox/lib/jquery.mousewheel-3.0.6.pack.js [new file with mode: 0644]
fancybox/source/blank.gif [new file with mode: 0644]
fancybox/source/fancybox_loading.gif [new file with mode: 0644]
fancybox/source/fancybox_loading@2x.gif [new file with mode: 0644]
fancybox/source/fancybox_overlay.png [new file with mode: 0644]
fancybox/source/fancybox_sprite.png [new file with mode: 0644]
fancybox/source/fancybox_sprite@2x.png [new file with mode: 0644]
fancybox/source/helpers/fancybox_buttons.png [new file with mode: 0644]
fancybox/source/helpers/jquery.fancybox-buttons.css [new file with mode: 0644]
fancybox/source/helpers/jquery.fancybox-buttons.js [new file with mode: 0644]
fancybox/source/helpers/jquery.fancybox-media.js [new file with mode: 0644]
fancybox/source/helpers/jquery.fancybox-thumbs.css [new file with mode: 0644]
fancybox/source/helpers/jquery.fancybox-thumbs.js [new file with mode: 0644]
fancybox/source/jquery.fancybox.css [new file with mode: 0644]
fancybox/source/jquery.fancybox.js [new file with mode: 0644]
fancybox/source/jquery.fancybox.pack.js [new file with mode: 0644]
fancybox/sprite.psd [new file with mode: 0644]
footer.php [new file with mode: 0644]
front-page.php [new file with mode: 0644]
functions.php [new file with mode: 0644]
header.php [new file with mode: 0644]
home.php [new file with mode: 0644]
index.php [new file with mode: 0644]
js/app.js [new file with mode: 0644]
js/custom/pageSetup.js [new file with mode: 0644]
js/dollarsign.js [new file with mode: 0644]
js/fastclick/lib/fastclick.js [new file with mode: 0644]
js/foundation/css/foundation.css.map [new file with mode: 0644]
js/foundation/css/normalize.css.map [new file with mode: 0644]
js/foundation/js/foundation.js [new file with mode: 0644]
js/foundation/js/foundation.min.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.abide.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.accordion.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.alert.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.clearing.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.dropdown.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.equalizer.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.interchange.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.joyride.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.magellan.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.offcanvas.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.orbit.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.reveal.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.slider.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.tab.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.tooltip.js [new file with mode: 0644]
js/foundation/js/foundation/foundation.topbar.js [new file with mode: 0644]
js/foundation/js/vendor/fastclick.js [new file with mode: 0644]
js/foundation/js/vendor/jquery.cookie.js [new file with mode: 0644]
js/foundation/js/vendor/jquery.js [new file with mode: 0644]
js/foundation/js/vendor/modernizr.js [new file with mode: 0644]
js/foundation/js/vendor/placeholder.js [new file with mode: 0644]
js/jquery-placeholder/jquery.placeholder.js [new file with mode: 0644]
js/jquery.cookie/jquery.cookie.js [new file with mode: 0644]
js/jquery/dist/core.js [new file with mode: 0644]
js/jquery/dist/jquery.js [new file with mode: 0644]
js/jquery/dist/jquery.min.js [new file with mode: 0644]
js/jquery/dist/jquery.min.map [new file with mode: 0644]
js/jquery/dist/jquery.slim.js [new file with mode: 0644]
js/jquery/dist/jquery.slim.min.js [new file with mode: 0644]
js/jquery/dist/jquery.slim.min.map [new file with mode: 0644]
js/jquery/external/sizzle/dist/sizzle.js [new file with mode: 0644]
js/jquery/external/sizzle/dist/sizzle.min.js [new file with mode: 0644]
js/jquery/external/sizzle/dist/sizzle.min.map [new file with mode: 0644]
js/jquery/src/ajax.js [new file with mode: 0644]
js/jquery/src/ajax/jsonp.js [new file with mode: 0644]
js/jquery/src/ajax/load.js [new file with mode: 0644]
js/jquery/src/ajax/parseJSON.js [new file with mode: 0644]
js/jquery/src/ajax/parseXML.js [new file with mode: 0644]
js/jquery/src/ajax/script.js [new file with mode: 0644]
js/jquery/src/ajax/var/location.js [new file with mode: 0644]
js/jquery/src/ajax/var/nonce.js [new file with mode: 0644]
js/jquery/src/ajax/var/rquery.js [new file with mode: 0644]
js/jquery/src/ajax/xhr.js [new file with mode: 0644]
js/jquery/src/attributes.js [new file with mode: 0644]
js/jquery/src/attributes/attr.js [new file with mode: 0644]
js/jquery/src/attributes/classes.js [new file with mode: 0644]
js/jquery/src/attributes/prop.js [new file with mode: 0644]
js/jquery/src/attributes/support.js [new file with mode: 0644]
js/jquery/src/attributes/val.js [new file with mode: 0644]
js/jquery/src/callbacks.js [new file with mode: 0644]
js/jquery/src/core.js [new file with mode: 0644]
js/jquery/src/core/DOMEval.js [new file with mode: 0644]
js/jquery/src/core/access.js [new file with mode: 0644]
js/jquery/src/core/init.js [new file with mode: 0644]
js/jquery/src/core/parseHTML.js [new file with mode: 0644]
js/jquery/src/core/ready-no-deferred.js [new file with mode: 0644]
js/jquery/src/core/ready.js [new file with mode: 0644]
js/jquery/src/core/readyException.js [new file with mode: 0644]
js/jquery/src/core/stripAndCollapse.js [new file with mode: 0644]
js/jquery/src/core/support.js [new file with mode: 0644]
js/jquery/src/core/var/rsingleTag.js [new file with mode: 0644]
js/jquery/src/css.js [new file with mode: 0644]
js/jquery/src/css/addGetHookIf.js [new file with mode: 0644]
js/jquery/src/css/adjustCSS.js [new file with mode: 0644]
js/jquery/src/css/curCSS.js [new file with mode: 0644]
js/jquery/src/css/defaultDisplay.js [new file with mode: 0644]
js/jquery/src/css/hiddenVisibleSelectors.js [new file with mode: 0644]
js/jquery/src/css/showHide.js [new file with mode: 0644]
js/jquery/src/css/support.js [new file with mode: 0644]
js/jquery/src/css/var/cssExpand.js [new file with mode: 0644]
js/jquery/src/css/var/getStyles.js [new file with mode: 0644]
js/jquery/src/css/var/isHidden.js [new file with mode: 0644]
js/jquery/src/css/var/isHiddenWithinTree.js [new file with mode: 0644]
js/jquery/src/css/var/rmargin.js [new file with mode: 0644]
js/jquery/src/css/var/rnumnonpx.js [new file with mode: 0644]
js/jquery/src/css/var/swap.js [new file with mode: 0644]
js/jquery/src/data.js [new file with mode: 0644]
js/jquery/src/data/Data.js [new file with mode: 0644]
js/jquery/src/data/var/acceptData.js [new file with mode: 0644]
js/jquery/src/data/var/dataPriv.js [new file with mode: 0644]
js/jquery/src/data/var/dataUser.js [new file with mode: 0644]
js/jquery/src/deferred.js [new file with mode: 0644]
js/jquery/src/deferred/exceptionHook.js [new file with mode: 0644]
js/jquery/src/deprecated.js [new file with mode: 0644]
js/jquery/src/dimensions.js [new file with mode: 0644]
js/jquery/src/effects.js [new file with mode: 0644]
js/jquery/src/effects/Tween.js [new file with mode: 0644]
js/jquery/src/effects/animatedSelector.js [new file with mode: 0644]
js/jquery/src/event.js [new file with mode: 0644]
js/jquery/src/event/ajax.js [new file with mode: 0644]
js/jquery/src/event/alias.js [new file with mode: 0644]
js/jquery/src/event/focusin.js [new file with mode: 0644]
js/jquery/src/event/support.js [new file with mode: 0644]
js/jquery/src/event/trigger.js [new file with mode: 0644]
js/jquery/src/exports/amd.js [new file with mode: 0644]
js/jquery/src/exports/global.js [new file with mode: 0644]
js/jquery/src/intro.js [new file with mode: 0644]
js/jquery/src/jquery.js [new file with mode: 0644]
js/jquery/src/manipulation.js [new file with mode: 0644]
js/jquery/src/manipulation/_evalUrl.js [new file with mode: 0644]
js/jquery/src/manipulation/buildFragment.js [new file with mode: 0644]
js/jquery/src/manipulation/getAll.js [new file with mode: 0644]
js/jquery/src/manipulation/setGlobalEval.js [new file with mode: 0644]
js/jquery/src/manipulation/support.js [new file with mode: 0644]
js/jquery/src/manipulation/var/rcheckableType.js [new file with mode: 0644]
js/jquery/src/manipulation/var/rscriptType.js [new file with mode: 0644]
js/jquery/src/manipulation/var/rtagName.js [new file with mode: 0644]
js/jquery/src/manipulation/wrapMap.js [new file with mode: 0644]
js/jquery/src/offset.js [new file with mode: 0644]
js/jquery/src/outro.js [new file with mode: 0644]
js/jquery/src/queue.js [new file with mode: 0644]
js/jquery/src/queue/delay.js [new file with mode: 0644]
js/jquery/src/selector-native.js [new file with mode: 0644]
js/jquery/src/selector-sizzle.js [new file with mode: 0644]
js/jquery/src/selector.js [new file with mode: 0644]
js/jquery/src/serialize.js [new file with mode: 0644]
js/jquery/src/traversing.js [new file with mode: 0644]
js/jquery/src/traversing/findFilter.js [new file with mode: 0644]
js/jquery/src/traversing/var/dir.js [new file with mode: 0644]
js/jquery/src/traversing/var/rneedsContext.js [new file with mode: 0644]
js/jquery/src/traversing/var/siblings.js [new file with mode: 0644]
js/jquery/src/var/ObjectFunctionString.js [new file with mode: 0644]
js/jquery/src/var/arr.js [new file with mode: 0644]
js/jquery/src/var/class2type.js [new file with mode: 0644]
js/jquery/src/var/concat.js [new file with mode: 0644]
js/jquery/src/var/document.js [new file with mode: 0644]
js/jquery/src/var/documentElement.js [new file with mode: 0644]
js/jquery/src/var/fnToString.js [new file with mode: 0644]
js/jquery/src/var/getProto.js [new file with mode: 0644]
js/jquery/src/var/hasOwn.js [new file with mode: 0644]
js/jquery/src/var/indexOf.js [new file with mode: 0644]
js/jquery/src/var/pnum.js [new file with mode: 0644]
js/jquery/src/var/push.js [new file with mode: 0644]
js/jquery/src/var/rcssNum.js [new file with mode: 0644]
js/jquery/src/var/rnothtmlwhite.js [new file with mode: 0644]
js/jquery/src/var/rnotwhite.js [new file with mode: 0644]
js/jquery/src/var/slice.js [new file with mode: 0644]
js/jquery/src/var/support.js [new file with mode: 0644]
js/jquery/src/var/toString.js [new file with mode: 0644]
js/jquery/src/wrap.js [new file with mode: 0644]
js/modernizr/feature-detects/a-download.js [new file with mode: 0644]
js/modernizr/feature-detects/audio-audiodata-api.js [new file with mode: 0644]
js/modernizr/feature-detects/audio-webaudio-api.js [new file with mode: 0644]
js/modernizr/feature-detects/battery-api.js [new file with mode: 0644]
js/modernizr/feature-detects/battery-level.js [new file with mode: 0644]
js/modernizr/feature-detects/blob-constructor.js [new file with mode: 0644]
js/modernizr/feature-detects/canvas-todataurl-type.js [new file with mode: 0644]
js/modernizr/feature-detects/contenteditable.js [new file with mode: 0644]
js/modernizr/feature-detects/contentsecuritypolicy.js [new file with mode: 0644]
js/modernizr/feature-detects/contextmenu.js [new file with mode: 0644]
js/modernizr/feature-detects/cookies.js [new file with mode: 0644]
js/modernizr/feature-detects/cors.js [new file with mode: 0644]
js/modernizr/feature-detects/css-backgroundposition-shorthand.js [new file with mode: 0644]
js/modernizr/feature-detects/css-backgroundposition-xy.js [new file with mode: 0644]
js/modernizr/feature-detects/css-backgroundrepeat.js [new file with mode: 0644]
js/modernizr/feature-detects/css-backgroundsizecover.js [new file with mode: 0644]
js/modernizr/feature-detects/css-boxsizing.js [new file with mode: 0644]
js/modernizr/feature-detects/css-calc.js [new file with mode: 0644]
js/modernizr/feature-detects/css-cubicbezierrange.js [new file with mode: 0644]
js/modernizr/feature-detects/css-displayrunin.js [new file with mode: 0644]
js/modernizr/feature-detects/css-displaytable.js [new file with mode: 0644]
js/modernizr/feature-detects/css-filters.js [new file with mode: 0644]
js/modernizr/feature-detects/css-hyphens.js [new file with mode: 0644]
js/modernizr/feature-detects/css-lastchild.js [new file with mode: 0644]
js/modernizr/feature-detects/css-mask.js [new file with mode: 0644]
js/modernizr/feature-detects/css-mediaqueries.js [new file with mode: 0644]
js/modernizr/feature-detects/css-objectfit.js [new file with mode: 0644]
js/modernizr/feature-detects/css-overflow-scrolling.js [new file with mode: 0644]
js/modernizr/feature-detects/css-pointerevents.js [new file with mode: 0644]
js/modernizr/feature-detects/css-positionsticky.js [new file with mode: 0644]
js/modernizr/feature-detects/css-regions.js [new file with mode: 0644]
js/modernizr/feature-detects/css-remunit.js [new file with mode: 0644]
js/modernizr/feature-detects/css-resize.js [new file with mode: 0644]
js/modernizr/feature-detects/css-scrollbars.js [new file with mode: 0644]
js/modernizr/feature-detects/css-shapes.js [new file with mode: 0644]
js/modernizr/feature-detects/css-subpixelfont.js [new file with mode: 0644]
js/modernizr/feature-detects/css-supports.js [new file with mode: 0644]
js/modernizr/feature-detects/css-userselect.js [new file with mode: 0644]
js/modernizr/feature-detects/css-vhunit.js [new file with mode: 0644]
js/modernizr/feature-detects/css-vmaxunit.js [new file with mode: 0644]
js/modernizr/feature-detects/css-vminunit.js [new file with mode: 0644]
js/modernizr/feature-detects/css-vwunit.js [new file with mode: 0644]
js/modernizr/feature-detects/custom-protocol-handler.js [new file with mode: 0644]
js/modernizr/feature-detects/dart.js [new file with mode: 0644]
js/modernizr/feature-detects/dataview-api.js [new file with mode: 0644]
js/modernizr/feature-detects/dom-classlist.js [new file with mode: 0644]
js/modernizr/feature-detects/dom-createElement-attrs.js [new file with mode: 0644]
js/modernizr/feature-detects/dom-dataset.js [new file with mode: 0644]
js/modernizr/feature-detects/dom-microdata.js [new file with mode: 0644]
js/modernizr/feature-detects/elem-datalist.js [new file with mode: 0644]
js/modernizr/feature-detects/elem-details.js [new file with mode: 0644]
js/modernizr/feature-detects/elem-output.js [new file with mode: 0644]
js/modernizr/feature-detects/elem-progress-meter.js [new file with mode: 0644]
js/modernizr/feature-detects/elem-ruby.js [new file with mode: 0644]
js/modernizr/feature-detects/elem-time.js [new file with mode: 0644]
js/modernizr/feature-detects/elem-track.js [new file with mode: 0644]
js/modernizr/feature-detects/emoji.js [new file with mode: 0644]
js/modernizr/feature-detects/es5-strictmode.js [new file with mode: 0644]
js/modernizr/feature-detects/event-deviceorientation-motion.js [new file with mode: 0644]
js/modernizr/feature-detects/exif-orientation.js [new file with mode: 0644]
js/modernizr/feature-detects/file-api.js [new file with mode: 0644]
js/modernizr/feature-detects/file-filesystem.js [new file with mode: 0644]
js/modernizr/feature-detects/forms-fileinput.js [new file with mode: 0644]
js/modernizr/feature-detects/forms-formattribute.js [new file with mode: 0644]
js/modernizr/feature-detects/forms-inputnumber-l10n.js [new file with mode: 0644]
js/modernizr/feature-detects/forms-placeholder.js [new file with mode: 0644]
js/modernizr/feature-detects/forms-speechinput.js [new file with mode: 0644]
js/modernizr/feature-detects/forms-validation.js [new file with mode: 0644]
js/modernizr/feature-detects/fullscreen-api.js [new file with mode: 0644]
js/modernizr/feature-detects/gamepad.js [new file with mode: 0644]
js/modernizr/feature-detects/getusermedia.js [new file with mode: 0644]
js/modernizr/feature-detects/ie8compat.js [new file with mode: 0644]
js/modernizr/feature-detects/iframe-sandbox.js [new file with mode: 0644]
js/modernizr/feature-detects/iframe-seamless.js [new file with mode: 0644]
js/modernizr/feature-detects/iframe-srcdoc.js [new file with mode: 0644]
js/modernizr/feature-detects/img-apng.js [new file with mode: 0644]
js/modernizr/feature-detects/img-webp.js [new file with mode: 0644]
js/modernizr/feature-detects/json.js [new file with mode: 0644]
js/modernizr/feature-detects/lists-reversed.js [new file with mode: 0644]
js/modernizr/feature-detects/mathml.js [new file with mode: 0644]
js/modernizr/feature-detects/network-connection.js [new file with mode: 0644]
js/modernizr/feature-detects/network-eventsource.js [new file with mode: 0644]
js/modernizr/feature-detects/network-xhr2.js [new file with mode: 0644]
js/modernizr/feature-detects/notification.js [new file with mode: 0644]
js/modernizr/feature-detects/performance.js [new file with mode: 0644]
js/modernizr/feature-detects/pointerlock-api.js [new file with mode: 0644]
js/modernizr/feature-detects/quota-management-api.js [new file with mode: 0644]
js/modernizr/feature-detects/requestanimationframe.js [new file with mode: 0644]
js/modernizr/feature-detects/script-async.js [new file with mode: 0644]
js/modernizr/feature-detects/script-defer.js [new file with mode: 0644]
js/modernizr/feature-detects/style-scoped.js [new file with mode: 0644]
js/modernizr/feature-detects/svg-filters.js [new file with mode: 0644]
js/modernizr/feature-detects/unicode.js [new file with mode: 0644]
js/modernizr/feature-detects/url-data-uri.js [new file with mode: 0644]
js/modernizr/feature-detects/userdata.js [new file with mode: 0644]
js/modernizr/feature-detects/vibration.js [new file with mode: 0644]
js/modernizr/feature-detects/web-intents.js [new file with mode: 0644]
js/modernizr/feature-detects/webgl-extensions.js [new file with mode: 0644]
js/modernizr/feature-detects/websockets-binary.js [new file with mode: 0644]
js/modernizr/feature-detects/window-framed.js [new file with mode: 0644]
js/modernizr/feature-detects/workers-blobworkers.js [new file with mode: 0644]
js/modernizr/feature-detects/workers-dataworkers.js [new file with mode: 0644]
js/modernizr/feature-detects/workers-sharedworkers.js [new file with mode: 0644]
js/modernizr/grunt.js [new file with mode: 0644]
js/modernizr/modernizr.js [new file with mode: 0644]
js/modernizr/modernizr.min.js [new file with mode: 0644]
js/modernizr/test/caniuse_files/ga.js [new file with mode: 0644]
js/modernizr/test/caniuse_files/jquery.min.js [new file with mode: 0644]
js/modernizr/test/caniuse_files/modernizr-1.7.min.js [new file with mode: 0644]
js/modernizr/test/js/dumpdata.js [new file with mode: 0644]
js/modernizr/test/js/lib/detect-global.js [new file with mode: 0644]
js/modernizr/test/js/lib/jquery-1.7b2.js [new file with mode: 0644]
js/modernizr/test/js/lib/jsonselect.js [new file with mode: 0644]
js/modernizr/test/js/lib/polyfills.js [new file with mode: 0644]
js/modernizr/test/js/lib/uaparser.js [new file with mode: 0644]
js/modernizr/test/js/setup.js [new file with mode: 0644]
js/modernizr/test/js/unit-caniuse.js [new file with mode: 0644]
js/modernizr/test/js/unit.js [new file with mode: 0644]
js/modernizr/test/qunit/qunit.js [new file with mode: 0644]
js/modernizr/test/qunit/run-qunit.js [new file with mode: 0644]
js/vmap/.editorconfig [new file with mode: 0644]
js/vmap/.eslintignore [new file with mode: 0644]
js/vmap/.eslintrc [new file with mode: 0644]
js/vmap/.github/PULL_REQUEST_TEMPLATE.md [new file with mode: 0644]
js/vmap/.gitignore [new file with mode: 0644]
js/vmap/CHANGELOG.md [new file with mode: 0644]
js/vmap/CONTRIBUTING.md [new file with mode: 0644]
js/vmap/LICENSE [new file with mode: 0644]
js/vmap/README.md [new file with mode: 0644]
js/vmap/REGIONS.md [new file with mode: 0644]
js/vmap/bower.json [new file with mode: 0644]
js/vmap/create/README.md [new file with mode: 0644]
js/vmap/create/config/.gitignore [new file with mode: 0644]
js/vmap/create/config/continent.json [new file with mode: 0644]
js/vmap/create/config/fr_regions_2016_mill.json [new file with mode: 0644]
js/vmap/create/config/new-york.json [new file with mode: 0644]
js/vmap/create/config/syria.json [new file with mode: 0644]
js/vmap/create/jqvmap.py [new file with mode: 0644]
js/vmap/create/output/.gitignore [new file with mode: 0644]
js/vmap/create/source/.gitignore [new file with mode: 0644]
js/vmap/dist/jquery.vmap.js [new file with mode: 0644]
js/vmap/dist/jquery.vmap.min.js [new file with mode: 0644]
js/vmap/dist/jqvmap.css [new file with mode: 0644]
js/vmap/dist/jqvmap.min.css [new file with mode: 0644]
js/vmap/dist/maps/continents/jquery.vmap.africa.js [new file with mode: 0644]
js/vmap/dist/maps/continents/jquery.vmap.asia.js [new file with mode: 0644]
js/vmap/dist/maps/continents/jquery.vmap.australia.js [new file with mode: 0644]
js/vmap/dist/maps/continents/jquery.vmap.europe.js [new file with mode: 0644]
js/vmap/dist/maps/continents/jquery.vmap.north-america.js [new file with mode: 0644]
js/vmap/dist/maps/continents/jquery.vmap.south-america.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.algeria.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.argentina.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.brazil.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.canada.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.europe.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.fr_regions_2016_mill.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.france.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.germany.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.greece.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.iran.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.iraq.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.russia.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.tunisia.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.turkey.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.usa.js [new file with mode: 0644]
js/vmap/dist/maps/jquery.vmap.world.js [new file with mode: 0644]
js/vmap/examples/algeria.html [new file with mode: 0644]
js/vmap/examples/argentina.html [new file with mode: 0644]
js/vmap/examples/brazil.html [new file with mode: 0644]
js/vmap/examples/continents.html [new file with mode: 0644]
js/vmap/examples/europe.html [new file with mode: 0644]
js/vmap/examples/france.html [new file with mode: 0644]
js/vmap/examples/germany.html [new file with mode: 0644]
js/vmap/examples/greece.html [new file with mode: 0644]
js/vmap/examples/images/background.png [new file with mode: 0644]
js/vmap/examples/images/flag.png [new file with mode: 0644]
js/vmap/examples/images/globe.png [new file with mode: 0644]
js/vmap/examples/images/marker/black.png [new file with mode: 0644]
js/vmap/examples/images/marker/blue.png [new file with mode: 0644]
js/vmap/examples/images/marker/green.png [new file with mode: 0644]
js/vmap/examples/images/marker/grey.png [new file with mode: 0644]
js/vmap/examples/images/marker/orange.png [new file with mode: 0644]
js/vmap/examples/images/marker/purple.png [new file with mode: 0644]
js/vmap/examples/images/marker/red.png [new file with mode: 0644]
js/vmap/examples/images/marker/white.png [new file with mode: 0644]
js/vmap/examples/images/marker/yellow.png [new file with mode: 0644]
js/vmap/examples/images/thumb.jpg [new file with mode: 0644]
js/vmap/examples/images/tip.png [new file with mode: 0644]
js/vmap/examples/inactive_regions.html [new file with mode: 0644]
js/vmap/examples/iran.html [new file with mode: 0644]
js/vmap/examples/iraq.html [new file with mode: 0644]
js/vmap/examples/js/jquery.vmap.sampledata.js [new file with mode: 0644]
js/vmap/examples/labels.html [new file with mode: 0644]
js/vmap/examples/mobile.html [new file with mode: 0644]
js/vmap/examples/multi.html [new file with mode: 0644]
js/vmap/examples/pins.html [new file with mode: 0644]
js/vmap/examples/pins_custom.html [new file with mode: 0644]
js/vmap/examples/responsive.html [new file with mode: 0644]
js/vmap/examples/russia.html [new file with mode: 0644]
js/vmap/examples/touch_detect.html [new file with mode: 0644]
js/vmap/examples/tunisia.html [new file with mode: 0644]
js/vmap/examples/turkey.html [new file with mode: 0644]
js/vmap/examples/usa.html [new file with mode: 0644]
js/vmap/examples/world.html [new file with mode: 0644]
js/vmap/grunt/bump.js [new file with mode: 0644]
js/vmap/grunt/changelog.js [new file with mode: 0644]
js/vmap/grunt/clean.js [new file with mode: 0644]
js/vmap/grunt/concat.js [new file with mode: 0644]
js/vmap/grunt/index.js [new file with mode: 0644]
js/vmap/grunt/qunit.js [new file with mode: 0644]
js/vmap/grunt/shell.js [new file with mode: 0644]
js/vmap/grunt/uglify.js [new file with mode: 0644]
js/vmap/gruntfile.js [new file with mode: 0644]
js/vmap/jquery-jvectormap-fr_regions_2016-mill.js [new file with mode: 0644]
js/vmap/package.json [new file with mode: 0644]
js/vmap/src/Base.js [new file with mode: 0644]
js/vmap/src/ColorScale.js [new file with mode: 0644]
js/vmap/src/ColorScale/arrayToRgb.js [new file with mode: 0644]
js/vmap/src/ColorScale/getColor.js [new file with mode: 0644]
js/vmap/src/ColorScale/rgbToArray.js [new file with mode: 0644]
js/vmap/src/ColorScale/setColors.js [new file with mode: 0644]
js/vmap/src/ColorScale/setMax.js [new file with mode: 0644]
js/vmap/src/ColorScale/setMin.js [new file with mode: 0644]
js/vmap/src/ColorScale/setNormalizeFunction.js [new file with mode: 0644]
js/vmap/src/ColorScale/vectorAdd.js [new file with mode: 0644]
js/vmap/src/ColorScale/vectorLength.js [new file with mode: 0644]
js/vmap/src/ColorScale/vectorMult.js [new file with mode: 0644]
js/vmap/src/ColorScale/vectorSubtract.js [new file with mode: 0644]
js/vmap/src/ColorScale/vectorToNum.js [new file with mode: 0644]
js/vmap/src/JQVMap.js [new file with mode: 0644]
js/vmap/src/JQVMap/applyTransform.js [new file with mode: 0644]
js/vmap/src/JQVMap/bindZoomButtons.js [new file with mode: 0644]
js/vmap/src/JQVMap/deselect.js [new file with mode: 0644]
js/vmap/src/JQVMap/getCountryId.js [new file with mode: 0644]
js/vmap/src/JQVMap/getPin.js [new file with mode: 0644]
js/vmap/src/JQVMap/getPinId.js [new file with mode: 0644]
js/vmap/src/JQVMap/getPins.js [new file with mode: 0644]
js/vmap/src/JQVMap/highlight.js [new file with mode: 0644]
js/vmap/src/JQVMap/isSelected.js [new file with mode: 0644]
js/vmap/src/JQVMap/makeDraggable.js [new file with mode: 0644]
js/vmap/src/JQVMap/placePins.js [new file with mode: 0644]
js/vmap/src/JQVMap/positionPins.js [new file with mode: 0644]
js/vmap/src/JQVMap/removePin.js [new file with mode: 0644]
js/vmap/src/JQVMap/removePins.js [new file with mode: 0644]
js/vmap/src/JQVMap/reset.js [new file with mode: 0644]
js/vmap/src/JQVMap/resize.js [new file with mode: 0644]
js/vmap/src/JQVMap/select.js [new file with mode: 0644]
js/vmap/src/JQVMap/selectIndex.js [new file with mode: 0644]
js/vmap/src/JQVMap/setBackgroundColor.js [new file with mode: 0644]
js/vmap/src/JQVMap/setColors.js [new file with mode: 0644]
js/vmap/src/JQVMap/setNormalizeFunction.js [new file with mode: 0644]
js/vmap/src/JQVMap/setScale.js [new file with mode: 0644]
js/vmap/src/JQVMap/setScaleColors.js [new file with mode: 0644]
js/vmap/src/JQVMap/setValues.js [new file with mode: 0644]
js/vmap/src/JQVMap/unhighlight.js [new file with mode: 0644]
js/vmap/src/JQVMap/zoomIn.js [new file with mode: 0644]
js/vmap/src/JQVMap/zoomOut.js [new file with mode: 0644]
js/vmap/src/VectorCanvas.js [new file with mode: 0644]
js/vmap/src/VectorCanvas/applyTransformParams.js [new file with mode: 0644]
js/vmap/src/VectorCanvas/createGroup.js [new file with mode: 0644]
js/vmap/src/VectorCanvas/createPath.js [new file with mode: 0644]
js/vmap/src/VectorCanvas/pathSvgToVml.js [new file with mode: 0644]
js/vmap/src/VectorCanvas/setSize.js [new file with mode: 0644]
js/vmap/tests/index.html [new file with mode: 0644]
js/vmap/tests/qunit/qunit.css [new file with mode: 0644]
js/vmap/tests/qunit/qunit.js [new file with mode: 0644]
js/vmap/tests/tests.js [new file with mode: 0644]
js/vmap/vmap.js [new file with mode: 0644]
lib/menu-walker.php [new file with mode: 0644]
lib/navigation.php [new file with mode: 0644]
nggallery/album-glmalbums.php [new file with mode: 0644]
nggallery/gallery-glmphotos-8.php [new file with mode: 0644]
nggallery/gallery-glmphotos-narrow.php [new file with mode: 0644]
nggallery/gallery-glmphotos.php [new file with mode: 0644]
nggallery/gallery-glmvideos.php [new file with mode: 0644]
package.json [new file with mode: 0644]
parts/blog-feed-front.php [new file with mode: 0644]
parts/blog-feed-home.php [new file with mode: 0644]
parts/blog-sidebar-r.php [new file with mode: 0644]
parts/bread-crumbs.php [new file with mode: 0644]
parts/client-info-footer.php [new file with mode: 0644]
parts/client-info-offcanvas.php [new file with mode: 0644]
parts/event-feed.php [new file with mode: 0644]
parts/glm-blocks.php [new file with mode: 0644]
parts/glm-carousel.php [new file with mode: 0644]
parts/glm-kitchen-sink.php [new file with mode: 0644]
parts/interactive-map.php [new file with mode: 0644]
parts/off-canvas-menu.php [new file with mode: 0644]
parts/search.php [new file with mode: 0644]
parts/shop-sidebar.php [new file with mode: 0644]
parts/slide-show.php [new file with mode: 0644]
parts/top-bar.php [new file with mode: 0644]
robots.txt [new file with mode: 0644]
screenshot.png [new file with mode: 0644]
scss/_blog.scss [new file with mode: 0644]
scss/_body.scss [new file with mode: 0644]
scss/_content.scss [new file with mode: 0644]
scss/_copyright.scss [new file with mode: 0644]
scss/_defaults.scss [new file with mode: 0644]
scss/_left-off-canvas.scss [new file with mode: 0644]
scss/_main.scss [new file with mode: 0644]
scss/_mixins.scss [new file with mode: 0644]
scss/_page.footer.scss [new file with mode: 0644]
scss/_page.header.scss [new file with mode: 0644]
scss/_page.wrapper.scss [new file with mode: 0644]
scss/_plugins.scss [new file with mode: 0644]
scss/_right-off-canvas.scss [new file with mode: 0644]
scss/_search.scss [new file with mode: 0644]
scss/_settings.scss [new file with mode: 0644]
scss/_shadow.wrapper.scss [new file with mode: 0644]
scss/_sidebar.scss [new file with mode: 0644]
scss/_slideshow.scss [new file with mode: 0644]
scss/_structure.scss [new file with mode: 0644]
scss/_topbar.scss [new file with mode: 0644]
scss/_wordpress.scss [new file with mode: 0644]
scss/admin/tinymce.css [new file with mode: 0644]
scss/app.scss [new file with mode: 0644]
scss/mixins/_gradient.scss [new file with mode: 0644]
scss/mixins/_off-canvas-arrow.scss [new file with mode: 0644]
scss/plugins/_gravityForms.scss [new file with mode: 0644]
scss/plugins/_nextgen.scss [new file with mode: 0644]
scss/plugins/_woocommerce.scss [new file with mode: 0644]
search.php [new file with mode: 0644]
sidebar.php [new file with mode: 0644]
single.php [new file with mode: 0644]
style.css [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..d39bac5
--- /dev/null
@@ -0,0 +1,3 @@
+*.DS_Store
+/bower_components/*
+/node_modules/*
\ No newline at end of file
diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644 (file)
index 0000000..81e263b
--- /dev/null
@@ -0,0 +1,85 @@
+module.exports = function(grunt) {
+  grunt.initConfig({
+    pkg: grunt.file.readJSON('package.json'),
+
+    sass: {
+      options: {
+        includePaths: ['bower_components/foundation/scss'],
+        sourceMap: false
+      },
+      dist: {
+        options: {
+          outputStyle: 'compressed'
+        },
+        files: {
+          'css/app.css': 'scss/app.scss'
+        }
+      }
+    },
+
+    copy: {
+      scripts: {
+        expand: true,
+        cwd: 'bower_components/',
+        src: '**/*.js',
+        dest: 'js'
+      },
+
+      maps: {
+        expand: true,
+        cwd: 'bower_components/',
+        src: '**/*.map',
+        dest: 'js'
+      }
+    },
+
+    uglify: {
+      dist: {
+        files: {
+          'js/modernizr/modernizr.min.js': ['js/modernizr/modernizr.js']
+        }
+      }
+    },
+
+    concat: {
+      options: {
+        separator: ';'
+      },
+      dist: {
+        src: [
+          'js/dollarsign.js',
+          'js/foundation/js/foundation.min.js',
+          'js/custom/*.js',
+        ],
+
+        dest: 'js/app.js'
+      }
+
+    },
+
+    watch: {
+      grunt: { files: ['Gruntfile.js'] },
+
+      sass: {
+        files: 'scss/**/*.{scss,sass}',
+        tasks: ['sass']
+      },
+
+      scripts: {
+          files: ['js/custom/*.js'],
+          tasks: ['concat', 'uglify']
+      }
+
+    }
+  });
+
+  grunt.loadNpmTasks('grunt-sass');
+  grunt.loadNpmTasks('grunt-contrib-watch');
+  grunt.loadNpmTasks('grunt-contrib-concat');
+  grunt.loadNpmTasks('grunt-contrib-copy');
+  grunt.loadNpmTasks('grunt-contrib-uglify');
+
+  grunt.registerTask('build', ['sass', 'copy', 'uglify', 'concat']);
+  grunt.registerTask('runwatch', ['sass','uglify', 'concat']);
+  grunt.registerTask('default', ['runwatch','watch']);
+}
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..bec84c1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+# Gaslight Media Foundation Template
+
+This is a template to start your own project that uses Grunt and libsass!
+
+## Requirements
+
+You'll need to have the following items installed before continuing.
+
+  * [Node.js](http://nodejs.org): Use the installer provided on the NodeJS website.
+  * [Grunt](http://gruntjs.com/): Run `[sudo] npm install -g grunt-cli`
+  * [Bower](http://bower.io): Run `[sudo] npm install -g bower`
+
+## Quickstart
+
+```bash
+npm install && bower install
+```
+
+While you're working on your project, run:
+
+`grunt`
+
+And you're set!
+
+## Directory Structure
+
+  * `scss/_settings.scss`: Foundation configuration settings go in here
+  * `scss/app.scss`: Application styles go here
diff --git a/archive.php b/archive.php
new file mode 100644 (file)
index 0000000..f0d80dd
--- /dev/null
@@ -0,0 +1,48 @@
+<?php get_header(); ?>
+<main class="blog-archive">
+    <div id="header-image" class="page-header">
+        <?php echo glm_get_header();?>
+    </div>
+    <div id="slide-cover"></div>
+    <div class="row">
+        
+     <div id="blog-posts-over" class="small-12 medium-9 columns">
+        <?php if(have_posts()) : while(have_posts()): the_post();?>
+        <?php $status =  get_post_status($post->ID); ?>
+        <div class="row content blog-posts-container">
+              <!--  <div class="small-11 small-centered columns"> -->
+              <?php 
+                    if (has_post_thumbnail()) {
+                        $thumbnail = get_the_post_thumbnail($post->ID, 'blog-feed-front'); ?>
+                <div class="small-12 medium-4 columns text-center blog-feed-imgs">
+                    <?php echo $thumbnail; ?>
+                </div>
+                <?php  echo '<div class="small-12 medium-8 small-centered columns right">';
+                    } else {
+                        echo '<div class="small-12 small-centered columns">';
+                    }
+                ?>
+                <article id="<?php the_ID()?>" <?php post_class()?>>
+                    <h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h2>
+                    <div class="blog-excerpt-date">
+                        Posted on <strong><?php the_time('F jS, Y'); ?></strong>
+                    </div>
+                    <?php echo the_advanced_excerpt('length=265&length_type=characters&no_custom=1&ellipsis=%26hellip;&exclude_tags=a,img,p,strong,h1,h2,h3,hr,div'); ?>
+                </article>
+
+            </div>
+        </div>
+        <?php endwhile; ?>
+        <div class="navigation">
+            <span class="newer"><?php previous_posts_link(__('« Newer','example')) ?></span>
+            <span class="older"><?php next_posts_link(__('Older »','example')) ?></span>
+        </div><!-- /.navigation -->
+        <?php else: ?>
+        <div id="post-404" class="noposts">
+            <p><?php _e('Sorry, no results were found.');?></p>
+        </div><!-- /#post-404 -->
+        <?php endif;?>
+    </div>
+    <?php get_template_part('parts/blog-sidebar-r'); ?>
+</div>
+<?php get_footer(); ?>
diff --git a/assets/1920 x 370.jpg b/assets/1920 x 370.jpg
new file mode 100644 (file)
index 0000000..6959a87
Binary files /dev/null and b/assets/1920 x 370.jpg differ
diff --git a/assets/Social-Icons-Set-color.png b/assets/Social-Icons-Set-color.png
new file mode 100644 (file)
index 0000000..5d8a188
Binary files /dev/null and b/assets/Social-Icons-Set-color.png differ
diff --git a/assets/adress-icon.png b/assets/adress-icon.png
new file mode 100644 (file)
index 0000000..4bbd03d
Binary files /dev/null and b/assets/adress-icon.png differ
diff --git a/assets/arrow-left.jpg b/assets/arrow-left.jpg
new file mode 100644 (file)
index 0000000..bc771d9
Binary files /dev/null and b/assets/arrow-left.jpg differ
diff --git a/assets/arrow-right.jpg b/assets/arrow-right.jpg
new file mode 100644 (file)
index 0000000..f248741
Binary files /dev/null and b/assets/arrow-right.jpg differ
diff --git a/assets/block-image-wine-grapes.jpg b/assets/block-image-wine-grapes.jpg
new file mode 100644 (file)
index 0000000..900e0b5
Binary files /dev/null and b/assets/block-image-wine-grapes.jpg differ
diff --git a/assets/general.jpg b/assets/general.jpg
new file mode 100644 (file)
index 0000000..7d9da8b
Binary files /dev/null and b/assets/general.jpg differ
diff --git a/assets/header-images-1.jpg b/assets/header-images-1.jpg
new file mode 100644 (file)
index 0000000..ac02980
Binary files /dev/null and b/assets/header-images-1.jpg differ
diff --git a/assets/header-images-2.jpg b/assets/header-images-2.jpg
new file mode 100644 (file)
index 0000000..15cca68
Binary files /dev/null and b/assets/header-images-2.jpg differ
diff --git a/assets/header-images-3.jpg b/assets/header-images-3.jpg
new file mode 100644 (file)
index 0000000..46a45a3
Binary files /dev/null and b/assets/header-images-3.jpg differ
diff --git a/assets/header-images-4.jpg b/assets/header-images-4.jpg
new file mode 100644 (file)
index 0000000..59677d2
Binary files /dev/null and b/assets/header-images-4.jpg differ
diff --git a/assets/header-images-5.jpg b/assets/header-images-5.jpg
new file mode 100644 (file)
index 0000000..bd2ac28
Binary files /dev/null and b/assets/header-images-5.jpg differ
diff --git a/assets/phone-icon.png b/assets/phone-icon.png
new file mode 100644 (file)
index 0000000..d8d2598
Binary files /dev/null and b/assets/phone-icon.png differ
diff --git a/assets/sample-blog-image.jpg b/assets/sample-blog-image.jpg
new file mode 100644 (file)
index 0000000..a0d2c0d
Binary files /dev/null and b/assets/sample-blog-image.jpg differ
diff --git a/assets/search_button.jpg b/assets/search_button.jpg
new file mode 100644 (file)
index 0000000..d705012
Binary files /dev/null and b/assets/search_button.jpg differ
diff --git a/assets/share-icon.png b/assets/share-icon.png
new file mode 100644 (file)
index 0000000..6df905d
Binary files /dev/null and b/assets/share-icon.png differ
diff --git a/assets/social-icons-updated.png b/assets/social-icons-updated.png
new file mode 100644 (file)
index 0000000..8e8007c
Binary files /dev/null and b/assets/social-icons-updated.png differ
diff --git a/bower.json b/bower.json
new file mode 100644 (file)
index 0000000..028481f
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "name": "foundation-libsass-template",
+  "dependencies": {
+    "foundation": "zurb/bower-foundation"
+  }
+}
diff --git a/comments.php b/comments.php
new file mode 100644 (file)
index 0000000..353cd14
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+/**
+ * The template for displaying comments
+ *
+ * The area of the page that contains both current comments
+ * and the comment form.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Fifteen
+ * @since Twenty Fifteen 1.0
+ */
+if ( ! function_exists( 'twentyfifteen_comment_nav' ) ) :
+/**
+ * Display navigation to next/previous comments when applicable.
+ *
+ * @since Twenty Fifteen 1.0
+ */
+function twentyfifteen_comment_nav() {
+    // Are there comments to navigate through?
+    if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) :
+?>
+<nav class="navigation comment-navigation" role="navigation">
+    <h2 class="screen-reader-text"><?php _e( 'Comment navigation', 'twentyfifteen' ); ?></h2>
+    <div class="nav-links">
+        <?php
+    if ( $prev_link = get_previous_comments_link( __( 'Older Comments', 'twentyfifteen' ) ) ) :
+    printf( '<div class="nav-previous">%s</div>', $prev_link );
+    endif;
+
+    if ( $next_link = get_next_comments_link( __( 'Newer Comments', 'twentyfifteen' ) ) ) :
+    printf( '<div class="nav-next">%s</div>', $next_link );
+    endif;
+        ?>
+    </div><!-- .nav-links -->
+</nav><!-- .comment-navigation -->
+<?php
+    endif;
+}
+endif;
+/*
+ * If the current post is protected by a password and
+ * the visitor has not yet entered the password we will
+ * return early without loading the comments.
+ */
+if ( post_password_required() ) {
+    return;
+}
+?>
+
+<div id="comments" class="comments-area">
+
+    <?php if ( have_comments() ) : ?>
+    <h2 class="comments-title">
+        <?php
+        printf( _nx( 'One thought on &ldquo;%2$s&rdquo;', '%1$s thoughts on &ldquo;%2$s&rdquo;', get_comments_number(), 'comments title', 'twentyfifteen' ),
+               number_format_i18n( get_comments_number() ), get_the_title() );
+        ?>
+    </h2>
+
+    <?php twentyfifteen_comment_nav(); ?>
+
+    <ol class="comment-list">
+        <?php
+        wp_list_comments( array(
+            'style'       => 'ol',
+            'short_ping'  => true,
+            'avatar_size' => 56,
+        ) );
+        ?>
+    </ol><!-- .comment-list -->
+
+    <?php twentyfifteen_comment_nav(); ?>
+
+    <?php endif; // have_comments() ?>
+
+    <?php
+    // If comments are closed and there are comments, let's leave a little note, shall we?
+    if ( ! comments_open() && get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) :
+    ?>
+    <p class="no-comments"><?php _e( 'Comments are closed.', 'twentyfifteen' ); ?></p>
+    <?php endif; ?>
+
+    <?php comment_form(
+    array(
+        'class_submit' => 'button'
+    )
+); ?>
+
+</div><!-- .comments-area -->
diff --git a/css/app.css b/css/app.css
new file mode 100644 (file)
index 0000000..97c72fb
--- /dev/null
@@ -0,0 +1 @@
+meta.foundation-version{font-family:"/5.5.3/"}meta.foundation-mq-small{font-family:"/only screen/";width:0em}meta.foundation-mq-small-only{font-family:"/only screen and (max-width: 40em)/";width:0em}meta.foundation-mq-medium{font-family:"/only screen and (min-width:40.063em)/";width:40.063em}meta.foundation-mq-medium-only{font-family:"/only screen and (min-width:40.063em) and (max-width:64em)/";width:40.063em}meta.foundation-mq-large{font-family:"/only screen and (min-width:64.063em)/";width:64.063em}meta.foundation-mq-large-only{font-family:"/only screen and (min-width:64.063em) and (max-width:90em)/";width:64.063em}meta.foundation-mq-xlarge{font-family:"/only screen and (min-width:90.063em)/";width:90.063em}meta.foundation-mq-xlarge-only{font-family:"/only screen and (min-width:90.063em) and (max-width:120em)/";width:90.063em}meta.foundation-mq-xxlarge{font-family:"/only screen and (min-width:120.063em)/";width:120.063em}meta.foundation-data-attribute-namespace{font-family:false}html,body{height:100%}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html,body{font-size:100%}body{background:#fff;color:#000000;cursor:auto;font-family:"Josefin Sans",sans-serif;font-style:normal;font-weight:normal;line-height:150%;margin:0;padding:0;position:relative}a:hover{cursor:pointer}img{max-width:100%;height:auto}img{-ms-interpolation-mode:bicubic}#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}.left{float:left !important}.right{float:right !important}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.hide{display:none}.invisible{visibility:hidden}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px}select{width:100%}.row{margin:0 auto;max-width:62.5rem;width:100%}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row.collapse .row{margin-left:0;margin-right:0}.row .row{margin:0 -0.9375rem;max-width:none;width:auto}.row .row:before,.row .row:after{content:" ";display:table}.row .row:after{clear:both}.row .row.collapse{margin:0;max-width:none;width:auto}.row .row.collapse:before,.row .row.collapse:after{content:" ";display:table}.row .row.collapse:after{clear:both}.column,.columns{padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left}.column+.column:last-child,.columns+.columns:last-child{float:right}.column+.column.end,.columns+.columns.end{float:left}@media only screen{.small-push-0{position:relative;left:0;right:auto}.small-pull-0{position:relative;right:0;left:auto}.small-push-1{position:relative;left:8.3333333333%;right:auto}.small-pull-1{position:relative;right:8.3333333333%;left:auto}.small-push-2{position:relative;left:16.6666666667%;right:auto}.small-pull-2{position:relative;right:16.6666666667%;left:auto}.small-push-3{position:relative;left:25%;right:auto}.small-pull-3{position:relative;right:25%;left:auto}.small-push-4{position:relative;left:33.3333333333%;right:auto}.small-pull-4{position:relative;right:33.3333333333%;left:auto}.small-push-5{position:relative;left:41.6666666667%;right:auto}.small-pull-5{position:relative;right:41.6666666667%;left:auto}.small-push-6{position:relative;left:50%;right:auto}.small-pull-6{position:relative;right:50%;left:auto}.small-push-7{position:relative;left:58.3333333333%;right:auto}.small-pull-7{position:relative;right:58.3333333333%;left:auto}.small-push-8{position:relative;left:66.6666666667%;right:auto}.small-pull-8{position:relative;right:66.6666666667%;left:auto}.small-push-9{position:relative;left:75%;right:auto}.small-pull-9{position:relative;right:75%;left:auto}.small-push-10{position:relative;left:83.3333333333%;right:auto}.small-pull-10{position:relative;right:83.3333333333%;left:auto}.small-push-11{position:relative;left:91.6666666667%;right:auto}.small-pull-11{position:relative;right:91.6666666667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.small-1{width:8.3333333333%}.small-2{width:16.6666666667%}.small-3{width:25%}.small-4{width:33.3333333333%}.small-5{width:41.6666666667%}.small-6{width:50%}.small-7{width:58.3333333333%}.small-8{width:66.6666666667%}.small-9{width:75%}.small-10{width:83.3333333333%}.small-11{width:91.6666666667%}.small-12{width:100%}.small-offset-0{margin-left:0 !important}.small-offset-1{margin-left:8.3333333333% !important}.small-offset-2{margin-left:16.6666666667% !important}.small-offset-3{margin-left:25% !important}.small-offset-4{margin-left:33.3333333333% !important}.small-offset-5{margin-left:41.6666666667% !important}.small-offset-6{margin-left:50% !important}.small-offset-7{margin-left:58.3333333333% !important}.small-offset-8{margin-left:66.6666666667% !important}.small-offset-9{margin-left:75% !important}.small-offset-10{margin-left:83.3333333333% !important}.small-offset-11{margin-left:91.6666666667% !important}.small-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.small-centered,.columns.small-centered{margin-left:auto;margin-right:auto;float:none}.column.small-uncentered,.columns.small-uncentered{float:left;margin-left:0;margin-right:0}.column.small-centered:last-child,.columns.small-centered:last-child{float:none}.column.small-uncentered:last-child,.columns.small-uncentered:last-child{float:left}.column.small-uncentered.opposite,.columns.small-uncentered.opposite{float:right}.row.small-collapse>.column,.row.small-collapse>.columns{padding-left:0;padding-right:0}.row.small-collapse .row{margin-left:0;margin-right:0}.row.small-uncollapse>.column,.row.small-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}}@media only screen and (min-width:40.063em){.medium-push-0{position:relative;left:0;right:auto}.medium-pull-0{position:relative;right:0;left:auto}.medium-push-1{position:relative;left:8.3333333333%;right:auto}.medium-pull-1{position:relative;right:8.3333333333%;left:auto}.medium-push-2{position:relative;left:16.6666666667%;right:auto}.medium-pull-2{position:relative;right:16.6666666667%;left:auto}.medium-push-3{position:relative;left:25%;right:auto}.medium-pull-3{position:relative;right:25%;left:auto}.medium-push-4{position:relative;left:33.3333333333%;right:auto}.medium-pull-4{position:relative;right:33.3333333333%;left:auto}.medium-push-5{position:relative;left:41.6666666667%;right:auto}.medium-pull-5{position:relative;right:41.6666666667%;left:auto}.medium-push-6{position:relative;left:50%;right:auto}.medium-pull-6{position:relative;right:50%;left:auto}.medium-push-7{position:relative;left:58.3333333333%;right:auto}.medium-pull-7{position:relative;right:58.3333333333%;left:auto}.medium-push-8{position:relative;left:66.6666666667%;right:auto}.medium-pull-8{position:relative;right:66.6666666667%;left:auto}.medium-push-9{position:relative;left:75%;right:auto}.medium-pull-9{position:relative;right:75%;left:auto}.medium-push-10{position:relative;left:83.3333333333%;right:auto}.medium-pull-10{position:relative;right:83.3333333333%;left:auto}.medium-push-11{position:relative;left:91.6666666667%;right:auto}.medium-pull-11{position:relative;right:91.6666666667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.medium-1{width:8.3333333333%}.medium-2{width:16.6666666667%}.medium-3{width:25%}.medium-4{width:33.3333333333%}.medium-5{width:41.6666666667%}.medium-6{width:50%}.medium-7{width:58.3333333333%}.medium-8{width:66.6666666667%}.medium-9{width:75%}.medium-10{width:83.3333333333%}.medium-11{width:91.6666666667%}.medium-12{width:100%}.medium-offset-0{margin-left:0 !important}.medium-offset-1{margin-left:8.3333333333% !important}.medium-offset-2{margin-left:16.6666666667% !important}.medium-offset-3{margin-left:25% !important}.medium-offset-4{margin-left:33.3333333333% !important}.medium-offset-5{margin-left:41.6666666667% !important}.medium-offset-6{margin-left:50% !important}.medium-offset-7{margin-left:58.3333333333% !important}.medium-offset-8{margin-left:66.6666666667% !important}.medium-offset-9{margin-left:75% !important}.medium-offset-10{margin-left:83.3333333333% !important}.medium-offset-11{margin-left:91.6666666667% !important}.medium-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.medium-centered,.columns.medium-centered{margin-left:auto;margin-right:auto;float:none}.column.medium-uncentered,.columns.medium-uncentered{float:left;margin-left:0;margin-right:0}.column.medium-centered:last-child,.columns.medium-centered:last-child{float:none}.column.medium-uncentered:last-child,.columns.medium-uncentered:last-child{float:left}.column.medium-uncentered.opposite,.columns.medium-uncentered.opposite{float:right}.row.medium-collapse>.column,.row.medium-collapse>.columns{padding-left:0;padding-right:0}.row.medium-collapse .row{margin-left:0;margin-right:0}.row.medium-uncollapse>.column,.row.medium-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0;right:auto}.pull-0{position:relative;right:0;left:auto}.push-1{position:relative;left:8.3333333333%;right:auto}.pull-1{position:relative;right:8.3333333333%;left:auto}.push-2{position:relative;left:16.6666666667%;right:auto}.pull-2{position:relative;right:16.6666666667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.3333333333%;right:auto}.pull-4{position:relative;right:33.3333333333%;left:auto}.push-5{position:relative;left:41.6666666667%;right:auto}.pull-5{position:relative;right:41.6666666667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.3333333333%;right:auto}.pull-7{position:relative;right:58.3333333333%;left:auto}.push-8{position:relative;left:66.6666666667%;right:auto}.pull-8{position:relative;right:66.6666666667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.3333333333%;right:auto}.pull-10{position:relative;right:83.3333333333%;left:auto}.push-11{position:relative;left:91.6666666667%;right:auto}.pull-11{position:relative;right:91.6666666667%;left:auto}}@media only screen and (min-width:64.063em){.large-push-0{position:relative;left:0;right:auto}.large-pull-0{position:relative;right:0;left:auto}.large-push-1{position:relative;left:8.3333333333%;right:auto}.large-pull-1{position:relative;right:8.3333333333%;left:auto}.large-push-2{position:relative;left:16.6666666667%;right:auto}.large-pull-2{position:relative;right:16.6666666667%;left:auto}.large-push-3{position:relative;left:25%;right:auto}.large-pull-3{position:relative;right:25%;left:auto}.large-push-4{position:relative;left:33.3333333333%;right:auto}.large-pull-4{position:relative;right:33.3333333333%;left:auto}.large-push-5{position:relative;left:41.6666666667%;right:auto}.large-pull-5{position:relative;right:41.6666666667%;left:auto}.large-push-6{position:relative;left:50%;right:auto}.large-pull-6{position:relative;right:50%;left:auto}.large-push-7{position:relative;left:58.3333333333%;right:auto}.large-pull-7{position:relative;right:58.3333333333%;left:auto}.large-push-8{position:relative;left:66.6666666667%;right:auto}.large-pull-8{position:relative;right:66.6666666667%;left:auto}.large-push-9{position:relative;left:75%;right:auto}.large-pull-9{position:relative;right:75%;left:auto}.large-push-10{position:relative;left:83.3333333333%;right:auto}.large-pull-10{position:relative;right:83.3333333333%;left:auto}.large-push-11{position:relative;left:91.6666666667%;right:auto}.large-pull-11{position:relative;right:91.6666666667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.large-1{width:8.3333333333%}.large-2{width:16.6666666667%}.large-3{width:25%}.large-4{width:33.3333333333%}.large-5{width:41.6666666667%}.large-6{width:50%}.large-7{width:58.3333333333%}.large-8{width:66.6666666667%}.large-9{width:75%}.large-10{width:83.3333333333%}.large-11{width:91.6666666667%}.large-12{width:100%}.large-offset-0{margin-left:0 !important}.large-offset-1{margin-left:8.3333333333% !important}.large-offset-2{margin-left:16.6666666667% !important}.large-offset-3{margin-left:25% !important}.large-offset-4{margin-left:33.3333333333% !important}.large-offset-5{margin-left:41.6666666667% !important}.large-offset-6{margin-left:50% !important}.large-offset-7{margin-left:58.3333333333% !important}.large-offset-8{margin-left:66.6666666667% !important}.large-offset-9{margin-left:75% !important}.large-offset-10{margin-left:83.3333333333% !important}.large-offset-11{margin-left:91.6666666667% !important}.large-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.large-centered,.columns.large-centered{margin-left:auto;margin-right:auto;float:none}.column.large-uncentered,.columns.large-uncentered{float:left;margin-left:0;margin-right:0}.column.large-centered:last-child,.columns.large-centered:last-child{float:none}.column.large-uncentered:last-child,.columns.large-uncentered:last-child{float:left}.column.large-uncentered.opposite,.columns.large-uncentered.opposite{float:right}.row.large-collapse>.column,.row.large-collapse>.columns{padding-left:0;padding-right:0}.row.large-collapse .row{margin-left:0;margin-right:0}.row.large-uncollapse>.column,.row.large-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0;right:auto}.pull-0{position:relative;right:0;left:auto}.push-1{position:relative;left:8.3333333333%;right:auto}.pull-1{position:relative;right:8.3333333333%;left:auto}.push-2{position:relative;left:16.6666666667%;right:auto}.pull-2{position:relative;right:16.6666666667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.3333333333%;right:auto}.pull-4{position:relative;right:33.3333333333%;left:auto}.push-5{position:relative;left:41.6666666667%;right:auto}.pull-5{position:relative;right:41.6666666667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.3333333333%;right:auto}.pull-7{position:relative;right:58.3333333333%;left:auto}.push-8{position:relative;left:66.6666666667%;right:auto}.pull-8{position:relative;right:66.6666666667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.3333333333%;right:auto}.pull-10{position:relative;right:83.3333333333%;left:auto}.push-11{position:relative;left:91.6666666667%;right:auto}.pull-11{position:relative;right:91.6666666667%;left:auto}}.accordion{margin-bottom:0;margin-left:0}.accordion:before,.accordion:after{content:" ";display:table}.accordion:after{clear:both}.accordion .accordion-navigation,.accordion dd{display:block;margin-bottom:0 !important}.accordion .accordion-navigation.active>a,.accordion dd.active>a{background:#e8e8e8;color:#222222}.accordion .accordion-navigation>a,.accordion dd>a{background:#EFEFEF;color:#222222;display:block;font-family:"Josefin Sans",sans-serif;font-size:1rem;padding:1rem}.accordion .accordion-navigation>a:hover,.accordion dd>a:hover{background:#e3e3e3}.accordion .accordion-navigation>.content,.accordion dd>.content{display:none;padding:0.9375rem}.accordion .accordion-navigation>.content.active,.accordion dd>.content.active{background:#FFFFFF;display:block}.alert-box{border-style:solid;border-width:1px;display:block;font-size:0.8125rem;font-weight:normal;margin-bottom:1.25rem;padding:0.875rem 1.5rem 0.875rem 0.875rem;position:relative;transition:opacity 300ms ease-out;background-color:#008CBA;border-color:#0078a0;color:#FFFFFF}.alert-box .close{right:0.25rem;background:inherit;color:#333333;font-size:1.375rem;line-height:.9;margin-top:-0.6875rem;opacity:0.3;padding:0 6px 4px;position:absolute;top:50%}.alert-box .close:hover,.alert-box .close:focus{opacity:0.5}.alert-box.radius{border-radius:3px}.alert-box.round{border-radius:1000px}.alert-box.success{background-color:#43AC6A;border-color:#3a945b;color:#FFFFFF}.alert-box.alert{background-color:#f04124;border-color:#de2d0f;color:#FFFFFF}.alert-box.secondary{background-color:#e7e7e7;border-color:#c7c7c7;color:#4f4f4f}.alert-box.warning{background-color:#f08a24;border-color:#de770f;color:#FFFFFF}.alert-box.info{background-color:#a0d3e8;border-color:#74bfdd;color:#4f4f4f}.alert-box.alert-close{opacity:0}[class*="block-grid-"]{display:block;padding:0;margin:0 -0.625rem}[class*="block-grid-"]:before,[class*="block-grid-"]:after{content:" ";display:table}[class*="block-grid-"]:after{clear:both}[class*="block-grid-"]>li{display:block;float:left;height:auto;padding:0 0.625rem 1.25rem}@media only screen{.small-block-grid-1>li{list-style:none;width:100%}.small-block-grid-1>li:nth-of-type(1n){clear:none}.small-block-grid-1>li:nth-of-type(1n+1){clear:both}.small-block-grid-2>li{list-style:none;width:50%}.small-block-grid-2>li:nth-of-type(1n){clear:none}.small-block-grid-2>li:nth-of-type(2n+1){clear:both}.small-block-grid-3>li{list-style:none;width:33.3333333333%}.small-block-grid-3>li:nth-of-type(1n){clear:none}.small-block-grid-3>li:nth-of-type(3n+1){clear:both}.small-block-grid-4>li{list-style:none;width:25%}.small-block-grid-4>li:nth-of-type(1n){clear:none}.small-block-grid-4>li:nth-of-type(4n+1){clear:both}.small-block-grid-5>li{list-style:none;width:20%}.small-block-grid-5>li:nth-of-type(1n){clear:none}.small-block-grid-5>li:nth-of-type(5n+1){clear:both}.small-block-grid-6>li{list-style:none;width:16.6666666667%}.small-block-grid-6>li:nth-of-type(1n){clear:none}.small-block-grid-6>li:nth-of-type(6n+1){clear:both}.small-block-grid-7>li{list-style:none;width:14.2857142857%}.small-block-grid-7>li:nth-of-type(1n){clear:none}.small-block-grid-7>li:nth-of-type(7n+1){clear:both}.small-block-grid-8>li{list-style:none;width:12.5%}.small-block-grid-8>li:nth-of-type(1n){clear:none}.small-block-grid-8>li:nth-of-type(8n+1){clear:both}.small-block-grid-9>li{list-style:none;width:11.1111111111%}.small-block-grid-9>li:nth-of-type(1n){clear:none}.small-block-grid-9>li:nth-of-type(9n+1){clear:both}.small-block-grid-10>li{list-style:none;width:10%}.small-block-grid-10>li:nth-of-type(1n){clear:none}.small-block-grid-10>li:nth-of-type(10n+1){clear:both}.small-block-grid-11>li{list-style:none;width:9.0909090909%}.small-block-grid-11>li:nth-of-type(1n){clear:none}.small-block-grid-11>li:nth-of-type(11n+1){clear:both}.small-block-grid-12>li{list-style:none;width:8.3333333333%}.small-block-grid-12>li:nth-of-type(1n){clear:none}.small-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width:40.063em){.medium-block-grid-1>li{list-style:none;width:100%}.medium-block-grid-1>li:nth-of-type(1n){clear:none}.medium-block-grid-1>li:nth-of-type(1n+1){clear:both}.medium-block-grid-2>li{list-style:none;width:50%}.medium-block-grid-2>li:nth-of-type(1n){clear:none}.medium-block-grid-2>li:nth-of-type(2n+1){clear:both}.medium-block-grid-3>li{list-style:none;width:33.3333333333%}.medium-block-grid-3>li:nth-of-type(1n){clear:none}.medium-block-grid-3>li:nth-of-type(3n+1){clear:both}.medium-block-grid-4>li{list-style:none;width:25%}.medium-block-grid-4>li:nth-of-type(1n){clear:none}.medium-block-grid-4>li:nth-of-type(4n+1){clear:both}.medium-block-grid-5>li{list-style:none;width:20%}.medium-block-grid-5>li:nth-of-type(1n){clear:none}.medium-block-grid-5>li:nth-of-type(5n+1){clear:both}.medium-block-grid-6>li{list-style:none;width:16.6666666667%}.medium-block-grid-6>li:nth-of-type(1n){clear:none}.medium-block-grid-6>li:nth-of-type(6n+1){clear:both}.medium-block-grid-7>li{list-style:none;width:14.2857142857%}.medium-block-grid-7>li:nth-of-type(1n){clear:none}.medium-block-grid-7>li:nth-of-type(7n+1){clear:both}.medium-block-grid-8>li{list-style:none;width:12.5%}.medium-block-grid-8>li:nth-of-type(1n){clear:none}.medium-block-grid-8>li:nth-of-type(8n+1){clear:both}.medium-block-grid-9>li{list-style:none;width:11.1111111111%}.medium-block-grid-9>li:nth-of-type(1n){clear:none}.medium-block-grid-9>li:nth-of-type(9n+1){clear:both}.medium-block-grid-10>li{list-style:none;width:10%}.medium-block-grid-10>li:nth-of-type(1n){clear:none}.medium-block-grid-10>li:nth-of-type(10n+1){clear:both}.medium-block-grid-11>li{list-style:none;width:9.0909090909%}.medium-block-grid-11>li:nth-of-type(1n){clear:none}.medium-block-grid-11>li:nth-of-type(11n+1){clear:both}.medium-block-grid-12>li{list-style:none;width:8.3333333333%}.medium-block-grid-12>li:nth-of-type(1n){clear:none}.medium-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width:64.063em){.large-block-grid-1>li{list-style:none;width:100%}.large-block-grid-1>li:nth-of-type(1n){clear:none}.large-block-grid-1>li:nth-of-type(1n+1){clear:both}.large-block-grid-2>li{list-style:none;width:50%}.large-block-grid-2>li:nth-of-type(1n){clear:none}.large-block-grid-2>li:nth-of-type(2n+1){clear:both}.large-block-grid-3>li{list-style:none;width:33.3333333333%}.large-block-grid-3>li:nth-of-type(1n){clear:none}.large-block-grid-3>li:nth-of-type(3n+1){clear:both}.large-block-grid-4>li{list-style:none;width:25%}.large-block-grid-4>li:nth-of-type(1n){clear:none}.large-block-grid-4>li:nth-of-type(4n+1){clear:both}.large-block-grid-5>li{list-style:none;width:20%}.large-block-grid-5>li:nth-of-type(1n){clear:none}.large-block-grid-5>li:nth-of-type(5n+1){clear:both}.large-block-grid-6>li{list-style:none;width:16.6666666667%}.large-block-grid-6>li:nth-of-type(1n){clear:none}.large-block-grid-6>li:nth-of-type(6n+1){clear:both}.large-block-grid-7>li{list-style:none;width:14.2857142857%}.large-block-grid-7>li:nth-of-type(1n){clear:none}.large-block-grid-7>li:nth-of-type(7n+1){clear:both}.large-block-grid-8>li{list-style:none;width:12.5%}.large-block-grid-8>li:nth-of-type(1n){clear:none}.large-block-grid-8>li:nth-of-type(8n+1){clear:both}.large-block-grid-9>li{list-style:none;width:11.1111111111%}.large-block-grid-9>li:nth-of-type(1n){clear:none}.large-block-grid-9>li:nth-of-type(9n+1){clear:both}.large-block-grid-10>li{list-style:none;width:10%}.large-block-grid-10>li:nth-of-type(1n){clear:none}.large-block-grid-10>li:nth-of-type(10n+1){clear:both}.large-block-grid-11>li{list-style:none;width:9.0909090909%}.large-block-grid-11>li:nth-of-type(1n){clear:none}.large-block-grid-11>li:nth-of-type(11n+1){clear:both}.large-block-grid-12>li{list-style:none;width:8.3333333333%}.large-block-grid-12>li:nth-of-type(1n){clear:none}.large-block-grid-12>li:nth-of-type(12n+1){clear:both}}.breadcrumbs{border-style:solid;border-width:0px;display:block;list-style:none;margin-left:0;overflow:hidden;padding:0.5625rem 0.875rem 0.5625rem;background-color:#FFFFFF;border-color:#e6e6e6;border-radius:3px}.breadcrumbs>*{color:#000000;float:left;font-size:1rem;line-height:1rem;margin:0;text-transform:none}.breadcrumbs>*:hover a,.breadcrumbs>*:focus a{text-decoration:none}.breadcrumbs>* a{color:#000000}.breadcrumbs>*.current{color:#006a71;cursor:default}.breadcrumbs>*.current a{color:#006a71;cursor:default}.breadcrumbs>*.current:hover,.breadcrumbs>*.current:hover a,.breadcrumbs>*.current:focus,.breadcrumbs>*.current:focus a{text-decoration:none}.breadcrumbs>*.unavailable{color:#999999}.breadcrumbs>*.unavailable a{color:#999999}.breadcrumbs>*.unavailable:hover,.breadcrumbs>*.unavailable:hover a,.breadcrumbs>*.unavailable:focus,.breadcrumbs>*.unavailable a:focus{color:#999999;cursor:false;text-decoration:none}.breadcrumbs>*:before{color:#000000;content:">";margin:0 0.75rem;position:relative;top:1px}.breadcrumbs>*:first-child:before{content:" ";margin:0}[aria-label="breadcrumbs"] [aria-hidden="true"]:after{content:"/"}button,.button{-webkit-appearance:none;-moz-appearance:none;border-radius:0;border-style:solid;border-width:3px;cursor:pointer;font-family:"Josefin Sans",sans-serif;font-weight:normal;line-height:normal;margin:0 0 1.25rem;position:relative;text-align:center;text-decoration:none;display:inline-block;padding:1rem 2rem 1.0625rem 2rem;font-size:1rem;background-color:#009543;border-color:#FFFFFF;color:#FFFFFF;transition:background-color 300ms ease-out}button:hover,button:focus,.button:hover,.button:focus{background-color:#007736}button:hover,button:focus,.button:hover,.button:focus{color:#FFFFFF}button.secondary,.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333333}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{background-color:#b9b9b9}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{color:#333333}button.success,.button.success{background-color:#43AC6A;border-color:#368a55;color:#FFFFFF}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{background-color:#368a55}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{color:#FFFFFF}button.alert,.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#FFFFFF}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{background-color:#cf2a0e}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{color:#FFFFFF}button.warning,.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#FFFFFF}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{background-color:#cf6e0e}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{color:#FFFFFF}button.info,.button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333333}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{background-color:#61b6d9}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{color:#FFFFFF}button.large,.button.large{padding:1.125rem 2.25rem 1.1875rem 2.25rem;font-size:1.25rem}button.small,.button.small{padding:0.875rem 1.75rem 0.9375rem 1.75rem;font-size:0.8125rem}button.tiny,.button.tiny{padding:0.625rem 1.25rem 0.6875rem 1.25rem;font-size:0.6875rem}button.expand,.button.expand{padding:1rem 2rem 1.0625rem 2rem;font-size:1rem;padding-bottom:1.0625rem;padding-top:1rem;padding-left:1rem;padding-right:1rem;width:100%}button.left-align,.button.left-align{text-align:left;text-indent:0.75rem}button.right-align,.button.right-align{text-align:right;padding-right:0.75rem}button.radius,.button.radius{border-radius:3px}button.round,.button.round{border-radius:1000px}button.disabled,button[disabled],.button.disabled,.button[disabled]{background-color:#009543;border-color:#FFFFFF;color:#FFFFFF;box-shadow:none;cursor:default;opacity:0.7}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#007736}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{color:#FFFFFF}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#009543}button.disabled.secondary,button[disabled].secondary,.button.disabled.secondary,.button[disabled].secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333333;box-shadow:none;cursor:default;opacity:0.7}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#b9b9b9}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{color:#333333}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#e7e7e7}button.disabled.success,button[disabled].success,.button.disabled.success,.button[disabled].success{background-color:#43AC6A;border-color:#368a55;color:#FFFFFF;box-shadow:none;cursor:default;opacity:0.7}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#368a55}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{color:#FFFFFF}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#43AC6A}button.disabled.alert,button[disabled].alert,.button.disabled.alert,.button[disabled].alert{background-color:#f04124;border-color:#cf2a0e;color:#FFFFFF;box-shadow:none;cursor:default;opacity:0.7}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#cf2a0e}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{color:#FFFFFF}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#f04124}button.disabled.warning,button[disabled].warning,.button.disabled.warning,.button[disabled].warning{background-color:#f08a24;border-color:#cf6e0e;color:#FFFFFF;box-shadow:none;cursor:default;opacity:0.7}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#cf6e0e}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{color:#FFFFFF}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#f08a24}button.disabled.info,button[disabled].info,.button.disabled.info,.button[disabled].info{background-color:#a0d3e8;border-color:#61b6d9;color:#333333;box-shadow:none;cursor:default;opacity:0.7}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#61b6d9}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{color:#FFFFFF}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#a0d3e8}button::-moz-focus-inner{border:0;padding:0}@media only screen and (min-width:40.063em){button,.button{display:inline-block}}.button-group{list-style:none;margin:0;left:0}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group.even-2 li{display:inline-block;margin:0 -2px;width:50%}.button-group.even-2 li>button,.button-group.even-2 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-2 li:first-child button,.button-group.even-2 li:first-child .button{border-left:0}.button-group.even-2 li button,.button-group.even-2 li .button{width:100%}.button-group.even-3 li{display:inline-block;margin:0 -2px;width:33.3333333333%}.button-group.even-3 li>button,.button-group.even-3 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-3 li:first-child button,.button-group.even-3 li:first-child .button{border-left:0}.button-group.even-3 li button,.button-group.even-3 li .button{width:100%}.button-group.even-4 li{display:inline-block;margin:0 -2px;width:25%}.button-group.even-4 li>button,.button-group.even-4 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-4 li:first-child button,.button-group.even-4 li:first-child .button{border-left:0}.button-group.even-4 li button,.button-group.even-4 li .button{width:100%}.button-group.even-5 li{display:inline-block;margin:0 -2px;width:20%}.button-group.even-5 li>button,.button-group.even-5 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-5 li:first-child button,.button-group.even-5 li:first-child .button{border-left:0}.button-group.even-5 li button,.button-group.even-5 li .button{width:100%}.button-group.even-6 li{display:inline-block;margin:0 -2px;width:16.6666666667%}.button-group.even-6 li>button,.button-group.even-6 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-6 li:first-child button,.button-group.even-6 li:first-child .button{border-left:0}.button-group.even-6 li button,.button-group.even-6 li .button{width:100%}.button-group.even-7 li{display:inline-block;margin:0 -2px;width:14.2857142857%}.button-group.even-7 li>button,.button-group.even-7 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-7 li:first-child button,.button-group.even-7 li:first-child .button{border-left:0}.button-group.even-7 li button,.button-group.even-7 li .button{width:100%}.button-group.even-8 li{display:inline-block;margin:0 -2px;width:12.5%}.button-group.even-8 li>button,.button-group.even-8 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-8 li:first-child button,.button-group.even-8 li:first-child .button{border-left:0}.button-group.even-8 li button,.button-group.even-8 li .button{width:100%}.button-group>li{display:inline-block;margin:0 -2px}.button-group>li>button,.button-group>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group>li:first-child button,.button-group>li:first-child .button{border-left:0}.button-group.stack>li{display:block;margin:0;float:none}.button-group.stack>li>button,.button-group.stack>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-left:0}.button-group.stack>li>button,.button-group.stack>li .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.stack>li>button{width:100%}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-top:0}.button-group.stack-for-small>li{display:inline-block;margin:0 -2px}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}@media only screen and (max-width: 40em){.button-group.stack-for-small>li{display:block;margin:0;width:100%;}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.stack-for-small>li>button{width:100%}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-top:0}}.button-group.radius>*{display:inline-block;margin:0 -2px}.button-group.radius>*>button,.button-group.radius>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius>*:first-child button,.button-group.radius>*:first-child .button{border-left:0}.button-group.radius>*,.button-group.radius>*>a,.button-group.radius>*>button,.button-group.radius>*>.button{border-radius:0}.button-group.radius>*:first-child,.button-group.radius>*:first-child>a,.button-group.radius>*:first-child>button,.button-group.radius>*:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius>*:last-child,.button-group.radius>*:last-child>a,.button-group.radius>*:last-child>button,.button-group.radius>*:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*{display:block;margin:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-left:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.radius.stack>*>button{width:100%}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-top:0}.button-group.radius.stack>*,.button-group.radius.stack>*>a,.button-group.radius.stack>*>button,.button-group.radius.stack>*>.button{border-radius:0}.button-group.radius.stack>*:first-child,.button-group.radius.stack>*:first-child>a,.button-group.radius.stack>*:first-child>button,.button-group.radius.stack>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*:last-child,.button-group.radius.stack>*:last-child>a,.button-group.radius.stack>*:last-child>button,.button-group.radius.stack>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}@media only screen and (min-width:40.063em){.button-group.radius.stack-for-small>*{display:inline-block;margin:0 -2px;}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}}@media only screen and (max-width: 40em){.button-group.radius.stack-for-small>*{display:block;margin:0;}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.radius.stack-for-small>*>button{width:100%}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-top:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}}.button-group.round>*{display:inline-block;margin:0 -2px}.button-group.round>*>button,.button-group.round>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round>*:first-child button,.button-group.round>*:first-child .button{border-left:0}.button-group.round>*,.button-group.round>*>a,.button-group.round>*>button,.button-group.round>*>.button{border-radius:0}.button-group.round>*:first-child,.button-group.round>*:first-child>a,.button-group.round>*:first-child>button,.button-group.round>*:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round>*:last-child,.button-group.round>*:last-child>a,.button-group.round>*:last-child>button,.button-group.round>*:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.button-group.round.stack>*{display:block;margin:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-left:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.round.stack>*>button{width:100%}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-top:0}.button-group.round.stack>*,.button-group.round.stack>*>a,.button-group.round.stack>*>button,.button-group.round.stack>*>.button{border-radius:0}.button-group.round.stack>*:first-child,.button-group.round.stack>*:first-child>a,.button-group.round.stack>*:first-child>button,.button-group.round.stack>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack>*:last-child,.button-group.round.stack>*:last-child>a,.button-group.round.stack>*:last-child>button,.button-group.round.stack>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}@media only screen and (min-width:40.063em){.button-group.round.stack-for-small>*{display:inline-block;margin:0 -2px;}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}}@media only screen and (max-width: 40em){.button-group.round.stack-for-small>*{display:block;margin:0;}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.round.stack-for-small>*>button{width:100%}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-top:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}}.button-bar:before,.button-bar:after{content:" ";display:table}.button-bar:after{clear:both}.button-bar .button-group{float:left;margin-right:0.625rem}.button-bar .button-group div{overflow:hidden}.clearing-thumbs,[data-clearing]{list-style:none;margin-left:0;margin-bottom:0}.clearing-thumbs:before,.clearing-thumbs:after,[data-clearing]:before,[data-clearing]:after{content:" ";display:table}.clearing-thumbs:after,[data-clearing]:after{clear:both}.clearing-thumbs li,[data-clearing] li{float:left;margin-right:10px}.clearing-thumbs[class*="block-grid-"] li,[data-clearing][class*="block-grid-"] li{margin-right:0}.clearing-blackout{background:#333333;height:100%;position:fixed;top:0;width:100%;z-index:998;left:0}.clearing-blackout .clearing-close{display:block}.clearing-container{height:100%;margin:0;overflow:hidden;position:relative;z-index:998}.clearing-touch-label{color:#AAAAAA;font-size:.6em;left:50%;position:absolute;top:50%}.visible-img{height:95%;position:relative}.visible-img img{position:absolute;left:50%;top:50%;-webkit-transform:translateY(-50%) translateX(-50%);-moz-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);-o-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);max-height:100%;max-width:100%}.clearing-caption{background:#333333;bottom:0;color:#CCCCCC;font-size:0.875em;line-height:1.3;margin-bottom:0;padding:10px 30px 20px;position:absolute;text-align:center;width:100%;left:0}.clearing-close{color:#CCCCCC;display:none;font-size:30px;line-height:1;padding-left:20px;padding-top:10px;z-index:999}.clearing-close:hover,.clearing-close:focus{color:#CCCCCC}.clearing-assembled .clearing-container{height:100%}.clearing-assembled .clearing-container .carousel>ul{display:none}.clearing-feature li{display:none}.clearing-feature li.clearing-featured-img{display:block}@media only screen and (min-width:40.063em){.clearing-main-prev,.clearing-main-next{height:100%;position:absolute;top:0;width:40px}.clearing-main-prev>span,.clearing-main-next>span{border:solid 12px;display:block;height:0;position:absolute;top:50%;width:0}.clearing-main-prev>span:hover,.clearing-main-next>span:hover{opacity:.8}.clearing-main-prev{left:0}.clearing-main-prev>span{left:5px;border-color:transparent;border-right-color:#CCCCCC}.clearing-main-next{right:0}.clearing-main-next>span{border-color:transparent;border-left-color:#CCCCCC}.clearing-main-prev.disabled,.clearing-main-next.disabled{opacity:.3}.clearing-assembled .clearing-container .carousel{background:rgba(51,51,51,0.8);height:120px;margin-top:10px;text-align:center}.clearing-assembled .clearing-container .carousel>ul{display:inline-block;z-index:999;height:100%;position:relative;float:none}.clearing-assembled .clearing-container .carousel>ul li{clear:none;cursor:pointer;display:block;float:left;margin-right:0;min-height:inherit;opacity:.4;overflow:hidden;padding:0;position:relative;width:120px}.clearing-assembled .clearing-container .carousel>ul li.fix-height img{height:100%;max-width:none}.clearing-assembled .clearing-container .carousel>ul li a.th{border:none;box-shadow:none;display:block}.clearing-assembled .clearing-container .carousel>ul li img{cursor:pointer !important;width:100% !important}.clearing-assembled .clearing-container .carousel>ul li.visible{opacity:1}.clearing-assembled .clearing-container .carousel>ul li:hover{opacity:.8}.clearing-assembled .clearing-container .visible-img{background:#333333;height:85%;overflow:hidden}.clearing-close{padding-left:0;padding-top:0;position:absolute;top:10px;right:20px}}.f-dropdown{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#FFFFFF;border:solid 1px #cccccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:2px;max-width:200px}.f-dropdown.open{display:block}.f-dropdown>*:first-child{margin-top:0}.f-dropdown>*:last-child{margin-bottom:0}.f-dropdown:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent transparent #FFFFFF transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:89}.f-dropdown:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent transparent #cccccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:88}.f-dropdown.right:before{left:auto;right:10px}.f-dropdown.right:after{left:auto;right:9px}.f-dropdown.drop-right{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#FFFFFF;border:solid 1px #cccccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:0;margin-left:2px;max-width:200px}.f-dropdown.drop-right.open{display:block}.f-dropdown.drop-right>*:first-child{margin-top:0}.f-dropdown.drop-right>*:last-child{margin-bottom:0}.f-dropdown.drop-right:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent #FFFFFF transparent transparent;border-right-style:solid;position:absolute;top:10px;left:-12px;z-index:89}.f-dropdown.drop-right:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent #cccccc transparent transparent;border-right-style:solid;position:absolute;top:9px;left:-14px;z-index:88}.f-dropdown.drop-left{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#FFFFFF;border:solid 1px #cccccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:0;margin-left:-2px;max-width:200px}.f-dropdown.drop-left.open{display:block}.f-dropdown.drop-left>*:first-child{margin-top:0}.f-dropdown.drop-left>*:last-child{margin-bottom:0}.f-dropdown.drop-left:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent #FFFFFF;border-left-style:solid;position:absolute;top:10px;right:-12px;left:auto;z-index:89}.f-dropdown.drop-left:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent #cccccc;border-left-style:solid;position:absolute;top:9px;right:-14px;left:auto;z-index:88}.f-dropdown.drop-top{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#FFFFFF;border:solid 1px #cccccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-left:0;margin-top:-2px;max-width:200px}.f-dropdown.drop-top.open{display:block}.f-dropdown.drop-top>*:first-child{margin-top:0}.f-dropdown.drop-top>*:last-child{margin-bottom:0}.f-dropdown.drop-top:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:#FFFFFF transparent transparent transparent;border-top-style:solid;bottom:-12px;position:absolute;top:auto;left:10px;right:auto;z-index:89}.f-dropdown.drop-top:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:#cccccc transparent transparent transparent;border-top-style:solid;bottom:-14px;position:absolute;top:auto;left:9px;right:auto;z-index:88}.f-dropdown li{cursor:pointer;font-size:0.875rem;line-height:1.125rem;margin:0}.f-dropdown li:hover,.f-dropdown li:focus{background:#EEEEEE}.f-dropdown li a{display:block;padding:0.5rem;color:#555555}.f-dropdown.content{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#FFFFFF;border:solid 1px #cccccc;font-size:0.875rem;height:auto;max-height:none;padding:1rem;width:100%;z-index:89;max-width:200px}.f-dropdown.content.open{display:block}.f-dropdown.content>*:first-child{margin-top:0}.f-dropdown.content>*:last-child{margin-bottom:0}.f-dropdown.radius{border-radius:3px}.f-dropdown.tiny{max-width:200px}.f-dropdown.small{max-width:300px}.f-dropdown.medium{max-width:500px}.f-dropdown.large{max-width:800px}.f-dropdown.mega{width:100% !important;max-width:100% !important}.f-dropdown.mega.open{left:0 !important}.dropdown.button,button.dropdown{position:relative;padding-right:3.5625rem}.dropdown.button::after,button.dropdown::after{border-color:#FFFFFF transparent transparent transparent;border-style:solid;content:"";display:block;height:0;position:absolute;top:50%;width:0}.dropdown.button::after,button.dropdown::after{border-width:0.375rem;right:1.40625rem;margin-top:-0.15625rem}.dropdown.button::after,button.dropdown::after{border-color:#FFFFFF transparent transparent transparent}.dropdown.button.tiny,button.dropdown.tiny{padding-right:2.625rem}.dropdown.button.tiny:after,button.dropdown.tiny:after{border-width:0.375rem;right:1.125rem;margin-top:-0.125rem}.dropdown.button.tiny::after,button.dropdown.tiny::after{border-color:#FFFFFF transparent transparent transparent}.dropdown.button.small,button.dropdown.small{padding-right:3.0625rem}.dropdown.button.small::after,button.dropdown.small::after{border-width:0.4375rem;right:1.3125rem;margin-top:-0.15625rem}.dropdown.button.small::after,button.dropdown.small::after{border-color:#FFFFFF transparent transparent transparent}.dropdown.button.large,button.dropdown.large{padding-right:3.625rem}.dropdown.button.large::after,button.dropdown.large::after{border-width:0.3125rem;right:1.71875rem;margin-top:-0.15625rem}.dropdown.button.large::after,button.dropdown.large::after{border-color:#FFFFFF transparent transparent transparent}.dropdown.button.secondary:after,button.dropdown.secondary:after{border-color:#333333 transparent transparent transparent}.flex-video{height:0;margin-bottom:1rem;overflow:hidden;padding-bottom:67.5%;padding-top:1.5625rem;position:relative}.flex-video.widescreen{padding-bottom:56.34%}.flex-video.vimeo{padding-top:0}.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{height:100%;position:absolute;top:0;width:100%;left:0}form{margin:0 0 1rem}form .row .row{margin:0 -0.5rem}form .row .row .column,form .row .row .columns{padding:0 0.5rem}form .row .row.collapse{margin:0}form .row .row.collapse .column,form .row .row.collapse .columns{padding:0}form .row .row.collapse input{-webkit-border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-bottom-right-radius:0;border-top-right-radius:0}form .row input.column,form .row input.columns,form .row textarea.column,form .row textarea.columns{padding-left:0.5rem}label{color:#4d4d4d;cursor:pointer;display:block;font-size:0.875rem;font-weight:normal;line-height:1.5;margin-bottom:0}label.right{float:none !important;text-align:right}label.inline{margin:0 0 1rem 0;padding:0.5625rem 0}label small{text-transform:capitalize;color:#676767}.prefix,.postfix{border-style:solid;border-width:1px;display:block;font-size:0.875rem;height:2.3125rem;line-height:2.3125rem;overflow:visible;padding-bottom:0;padding-top:0;position:relative;text-align:center;width:100%;z-index:2}.postfix.button{border:none;padding-left:0;padding-right:0;padding-bottom:0;padding-top:0;text-align:center}.prefix.button{border:none;padding-left:0;padding-right:0;padding-bottom:0;padding-top:0;text-align:center}.prefix.button.radius{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.postfix.button.radius{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.prefix.button.round{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.postfix.button.round{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}span.prefix,label.prefix{background:#f2f2f2;border-right:none;color:#333333;border-color:#cccccc}span.postfix,label.postfix{background:#f2f2f2;border-left:none;color:#333333;border-color:#cccccc}input:not([type]),input[type="text"],input[type="password"],input[type="date"],input[type="datetime"],input[type="datetime-local"],input[type="month"],input[type="week"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],input[type="color"],textarea{-webkit-appearance:none;-moz-appearance:none;border-radius:0;background-color:#FFFFFF;border-style:solid;border-width:1px;border-color:#cccccc;box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-family:inherit;font-size:0.875rem;height:2.3125rem;margin:0 0 1rem 0;padding:0.5rem;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color 0.15s linear,background 0.15s linear;-moz-transition:border-color 0.15s linear,background 0.15s linear;-ms-transition:border-color 0.15s linear,background 0.15s linear;-o-transition:border-color 0.15s linear,background 0.15s linear;transition:border-color 0.15s linear,background 0.15s linear}input:not([type]):focus,input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="month"]:focus,input[type="week"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,input[type="color"]:focus,textarea:focus{background:#fafafa;border-color:#999999;outline:none}input:not([type]):disabled,input[type="text"]:disabled,input[type="password"]:disabled,input[type="date"]:disabled,input[type="datetime"]:disabled,input[type="datetime-local"]:disabled,input[type="month"]:disabled,input[type="week"]:disabled,input[type="email"]:disabled,input[type="number"]:disabled,input[type="search"]:disabled,input[type="tel"]:disabled,input[type="time"]:disabled,input[type="url"]:disabled,input[type="color"]:disabled,textarea:disabled{background-color:#DDDDDD;cursor:default}input:not([type])[disabled],input:not([type])[readonly],fieldset[disabled] input:not([type]),input[type="text"][disabled],input[type="text"][readonly],fieldset[disabled] input[type="text"],input[type="password"][disabled],input[type="password"][readonly],fieldset[disabled] input[type="password"],input[type="date"][disabled],input[type="date"][readonly],fieldset[disabled] input[type="date"],input[type="datetime"][disabled],input[type="datetime"][readonly],fieldset[disabled] input[type="datetime"],input[type="datetime-local"][disabled],input[type="datetime-local"][readonly],fieldset[disabled] input[type="datetime-local"],input[type="month"][disabled],input[type="month"][readonly],fieldset[disabled] input[type="month"],input[type="week"][disabled],input[type="week"][readonly],fieldset[disabled] input[type="week"],input[type="email"][disabled],input[type="email"][readonly],fieldset[disabled] input[type="email"],input[type="number"][disabled],input[type="number"][readonly],fieldset[disabled] input[type="number"],input[type="search"][disabled],input[type="search"][readonly],fieldset[disabled] input[type="search"],input[type="tel"][disabled],input[type="tel"][readonly],fieldset[disabled] input[type="tel"],input[type="time"][disabled],input[type="time"][readonly],fieldset[disabled] input[type="time"],input[type="url"][disabled],input[type="url"][readonly],fieldset[disabled] input[type="url"],input[type="color"][disabled],input[type="color"][readonly],fieldset[disabled] input[type="color"],textarea[disabled],textarea[readonly],fieldset[disabled] textarea{background-color:#DDDDDD;cursor:default}input:not([type]).radius,input[type="text"].radius,input[type="password"].radius,input[type="date"].radius,input[type="datetime"].radius,input[type="datetime-local"].radius,input[type="month"].radius,input[type="week"].radius,input[type="email"].radius,input[type="number"].radius,input[type="search"].radius,input[type="tel"].radius,input[type="time"].radius,input[type="url"].radius,input[type="color"].radius,textarea.radius{border-radius:3px}form .row .prefix-radius.row.collapse input,form .row .prefix-radius.row.collapse textarea,form .row .prefix-radius.row.collapse select,form .row .prefix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-radius.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse input,form .row .postfix-radius.row.collapse textarea,form .row .postfix-radius.row.collapse select,form .row .postfix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-round.row.collapse input,form .row .prefix-round.row.collapse textarea,form .row .prefix-round.row.collapse select,form .row .prefix-round.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}form .row .prefix-round.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse input,form .row .postfix-round.row.collapse textarea,form .row .postfix-round.row.collapse select,form .row .postfix-round.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}input[type="submit"]{-webkit-appearance:none;-moz-appearance:none;border-radius:0}textarea[rows]{height:auto}textarea{max-width:100%}::-webkit-input-placeholder{color:#666666}:-moz-placeholder{color:#666666}::-moz-placeholder{color:#666666}:-ms-input-placeholder{color:#666666}select{-webkit-appearance:none !important;-moz-appearance:none !important;background-color:#FAFAFA;border-radius:0;background-image:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+');background-position:100% center;background-repeat:no-repeat;border-style:solid;border-width:1px;border-color:#cccccc;color:rgba(0,0,0,0.75);font-family:inherit;font-size:0.875rem;line-height:normal;padding:0.5rem;border-radius:0;height:2.3125rem}select::-ms-expand{display:none}select.radius{border-radius:3px}select:focus{background-color:#f3f3f3;border-color:#999999}select:disabled{background-color:#DDDDDD;cursor:default}select[multiple]{height:auto}input[type="file"],input[type="checkbox"],input[type="radio"],select{margin:0 0 1rem 0}input[type="checkbox"]+label,input[type="radio"]+label{display:inline-block;margin-left:0.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}input[type="file"]{width:100%}fieldset{border:1px solid #DDDDDD;margin:1.125rem 0;padding:1.25rem}fieldset legend{font-weight:bold;margin:0;margin-left:-0.1875rem;padding:0 0.1875rem}[data-abide] .error small.error,[data-abide] .error span.error,[data-abide] span.error,[data-abide] small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#FFFFFF}[data-abide] span.error,[data-abide] small.error{display:none}span.error,small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#FFFFFF}.error input,.error textarea,.error select{margin-bottom:0}.error input[type="checkbox"],.error input[type="radio"]{margin-bottom:1rem}.error label,.error label.error{color:#f04124}.error small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#FFFFFF}.error>label>small{background:transparent;color:#676767;display:inline;font-size:60%;font-style:normal;margin:0;padding:0;text-transform:capitalize}.error span.error-message{display:block}input.error,textarea.error,select.error{margin-bottom:0}label.error{color:#f04124}.icon-bar{display:inline-block;font-size:0;width:100%;background:#333333}.icon-bar>*{display:block;float:left;font-size:1rem;margin:0 auto;padding:1.25rem;text-align:center;width:25%}.icon-bar>* i,.icon-bar>* img{display:block;margin:0 auto}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem}.icon-bar>* i{font-size:1.875rem;vertical-align:middle}.icon-bar>* img{height:1.875rem;width:1.875rem}.icon-bar.label-right>* i,.icon-bar.label-right>* img{display:inline-block;margin:0 .0625rem 0 0}.icon-bar.label-right>* i+label,.icon-bar.label-right>* img+label{margin-top:0}.icon-bar.label-right>* label{display:inline-block}.icon-bar.vertical.label-right>*{text-align:left}.icon-bar.vertical,.icon-bar.small-vertical{height:100%;width:auto}.icon-bar.vertical .item,.icon-bar.small-vertical .item{float:none;margin:auto;width:auto}@media only screen and (min-width:40.063em){.icon-bar.medium-vertical{height:100%;width:auto;}.icon-bar.medium-vertical .item{float:none;margin:auto;width:auto}}@media only screen and (min-width:64.063em){.icon-bar.large-vertical{height:100%;width:auto;}.icon-bar.large-vertical .item{float:none;margin:auto;width:auto}}.icon-bar>*{font-size:1rem;padding:1.25rem}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem;font-size:1rem}.icon-bar>* i{font-size:1.875rem}.icon-bar>* img{height:1.875rem;width:1.875rem}.icon-bar>* label{color:#FFFFFF}.icon-bar>* i{color:#FFFFFF}.icon-bar>a:hover{background:#008CBA}.icon-bar>a:hover label{color:#FFFFFF}.icon-bar>a:hover i{color:#FFFFFF}.icon-bar>a.active{background:#008CBA}.icon-bar>a.active label{color:#FFFFFF}.icon-bar>a.active i{color:#FFFFFF}.icon-bar .item.disabled{cursor:false;opacity:0.7;pointer-events:none}.icon-bar .item.disabled>*{opacity:0.7;cursor:false}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item,.icon-bar.two-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.two-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.two-up.large-vertical .item{width:auto;}}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item,.icon-bar.three-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.three-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.three-up.large-vertical .item{width:auto;}}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item,.icon-bar.four-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.four-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.four-up.large-vertical .item{width:auto;}}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item,.icon-bar.five-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.five-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.five-up.large-vertical .item{width:auto;}}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item,.icon-bar.six-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.six-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.six-up.large-vertical .item{width:auto;}}.icon-bar.seven-up .item{width:14.28571%}.icon-bar.seven-up.vertical .item,.icon-bar.seven-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.seven-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.seven-up.large-vertical .item{width:auto;}}.icon-bar.eight-up .item{width:12.5%}.icon-bar.eight-up.vertical .item,.icon-bar.eight-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.eight-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.eight-up.large-vertical .item{width:auto;}}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item,.icon-bar.two-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.two-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.two-up.large-vertical .item{width:auto;}}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item,.icon-bar.three-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.three-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.three-up.large-vertical .item{width:auto;}}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item,.icon-bar.four-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.four-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.four-up.large-vertical .item{width:auto;}}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item,.icon-bar.five-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.five-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.five-up.large-vertical .item{width:auto;}}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item,.icon-bar.six-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.six-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.six-up.large-vertical .item{width:auto;}}.icon-bar.seven-up .item{width:14.28571%}.icon-bar.seven-up.vertical .item,.icon-bar.seven-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.seven-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.seven-up.large-vertical .item{width:auto;}}.icon-bar.eight-up .item{width:12.5%}.icon-bar.eight-up.vertical .item,.icon-bar.eight-up.small-vertical .item{width:auto}@media only screen and (min-width:40.063em){.icon-bar.eight-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.eight-up.large-vertical .item{width:auto;}}.inline-list{list-style:none;margin-top:0;margin-bottom:1.0625rem;margin-left:-1.375rem;margin-right:0;overflow:hidden;padding:0}.inline-list>li{display:block;float:left;list-style:none;margin-left:1.375rem}.inline-list>li>*{display:block}.joyride-list{display:none}.joyride-tip-guide{background:#333333;color:#FFFFFF;display:none;font-family:inherit;font-weight:normal;position:absolute;top:0;width:95%;z-index:103;left:2.5%}.lt-ie9 .joyride-tip-guide{margin-left:-400px;max-width:800px;left:50%}.joyride-content-wrapper{padding:1.125rem 1.25rem 1.5rem;width:100%}.joyride-content-wrapper .button{margin-bottom:0 !important}.joyride-content-wrapper .joyride-prev-tip{margin-right:10px}.joyride-tip-guide .joyride-nub{border:10px solid #333333;display:block;height:0;position:absolute;width:0;left:22px}.joyride-tip-guide .joyride-nub.top{border-color:#333333;border-top-color:transparent !important;border-top-style:solid;border-left-color:transparent !important;border-right-color:transparent !important;top:-20px}.joyride-tip-guide .joyride-nub.bottom{border-color:#333333 !important;border-bottom-color:transparent !important;border-bottom-style:solid;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{right:-20px}.joyride-tip-guide .joyride-nub.left{left:-20px}.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6{color:#FFFFFF;font-weight:bold;line-height:1.25;margin:0}.joyride-tip-guide p{font-size:0.875rem;line-height:1.3;margin:0 0 1.125rem 0}.joyride-timer-indicator-wrap{border:solid 1px #555555;bottom:1rem;height:3px;position:absolute;width:50px;right:1.0625rem}.joyride-timer-indicator{background:#666666;display:block;height:inherit;width:0}.joyride-close-tip{color:#777777 !important;font-size:24px;font-weight:normal;line-height:.5 !important;position:absolute;text-decoration:none;top:10px;right:12px}.joyride-close-tip:hover,.joyride-close-tip:focus{color:#EEEEEE !important}.joyride-modal-bg{background:rgba(0,0,0,0.5);cursor:pointer;display:none;height:100%;position:fixed;top:0;width:100%;z-index:100;left:0}.joyride-expose-wrapper{background-color:#FFFFFF;border-radius:3px;box-shadow:0 0 15px #FFFFFF;position:absolute;z-index:102}.joyride-expose-cover{background:transparent;border-radius:3px;left:0;position:absolute;top:0;z-index:9999}@media only screen{.joyride-tip-guide{width:300px;left:inherit}.joyride-tip-guide .joyride-nub.bottom{border-color:#333333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{border-color:#333333 !important;border-right-color:transparent !important;border-bottom-color:transparent !important;border-top-color:transparent !important;left:auto;right:-20px;top:22px}.joyride-tip-guide .joyride-nub.left{border-color:#333333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-top-color:transparent !important;left:-20px;right:auto;top:22px}}.keystroke,kbd{background-color:#ededed;border-color:#dddddd;color:#222222;border-style:solid;border-width:1px;font-family:"Consolas","Menlo","Courier",monospace;font-size:inherit;margin:0;padding:0.125rem 0.25rem 0;border-radius:3px}.label{display:inline-block;font-family:"Josefin Sans",sans-serif;font-weight:normal;line-height:1;margin-bottom:auto;position:relative;text-align:center;text-decoration:none;white-space:nowrap;padding:0.25rem 0.5rem 0.25rem;font-size:0.6875rem;background-color:#008CBA;color:#FFFFFF}.label.radius{border-radius:3px}.label.round{border-radius:1000px}.label.alert{background-color:#f04124;color:#FFFFFF}.label.warning{background-color:#f08a24;color:#FFFFFF}.label.success{background-color:#43AC6A;color:#FFFFFF}.label.secondary{background-color:#e7e7e7;color:#333333}.label.info{background-color:#a0d3e8;color:#333333}[data-magellan-expedition],[data-magellan-expedition-clone]{background:#FFFFFF;min-width:100%;padding:10px;z-index:50}[data-magellan-expedition] .sub-nav,[data-magellan-expedition-clone] .sub-nav{margin-bottom:0}[data-magellan-expedition] .sub-nav dd,[data-magellan-expedition-clone] .sub-nav dd{margin-bottom:0}[data-magellan-expedition] .sub-nav a,[data-magellan-expedition-clone] .sub-nav a{line-height:1.8em}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}.slideshow-wrapper{position:relative}.slideshow-wrapper ul{list-style-type:none;margin:0}.slideshow-wrapper ul li,.slideshow-wrapper ul li .orbit-caption{display:none}.slideshow-wrapper ul li:first-child{display:block}.slideshow-wrapper .orbit-container{background-color:transparent}.slideshow-wrapper .orbit-container li{display:block}.slideshow-wrapper .orbit-container li .orbit-caption{display:block}.slideshow-wrapper .orbit-container .orbit-bullets li{display:inline-block}.slideshow-wrapper .preloader{border-radius:1000px;animation-duration:1.5s;animation-iteration-count:infinite;animation-name:rotate;animation-timing-function:linear;border-color:#555555 #FFFFFF;border:solid 3px;display:block;height:40px;left:50%;margin-left:-20px;margin-top:-20px;position:absolute;top:50%;width:40px}.orbit-container{background:none;overflow:hidden;position:relative;width:100%}.orbit-container .orbit-slides-container{list-style:none;margin:0;padding:0;position:relative;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.orbit-container .orbit-slides-container img{display:block;max-width:100%}.orbit-container .orbit-slides-container>*{position:absolute;top:0;width:100%;margin-left:100%}.orbit-container .orbit-slides-container>*:first-child{margin-left:0}.orbit-container .orbit-slides-container>* .orbit-caption{bottom:0;position:absolute;background-color:rgba(51,51,51,0.8);color:#FFFFFF;font-size:0.875rem;padding:0.625rem 0.875rem;width:100%}.orbit-container .orbit-slide-number{left:10px;background:transparent;color:#FFFFFF;font-size:12px;position:absolute;top:10px;z-index:10}.orbit-container .orbit-slide-number span{font-weight:700;padding:0.3125rem}.orbit-container .orbit-timer{position:absolute;top:12px;right:10px;height:6px;width:100px;z-index:10}.orbit-container .orbit-timer .orbit-progress{height:3px;background-color:rgba(255,255,255,0.3);display:block;width:0;position:relative;right:20px;top:5px}.orbit-container .orbit-timer>span{border:solid 4px #FFFFFF;border-bottom:none;border-top:none;display:none;height:14px;position:absolute;top:0;width:11px;right:0}.orbit-container .orbit-timer.paused>span{top:0;width:11px;height:14px;border:inset 8px;border-left-style:solid;border-color:transparent;border-left-color:#FFFFFF;right:-4px}.orbit-container .orbit-timer.paused>span.dark{border-left-color:#333333}.orbit-container:hover .orbit-timer>span{display:block}.orbit-container .orbit-prev,.orbit-container .orbit-next{background-color:transparent;color:white;height:60px;line-height:50px;margin-top:-25px;position:absolute;text-indent:-9999px !important;top:45%;width:36px;z-index:10}.orbit-container .orbit-prev:hover,.orbit-container .orbit-next:hover{background-color:rgba(0,0,0,0.3)}.orbit-container .orbit-prev>span,.orbit-container .orbit-next>span{border:inset 10px;display:block;height:0;margin-top:-10px;position:absolute;top:50%;width:0}.orbit-container .orbit-prev{left:0}.orbit-container .orbit-prev>span{border-right-style:solid;border-color:transparent;border-right-color:#FFFFFF}.orbit-container .orbit-prev:hover>span{border-right-color:#FFFFFF}.orbit-container .orbit-next{right:0}.orbit-container .orbit-next>span{border-color:transparent;border-left-style:solid;border-left-color:#FFFFFF;left:50%;margin-left:-4px}.orbit-container .orbit-next:hover>span{border-left-color:#FFFFFF}.orbit-bullets-container{text-align:center}.orbit-bullets{display:block;float:none;margin:0 auto 30px auto;overflow:hidden;position:relative;text-align:center;top:10px}.orbit-bullets li{background:#CCCCCC;cursor:pointer;display:inline-block;float:none;height:0.5625rem;margin-right:6px;width:0.5625rem;border-radius:1000px}.orbit-bullets li.active{background:#999999}.orbit-bullets li:last-child{margin-right:0}.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:none}.touch .orbit-bullets{display:none}@media only screen and (min-width:40.063em){.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:inherit}.touch .orbit-bullets{display:block}}@media only screen and (max-width: 40em){.orbit-stack-on-small .orbit-slides-container{height:auto !important}.orbit-stack-on-small .orbit-slides-container>*{margin:0  !important;opacity:1 !important;position:relative}.orbit-stack-on-small .orbit-slide-number{display:none}.orbit-timer{display:none}.orbit-next,.orbit-prev{display:none}.orbit-bullets{display:none}}ul.pagination{display:block;margin-left:-0.3125rem;min-height:1.5rem}ul.pagination li{color:#222222;font-size:0.875rem;height:1.5rem;margin-left:0.3125rem}ul.pagination li a,ul.pagination li button{border-radius:3px;transition:background-color 300ms ease-out;background:none;color:#999999;display:block;font-size:1em;font-weight:normal;line-height:inherit;padding:0.0625rem 0.625rem 0.0625rem}ul.pagination li:hover a,ul.pagination li a:focus,ul.pagination li:hover button,ul.pagination li button:focus{background:#e6e6e6}ul.pagination li.unavailable a,ul.pagination li.unavailable button{cursor:default;color:#999999;pointer-events:none}ul.pagination li.unavailable:hover a,ul.pagination li.unavailable a:focus,ul.pagination li.unavailable:hover button,ul.pagination li.unavailable button:focus{background:transparent}ul.pagination li.current a,ul.pagination li.current button{background:#008CBA;color:#FFFFFF;cursor:default;font-weight:bold}ul.pagination li.current a:hover,ul.pagination li.current a:focus,ul.pagination li.current button:hover,ul.pagination li.current button:focus{background:#008CBA}ul.pagination li{display:block;float:left}.pagination-centered{text-align:center}.pagination-centered ul.pagination li{display:inline-block;float:none}.panel{border-style:solid;border-width:1px;border-color:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#f2f2f2;color:#333333}.panel>:first-child{margin-top:0}.panel>:last-child{margin-bottom:0}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6,.panel p,.panel li,.panel dl{color:#333333}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6{line-height:1;margin-bottom:0.625rem}.panel h1.subheader,.panel h2.subheader,.panel h3.subheader,.panel h4.subheader,.panel h5.subheader,.panel h6.subheader{line-height:1.4}.panel.callout{border-style:solid;border-width:1px;border-color:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#ecfaff;color:#333333}.panel.callout>:first-child{margin-top:0}.panel.callout>:last-child{margin-bottom:0}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6,.panel.callout p,.panel.callout li,.panel.callout dl{color:#333333}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6{line-height:1;margin-bottom:0.625rem}.panel.callout h1.subheader,.panel.callout h2.subheader,.panel.callout h3.subheader,.panel.callout h4.subheader,.panel.callout h5.subheader,.panel.callout h6.subheader{line-height:1.4}.panel.callout a:not(.button){color:#008CBA}.panel.callout a:not(.button):hover,.panel.callout a:not(.button):focus{color:#0078a0}.panel.radius{border-radius:3px}.pricing-table{border:solid 1px #DDDDDD;margin-left:0;margin-bottom:1.25rem}.pricing-table *{list-style:none;line-height:1}.pricing-table .title{background-color:#333333;color:#EEEEEE;font-family:"Josefin Sans",sans-serif;font-size:1rem;font-weight:normal;padding:0.9375rem 1.25rem;text-align:center}.pricing-table .price{background-color:#F6F6F6;color:#333333;font-family:"Josefin Sans",sans-serif;font-size:2rem;font-weight:normal;padding:0.9375rem 1.25rem;text-align:center}.pricing-table .description{background-color:#FFFFFF;border-bottom:dotted 1px #DDDDDD;color:#777777;font-size:0.75rem;font-weight:normal;line-height:1.4;padding:0.9375rem;text-align:center}.pricing-table .bullet-item{background-color:#FFFFFF;border-bottom:dotted 1px #DDDDDD;color:#333333;font-size:0.875rem;font-weight:normal;padding:0.9375rem;text-align:center}.pricing-table .cta-button{background-color:#FFFFFF;padding:1.25rem 1.25rem 0;text-align:center}.progress{background-color:#F6F6F6;border:1px solid white;height:1.5625rem;margin-bottom:0.625rem;padding:0.125rem}.progress .meter{background:#008CBA;display:block;height:100%;float:left;width:0%}.progress .meter.secondary{background:#e7e7e7;display:block;height:100%;float:left;width:0%}.progress .meter.success{background:#43AC6A;display:block;height:100%;float:left;width:0%}.progress .meter.alert{background:#f04124;display:block;height:100%;float:left;width:0%}.progress.secondary .meter{background:#e7e7e7;display:block;height:100%;float:left;width:0%}.progress.success .meter{background:#43AC6A;display:block;height:100%;float:left;width:0%}.progress.alert .meter{background:#f04124;display:block;height:100%;float:left;width:0%}.progress.radius{border-radius:3px}.progress.radius .meter{border-radius:2px}.progress.round{border-radius:1000px}.progress.round .meter{border-radius:999px}.range-slider{border:1px solid #DDDDDD;margin:1.25rem 0;position:relative;-ms-touch-action:none;touch-action:none;display:block;height:1rem;width:100%;background:#FAFAFA}.range-slider.vertical-range{border:1px solid #DDDDDD;margin:1.25rem 0;position:relative;-ms-touch-action:none;touch-action:none;display:inline-block;height:12.5rem;width:1rem}.range-slider.vertical-range .range-slider-handle{bottom:-10.5rem;margin-left:-0.5rem;margin-top:0;position:absolute}.range-slider.vertical-range .range-slider-active-segment{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;border-top-left-radius:initial;bottom:0;height:auto;width:0.875rem}.range-slider.radius{background:#FAFAFA;border-radius:3px}.range-slider.radius .range-slider-handle{background:#008CBA;border-radius:3px}.range-slider.radius .range-slider-handle:hover{background:#007ba4}.range-slider.round{background:#FAFAFA;border-radius:1000px}.range-slider.round .range-slider-handle{background:#008CBA;border-radius:1000px}.range-slider.round .range-slider-handle:hover{background:#007ba4}.range-slider.disabled,.range-slider[disabled]{background:#FAFAFA;cursor:false;opacity:0.7}.range-slider.disabled .range-slider-handle,.range-slider[disabled] .range-slider-handle{background:#008CBA;cursor:default;opacity:0.7}.range-slider.disabled .range-slider-handle:hover,.range-slider[disabled] .range-slider-handle:hover{background:#007ba4}.range-slider-active-segment{background:#e5e5e5;border-bottom-left-radius:inherit;border-top-left-radius:inherit;display:inline-block;height:0.875rem;position:absolute}.range-slider-handle{border:1px solid none;cursor:pointer;display:inline-block;height:1.375rem;position:absolute;top:-0.3125rem;width:2rem;z-index:1;-ms-touch-action:manipulation;touch-action:manipulation;background:#008CBA}.range-slider-handle:hover{background:#007ba4}.reveal-modal-bg{background:#000000;background:rgba(0,0,0,0.45);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1004;left:0}.reveal-modal{border-radius:3px;display:none;position:absolute;top:0;visibility:hidden;width:100%;z-index:1005;left:0;background-color:#FFFFFF;padding:1.875rem;border:solid 1px #666666;box-shadow:0 0 10px rgba(0,0,0,0.4)}@media only screen and (max-width: 40em){.reveal-modal{min-height:100vh;}}.reveal-modal .column,.reveal-modal .columns{min-width:0}.reveal-modal>:first-child{margin-top:0}.reveal-modal>:last-child{margin-bottom:0}@media only screen and (min-width:40.063em){.reveal-modal{left:0;margin:0 auto;max-width:62.5rem;right:0;width:80%;}}@media only screen and (min-width:40.063em){.reveal-modal{top:6.25rem;}}.reveal-modal.radius{box-shadow:none;border-radius:3px}.reveal-modal.round{box-shadow:none;border-radius:1000px}.reveal-modal.collapse{padding:0;box-shadow:none}@media only screen and (min-width:40.063em){.reveal-modal.tiny{left:0;margin:0 auto;max-width:62.5rem;right:0;width:30%;}}@media only screen and (min-width:40.063em){.reveal-modal.small{left:0;margin:0 auto;max-width:62.5rem;right:0;width:40%;}}@media only screen and (min-width:40.063em){.reveal-modal.medium{left:0;margin:0 auto;max-width:62.5rem;right:0;width:60%;}}@media only screen and (min-width:40.063em){.reveal-modal.large{left:0;margin:0 auto;max-width:62.5rem;right:0;width:70%;}}@media only screen and (min-width:40.063em){.reveal-modal.xlarge{left:0;margin:0 auto;max-width:62.5rem;right:0;width:95%;}}.reveal-modal.full{height:100vh;height:100%;left:0;margin-left:0 !important;max-width:none !important;min-height:100vh;top:0}@media only screen and (min-width:40.063em){.reveal-modal.full{left:0;margin:0 auto;max-width:62.5rem;right:0;width:100%;}}.reveal-modal.toback{z-index:1003}.reveal-modal .close-reveal-modal{color:#AAAAAA;cursor:pointer;font-size:2.5rem;font-weight:bold;line-height:1;position:absolute;top:0.625rem;right:1.375rem}.side-nav{display:block;font-family:"Josefin Sans",sans-serif;list-style-position:outside;list-style-type:none;margin:0;padding:0.875rem 0}.side-nav li{font-size:0.875rem;font-weight:normal;margin:0 0 0.4375rem 0}.side-nav li a:not(.button){color:#008CBA;display:block;margin:0;padding:0.4375rem 0.875rem}.side-nav li a:not(.button):hover,.side-nav li a:not(.button):focus{background:rgba(0,0,0,0.025);color:#1cc7ff}.side-nav li a:not(.button):active{color:#1cc7ff}.side-nav li.active>a:first-child:not(.button){color:#1cc7ff;font-family:"Josefin Sans",sans-serif;font-weight:normal}.side-nav li.divider{border-top:1px solid;height:0;list-style:none;padding:0;border-top-color:#e6e6e6}.side-nav li.heading{color:#008CBA;font-size:0.875rem;font-weight:bold;text-transform:uppercase}.split.button{position:relative;padding-right:5.0625rem}.split.button span{display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px}.split.button span:after{position:absolute;content:"";width:0;height:0;display:block;border-style:inset;top:50%;left:50%}.split.button span:active{background-color:rgba(0,0,0,0.1)}.split.button span{border-left-color:rgba(255,255,255,0.5)}.split.button span{width:3.09375rem}.split.button span:after{border-top-style:solid;border-width:0.375rem;margin-left:-0.375rem;top:48%}.split.button span:after{border-color:#FFFFFF transparent transparent transparent}.split.button.secondary span{border-left-color:rgba(255,255,255,0.5)}.split.button.secondary span:after{border-color:#FFFFFF transparent transparent transparent}.split.button.alert span{border-left-color:rgba(255,255,255,0.5)}.split.button.success span{border-left-color:rgba(255,255,255,0.5)}.split.button.tiny{padding-right:3.75rem}.split.button.tiny span{width:2.25rem}.split.button.tiny span:after{border-top-style:solid;border-width:0.375rem;margin-left:-0.375rem;top:48%}.split.button.small{padding-right:4.375rem}.split.button.small span{width:2.625rem}.split.button.small span:after{border-top-style:solid;border-width:0.4375rem;margin-left:-0.375rem;top:48%}.split.button.large{padding-right:5.5rem}.split.button.large span{width:3.4375rem}.split.button.large span:after{border-top-style:solid;border-width:0.3125rem;margin-left:-0.375rem;top:48%}.split.button.expand{padding-left:2rem}.split.button.secondary span:after{border-color:#333333 transparent transparent transparent}.split.button.radius span{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.split.button.round span{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.split.button.no-pip span:before{border-style:none}.split.button.no-pip span:after{border-style:none}.split.button.no-pip span>i{display:block;left:50%;margin-left:-0.28889em;margin-top:-0.48889em;position:absolute;top:50%}.sub-nav{display:block;margin:-0.25rem 0 1.125rem;overflow:hidden;padding-top:0.25rem;width:auto}.sub-nav dt{text-transform:uppercase}.sub-nav dt,.sub-nav dd,.sub-nav li{color:#999999;float:left;font-family:"Josefin Sans",sans-serif;font-size:0.875rem;font-weight:normal;margin-left:1rem;margin-bottom:0}.sub-nav dt a,.sub-nav dd a,.sub-nav li a{color:#999999;padding:0.1875rem 1rem;text-decoration:none}.sub-nav dt a:hover,.sub-nav dd a:hover,.sub-nav li a:hover{color:#737373}.sub-nav dt.active a,.sub-nav dd.active a,.sub-nav li.active a{border-radius:3px;background:#008CBA;color:#FFFFFF;cursor:default;font-weight:normal;padding:0.1875rem 1rem}.sub-nav dt.active a:hover,.sub-nav dd.active a:hover,.sub-nav li.active a:hover{background:#0078a0}.switch{border:none;margin-bottom:1.5rem;outline:0;padding:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch label{background:#DDDDDD;color:transparent;cursor:pointer;display:block;margin-bottom:1rem;position:relative;text-indent:100%;width:4rem;height:2rem;transition:left 0.15s ease-out}.switch input{left:10px;opacity:0;padding:0;position:absolute;top:9px}.switch input+label{margin-left:0;margin-right:0}.switch label:after{background:#FFFFFF;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;width:1.5rem;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;-o-transition:translate3d(0, 0, 0);transition:left 0.15s ease-out;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.switch input:checked+label{background:#008CBA}.switch input:checked+label:after{left:2.25rem}.switch label{height:2rem;width:4rem}.switch label:after{height:1.5rem;width:1.5rem}.switch input:checked+label:after{left:2.25rem}.switch label{color:transparent;background:#DDDDDD}.switch label:after{background:#FFFFFF}.switch input:checked+label{background:#008CBA}.switch.large label{height:2.5rem;width:5rem}.switch.large label:after{height:2rem;width:2rem}.switch.large input:checked+label:after{left:2.75rem}.switch.small label{height:1.75rem;width:3.5rem}.switch.small label:after{height:1.25rem;width:1.25rem}.switch.small input:checked+label:after{left:2rem}.switch.tiny label{height:1.5rem;width:3rem}.switch.tiny label:after{height:1rem;width:1rem}.switch.tiny input:checked+label:after{left:1.75rem}.switch.radius label{border-radius:4px}.switch.radius label:after{border-radius:3px}.switch.round{border-radius:1000px}.switch.round label{border-radius:2rem}.switch.round label:after{border-radius:2rem}table{background:#FFFFFF;border:solid 1px #DDDDDD;margin-bottom:1.25rem;table-layout:auto}table caption{background:transparent;color:#222222;font-size:1rem;font-weight:bold}table thead{background:#F5F5F5}table thead tr th,table thead tr td{color:#222222;font-size:0.875rem;font-weight:bold;padding:0.5rem 0.625rem 0.625rem}table tfoot{background:#F5F5F5}table tfoot tr th,table tfoot tr td{color:#222222;font-size:0.875rem;font-weight:bold;padding:0.5rem 0.625rem 0.625rem}table tr th,table tr td{color:#222222;font-size:0.875rem;padding:0.5625rem 0.625rem;text-align:left}table tr.even,table tr.alt,table tr:nth-of-type(even){background:#F9F9F9}table thead tr th,table tfoot tr th,table tfoot tr td,table tbody tr th,table tbody tr td,table tr td{display:table-cell;line-height:1.125rem}.tabs{margin-bottom:0 !important;margin-left:0}.tabs:before,.tabs:after{content:" ";display:table}.tabs:after{clear:both}.tabs dd,.tabs .tab-title{float:left;list-style:none;margin-bottom:0 !important;position:relative}.tabs dd>a,.tabs .tab-title>a{display:block;background-color:#EFEFEF;color:#222222;font-family:"Josefin Sans",sans-serif;font-size:1rem;padding:1rem 2rem}.tabs dd>a:hover,.tabs .tab-title>a:hover{background-color:#e1e1e1}.tabs dd.active>a,.tabs .tab-title.active>a{background-color:#FFFFFF;color:#222222}.tabs.radius dd:first-child a,.tabs.radius .tab:first-child a{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.tabs.radius dd:last-child a,.tabs.radius .tab:last-child a{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.tabs.vertical dd,.tabs.vertical .tab-title{position:inherit;float:none;display:block;top:auto}.tabs-content{margin-bottom:1.5rem;width:100%}.tabs-content:before,.tabs-content:after{content:" ";display:table}.tabs-content:after{clear:both}.tabs-content>.content{display:none;float:left;padding:0.9375rem 0;width:100%}.tabs-content>.content.active{display:block;float:none}.tabs-content>.content.contained{padding:0.9375rem}.tabs-content.vertical{display:block}.tabs-content.vertical>.content{padding:0 0.9375rem}@media only screen and (min-width:40.063em){.tabs.vertical{float:left;margin:0;margin-bottom:1.25rem !important;max-width:20%;width:20%}.tabs-content.vertical{float:left;margin-left:-1px;max-width:80%;padding-left:1rem;width:80%}}.no-js .tabs-content>.content{display:block;float:none}.th{border:solid 4px #FFFFFF;box-shadow:0 0 0 1px rgba(0,0,0,0.2);display:inline-block;line-height:0;max-width:100%;transition:all 200ms ease-out}.th:hover,.th:focus{box-shadow:0 0 6px 1px rgba(0,140,186,0.5)}.th.radius{border-radius:3px}.has-tip{border-bottom:dotted 1px #CCCCCC;color:#333333;cursor:help;font-weight:bold}.has-tip:hover,.has-tip:focus{border-bottom:dotted 1px #003f54;color:#008CBA}.has-tip.tip-left,.has-tip.tip-right{float:none !important}.tooltip{background:#333333;color:#FFFFFF;display:none;font-size:0.875rem;font-weight:normal;line-height:1.3;max-width:300px;padding:0.75rem;position:absolute;width:100%;z-index:1006;left:50%}.tooltip>.nub{border:solid 5px;border-color:transparent transparent #333333 transparent;display:block;height:0;pointer-events:none;position:absolute;top:-10px;width:0;left:5px}.tooltip>.nub.rtl{left:auto;right:5px}.tooltip.radius{border-radius:3px}.tooltip.round{border-radius:1000px}.tooltip.round>.nub{left:2rem}.tooltip.opened{border-bottom:dotted 1px #003f54 !important;color:#008CBA !important}.tap-to-close{color:#777777;display:block;font-size:0.625rem;font-weight:normal}@media only screen{.tooltip>.nub{border-color:transparent transparent #333333 transparent;top:-10px}.tooltip.tip-top>.nub{border-color:#333333 transparent transparent transparent;bottom:-10px;top:auto}.tooltip.tip-left,.tooltip.tip-right{float:none !important}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #333333;left:auto;margin-top:-5px;right:-10px;top:50%}.tooltip.tip-right>.nub{border-color:transparent #333333 transparent transparent;left:-10px;margin-top:-5px;right:auto;top:50%}}meta.foundation-mq-topbar{font-family:"/only screen and (min-width:40.063em)/";width:40.063em}.contain-to-grid{width:100%;background:#FFFFFF}.contain-to-grid .top-bar{margin-bottom:0}.fixed{position:fixed;top:0;width:100%;z-index:99;left:0}.fixed.expanded:not(.top-bar){height:auto;max-height:100%;overflow-y:auto;width:100%}.fixed.expanded:not(.top-bar) .title-area{position:fixed;width:100%;z-index:99}.fixed.expanded:not(.top-bar) .top-bar-section{margin-top:3.125rem;z-index:98}.top-bar{background:#FFFFFF;height:3.125rem;line-height:3.125rem;margin-bottom:0;overflow:hidden;position:relative}.top-bar ul{list-style:none;margin-bottom:0}.top-bar .row{max-width:none}.top-bar form,.top-bar input,.top-bar select{margin-bottom:0}.top-bar input,.top-bar select{font-size:0.75rem;height:1.75rem;padding-bottom:.35rem;padding-top:.35rem}.top-bar .button,.top-bar button{font-size:0.75rem;margin-bottom:0;padding-bottom:.4125rem;padding-top:.4125rem}@media only screen and (max-width: 40em){.top-bar .button,.top-bar button{position:relative;top:-1px;}}.top-bar .title-area{margin:0;position:relative}.top-bar .name{font-size:16px;height:3.125rem;margin:0}.top-bar .name h1,.top-bar .name h2,.top-bar .name h3,.top-bar .name h4,.top-bar .name p,.top-bar .name span{font-size:1.0625rem;line-height:3.125rem;margin:0}.top-bar .name h1 a,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name p a,.top-bar .name span a{color:#0065a4;display:block;font-weight:normal;padding:0 1.0416666667rem;width:75%}.top-bar .toggle-topbar{position:absolute;right:0;top:0}.top-bar .toggle-topbar a{color:#0065a4;display:block;font-size:0.8125rem;font-weight:bold;height:3.125rem;line-height:3.125rem;padding:0 1.0416666667rem;position:relative;text-transform:uppercase}.top-bar .toggle-topbar.menu-icon{margin-top:-16px;top:50%}.top-bar .toggle-topbar.menu-icon a{color:#FFFFFF;height:34px;line-height:33px;padding:0 2.6041666667rem 0 1.0416666667rem;position:relative}.top-bar .toggle-topbar.menu-icon a span::after{content:"";display:block;height:0;position:absolute;margin-top:-8px;top:50%;right:1.0416666667rem;box-shadow:0 0 0 1px #FFFFFF,0 7px 0 1px #FFFFFF,0 14px 0 1px #FFFFFF;width:16px}.top-bar .toggle-topbar.menu-icon a span:hover:after{box-shadow:0 0 0 1px "",0 7px 0 1px "",0 14px 0 1px ""}.top-bar.expanded{background:transparent;height:auto}.top-bar.expanded .title-area{background:#FFFFFF}.top-bar.expanded .toggle-topbar a{color:#888888}.top-bar.expanded .toggle-topbar a span::after{box-shadow:0 0 0 1px #888888,0 7px 0 1px #888888,0 14px 0 1px #888888}@media screen and (-webkit-min-device-pixel-ratio: 0){.top-bar.expanded .top-bar-section .has-dropdown.moved>.dropdown,.top-bar.expanded .top-bar-section .dropdown{clip:initial}.top-bar.expanded .top-bar-section .has-dropdown:not(.moved)>ul{padding:0}}.top-bar-section{left:0;position:relative;width:auto;transition:left 300ms ease-out}.top-bar-section ul{display:block;font-size:16px;height:auto;margin:0;padding:0;width:100%}.top-bar-section .divider,.top-bar-section [role="separator"]{border-top:solid 1px gray;clear:both;height:1px;width:100%}.top-bar-section ul li{background:#FFFFFF}.top-bar-section ul li>a{color:#0065a4;display:block;font-family:"Josefin Sans",sans-serif;font-size:1.125rem;font-weight:600;padding-left:1.0416666667rem;padding:12px 0 12px 1.0416666667rem;text-transform:uppercase;width:100%}.top-bar-section ul li>a.button{font-size:1.125rem;padding-left:1.0416666667rem;padding-right:1.0416666667rem;background-color:#008CBA;border-color:#007095;color:#FFFFFF}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{background-color:#007095}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{color:#FFFFFF}.top-bar-section ul li>a.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333333}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{color:#333333}.top-bar-section ul li>a.button.success{background-color:#43AC6A;border-color:#368a55;color:#FFFFFF}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{background-color:#368a55}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{color:#FFFFFF}.top-bar-section ul li>a.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#FFFFFF}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{color:#FFFFFF}.top-bar-section ul li>a.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#FFFFFF}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{color:#FFFFFF}.top-bar-section ul li>a.button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333333}.top-bar-section ul li>a.button.info:hover,.top-bar-section ul li>a.button.info:focus{background-color:#61b6d9}.top-bar-section ul li>a.button.info:hover,.top-bar-section ul li>a.button.info:focus{color:#FFFFFF}.top-bar-section ul li>button{font-size:1.125rem;padding-left:1.0416666667rem;padding-right:1.0416666667rem;background-color:#008CBA;border-color:#007095;color:#FFFFFF}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{background-color:#007095}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{color:#FFFFFF}.top-bar-section ul li>button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333333}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{color:#333333}.top-bar-section ul li>button.success{background-color:#43AC6A;border-color:#368a55;color:#FFFFFF}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{background-color:#368a55}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{color:#FFFFFF}.top-bar-section ul li>button.alert{background-color:#f04124;border-color:#cf2a0e;color:#FFFFFF}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{color:#FFFFFF}.top-bar-section ul li>button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#FFFFFF}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{color:#FFFFFF}.top-bar-section ul li>button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333333}.top-bar-section ul li>button.info:hover,.top-bar-section ul li>button.info:focus{background-color:#61b6d9}.top-bar-section ul li>button.info:hover,.top-bar-section ul li>button.info:focus{color:#FFFFFF}.top-bar-section ul li:hover:not(.has-form)>a{background-color:#555555;color:#0065a4;background:rgba(255,255,255,0)}.top-bar-section ul li.active>a{background:rgba(255,255,255,0);color:#0065a4}.top-bar-section ul li.active>a:hover{background:rgba(255,255,255,0);color:#0065a4}.top-bar-section .has-form{padding:1.0416666667rem}.top-bar-section .has-dropdown{position:relative}.top-bar-section .has-dropdown>a:after{margin-right:1.0416666667rem;margin-top:-4.5px;position:absolute;top:50%;right:0}.top-bar-section .has-dropdown.moved{position:static}.top-bar-section .has-dropdown.moved>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important;width:100%}.top-bar-section .has-dropdown.moved>a:after{display:none}.top-bar-section .dropdown{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px;display:block;padding:0;position:absolute;top:0;z-index:99;left:100%}.top-bar-section .dropdown li{height:auto;width:100%}.top-bar-section .dropdown li a{font-weight:normal;padding:8px 1.0416666667rem}.top-bar-section .dropdown li a.parent-link{font-weight:600}.top-bar-section .dropdown li.title h5,.top-bar-section .dropdown li.parent-link{margin-bottom:0;margin-top:0;font-size:1.125rem}.top-bar-section .dropdown li.title h5 a,.top-bar-section .dropdown li.parent-link a{color:#0065a4;display:block}.top-bar-section .dropdown li.title h5 a:hover,.top-bar-section .dropdown li.parent-link a:hover{background:none}.top-bar-section .dropdown li.has-form{padding:8px 1.0416666667rem}.top-bar-section .dropdown li .button,.top-bar-section .dropdown li button{top:auto}.top-bar-section .dropdown label{color:#777777;font-size:0.625rem;font-weight:bold;margin-bottom:0;padding:8px 1.0416666667rem 2px;text-transform:uppercase}.js-generated{display:block}@media only screen and (min-width:40.063em){.top-bar{background:#FFFFFF;overflow:visible}.top-bar:before,.top-bar:after{content:" ";display:table}.top-bar:after{clear:both}.top-bar .toggle-topbar{display:none}.top-bar .title-area{float:left}.top-bar .name h1 a,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name h5 a,.top-bar .name h6 a{width:auto}.top-bar input,.top-bar select,.top-bar .button,.top-bar button{font-size:0.875rem;height:1.75rem;position:relative;top:0.6875rem}.top-bar .has-form>.button,.top-bar .has-form>button{font-size:0.875rem;height:1.75rem;position:relative;top:0.6875rem}.top-bar.expanded{background:#FFFFFF}.contain-to-grid .top-bar{margin:0 auto;margin-bottom:0;max-width:62.5rem}.top-bar-section{transition:none 0 0;left:0 !important}.top-bar-section ul{display:inline;height:auto !important;width:auto}.top-bar-section ul li{float:left}.top-bar-section ul li .js-generated{display:none}.top-bar-section li.hover>a:not(.button){background-color:#555555;background:rgba(255,255,255,0);color:#0065a4}.top-bar-section li:not(.has-form) a:not(.button){background:rgba(255,255,255,0);line-height:3.125rem;padding:0 1.0416666667rem}.top-bar-section li:not(.has-form) a:not(.button):hover{background-color:#555555;background:rgba(255,255,255,0)}.top-bar-section li.active:not(.has-form) a:not(.button){background:rgba(255,255,255,0);color:#0065a4;line-height:3.125rem;padding:0 1.0416666667rem}.top-bar-section li.active:not(.has-form) a:not(.button):hover{background:rgba(255,255,255,0);color:#0065a4}.top-bar-section .has-dropdown.moved{position:relative}.top-bar-section .has-dropdown.moved>.dropdown{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px;display:block}.top-bar-section .has-dropdown.hover>.dropdown,.top-bar-section .has-dropdown.not-click:hover>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.top-bar-section .has-dropdown>a:focus+.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.top-bar-section .has-dropdown .dropdown li.has-dropdown>a:after{border:none;content:"\00bb";top:0.1875rem;right:5px}.top-bar-section .dropdown{left:0;background:transparent;min-width:100%;top:auto}.top-bar-section .dropdown li a{background:#FFFFFF;color:#0065a4;line-height:3.125rem;padding:12px 1.0416666667rem;white-space:nowrap}.top-bar-section .dropdown li:not(.has-form):not(.active)>a:not(.button){background:#FFFFFF;color:#0065a4}.top-bar-section .dropdown li:not(.has-form):not(.active):hover>a:not(.button){background-color:#555555;color:#009543;background:#FFFFFF}.top-bar-section .dropdown li label{background:#333333;white-space:nowrap}.top-bar-section .dropdown li .dropdown{left:100%;top:0}.top-bar-section>ul>.divider,.top-bar-section>ul>[role="separator"]{border-right:solid 1px white;border-bottom:none;border-top:none;clear:none;height:3.125rem;width:0}.top-bar-section .has-form{background:rgba(255,255,255,0);height:3.125rem;padding:0 1.0416666667rem}.top-bar-section .right li .dropdown{left:auto;right:0}.top-bar-section .right li .dropdown li .dropdown{right:100%}.top-bar-section .left li .dropdown{right:auto;left:0}.top-bar-section .left li .dropdown li .dropdown{left:100%}.no-js .top-bar-section ul li:hover>a{background-color:#555555;background:rgba(255,255,255,0);color:#0065a4}.no-js .top-bar-section ul li:active>a{background:rgba(255,255,255,0);color:#0065a4}.no-js .top-bar-section .has-dropdown:hover>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.no-js .top-bar-section .has-dropdown>a:focus+.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}.text-justify{text-align:justify !important}@media only screen and (max-width: 40em){.small-only-text-left{text-align:left !important}.small-only-text-right{text-align:right !important}.small-only-text-center{text-align:center !important}.small-only-text-justify{text-align:justify !important}}@media only screen{.small-text-left{text-align:left !important}.small-text-right{text-align:right !important}.small-text-center{text-align:center !important}.small-text-justify{text-align:justify !important}}@media only screen and (min-width:40.063em) and (max-width:64em){.medium-only-text-left{text-align:left !important}.medium-only-text-right{text-align:right !important}.medium-only-text-center{text-align:center !important}.medium-only-text-justify{text-align:justify !important}}@media only screen and (min-width:40.063em){.medium-text-left{text-align:left !important}.medium-text-right{text-align:right !important}.medium-text-center{text-align:center !important}.medium-text-justify{text-align:justify !important}}@media only screen and (min-width:64.063em) and (max-width:90em){.large-only-text-left{text-align:left !important}.large-only-text-right{text-align:right !important}.large-only-text-center{text-align:center !important}.large-only-text-justify{text-align:justify !important}}@media only screen and (min-width:64.063em){.large-text-left{text-align:left !important}.large-text-right{text-align:right !important}.large-text-center{text-align:center !important}.large-text-justify{text-align:justify !important}}@media only screen and (min-width:90.063em) and (max-width:120em){.xlarge-only-text-left{text-align:left !important}.xlarge-only-text-right{text-align:right !important}.xlarge-only-text-center{text-align:center !important}.xlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width:90.063em){.xlarge-text-left{text-align:left !important}.xlarge-text-right{text-align:right !important}.xlarge-text-center{text-align:center !important}.xlarge-text-justify{text-align:justify !important}}@media only screen and (min-width:120.063em) and (max-width:99999999em){.xxlarge-only-text-left{text-align:left !important}.xxlarge-only-text-right{text-align:right !important}.xxlarge-only-text-center{text-align:center !important}.xxlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width:120.063em){.xxlarge-text-left{text-align:left !important}.xxlarge-text-right{text-align:right !important}.xxlarge-text-center{text-align:center !important}.xxlarge-text-justify{text-align:justify !important}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}a{color:#0065a4;line-height:inherit;text-decoration:none}a:hover,a:focus{color:#009543;text-decoration:underline}a img{border:none}p{font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.6;margin-bottom:1.25rem;text-rendering:optimizeLegibility}p.lead{font-size:1.21875rem;line-height:1.6}p aside{font-size:0.875rem;font-style:italic;line-height:1.35}h1,h2,h3,h4,h5,h6{color:#222222;font-family:"Josefin Sans",sans-serif;font-style:normal;font-weight:normal;line-height:1.4;margin-bottom:0.5rem;margin-top:0.2rem;text-rendering:optimizeLegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#6f6f6f;font-size:60%;line-height:0}h1{font-size:2.375rem}h2{font-size:1.9375rem}h3{font-size:1.6875rem}h4{font-size:1.0625rem}h5{font-size:1rem}h6{font-size:1rem}.subheader{line-height:1.4;color:#6f6f6f;font-weight:normal;margin-top:0.2rem;margin-bottom:0.5rem}hr{border:solid #DDDDDD;border-width:1px 0 0;clear:both;height:0;margin:1.25rem 0 1.1875rem}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:60%;line-height:inherit}code{background-color:#f8f8f8;border-color:#dfdfdf;border-style:solid;border-width:1px;color:#333333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:normal;padding:0.125rem 0.3125rem 0.0625rem}ul,ol,dl{font-family:inherit;font-size:1rem;line-height:1.6;list-style-position:outside;margin-bottom:1.25rem}ul{margin-left:1.1rem}ul li ul,ul li ol{margin-left:1.25rem;margin-bottom:0}ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}ul.square{list-style-type:square;margin-left:1.1rem}ul.circle{list-style-type:circle;margin-left:1.1rem}ul.disc{list-style-type:disc;margin-left:1.1rem}ol{margin-left:1.4rem}ol li ul,ol li ol{margin-left:1.25rem;margin-bottom:0}.no-bullet{list-style-type:none;margin-left:0}.no-bullet li ul,.no-bullet li ol{margin-left:1.25rem;margin-bottom:0;list-style:none}dl dt{margin-bottom:0.3rem;font-weight:bold}dl dd{margin-bottom:0.75rem}abbr,acronym{text-transform:uppercase;font-size:90%;color:#000000;cursor:help}abbr{text-transform:none}abbr[title]{border-bottom:1px dotted #DDDDDD}blockquote{margin:0 0 1.25rem;padding:0.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #DDDDDD}blockquote cite{display:block;font-size:0.8125rem;color:#555555}blockquote cite:before{content:"\2014 \0020"}blockquote cite a,blockquote cite a:visited{color:#555555}blockquote,blockquote p{line-height:1.6;color:#6f6f6f}.vcard{display:inline-block;margin:0 0 1.25rem 0;border:1px solid #DDDDDD;padding:0.625rem 0.75rem}.vcard li{margin:0;display:block}.vcard .fn{font-weight:bold;font-size:0.9375rem}.vevent .summary{font-weight:bold}.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 0.0625rem}@media only screen and (min-width:40.063em){h1,h2,h3,h4,h5,h6{line-height:1.4}h1{font-size:3rem}h2{font-size:2.25rem}h3{font-size:2rem}h4{font-size:1.1875rem}h5{font-size:1.125rem}h6{font-size:1.125rem}}@media print{*{background:transparent !important;color:#000000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.34in;}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.off-canvas-wrap{-webkit-backface-visibility:hidden;position:relative;width:100%;overflow:hidden}.off-canvas-wrap.move-right,.off-canvas-wrap.move-left,.off-canvas-wrap.move-bottom,.off-canvas-wrap.move-top{min-height:100%;-webkit-overflow-scrolling:touch}.inner-wrap{position:relative;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.inner-wrap:before,.inner-wrap:after{content:" ";display:table}.inner-wrap:after{clear:both}.tab-bar{-webkit-backface-visibility:hidden;background:#0065a4;color:#FFFFFF;height:2.8125rem;line-height:2.8125rem;position:relative}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4,.tab-bar h5,.tab-bar h6{color:#FFFFFF;font-weight:bold;line-height:2.8125rem;margin:0}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4{font-size:1.125rem}.left-small{height:2.8125rem;position:absolute;top:0;width:2.8125rem;border-right:solid 1px #003252;left:0}.right-small{height:2.8125rem;position:absolute;top:0;width:2.8125rem;border-left:solid 1px #003252;right:0}.tab-bar-section{height:2.8125rem;padding:0 0.625rem;position:absolute;text-align:center;top:0}.tab-bar-section.left{text-align:left}.tab-bar-section.right{text-align:right}.tab-bar-section.left{left:0;right:2.8125rem}.tab-bar-section.right{left:2.8125rem;right:0}.tab-bar-section.middle{left:2.8125rem;right:2.8125rem}.tab-bar .menu-icon{color:#FFFFFF;display:block;height:2.8125rem;padding:0;position:relative;text-indent:3.125rem;transform:translate3d(0, 0, 0);width:2.8125rem}.tab-bar .menu-icon span::after{content:"";display:block;height:0;position:absolute;top:50%;margin-top:-0.5rem;left:0.90625rem;box-shadow:0 0 0 1px #FFFFFF,0 7px 0 1px #FFFFFF,0 14px 0 1px #FFFFFF;width:1rem}.tab-bar .menu-icon span:hover:after{box-shadow:0 0 0 1px #b3b3b3,0 7px 0 1px #b3b3b3,0 14px 0 1px #b3b3b3}.left-off-canvas-menu{-webkit-backface-visibility:hidden;background:#0065a4;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate(-100%, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0;top:0}.left-off-canvas-menu *{-webkit-backface-visibility:hidden}.right-off-canvas-menu{-webkit-backface-visibility:hidden;background:#0065a4;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate(100%, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0;top:0}.right-off-canvas-menu *{-webkit-backface-visibility:hidden}.top-off-canvas-menu{-webkit-backface-visibility:hidden;background:#0065a4;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(0, -100%, 0);-moz-transform:translate3d(0, -100%, 0);-ms-transform:translate(0, -100%);-o-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);top:0;width:100%;height:18.75rem}.top-off-canvas-menu *{-webkit-backface-visibility:hidden}.bottom-off-canvas-menu{-webkit-backface-visibility:hidden;background:#0065a4;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(0, 100%, 0);-moz-transform:translate3d(0, 100%, 0);-ms-transform:translate(0, 100%);-o-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);bottom:0;width:100%;height:18.75rem}.bottom-off-canvas-menu *{-webkit-backface-visibility:hidden}ul.off-canvas-list{list-style-type:none;margin:0;padding:0}ul.off-canvas-list li label{background:#444444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999999;display:block;font-size:0.75rem;font-weight:bold;margin:0;padding:.3rem 0.9375rem;text-transform:uppercase}ul.off-canvas-list li a{border-bottom:1px solid #FFFFFF;color:#FFFFFF;display:block;padding:0.6666666667rem;transition:background 300ms ease}ul.off-canvas-list li a:hover{background:#004773}ul.off-canvas-list li a:active{background:#004773}.move-right>.inner-wrap{-webkit-transform:translate3d(15.625rem, 0, 0);-moz-transform:translate3d(15.625rem, 0, 0);-ms-transform:translate(15.625rem, 0);-o-transform:translate3d(15.625rem, 0, 0);transform:translate3d(15.625rem, 0, 0)}.move-right .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width:40.063em){.move-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.move-left>.inner-wrap{-webkit-transform:translate3d(-15.625rem, 0, 0);-moz-transform:translate3d(-15.625rem, 0, 0);-ms-transform:translate(-15.625rem, 0);-o-transform:translate3d(-15.625rem, 0, 0);transform:translate3d(-15.625rem, 0, 0)}.move-left .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width:40.063em){.move-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.move-top>.inner-wrap{-webkit-transform:translate3d(0, -18.75rem, 0);-moz-transform:translate3d(0, -18.75rem, 0);-ms-transform:translate(0, -18.75rem);-o-transform:translate3d(0, -18.75rem, 0);transform:translate3d(0, -18.75rem, 0)}.move-top .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width:40.063em){.move-top .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.move-bottom>.inner-wrap{-webkit-transform:translate3d(0, 18.75rem, 0);-moz-transform:translate3d(0, 18.75rem, 0);-ms-transform:translate(0, 18.75rem);-o-transform:translate3d(0, 18.75rem, 0);transform:translate3d(0, 18.75rem, 0)}.move-bottom .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width:40.063em){.move-bottom .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap .left-off-canvas-menu,.offcanvas-overlap .right-off-canvas-menu,.offcanvas-overlap .top-off-canvas-menu,.offcanvas-overlap .bottom-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width:40.063em){.offcanvas-overlap .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-left .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-left .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width:40.063em){.offcanvas-overlap-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-right .left-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-right .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width:40.063em){.offcanvas-overlap-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-top .bottom-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-top .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width:40.063em){.offcanvas-overlap-top .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-bottom .top-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-bottom .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width:40.063em){.offcanvas-overlap-bottom .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.no-csstransforms .left-off-canvas-menu{left:-15.625rem}.no-csstransforms .right-off-canvas-menu{right:-15.625rem}.no-csstransforms .top-off-canvas-menu{top:-18.75rem}.no-csstransforms .bottom-off-canvas-menu{bottom:-18.75rem}.no-csstransforms .move-left>.inner-wrap{right:15.625rem}.no-csstransforms .move-right>.inner-wrap{left:15.625rem}.no-csstransforms .move-top>.inner-wrap{right:18.75rem}.no-csstransforms .move-bottom>.inner-wrap{left:18.75rem}.left-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#0065a4;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;height:18.75rem;z-index:1002;-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate(-100%, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.left-submenu *{-webkit-backface-visibility:hidden}.left-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999999;font-weight:bold;padding:.3rem 0.9375rem;text-transform:uppercase;margin:0}.left-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.left-submenu .back>a:before{content:"\AB";margin-right:.5rem;display:inline}.left-submenu.move-right,.left-submenu.offcanvas-overlap-right,.left-submenu.offcanvas-overlap{-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate(0%, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.right-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#0065a4;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;height:18.75rem;z-index:1002;-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate(100%, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.right-submenu *{-webkit-backface-visibility:hidden}.right-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999999;font-weight:bold;padding:.3rem 0.9375rem;text-transform:uppercase;margin:0}.right-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.right-submenu .back>a:after{content:"\BB";margin-left:.5rem;display:inline}.right-submenu.move-left,.right-submenu.offcanvas-overlap-left,.right-submenu.offcanvas-overlap{-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate(0%, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.top-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#0065a4;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;height:18.75rem;z-index:1002;-webkit-transform:translate3d(0, -100%, 0);-moz-transform:translate3d(0, -100%, 0);-ms-transform:translate(0, -100%);-o-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);top:0;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.top-submenu *{-webkit-backface-visibility:hidden}.top-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999999;font-weight:bold;padding:.3rem 0.9375rem;text-transform:uppercase;margin:0}.top-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.top-submenu.move-bottom,.top-submenu.offcanvas-overlap-bottom,.top-submenu.offcanvas-overlap{-webkit-transform:translate3d(0, 0%, 0);-moz-transform:translate3d(0, 0%, 0);-ms-transform:translate(0, 0%);-o-transform:translate3d(0, 0%, 0);transform:translate3d(0, 0%, 0)}.bottom-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#0065a4;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;height:18.75rem;z-index:1002;-webkit-transform:translate3d(0, 100%, 0);-moz-transform:translate3d(0, 100%, 0);-ms-transform:translate(0, 100%);-o-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);bottom:0;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.bottom-submenu *{-webkit-backface-visibility:hidden}.bottom-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999999;font-weight:bold;padding:.3rem 0.9375rem;text-transform:uppercase;margin:0}.bottom-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.bottom-submenu.move-top,.bottom-submenu.offcanvas-overlap-top,.bottom-submenu.offcanvas-overlap{-webkit-transform:translate3d(0, 0%, 0);-moz-transform:translate3d(0, 0%, 0);-ms-transform:translate(0, 0%);-o-transform:translate3d(0, 0%, 0);transform:translate3d(0, 0%, 0)}.left-off-canvas-menu ul.off-canvas-list li.has-submenu>a:after{content:"\BB";margin-left:.5rem;display:inline}.right-off-canvas-menu ul.off-canvas-list li.has-submenu>a:before{content:"\AB";margin-right:.5rem;display:inline}@media only screen{.show-for-small-only,.show-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.hide-for-small-only,.hide-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.visible-for-small-only,.visible-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.hidden-for-small-only,.hidden-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.show-for-small-only,table.show-for-small-up,table.show-for-small,table.show-for-small-down,table.hide-for-medium-only,table.hide-for-medium-up,table.hide-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.show-for-small-only,thead.show-for-small-up,thead.show-for-small,thead.show-for-small-down,thead.hide-for-medium-only,thead.hide-for-medium-up,thead.hide-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.show-for-small-only,tbody.show-for-small-up,tbody.show-for-small,tbody.show-for-small-down,tbody.hide-for-medium-only,tbody.hide-for-medium-up,tbody.hide-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.show-for-small-only,tr.show-for-small-up,tr.show-for-small,tr.show-for-small-down,tr.hide-for-medium-only,tr.hide-for-medium-up,tr.hide-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.show-for-small-only,td.show-for-small-only,th.show-for-small-up,td.show-for-small-up,th.show-for-small,td.show-for-small,th.show-for-small-down,td.show-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.hide-for-medium-up,td.hide-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width:40.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.show-for-medium-only,table.show-for-medium-up,table.show-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.show-for-medium-only,thead.show-for-medium-up,thead.show-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.show-for-medium-only,tbody.show-for-medium-up,tbody.show-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.show-for-medium-only,tr.show-for-medium-up,tr.show-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.show-for-medium-only,td.show-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.show-for-medium,td.show-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width:64.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.show-for-large-only,table.show-for-large-up,table.show-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.show-for-large-only,thead.show-for-large-up,thead.show-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.show-for-large-only,tbody.show-for-large-up,tbody.show-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.show-for-large-only,tr.show-for-large-up,tr.show-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.show-for-large-only,td.show-for-large-only,th.show-for-large-up,td.show-for-large-up,th.show-for-large,td.show-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width:90.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.show-for-xlarge-only,table.show-for-xlarge-up,table.show-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.show-for-xlarge-only,thead.show-for-xlarge-up,thead.show-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.show-for-xlarge-only,tbody.show-for-xlarge-up,tbody.show-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.show-for-xlarge-only,tr.show-for-xlarge-up,tr.show-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.show-for-xlarge-only,td.show-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.show-for-xlarge,td.show-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width:120.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.hide-for-xlarge-only,.show-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.show-for-xlarge-only,.hide-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.hidden-for-xlarge-only,.visible-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.visible-for-xlarge-only,.hidden-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.hide-for-xlarge-only,table.show-for-xlarge-up,table.hide-for-xlarge,table.hide-for-xlarge-down,table.show-for-xxlarge-only,table.show-for-xxlarge-up,table.show-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.hide-for-xlarge-only,thead.show-for-xlarge-up,thead.hide-for-xlarge,thead.hide-for-xlarge-down,thead.show-for-xxlarge-only,thead.show-for-xxlarge-up,thead.show-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.hide-for-xlarge-only,tbody.show-for-xlarge-up,tbody.hide-for-xlarge,tbody.hide-for-xlarge-down,tbody.show-for-xxlarge-only,tbody.show-for-xxlarge-up,tbody.show-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.hide-for-xlarge-only,tr.show-for-xlarge-up,tr.hide-for-xlarge,tr.hide-for-xlarge-down,tr.show-for-xxlarge-only,tr.show-for-xxlarge-up,tr.show-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.hide-for-xlarge-down,td.hide-for-xlarge-down,th.show-for-xxlarge-only,td.show-for-xxlarge-only,th.show-for-xxlarge-up,td.show-for-xxlarge-up,th.show-for-xxlarge,td.show-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.hide-for-landscape,table.show-for-portrait{display:table !important}thead.hide-for-landscape,thead.show-for-portrait{display:table-header-group !important}tbody.hide-for-landscape,tbody.show-for-portrait{display:table-row-group !important}tr.hide-for-landscape,tr.show-for-portrait{display:table-row !important}td.hide-for-landscape,td.show-for-portrait,th.hide-for-landscape,th.show-for-portrait{display:table-cell !important}@media only screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.show-for-landscape,table.hide-for-portrait{display:table !important}thead.show-for-landscape,thead.hide-for-portrait{display:table-header-group !important}tbody.show-for-landscape,tbody.hide-for-portrait{display:table-row-group !important}tr.show-for-landscape,tr.hide-for-portrait{display:table-row !important}td.show-for-landscape,td.hide-for-portrait,th.show-for-landscape,th.hide-for-portrait{display:table-cell !important}}@media only screen and (orientation: portrait){.show-for-portrait,.hide-for-landscape{display:inherit !important}.hide-for-portrait,.show-for-landscape{display:none !important}table.show-for-portrait,table.hide-for-landscape{display:table !important}thead.show-for-portrait,thead.hide-for-landscape{display:table-header-group !important}tbody.show-for-portrait,tbody.hide-for-landscape{display:table-row-group !important}tr.show-for-portrait,tr.hide-for-landscape{display:table-row !important}td.show-for-portrait,td.hide-for-landscape,th.show-for-portrait,th.hide-for-landscape{display:table-cell !important}}.show-for-touch{display:none !important}.hide-for-touch{display:inherit !important}.touch .show-for-touch{display:inherit !important}.touch .hide-for-touch{display:none !important}table.hide-for-touch{display:table !important}.touch table.show-for-touch{display:table !important}thead.hide-for-touch{display:table-header-group !important}.touch thead.show-for-touch{display:table-header-group !important}tbody.hide-for-touch{display:table-row-group !important}.touch tbody.show-for-touch{display:table-row-group !important}tr.hide-for-touch{display:table-row !important}.touch tr.show-for-touch{display:table-row !important}td.hide-for-touch{display:table-cell !important}.touch td.show-for-touch{display:table-cell !important}th.hide-for-touch{display:table-cell !important}.touch th.show-for-touch{display:table-cell !important}.show-for-sr{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.show-on-focus{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.show-on-focus:focus,.show-on-focus:active{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.print-only,.show-for-print{display:none !important}@media print{.print-only,.show-for-print{display:block !important}.hide-on-print,.hide-for-print{display:none !important}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}}img.aligncenter{display:block;clear:both;float:none;padding:0;margin-left:auto;margin-right:auto}img.alignright{padding:0;margin:0 0 6px 11px;display:inline}blockquote.alignleft,img.alignleft,.wp-caption.alignleft{margin:0.4375rem 2.1875rem 0.4375rem 0}blockquote.alignright,img.alignright,.wp-caption.alignright{margin:0.4375rem 0 0.4375rem 2.1875rem}img.alignleft{padding:0;display:inline}.alignright{float:right}.alignnone{float:none}.alignleft{float:left}.wp-caption{width:auto}.wp-caption-text{font-family:Open Sans, sans-serif;font-size:9px;color:#FFFFFF;font-style:italic;margin:0;padding:0 5px}.gallery-one-title{height:45px;font-size:0.8em;text-align:center;font-family:sans-serif;padding:5px}.gallery-holder{margin:10px 0 20px 0}@media 0em, 40em{img.alignright,img.alignleft,img.aligncenter{width:70% !important;display:block;margin-left:auto;margin-right:auto;float:none;text-align:center}div.wp-caption.alignright,div.wp-caption.alignleft{width:44% !important;margin-left:auto;margin-right:auto;float:none;text-align:center}div.wp-caption.aligncenter{width:85% !important;margin-left:auto;margin-right:auto;float:none;text-align:center}div.wp-caption.alignnone{width:85% !important;float:none}div.wp-caption.alignright,div.wp-caption.alignleft,div.wp-caption.aligncenter{width:100%}}@media 40.063em, 64em{img.aligncenter,img.alignnone{width:70% !important;display:block;margin-left:auto;margin-right:auto;float:none;text-align:center}div.wp-caption.aligncenter{width:74% !important;margin-left:auto;margin-right:auto;float:none;text-align:center}div.wp-caption.aligncenter{width:100%}div.wp-caption.alignnone{width:73% !important;float:none}}.wp-caption{max-width:100%;margin:10px 20px;padding:5px;text-align:center}.wp-caption img{width:100%}.wp-caption p.wp-caption-text{padding:5px;width:100%;margin:0;color:black;font-size:14px;font-style:italic}.wp-caption.aligncenter{margin:10px auto}@media only screen and (max-width: 40em){#blog-posts-over{margin:0 !important}}.blog-posts-container{margin:30px 0 30px}.blog-posts-container embed,.blog-posts-container iframe,.blog-posts-container object,.blog-posts-container video{max-width:100%}.blog-posts-container a{text-decoration:none}.blog-posts-container header.entry-header h2.entry-title a{color:#222;margin-left:0}.blog-posts-container .wp-caption .wp-caption-text,.blog-posts-container .gallery-caption,.blog-posts-container .entry-caption{overflow:hidden;color:#757575;font-size:0.857143rem;font-style:italic;line-height:2}.blog-posts-container .date{font-size:12px}.blog-posts-container footer.entry-meta{color:#757575;font-size:0.928571rem;line-height:1.84615;margin-top:1.71429rem;clear:both;float:none;margin-right:auto}.blog-posts-container footer{background:none;clear:both;padding:15px 0 0;position:relative;text-align:center}#content-wrapper h1,#content-wrapper h2,#content-wrapper h3,#content-wrapper h4,#content-wrapper h5,#content-wrapper h6{clear:both}.content{background:#fff}#searchform_container{margin-top:20px}#searchform{max-width:100%;text-align:center}#searchform div input.blogbutton{background:-webkit-linear-gradient(top, #1999ce 80%, #107098 100%);background:-moz-linear-gradient(center top, #1999ce 80%, #107098 100%);background:-ms-linear-gradient(top, #1999ce 80%, #107098 100%)}#blog-side-info{border-left:1px solid grey;margin-top:30px;padding-left:20px}@media only screen and (max-width: 40em){#blog-side-info{text-align:center;}}h1,h2,h3,h4,h5,h6{clear:both}.gallery li a img{display:block;width:100%}.ngg-gallery-thumbnail,.ngg-gallery-thumbnail-box{float:none !important}.ngg-album-compact h4 .ngg-album-desc{height:auto !important;font-family:Georgia,Cambria,"Times New Roman",Times,serif;font-weight:400}.ngg-album-compact .album-meta-wrapper h4 a{font-style:normal}.album-meta-wrapper{display:block;height:54px;margin-bottom:20px}.ngg-glmalbums{margin:10px 0;min-height:260px}@media only screen and (max-width: 40em){.ngg-glmalbums{min-height:180px;}}.ngg-album-link{text-align:center}.ninja-forms-form-wrap{max-width:600px;margin:0 auto}.ninja-forms-form-wrap input[type=submit]{-webkit-appearance:none;-moz-appearance:none;border-radius:0;border-style:solid;border-width:3px;cursor:pointer;font-family:"Josefin Sans",sans-serif;font-weight:normal;line-height:normal;margin:0 0 1.25rem;position:relative;text-align:center;text-decoration:none;display:inline-block;padding:1rem 2rem 1.0625rem 2rem;font-size:1rem;background-color:#009543;border-color:#FFFFFF;color:#FFFFFF;transition:background-color 300ms ease-out;display:block;margin:0 auto}.ninja-forms-form-wrap input[type=submit]:hover,.ninja-forms-form-wrap input[type=submit]:focus{background-color:#007736}.ninja-forms-form-wrap input[type=submit]:hover,.ninja-forms-form-wrap input[type=submit]:focus{color:#FFFFFF}a[href^=tel]{color:inherit;text-decoration:none}body .shadow-wrapper{margin:0 auto;background:#FFFFFF;box-shadow:0 0 15px -6px #000000;-ms-box-shadow:0 0 15px -6px #000000;-moz-box-shadow:0 0 15px -6px #000000;-webkit-box-shadow:0 0 15px -6px #000000;max-width:1000px;padding-top:1.25rem}header.main{padding-top:5px;background:#FFFFFF;-webkit-box-shadow:5px 3px 6px -3px #000000;-moz-box-shadow:5px 3px 6px -3px #000000;box-shadow:5px 3px 6px -3px #000000}header.main span{color:#009543;font-size:1rem;margin:0 5px}header.main #logo-tag h3{clear:none;display:inline;color:#009543;white-space:nowrap}header.main #logo-tag img#logo{display:block}.contain-to-grid{box-shadow:0 5px 10px -1px #999999}.contain-to-grid .top-bar{height:73px;box-shadow:0 3px 3px 0 rgba(0,0,0,0.5);margin-bottom:10px}.tab-bar .tab-bar-section.middle{text-align:right}.tab-bar a.menu-icon span{color:#FFFFFF}.top-bar{float:none;margin:0 auto;width:1000px}.top-bar-section{background:transparent;display:inline-block;height:auto;line-height:1}.top-bar-section ul li{position:relative;background:rgba(255,255,255,0)}.top-bar-section ul li a{position:relative}.top-bar-section ul li a:hover{text-decoration:none}.top-bar-section ul li ul.dropdown{z-index:1;position:relative;display:block;float:left;padding:10px 5px;width:100%;margin-left:15px;min-width:400px;background:#FFFFFF;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-color:#96d3f9;border-left-width:1px;border-bottom-width:1px;border-right-width:1px;border-top-width:0;border-style:solid}.top-bar-section ul li ul.dropdown li{position:relative;display:inline-block;float:left;width:50%;padding:0 15px;height:auto}.top-bar-section ul li ul.dropdown li:first-child{display:none}.top-bar-section ul li ul.dropdown li:nth-child(odd){float:left}.top-bar-section ul li ul.dropdown li:nth-child(even){float:right}.top-bar-section ul li ul.dropdown li.active:not(.has-form){background:#FFFFFF}.top-bar-section ul li ul.dropdown li.active:not(.has-form)>a:not(.button){color:#0065a4;background:#FFFFFF}.top-bar-section ul li ul.dropdown li a{padding:10px 0 5px !important;font-size:1rem !important;white-space:pre-wrap;border-bottom:1px solid #dcddde}.top-bar-section ul li.drop-left>.dropdown{right:0 !important;left:auto !important;float:right !important}.top-bar-section>ul>li{position:relative}.top-bar-section>ul>li:before{color:#0065a4;content:" | ";position:absolute;bottom:15px;font-weight:bold;display:block;padding:0}.top-bar-section>ul>li:first-child:before{display:none}.menu-item-object-product_tag>a{word-wrap:break-word !important}@media only screen and (max-width: 40em){.page-front{position:relative;}}.page-front #block-row{margin-top:100px}.page-front #block-row .blocks .block{position:relative}@media only screen and (max-width: 40em){.page-front #block-row .blocks .block{float:none;left:0;right:0;max-width:395px;margin:0 auto 15px;}}.page-front #block-row .blocks .block img{border:2px solid #FFFFFF;width:100%;height:100%;box-shadow:0 2px 5px 0 #000000;-webkit-box-shadow:0 2px 5px 0 #000000;-moz-box-shadow:0 2px 5px 0 #000000;-ms-box-shadow:0 2px 5px 0 #000000}@media only screen and (max-width: 40em){.page-front #block-row .blocks .block img{float:none;left:0;right:0;}}.page-front #block-row .blocks .block .block-area{max-width:303.5px;position:absolute;z-index:3;top:0;display:block;width:91%;height:100%}.page-front #block-row .blocks .block .block-area h4{background:#80153f;position:absolute;bottom:5px;display:block;padding:0 5px;width:98.5%;left:2px;text-align:center;line-height:1.8;font-size:1.1875rem}@media screen and (min-width: 871px) and (max-width: 969px){.page-front #block-row .blocks .block .block-area h4{font-size:1.0625rem;}}@media screen and (min-width: 847px) and (max-width: 870px){.page-front #block-row .blocks .block .block-area h4{font-size:1rem;width:96.5%;}}@media screen and (min-width: 811px) and (max-width: 846px){.page-front #block-row .blocks .block .block-area h4{font-size:0.9375rem;width:96.5%;}}@media screen and (min-width: 774px) and (max-width: 810px){.page-front #block-row .blocks .block .block-area h4{font-size:0.875rem;width:96%;}}@media screen and (min-width: 641px) and (max-width: 773px){.page-front #block-row .blocks .block .block-area h4{font-size:0.75rem;width:96%;}}@media screen and (min-width: 385px) and (max-width: 640px){.page-front #block-row .blocks .block .block-area h4{width:100%;}}@media screen and (min-width: 365px) and (max-width: 384px){.page-front #block-row .blocks .block .block-area h4{width:99.6%;}}@media screen and (min-width: 320px) and (max-width: 364px){.page-front #block-row .blocks .block .block-area h4{width:99%;}}@media only screen and (max-width: 40em){.page-front #block-row .blocks .block .block-area h4{float:none;left:0;right:0;}}.page-front #block-row .blocks .block .block-area:hover{min-height:200px;background:rgba(0,0,0,0.8);height:auto}.page-front #block-row .blocks .block .block-area:hover h4{position:relative;top:0px;display:block;width:98.5%;left:2px;padding:0 5px;font-size:1.1875rem;text-align:center;line-height:1.8}@media screen and (min-width: 855px) and (max-width: 924px){.page-front #block-row .blocks .block .block-area:hover h4{font-size:1.125rem;}}@media screen and (min-width: 847px) and (max-width: 854px){.page-front #block-row .blocks .block .block-area:hover h4{font-size:1.125rem;width:96.5%;}}@media screen and (min-width: 774px) and (max-width: 846px){.page-front #block-row .blocks .block .block-area:hover h4{font-size:1rem;width:96.5%;}}@media screen and (min-width: 641px) and (max-width: 773px){.page-front #block-row .blocks .block .block-area:hover h4{font-size:0.8125rem;width:96.5%;}}@media screen and (min-width: 320px) and (max-width: 640px){.page-front #block-row .blocks .block .block-area:hover h4{width:100%;}}@media only screen and (max-width: 40em){.page-front #block-row .blocks .block .block-area:hover h4{float:none;left:0;right:0;}}.page-front #block-row .blocks .block .block-area:hover p{padding:0 10px;display:inline-block;color:#FFFFFF}.page-front #block-row .blocks .block .block-area:hover a.blocks-readmore{padding:0 10px;display:inline-block;color:#FFFFFF}.page-front #block-row .blocks .block .block-area:hover a.blocks-readmore:hover{color:#009543}@media only screen and (max-width: 40em){.page-front #block-row .blocks .block .block-area{max-width:365px;width:92.5%;}.page-front #block-row .blocks .block .block-area:hover{min-height:240.5px}}.page-front #block-row .blocks .block p{display:none}.page-front #block-row .blocks .block a.blocks-readmore{display:none}.page-front #main-content h1{font-size:2rem;font-family:Roman;font-style:italic;color:#a6a090}@media only screen and (max-width: 40em){.page-inside{position:relative;}}#main-content h4{color:#0065a4}#slide-cover{position:absolute;top:200px;height:575px;background:-webkit-linear-gradient(top, rgba(255, 255, 255, 0) 80%, #FFFFFF 100%);background:-moz-linear-gradient(center top, rgba(255, 255, 255, 0) 80%, #FFFFFF 100%);background:-ms-linear-gradient(top, rgba(255, 255, 255, 0) 80%, #FFFFFF 100%);width:100%}#content-wrapper{position:relative}#rotation{margin:20px 0 25px;background:#f1efea;padding:25px 0px 30px;position:relative;width:100%;display:inline-block}#rotation .event h6{padding:0 15px}#rotation .event span{display:inline-block;color:#009543}#rotation h1{font-weight:normal;margin-top:0;line-height:1.2}#rotation .arrow{position:relative;top:70px}@media only screen and (max-width: 40em){#rotation .arrow{top:95px;}}#rotation ul li a{position:relative}#rotation ul li a:hover:before{position:absolute;display:block;color:#FFFFFF;font-size:1.25rem;content:attr(data-title);z-index:3;top:40%;left:8%;text-align:center}#rotation ul li a:hover:after{position:absolute;top:0;left:0px;height:100%;width:100%;background:rgba(0,0,0,0.75);display:block;content:"";z-index:2}#home-feed-posts h3{margin-bottom:0}#home-feed-posts h3 a{color:#009543}#home-feed-posts span{margin-bottom:15px;color:#808285}#home-feed-posts img{display:inline-block;border-bottom:5px solid #a6a090;padding-top:10px;float:left;margin-right:15px}@media only screen and (max-width: 40em){#home-feed-posts img{display:block;float:none;margin:0 auto;}}#home-feed-posts a.read-more{display:inline}.page-header{position:relative;top:0;max-height:370px;overflow-y:hidden;z-index:-1;width:100%}.breadcrumbs{margin-top:10px}#content-bulk #con{margin:0}#content-bulk h2{text-transform:uppercase;font-size:25px}#content-bulk footer{margin:35px 0}#content-bulk footer #address{margin-top:25px}#content-bulk footer #address p{font-size:12px;margin-top:5px}#content-bulk footer #address img{margin:0;padding-right:5px}#content-bulk footer #address a{font-size:12px}#content-bulk footer img{box-shadow:none}#carousel_inner{float:left;width:100%;overflow:hidden;background:#F0F0F0}@media only screen and (min-width:40.063em) and (max-width:64em){#carousel_inner{float:none;margin:0 auto;width:630px;}}@media only screen and (max-width: 40em){#carousel_inner{width:210px;float:none;margin:0 auto;}}#carousel_ul{position:relative;left:-210px;list-style-type:none;margin:0px;padding:0px;width:9999px;padding-bottom:10px}#carousel_ul li{float:left;width:200px;padding:0px;height:200px;background:#000000;margin-top:10px;margin-bottom:10px;margin-left:5px;margin-right:5px}#carousel_ul li img{margin-bottom:-4px;cursor:pointer;cursor:hand;border:0px}#left_scroll img,#right_scroll img{cursor:pointer;cursor:hand}.tour-link{display:inline-block;width:100%;height:100%}#tours-tags-grid li{display:inline-block;margin:15px;max-width:200px;vertical-align:top}#tours-tags-grid li a{font-size:1.1rem}.tag_image:hover{cursor:pointer}@media (max-width: 482px) and (min-width: 320px){#tours-tags-grid{text-align:center}}.related_tours{list-style:none;line-height:1;padding:6px}.related_tours a{color:black;font-family:"josefin sans";line-height:1}small.product_category_title_item{text-align:left;display:block;font-size:13px;color:#572700;margin-bottom:7px;margin-top:-3px}#container #content .product .woocommerce-tabs .panel h1,#container #content .product .woocommerce-tabs .panel h3,#container #content .product .woocommerce-tabs .panel h4,#container #content .product .woocommerce-tabs .panel h6{color:#006a71}#container #content .product .woocommerce-tabs .panel h2,#container #content .product .woocommerce-tabs .panel h5{color:#AAAAAA}#slideshow{position:relative;min-height:350px;max-height:640px;overflow-y:hidden;width:100%;z-index:-1;list-style:none}@media only screen and (max-width: 40em){#slideshow{position:relative;min-height:200px;}}#slideshow #caption{background:rgba(0,0,0,0.75);color:#FFFFFF;margin-top:-51px}#slideshow #caption p{padding:10px 5px;font-size:12px;margin:0;text-align:right}.ngg-gallery-thumbnail,.ngg-gallery-thumbnail-box{float:none !important}.gallery li a img{display:block;width:100%}.ngg-gallery-thumbnail,.ngg-gallery-thumbnail-box{float:none !important}.ngg-album-compact h4 .ngg-album-desc{height:auto !important;font-family:Georgia,Cambria,"Times New Roman",Times,serif;font-weight:400}.ngg-album-compact .album-meta-wrapper h4 a{font-style:normal}.album-meta-wrapper{display:block;height:54px;margin-bottom:20px}.ngg-glmalbums{margin:10px 0}.ninja-forms-form-wrap{max-width:600px;margin:0 auto}.ninja-forms-form-wrap input[type=submit]{-webkit-appearance:none;-moz-appearance:none;border-radius:0;border-style:solid;border-width:3px;cursor:pointer;font-family:"Josefin Sans",sans-serif;font-weight:normal;line-height:normal;margin:0 0 1.25rem;position:relative;text-align:center;text-decoration:none;display:inline-block;padding:1rem 2rem 1.0625rem 2rem;font-size:1rem;background-color:#009543;border-color:#FFFFFF;color:#FFFFFF;transition:background-color 300ms ease-out;display:block;margin:0 auto}.ninja-forms-form-wrap input[type=submit]:hover,.ninja-forms-form-wrap input[type=submit]:focus{background-color:#007736}.ninja-forms-form-wrap input[type=submit]:hover,.ninja-forms-form-wrap input[type=submit]:focus{color:#FFFFFF}#input_1_14{min-width:290px !important}#tab-product_inquiry_tab .gform_title{display:none}.woocommerce-wrapper #container{max-width:1000px;margin:0 auto;float:left}main.woocommerce,div.woocommerce{font-family:Arial}main.woocommerce ul,main.woocommerce ol,main.woocommerce li,div.woocommerce ul,div.woocommerce ol,div.woocommerce li{}main.woocommerce #woo-quick-display,div.woocommerce #woo-quick-display{background-color:white;border-radius:3px;border:1px solid lightgrey;padding:5px;font-size:16px;margin-bottom:25px}main.woocommerce #woo-quick-display>div,div.woocommerce #woo-quick-display>div{text-align:center}main.woocommerce #woo-quick-display .button,div.woocommerce #woo-quick-display .button{border-radius:3px;display:inline;margin-left:15px;margin-top:12px;padding:2px 8px;float:right;margin:12px 0 0 18px;background-color:#476e70;color:white}main.woocommerce #woo-quick-display .button:hover,div.woocommerce #woo-quick-display .button:hover{background-color:#006A71}main.woocommerce #woo-quick-display h3,div.woocommerce #woo-quick-display h3{padding-top:0;text-align:center}main.woocommerce #woo-quick-display p,div.woocommerce #woo-quick-display p{margin-bottom:0}main.woocommerce ul.products,main.woocommerce .products ol,main.woocommerce .products dl,div.woocommerce ul.products,div.woocommerce .products ol,div.woocommerce .products dl{list-style-type:none}main.woocommerce .woocommerce-error,main.woocommerce .woocommerce-info,main.woocommerce .woocommerce-message,main.woocommerce .woocommerce-noreviews,main.woocommerce p.no-comments,div.woocommerce .woocommerce-error,div.woocommerce .woocommerce-info,div.woocommerce .woocommerce-message,div.woocommerce .woocommerce-noreviews,div.woocommerce p.no-comments{border-left:0.618em solid transparent;clear:both;margin-bottom:20px;margin-left:0px;font-family:arial, sans-serif;font-weight:bold;min-height:55px;padding-top:7px;line-height:1.2}main.woocommerce .woocommerce-error .button,main.woocommerce .woocommerce-info .button,main.woocommerce .woocommerce-message .button,main.woocommerce .woocommerce-noreviews .button,main.woocommerce p.no-comments .button,div.woocommerce .woocommerce-error .button,div.woocommerce .woocommerce-info .button,div.woocommerce .woocommerce-message .button,div.woocommerce .woocommerce-noreviews .button,div.woocommerce p.no-comments .button{margin:5px;float:left;padding:5px;border-radius:3px}main.woocommerce #respond input#submit.alt,main.woocommerce a.button.alt,main.woocommerce button.button.alt,main.woocommerce input.button.alt,div.woocommerce #respond input#submit.alt,div.woocommerce a.button.alt,div.woocommerce button.button.alt,div.woocommerce input.button.alt{background-color:#476e70;color:white}main.woocommerce #respond input#submit.alt:hover,main.woocommerce a.button.alt:hover,main.woocommerce button.button.alt:hover,main.woocommerce input.button.alt:hover,div.woocommerce #respond input#submit.alt:hover,div.woocommerce a.button.alt:hover,div.woocommerce button.button.alt:hover,div.woocommerce input.button.alt:hover{background-color:#006A71}main.woocommerce .cart-collaterals .cart_totals,main.woocommerce .woocommerce-page .cart-collaterals .cart_totals,div.woocommerce .cart-collaterals .cart_totals,div.woocommerce .woocommerce-page .cart-collaterals .cart_totals{float:right;margin-bottom:40px;width:100%}main.woocommerce h1.product_title,div.woocommerce h1.product_title{color:#009543;line-height:1.2;font-size:40px;margin-bottom:10px}main.woocommerce .onsale,div.woocommerce .onsale{display:none}main.woocommerce .page-numbers,div.woocommerce .page-numbers{list-style-type:none;display:flex}main.woocommerce .page-numbers li,div.woocommerce .page-numbers li{margin:0 10px}main.woocommerce #text [class*="column"]+[class*="column"]:last-child,div.woocommerce #text [class*="column"]+[class*="column"]:last-child{float:left}main.woocommerce #text>.product,div.woocommerce #text>.product{margin-bottom:20px}main.woocommerce .product.type-product,div.woocommerce .product.type-product{color:black;display:block}main.woocommerce .product.type-product a.button,div.woocommerce .product.type-product a.button{padding:5px;border-radius:3px}main.woocommerce .product.type-product a.button:hover,div.woocommerce .product.type-product a.button:hover{color:#000000}main.woocommerce .product.type-product>div,div.woocommerce .product.type-product>div{padding:5px;border-radius:5px}main.woocommerce .product.type-product .tab-description,div.woocommerce .product.type-product .tab-description{display:inline-block}main.woocommerce .product.type-product .tab-description p,div.woocommerce .product.type-product .tab-description p{padding-top:15px}main.woocommerce .product.type-product .woocommerce-tabs ul.tabs,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs{padding:0px}main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li{border-radius:0px}main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li.active,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li.active{border-color:lightgrey}main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li.active::before,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li.active::before{border:none}main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li.active::after,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li.active::after{border:none}main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::before,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::before{border:none}main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::after,main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::before,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::after,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::before{border:none}main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::after,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::after{border:none}main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::after,main.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::before,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::after,div.woocommerce .product.type-product .woocommerce-tabs ul.tabs li::before{border:none}main.woocommerce .product.type-product .woocommerce-tabs,div.woocommerce .product.type-product .woocommerce-tabs{width:100%;clear:both}main.woocommerce .product.type-product .woocommerce-tabs .wc-tab,div.woocommerce .product.type-product .woocommerce-tabs .wc-tab{padding:10px;border:1px solid lightgrey}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs:before,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs:before{border-bottom-color:lightgrey}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li{margin-right:8px;background-color:#D2D3D5;color:#572700;border:1px solid #D3D3D3;border-bottom:0;display:inline-block;color:#006A71}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:before,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:before{border-bottom-color:#006A71;box-shadow:none}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:after,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:after{border-bottom-color:#006A71}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:hover,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:hover{background:transparent url("../assets/repeating-pattern.jpg") repeat scroll 0 0}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:hover a,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:hover a{color:grey}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li a,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li a{display:block}@media only screen and (max-width: 40em){main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li{width:50%;margin:0;font-size:14px;text-align:center;}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li a,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li a{font-size:14px}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:nth-child(2n),div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li:nth-child(2n){float:right}}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active{background-color:#FFFFFF;border-width:2px;color:#383838}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active:before,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active:before{box-shadow:0;box-shadow:none}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active:after,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active:after{box-shadow:-2px 2px 0 #006A71}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active:hover,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active:hover{background:#FFFFFF}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active a:hover,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active a:hover{color:#383838}@media only screen and (max-width: 40em){main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active{border-width:1px;}}@media only screen and (max-width: 40em){main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs{padding-left:0;}}main.woocommerce .product.type-product .woocommerce-tabs .tabs .reviews_tab,main.woocommerce .product.type-product .woocommerce-tabs .tabs .additional_information_tab,div.woocommerce .product.type-product .woocommerce-tabs .tabs .reviews_tab,div.woocommerce .product.type-product .woocommerce-tabs .tabs .additional_information_tab{display:none}main.woocommerce .product.type-product .woocommerce-tabs>div.panel,div.woocommerce .product.type-product .woocommerce-tabs>div.panel{background-color:white}main.woocommerce .product.type-product .woocommerce-tabs p.stars a,div.woocommerce .product.type-product .woocommerce-tabs p.stars a{font-size:20px;padding:0 10px}main.woocommerce .product.type-product .woocommerce-tabs p.stars a.active,div.woocommerce .product.type-product .woocommerce-tabs p.stars a.active{background-color:#000000;border-radius:2px}main.woocommerce .product.type-product .sku_wrapper,div.woocommerce .product.type-product .sku_wrapper{display:none}main.woocommerce #address_form small,div.woocommerce #address_form small{display:inline-block;font-size:100%;padding:9px}main.woocommerce #tiptip_content,div.woocommerce #tiptip_content{font-family:Arial;font-size:12px}main.woocommerce .single_variation_wrap .quantity,div.woocommerce .single_variation_wrap .quantity{float:right;margin-bottom:10px}main.woocommerce .single_variation_wrap .quantity input,div.woocommerce .single_variation_wrap .quantity input{display:inline-block;background-color:white;height:40px;width:50px;padding:0;margin:0 5px}main.woocommerce #payment .payment_methods .form-row.place-order,div.woocommerce #payment .payment_methods .form-row.place-order{text-align:center}main.woocommerce #payment .payment_methods ul.payment_methods,div.woocommerce #payment .payment_methods ul.payment_methods{list-style-type:none}main.woocommerce #payment .payment_methods .payment_box>p,div.woocommerce #payment .payment_methods .payment_box>p{margin:0}main.woocommerce #payment .payment_methods .payment_box fieldset,div.woocommerce #payment .payment_methods .payment_box fieldset{margin:0;padding:10px 10px 0}main.woocommerce #payment .payment_methods .payment_box fieldset .form-row,div.woocommerce #payment .payment_methods .payment_box fieldset .form-row{width:100%}@media only screen and (min-width:64.063em){main.woocommerce #payment .payment_methods .payment_box fieldset .form-row,div.woocommerce #payment .payment_methods .payment_box fieldset .form-row{width:31%;float:left}main.woocommerce #payment .payment_methods .payment_box fieldset .clear,div.woocommerce #payment .payment_methods .payment_box fieldset .clear{clear:none}}main.woocommerce #payment .payment_methods .payment_box fieldset .form-row label,div.woocommerce #payment .payment_methods .payment_box fieldset .form-row label{padding:0}main.woocommerce #payment .payment_methods select[name="wc-intuit-qbms-test-condition"],div.woocommerce #payment .payment_methods select[name="wc-intuit-qbms-test-condition"]{margin:0}main.woocommerce #payment .payment_methods #wc-intuit-qbms-account-number,div.woocommerce #payment .payment_methods #wc-intuit-qbms-account-number{max-width:200px}main.woocommerce .pf-content,div.woocommerce .pf-content{margin-top:20px}main.woocommerce table.shop_table,div.woocommerce table.shop_table{width:100%}main.woocommerce table.shop_table .coupon,div.woocommerce table.shop_table .coupon{display:none}main.woocommerce table.shop_table .product-thumbnail,div.woocommerce table.shop_table .product-thumbnail{display:none}@media only screen and (min-width:64.063em){main.woocommerce table.shop_table .product-thumbnail,div.woocommerce table.shop_table .product-thumbnail{display:default;}}main.woocommerce table.shop_table .quantity,div.woocommerce table.shop_table .quantity{display:table}main.woocommerce table.shop_table .quantity .input-text,div.woocommerce table.shop_table .quantity .input-text{margin:0}main.woocommerce table.shop_table .quantity .minus,main.woocommerce table.shop_table .quantity .plus,div.woocommerce table.shop_table .quantity .minus,div.woocommerce table.shop_table .quantity .plus{background-color:transparent;box-shadow:none;color:#a46497;font-weight:700;width:50px;height:40px}main.woocommerce .quantity .minus:hover,main.woocommerce .quantity .plus:hover,div.woocommerce .quantity .minus:hover,div.woocommerce .quantity .plus:hover{background-color:transparent;color:inherit !important}main.woocommerce .checkout #customer_details,div.woocommerce .checkout #customer_details{display:inline-block;width:100%;max-width:600px}main.woocommerce .checkout .woocommerce-billing-fields,main.woocommerce .checkout .woocommerce-shipping-fields,div.woocommerce .checkout .woocommerce-billing-fields,div.woocommerce .checkout .woocommerce-shipping-fields{margin:0 auto 40px;max-width:600px;padding:20px;border:1px solid #e7e7e7}main.woocommerce .checkout .woocommerce-billing-fields p,main.woocommerce .checkout .woocommerce-shipping-fields p,div.woocommerce .checkout .woocommerce-billing-fields p,div.woocommerce .checkout .woocommerce-shipping-fields p{margin-bottom:15px}main.woocommerce .checkout .woocommerce-billing-fields p input,main.woocommerce .checkout .woocommerce-shipping-fields p input,div.woocommerce .checkout .woocommerce-billing-fields p input,div.woocommerce .checkout .woocommerce-shipping-fields p input{margin-bottom:15px}main.woocommerce #content-wrapper.woocommerce-wrapper .content,div.woocommerce #content-wrapper.woocommerce-wrapper .content{padding:20px 5px}@media only screen and (max-width: 40em){main.woocommerce #content-wrapper.woocommerce-wrapper .main,div.woocommerce #content-wrapper.woocommerce-wrapper .main{padding:0 10px}}main.woocommerce #content,div.woocommerce #content{margin-top:25px}main.woocommerce .woocommerce-ordering select.orderby,div.woocommerce .woocommerce-ordering select.orderby{max-width:200px}main.woocommerce main.page-inside #content-wrapper #main-content #main-text.shop-cat-list,div.woocommerce main.page-inside #content-wrapper #main-content #main-text.shop-cat-list{padding:0 6px}main.woocommerce main.page-inside #content-wrapper #main-content #main-text.shop-cat-list .shop-cat-list-content>div,div.woocommerce main.page-inside #content-wrapper #main-content #main-text.shop-cat-list .shop-cat-list-content>div{padding:0}main.woocommerce main.page-inside #content-wrapper .content,div.woocommerce main.page-inside #content-wrapper .content{border-bottom:3px solid #c5aa6d;box-shadow:0 5px 5px 0 rgba(0,0,0,0.8)}main.woocommerce #content-wrapper.woocommerce-wrapper .main.woo-single-product,div.woocommerce #content-wrapper.woocommerce-wrapper .main.woo-single-product{padding:20px 3%}main.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce .products,div.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce .products{position:inherit;border:0 !important}main.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce .product-category,div.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce .product-category{margin-bottom:0;height:25px}main.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce .product-category h3,div.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce .product-category h3{font-size:12px;font-weight:normal;padding:0.5em 20px}main.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce .product-category:hover h3,div.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce .product-category:hover h3{color:#25c2e6 !important}main.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce img,div.woocommerce nav.top-bar .top-bar-section>ul>li.drop>ul.dropdown .woocommerce img{display:none}main.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce .products,div.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce .products{position:inherit;border:0 !important}main.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce .product-category,div.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce .product-category{margin-bottom:0;height:28px}main.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce .product-category h3,div.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce .product-category h3{color:white;font-size:12px;font-weight:normal;padding:0.5em 20px}main.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce img,div.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce img{display:none}main.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce a,div.woocommerce .left-off-canvas-menu>ul>li.has-dropdown>ul.dropdown .woocommerce a{margin-left:40px;padding:0}main.woocommerce #payment .payment_methods label,div.woocommerce #payment .payment_methods label{padding:0 0 20px;margin:0;width:80%}main.woocommerce #shipping_method input[type="checkbox"]+label,main.woocommerce input[type="radio"]+label,div.woocommerce #shipping_method input[type="checkbox"]+label,div.woocommerce input[type="radio"]+label{margin-left:25px}main.woocommerce .cart_item .product-name,div.woocommerce .cart_item .product-name{min-width:160px;font-size:15px;font-weight:bold}main.woocommerce .woocommerce-checkout-review-order-table .product-quantity,div.woocommerce .woocommerce-checkout-review-order-table .product-quantity{float:right}main.woocommerce #content .cart_item td.product-name dl.variation dd,main.woocommerce dd p,main.woocommerce dt,div.woocommerce #content .cart_item td.product-name dl.variation dd,div.woocommerce dd p,div.woocommerce dt{font-size:12px;font-weight:normal;margin-bottom:0;line-height:1}main.woocommerce #content td.product-name dl.variation dd,main.woocommerce #content td.product-name dl.variation dt,div.woocommerce #content td.product-name dl.variation dd,div.woocommerce #content td.product-name dl.variation dt{margin-bottom:0}main.woocommerce #content .product.type-product .variations_form .variations,div.woocommerce #content .product.type-product .variations_form .variations{margin:0 auto;width:auto;min-width:190px;max-width:220px}main.woocommerce .variations tbody,main.woocommerce .variations tbody tr,div.woocommerce .variations tbody,div.woocommerce .variations tbody tr{display:block}main.woocommerce .page-numbers li,div.woocommerce .page-numbers li{float:left}main.woocommerce .related.products,div.woocommerce .related.products{margin-top:30px}main.woocommerce h3#ship-to-different-address,div.woocommerce h3#ship-to-different-address{font-weight:bold}main.woocommerce .woocommerce-breadcrumb,div.woocommerce .woocommerce-breadcrumb{display:none}main.woocommerce #content .product.type-product .product_meta,div.woocommerce #content .product.type-product .product_meta{clear:both;padding-top:25px}main.woocommerce #content .product.type-product .product_meta a,div.woocommerce #content .product.type-product .product_meta a{display:initial}main.woocommerce #content .product.type-product .product_meta .posted_in,div.woocommerce #content .product.type-product .product_meta .posted_in{display:none}main.woocommerce #content .product.type-product .variations_form a.reset_variations,div.woocommerce #content .product.type-product .variations_form a.reset_variations{display:none !important}main.woocommerce #content .product.type-product .variations_form,div.woocommerce #content .product.type-product .variations_form{clear:both;display:table;width:100%;margin-bottom:20px}main.woocommerce #content .product.type-product .variations_form .variations,div.woocommerce #content .product.type-product .variations_form .variations{display:block;margin:0 auto;width:auto;min-width:190px;max-width:220px;border:0;margin-top:30px;display:block}main.woocommerce #content .product.type-product .variations_form .variations ul,div.woocommerce #content .product.type-product .variations_form .variations ul{border:1px solid darkgrey;margin-left:0;text-align:left}main.woocommerce #content .product.type-product .variations_form .variations .label,div.woocommerce #content .product.type-product .variations_form .variations .label{display:block}main.woocommerce #content .product.type-product .variations_form .variations .label label,div.woocommerce #content .product.type-product .variations_form .variations .label label{color:white}main.woocommerce #content .product.type-product .variations_form .variations .value,div.woocommerce #content .product.type-product .variations_form .variations .value{padding-right:0;display:block}main.woocommerce #content .product.type-product .variations_form .variations .value fieldset,div.woocommerce #content .product.type-product .variations_form .variations .value fieldset{border:none;padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0}main.woocommerce #content .product.type-product .variations_form .variations .value fieldset p,div.woocommerce #content .product.type-product .variations_form .variations .value fieldset p{margin-bottom:5px}main.woocommerce #content .product.type-product .variations_form .variations input[type="file"],main.woocommerce #content .product.type-product .variations_form .variations input[type="checkbox"],main.woocommerce #content .product.type-product .variations_form .variations input[type="radio"],main.woocommerce #content .product.type-product .variations_form .variations select,div.woocommerce #content .product.type-product .variations_form .variations input[type="file"],div.woocommerce #content .product.type-product .variations_form .variations input[type="checkbox"],div.woocommerce #content .product.type-product .variations_form .variations input[type="radio"],div.woocommerce #content .product.type-product .variations_form .variations select{margin-bottom:0;margin-right:0}main.woocommerce #content .product.type-product .variations_form .variations select,div.woocommerce #content .product.type-product .variations_form .variations select{background-color:#006A71;border-radius:5px;color:white;border:none}main.woocommerce #content .product.type-product .variations_form .variations select *,div.woocommerce #content .product.type-product .variations_form .variations select *{background-color:lightblue;color:black}main.woocommerce #content .product.type-product .variations_form .single_variation_wrap,div.woocommerce #content .product.type-product .variations_form .single_variation_wrap{margin:0 auto;float:right;clear:both}main.woocommerce #content .product.type-product .variations_form .single_variation_wrap .single_variation,div.woocommerce #content .product.type-product .variations_form .single_variation_wrap .single_variation{padding:10px;float:right}@media only screen and (max-width: 40em){main.woocommerce #content .product.type-product .variations_form .single_variation_wrap .single_variation,div.woocommerce #content .product.type-product .variations_form .single_variation_wrap .single_variation{float:none;text-align:center;}}main.woocommerce #content .product.type-product .variations_form .variations_button button,div.woocommerce #content .product.type-product .variations_form .variations_button button{border-radius:3px;font-size:16px;margin:12px 0 0;padding:8px 28px}@media only screen and (min-width:0em) and (max-width:64em){main.woocommerce #content .product.type-product .variations_form .variations,main.woocommerce #content .product.type-product .variations_form .single_variation_wrap,main.woocommerce #content .product.type-product .variations_form .single_variation_wrap .variations_button,main.woocommerce #content .product.type-product .variations_form .single_variation_wrap .variations_button .quantity,div.woocommerce #content .product.type-product .variations_form .variations,div.woocommerce #content .product.type-product .variations_form .single_variation_wrap,div.woocommerce #content .product.type-product .variations_form .single_variation_wrap .variations_button,div.woocommerce #content .product.type-product .variations_form .single_variation_wrap .variations_button .quantity{text-align:center;float:none;margin-left:auto;margin-right:auto;clear:both}main.woocommerce #content .product.type-product .variations_form .single_variation_wrap .variations_button .quantity,div.woocommerce #content .product.type-product .variations_form .single_variation_wrap .variations_button .quantity{clear:none}}@media only screen and (max-width: 40em){main.woocommerce #content .product.type-product .variations_form .single_variation_wrap,div.woocommerce #content .product.type-product .variations_form .single_variation_wrap{width:100%}}main.woocommerce #content .product.type-product h1.product_title,div.woocommerce #content .product.type-product h1.product_title{color:#006a71;font-size:27px;font-family:open sans;font-weight:bold;line-height:1;margin:0 auto;width:90%;padding-bottom:10px}main.woocommerce #content .product.type-product .single_add_to_cart_button,div.woocommerce #content .product.type-product .single_add_to_cart_button{border-radius:3px;clear:both;float:right;background:transparent url("../assets/repeating-pattern.jpg") repeat scroll 0 0;font-size:16px;margin:12px 0 0;padding:8px 28px;border:1px solid transparent}@media only screen and (min-width:0em) and (max-width:64em){main.woocommerce #content .product.type-product .single_add_to_cart_button,div.woocommerce #content .product.type-product .single_add_to_cart_button{float:none;}}main.woocommerce #content .product.type-product .single_add_to_cart_button:hover,main.woocommerce #content .product.type-product .single_add_to_cart_button:focus,div.woocommerce #content .product.type-product .single_add_to_cart_button:hover,div.woocommerce #content .product.type-product .single_add_to_cart_button:focus{background-color:white;border:1px solid #006A71}main.woocommerce #content .product.type-product>div,div.woocommerce #content .product.type-product>div{float:left}main.woocommerce #content .product.type-product .related.products,div.woocommerce #content .product.type-product .related.products{width:100%}main.woocommerce #content .product.type-product .quantity,main.woocommerce #content .product.type-product .qty,div.woocommerce #content .product.type-product .quantity,div.woocommerce #content .product.type-product .qty{float:right;display:table;height:25px;padding:2px 0 2px 5px}@media only screen and (max-width: 40em){main.woocommerce #content .product.type-product .quantity,main.woocommerce #content .product.type-product .qty,div.woocommerce #content .product.type-product .quantity,div.woocommerce #content .product.type-product .qty{float:none;margin:0 auto;}}main.woocommerce #content .product.type-product .quantity .input-text,main.woocommerce #content .product.type-product .qty .input-text,div.woocommerce #content .product.type-product .quantity .input-text,div.woocommerce #content .product.type-product .qty .input-text{margin:0}main.woocommerce #content .product.type-product .quantity .minus,main.woocommerce #content .product.type-product .quantity .plus,main.woocommerce #content .product.type-product .qty .minus,main.woocommerce #content .product.type-product .qty .plus,div.woocommerce #content .product.type-product .quantity .minus,div.woocommerce #content .product.type-product .quantity .plus,div.woocommerce #content .product.type-product .qty .minus,div.woocommerce #content .product.type-product .qty .plus{background-color:transparent;box-shadow:none;color:#a46497;font-weight:700;width:50px;height:40px}main.woocommerce #content .product.type-product .quantity .minus:hover,main.woocommerce #content .product.type-product .quantity .plus:hover,main.woocommerce #content .product.type-product .qty .minus:hover,main.woocommerce #content .product.type-product .qty .plus:hover,div.woocommerce #content .product.type-product .quantity .minus:hover,div.woocommerce #content .product.type-product .quantity .plus:hover,div.woocommerce #content .product.type-product .qty .minus:hover,div.woocommerce #content .product.type-product .qty .plus:hover{background-color:transparent;color:inherit !important}main.woocommerce #content .product.type-product .cart-qty-label,div.woocommerce #content .product.type-product .cart-qty-label{float:none;text-align:center;clear:both;margin-left:5px}main.woocommerce #content .product.type-product .price,div.woocommerce #content .product.type-product .price{color:transparent;margin-bottom:0;font-size:32px;margin:0;float:right;text-align:right;display:block;line-height:1.0}@media only screen and (max-width: 40em){main.woocommerce #content .product.type-product .price,div.woocommerce #content .product.type-product .price{float:none;text-align:center;}}main.woocommerce #content .product.type-product .price>*,div.woocommerce #content .product.type-product .price>*{height:40px}main.woocommerce #content .product.type-product .price span,div.woocommerce #content .product.type-product .price span{color:#572700;font-size:40px;margin-top:-2px}main.woocommerce #content .product.type-product .price span:nth-child(2),div.woocommerce #content .product.type-product .price span:nth-child(2){display:none}main.woocommerce #content .product.type-product .price del,div.woocommerce #content .product.type-product .price del{color:#006A71}main.woocommerce #content .product.type-product .price.price-single,div.woocommerce #content .product.type-product .price.price-single{clear:both;float:none;text-align:left;padding-bottom:5px}main.woocommerce #content .product.type-product .price.price-single span,div.woocommerce #content .product.type-product .price.price-single span{color:black;font-size:22px}@media only screen and (min-width:0em) and (max-width:64em){main.woocommerce #content .product.type-product .price.price-single,div.woocommerce #content .product.type-product .price.price-single{text-align:center;}}main.woocommerce #content .product.type-product .stock,div.woocommerce #content .product.type-product .stock{color:black;float:right;clear:both;font-size:14px}@media only screen and (max-width: 40em){main.woocommerce #content .product.type-product .stock,div.woocommerce #content .product.type-product .stock{float:none;text-align:center;}}@media only screen and (max-width: 40em){main.woocommerce #content .product.type-product,div.woocommerce #content .product.type-product{margin-top:20px;}main.woocommerce #content .product.type-product .images,div.woocommerce #content .product.type-product .images{width:auto;max-width:260px;margin:0 auto;float:none}main.woocommerce #content .product.type-product .summary.entry-summary,div.woocommerce #content .product.type-product .summary.entry-summary{width:100%}main.woocommerce #content .product.type-product .summary.entry-summary h1,div.woocommerce #content .product.type-product .summary.entry-summary h1{font-size:32px}}main.woocommerce #content .product.type-product .related .products .product.type-product h3,div.woocommerce #content .product.type-product .related .products .product.type-product h3{font-size:13px;font-weight:normal}main.woocommerce #content .product.type-product .summary.entry-summary>div[itemprop="description"],div.woocommerce #content .product.type-product .summary.entry-summary>div[itemprop="description"]{margin:0 auto;text-align:left;width:100%}main.woocommerce .shop_table.shop_table_responsive.cart,div.woocommerce .shop_table.shop_table_responsive.cart{margin-top:20px}main.woocommerce .wc-proceed-to-checkout,div.woocommerce .wc-proceed-to-checkout{text-align:center}main.woocommerce .main.woo-single-product,div.woocommerce .main.woo-single-product{float:left}main.woocommerce .main.woo-single-product #content,div.woocommerce .main.woo-single-product #content{}main.woocommerce .main.woo-single-product #content .type-product .images,div.woocommerce .main.woo-single-product #content .type-product .images{border:0 none;float:none;width:100%;max-width:100%;margin-bottom:10px;width:100%}main.woocommerce .main.woo-single-product #content .type-product .images .woocommerce-main-image.zoom,div.woocommerce .main.woo-single-product #content .type-product .images .woocommerce-main-image.zoom{display:block}main.woocommerce .main.woo-single-product #content .type-product .images .woocommerce-main-image.zoom .wp-post-image,div.woocommerce .main.woo-single-product #content .type-product .images .woocommerce-main-image.zoom .wp-post-image{height:auto;margin:0 auto;width:100%;border-radius:10px;border:1px solid grey}@media only screen and (max-width: 40em){main.woocommerce .main.woo-single-product #content .type-product .images,div.woocommerce .main.woo-single-product #content .type-product .images{width:100%;}}main.woocommerce .main.woo-single-product #content .type-product .summary.entry-summary,div.woocommerce .main.woo-single-product #content .type-product .summary.entry-summary{width:100%;margin-bottom:10px}@media only screen and (max-width: 40em){main.woocommerce .main.woo-single-product #content .type-product .summary.entry-summary,div.woocommerce .main.woo-single-product #content .type-product .summary.entry-summary{width:100%;}}main.woocommerce .main.woo-single-product #content .type-product .cart,main.woocommerce .main.woo-single-product #content .type-product .price,main.woocommerce .main.woo-single-product #content .type-product .quantity,main.woocommerce .main.woo-single-product #content .type-product .qty,main.woocommerce .main.woo-single-product #content .type-product .stock,main.woocommerce .main.woo-single-product #content .type-product .single_variation_wrap,main.woocommerce .main.woo-single-product #content .type-product .single_variation_wrap .single_variation,div.woocommerce .main.woo-single-product #content .type-product .cart,div.woocommerce .main.woo-single-product #content .type-product .price,div.woocommerce .main.woo-single-product #content .type-product .quantity,div.woocommerce .main.woo-single-product #content .type-product .qty,div.woocommerce .main.woo-single-product #content .type-product .stock,div.woocommerce .main.woo-single-product #content .type-product .single_variation_wrap,div.woocommerce .main.woo-single-product #content .type-product .single_variation_wrap .single_variation{float:none;text-align:center;margin:0 auto}main.woocommerce .main.woo-single-product #content .type-product .single_add_to_cart_button,main.woocommerce .main.woo-single-product #content .type-product .single_add_to_cart_button button,div.woocommerce .main.woo-single-product #content .type-product .single_add_to_cart_button,div.woocommerce .main.woo-single-product #content .type-product .single_add_to_cart_button button{text-align:center;margin-top:12px;float:none}main.woocommerce .main.woo-single-product #content .type-product .woo-qty-wrapper,div.woocommerce .main.woo-single-product #content .type-product .woo-qty-wrapper{margin:0 auto;width:100px}main.woocommerce .main.woo-single-product #content .type-product .cart-qty-label,div.woocommerce .main.woo-single-product #content .type-product .cart-qty-label{float:left;clear:none;text-align:center}main.woocommerce .main.woo-single-product #content .thumbnails>a,div.woocommerce .main.woo-single-product #content .thumbnails>a{display:none;padding:0px;height:35px;overflow:hidden;border:1px solid lightgrey;border-radius:2px}main.woocommerce .main.woo-single-product #content .thumbnails>a img,div.woocommerce .main.woo-single-product #content .thumbnails>a img{min-height:35px;min-width:100%}main.woocommerce .main.woo-single-product #content .product.has-default-attributes.has-children>.images,div.woocommerce .main.woo-single-product #content .product.has-default-attributes.has-children>.images{opacity:1}main.woocommerce .main.woo-single-product #content .entry-summary .product_title,div.woocommerce .main.woo-single-product #content .entry-summary .product_title{margin-bottom:10px}main.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child,main.woocommerce .main.woo-single-product #content .related ul.products li.product,div.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child,div.woocommerce .main.woo-single-product #content .related ul.products li.product{width:33.33%;height:300px;float:left;clear:none;padding:10px;margin:0}@media only screen and (max-width: 40em){main.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child,main.woocommerce .main.woo-single-product #content .related ul.products li.product,div.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child,div.woocommerce .main.woo-single-product #content .related ul.products li.product{width:50%;height:260px;}}main.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child img,main.woocommerce .main.woo-single-product #content .related ul.products li.product img,div.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child img,div.woocommerce .main.woo-single-product #content .related ul.products li.product img{padding-right:0;max-height:172px;max-width:207px;padding-right:15px;width:100%}main.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child [itemprop="description"],main.woocommerce .main.woo-single-product #content .related ul.products li.product [itemprop="description"],div.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child [itemprop="description"],div.woocommerce .main.woo-single-product #content .related ul.products li.product [itemprop="description"]{display:none}main.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child .price span.amount,main.woocommerce .main.woo-single-product #content .related ul.products li.product .price span.amount,div.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child .price span.amount,div.woocommerce .main.woo-single-product #content .related ul.products li.product .price span.amount{font-size:22px}main.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child .price>*,main.woocommerce .main.woo-single-product #content .related ul.products li.product .price>*,div.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child .price>*,div.woocommerce .main.woo-single-product #content .related ul.products li.product .price>*{height:20px}main.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child form.cart,main.woocommerce .main.woo-single-product #content .related ul.products li.product form.cart,div.woocommerce .main.woo-single-product #content .related ul.products li.product:last-child form.cart,div.woocommerce .main.woo-single-product #content .related ul.products li.product form.cart{display:none}main.woocommerce #content ul.products,div.woocommerce #content ul.products{display:table;margin:0 auto;position:relative;width:100%}@media only screen and (max-width: 40em){main.woocommerce #content ul.products,div.woocommerce #content ul.products{max-width:470px;padding:0;}}main.woocommerce #content ul.products mark,div.woocommerce #content ul.products mark{background-color:transparent}main.woocommerce #content ul.products li.product.type-product,div.woocommerce #content ul.products li.product.type-product{border:medium none;height:auto;padding:10px;clear:both;width:100%;border:none;margin:0 auto 10px}main.woocommerce #content ul.products li.product.type-product .variations_form,div.woocommerce #content ul.products li.product.type-product .variations_form{clear:both;display:table;width:100%;margin-bottom:20px}main.woocommerce #content ul.products li.product.type-product .variations_form .variations,div.woocommerce #content ul.products li.product.type-product .variations_form .variations{float:right}@media only screen and (min-width:0em) and (max-width:64em){main.woocommerce #content ul.products li.product.type-product .variations_form .variations,div.woocommerce #content ul.products li.product.type-product .variations_form .variations{float:none;}}main.woocommerce #content ul.products li.product.type-product h3,div.woocommerce #content ul.products li.product.type-product h3{font-size:18px;text-align:left;padding:10px 0 0;font-style:normal;font-family:"josefin sans"}@media only screen and (min-width:0em) and (max-width:64em){main.woocommerce #content ul.products li.product.type-product,div.woocommerce #content ul.products li.product.type-product{margin-bottom:25px;}main.woocommerce #content ul.products li.product.type-product h3,div.woocommerce #content ul.products li.product.type-product h3{text-align:center}}main.woocommerce #content ul.products li.product.type-product .product-list-link,div.woocommerce #content ul.products li.product.type-product .product-list-link{display:block;height:220px;float:none;margin:0 auto;max-width:266px;overflow:hidden;border:1px solid lightgrey;border-radius:2px}main.woocommerce #content ul.products li.product.type-product .product-list-link .wp-post-image,div.woocommerce #content ul.products li.product.type-product .product-list-link .wp-post-image{min-height:220px;width:100%}main.woocommerce #content ul.products li.product.type-product .product-list-link-wrapper,div.woocommerce #content ul.products li.product.type-product .product-list-link-wrapper{padding-right:15px}main.woocommerce #content ul.products li.product.type-product .wp-post-image,div.woocommerce #content ul.products li.product.type-product .wp-post-image{margin-bottom:0;border:none;padding-right:15px}main.woocommerce #content ul.products li.product.type-product>div,div.woocommerce #content ul.products li.product.type-product>div{margin:0 auto;padding:5px;border-radius:5px;width:100%}main.woocommerce #content ul.products li.product.type-product>div img,div.woocommerce #content ul.products li.product.type-product>div img{border-radius:3px}main.woocommerce #content ul.products li.product.type-product h3,div.woocommerce #content ul.products li.product.type-product h3{font-weight:normal}main.woocommerce #content ul.products li.product.type-product .count,div.woocommerce #content ul.products li.product.type-product .count{background-color:transparent}main.woocommerce #content ul.products li.product.type-product>div,div.woocommerce #content ul.products li.product.type-product>div{background-color:white}main.woocommerce #content ul.products li.product.type-product>div h3,div.woocommerce #content ul.products li.product.type-product>div h3{color:#572700;font-size:24px;margin-top:-2px}main.woocommerce #content ul.products li.product.type-product p.products-short-desc,div.woocommerce #content ul.products li.product.type-product p.products-short-desc{line-height:1.3;margin-bottom:0}main.woocommerce #content ul.products li.product.type-product .woocommerce-variation-availability,div.woocommerce #content ul.products li.product.type-product .woocommerce-variation-availability{float:right}@media only screen and (max-width: 40em){main.woocommerce #content ul.products li.product.type-product .woocommerce-variation-availability,div.woocommerce #content ul.products li.product.type-product .woocommerce-variation-availability{float:none;text-align:center;}}main.woocommerce #content ul.products li.product.type-product .woocommerce-variation-availability .stock,div.woocommerce #content ul.products li.product.type-product .woocommerce-variation-availability .stock{margin-bottom:0}main.woocommerce #content ul.products li.product.type-product .more,div.woocommerce #content ul.products li.product.type-product .more{display:inline;float:right;margin-left:5px;color:#006A71}@media only screen and (min-width:0em) and (max-width:64em){main.woocommerce #content ul.products li.product.type-product .more,div.woocommerce #content ul.products li.product.type-product .more{float:none;}}main.woocommerce #content ul.products li.product.type-product .products-qty-contain span,div.woocommerce #content ul.products li.product.type-product .products-qty-contain span{margin-left:5px}main.woocommerce #content ul.products li.product.type-product .cart,div.woocommerce #content ul.products li.product.type-product .cart{float:right;text-align:right;clear:both}@media only screen and (max-width: 40em){main.woocommerce #content ul.products li.product.type-product .cart,div.woocommerce #content ul.products li.product.type-product .cart{float:none;text-align:center;}}main.woocommerce #content ul.products li.product.type-product .products-add-to-cart,div.woocommerce #content ul.products li.product.type-product .products-add-to-cart{clear:both;float:right}main.woocommerce #content ul.products li.product.type-product .products-add-to-cart button,div.woocommerce #content ul.products li.product.type-product .products-add-to-cart button{width:100%}main.woocommerce #content ul.products .added_to_cart,div.woocommerce #content ul.products .added_to_cart{border:1px solid lightgrey;border-radius:4px}main.woocommerce #content ul.products a,div.woocommerce #content ul.products a{text-decoration:none}main.woocommerce #content ul.products a:hover,div.woocommerce #content ul.products a:hover{text-shadow:none}main.woocommerce header.title,div.woocommerce header.title{box-shadow:none}.pp_content .pp_gallery{height:0;overflow:hidden;width:0}#woo-quick-cart-image{clear:none;display:block;float:left;height:26px;padding:2px;width:25px}#woo-quick-cart-image img{width:24px}#woo-quick-cart-image>div{float:left}.woo-quick-cart-totals{width:105px}@media only screen and (min-width:40.063em){.woo-quick-cart-totals{margin-left:30px;margin-top:10px;}}#woo-quick-checkout button{float:right}#cart-login>div{float:left;display:block;text-align:center;padding:0 5px}#cart-login a{color:black}#cart-login a:hover{color:#006A71}#main-content ul.products li.product-category.product,#content ul.products li.product-category.product{width:33.33%;float:left;padding:20px;margin:0}@media only screen and (max-width: 40em){#main-content ul.products li.product-category.product,#content ul.products li.product-category.product{width:50%;}}#main-content ul.products li.product-category.product .products-image-container,#content ul.products li.product-category.product .products-image-container{height:200px}main .woocommerce #respond input#submit.alt:hover,main .woocommerce a.button.alt:hover,main .woocommerce button.button.alt:hover,main .woocommerce input.button.alt:hover{background:transparent url("../assets/repeating-pattern.jpg") repeat scroll 0 0;border:1px solid #006A71}main .woocommerce #respond input#submit.alt,main .woocommerce a.button.alt,main .woocommerce button.button.alt,main .woocommerce input.button.alt{background:transparent url("../assets/repeating-pattern.jpg") repeat scroll 0 0;border:1px solid white}main.woocommerce ul.products li.product,main.woocommerce-page ul.products li.product,main.woocommerce-page[class*="columns-"] ul.products li.product,main.woocommerce[class*="columns-"] ul.products li.product{clear:none}.woocommerce .shop-sidebar{margin-bottom:20px}.woocommerce .shop-sidebar ul.products>li.product{width:100%;margin-bottom:0px;background-color:white}.woocommerce .shop-sidebar ul.products{margin-top:0}.woocommerce .shop-sidebar ul.products>li.product>a>h3{padding:5px 0;text-align:left;font-weight:bold;color:white;line-height:1.1}.woocommerce .shop-sidebar{list-style:outside none none;margin-left:0}.woocommerce .shop-sidebar .products{margin:20px 0 0}.woocommerce .shop-sidebar>li{background:none repeat scroll 0 0 #2F4D4F;padding:2px 0 2px 15px}.woocommerce .shop-sidebar>li:first-child{border-top-left-radius:5px;border-top-right-radius:5px}.woocommerce .shop-sidebar>li:last-child{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.woocommerce .shop-sidebar>li a{color:white;text-transform:uppercase}.woocommerce #sidebar-category .shop-sidebar ul.products li.current h3{color:#006A71}.woocommerce #sidebar-category .shop-sidebar ul.products li.current:hover h3{color:white}.woocommerce .shop-sidebar ul.products>li.product>a>div>img{display:none}.woocommerce #content-wrapper{top:0px}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li{margin-right:5px}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active::after,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active::after{border:none;box-shadow:none}main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active::after,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active::before{border:none;box-shadow:none}#tab-photos_tab{overflow:hidden}@media (max-width: 480px){#tab-photos_tab{text-align:center}}@media only screen and (max-width: 40em){main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li,div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li{margin-right:0px}}.side_bar{float:right;margin-top:100px}.cat-item,.product_term{list-style:none;padding-bottom:15px;line-height:15px}#tags_sidebar_container h5{color:#006a71}#tags_sidebar_container #tags_sidebar .cat-item a{font-family:"josefin sans";color:black}#categories_sidebar_container{margin-bottom:30px;list-style:none}#categories_sidebar_container h5{color:#006a71}#categories_sidebar_container ul li a{font-family:"josefin sans";color:black}#regions_sidebar li{list-style:none;line-height:16px;padding-bottom:11px}#regions_sidebar li h5{color:black}#enquire_button{border:1px solid transparent;border-radius:7px;padding:10px 10px 10px 10px;width:100%;-moz-box-shadow:3px 3px 5px 3px #A6A5A3;-webkit-box-shadow:3px 3px 5px 3px #A6A5A3;box-shadow:3px 3px 5px 3px #A6A5A3}main.woocommerce #content ul.products li.product img,div.woocommerce #content ul.products li.product img{color:transparent}main.woocommerce #content ul.products li.product img:hover,div.woocommerce #content ul.products li.product img:hover{color:transparent}#container #content ul.products li.product{width:33.33%;clear:none;float:left}#container #content ul.products li.product{width:33.33%;clear:none;float:left}@media only screen and (max-width: 40em){#container #content ul.products li.product{width:75%;margin-left:35px;float:left}}.orderby,.woocommerce-result-count{display:none}ul.products li a h3{color:#006a71;display:inline-block;padding-bottom:10px !important}ul.products div[itemprop="description"] p{line-height:1.1;color:black}div[itemprop="description"] p{font-family:"josefin sans"}.woocommerce-tabs .tabs .product_inquiry_tab_tab{background-color:#006a71 !important}.woocommerce-tabs .tabs .product_inquiry_tab_tab a{color:white !important}.product_featured_image{margin:0 auto;max-height:370px;max-width:1920px;overflow-y:hidden;position:relative;top:0;width:100%;z-index:-1;min-height:0px}woocommerce #content div.product .woocommerce-tabs ul.tabs li,.woocommerce div.product .woocommerce-tabs ul.tabs li,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li,.woocommerce-page div.product .woocommerce-tabs ul.tabs li{left:10px}ul.products li .button.product_type_simple.ajax_add_to_cart{display:none}.st_sharethis{float:right;margin:10px;width:58px}#content-wrapper .stButton .sharethis{background-image:url("../assets/share-icon.png") !important;width:52px;height:22px}.products_image{list-style:none}li.products_image_container,a.product_image_link{display:inline-block;height:200px;width:200px;margin:5px}.sidebar-headline{margin-bottom:1px}ul#tags_sidebar div.sidebar-region{line-height:1.1;margin-bottom:5px}.form-confirmation{color:white;background:#5E300B;width:550px;height:50px;font-family:"josefin sans";font-size:20px;-moz-box-shadow:3px 3px 5px 3px #A6A5A3;-webkit-box-shadow:3px 3px 5px 3px #A6A5A3;box-shadow:3px 3px 5px 3px #A6A5A3;border-radius:5px}.form-confirmation .confirmation-text{padding-top:15px;text-align:center}#tab-description p{padding-top:15px}.home-feed-post{padding-bottom:25px}input[type="submit"].blogbutton{border-radius:3px;color:#FFFFFF;border:2px solid #FFFFFF;font-weight:bold;font-size:13px;padding:2px 5px;margin-top:-10px;text-transform:uppercase}input[type="submit"].blogbutton:hover{cursor:pointer;background:#FFFFFF;border:2px solid #035C84;color:white}#blog-posts-over .search_result_context{margin-bottom:5px}#blog-posts-over article{display:inline-block;width:100%;z-index:0;line-height:120%}#blog-posts-over article .entry-header{background:transparent}#blog-posts-over article #addthis_wrapper{margin-top:3px}#blog-posts-over article a.read-more{border:2px solid #FFFFFF;font-weight:bold;font-size:13px;padding:0 3px;display:inline;text-transform:uppercase}#blog-posts-over article a.read-more:hover{background:#FFFFFF;border:2px solid #006A71;color:#a6a090}#blog-posts-over article .entry-header{margin-bottom:15px}#blog-posts-over article .entry-header .entry-title{margin-bottom:0}#blog-posts-over article .entry-header .meta.date{font-weight:bold;font-size:13px}#blog-posts-over article h1.entry-title{line-height:1.2;font-size:2.375rem}#blog-posts-over article .single-title{padding-bottom:15px}#blog-posts-over article .single-title a{text-decoration:none}article .entry-header .featured-image-wrap{margin-bottom:25px}.blog-excerpt-date{font-size:12px;margin-bottom:10px;color:grey}#blog-posts-over .entry-meta{text-align:center;color:#757575;font-size:12px}#blog-posts-over>div{margin:25px 0 50px 0}#blog-side-info #searchform{margin-bottom:30px}#blog-side-info p{margin-bottom:0}@media only screen and (max-width: 40em){#blog-side-info-wrapper{float:none;margin:0 auto;clear:both}#blog-side-info{padding-left:0;border-left:0}#blog-side-info ul{margin-left:0;margin-top:10px}#blog-side-info #searchform{padding:35px 0}#blog-side-info #searchform #s{width:100%}}#blog-side-info{padding-right:10px}#blog-side-info ul{list-style-type:none}#blog-side-info ul li{margin-bottom:15px}.blog-featured-home,.blog-featured-archive{height:250px;float:left;background-size:cover;background-repeat:no-repeat;background-position:center}#addthis_wrapper{float:right}#sidebar{padding-top:25px;background:#f2f9fc}#sidebar .row.collapse{margin-left:14px}#sidebar li{list-style:none}#sidebar li #calendar_wrap table#wp-calendar{margin:0 auto}#sidebar a{font-size:12px}#sidebar form{margin:0 12px 0 14px}#sidebar form select{padding:0 0.5rem;border-radius:5px;height:25px;margin:0}#sidebar form select option{font-size:10px}#sidebar .small-block-grid-2{margin-top:10px}#sidebar .small-block-grid-2 li{padding:0 0.625rem 0.625rem}#sidebar .small-block-grid-2 li img{border:2px solid lightblue}#sidebar .small-block-grid-2>li:nth-of-type(2),#sidebar .small-block-grid-2>li:nth-of-type(4){padding-left:0}#sidebar .small-block-grid-2>li:nth-of-type(3),#sidebar .small-block-grid-2>li:nth-of-type(4){padding-bottom:20px}#sidebar h3{margin:20px 0 0}#sidebar h1{margin:0;font-size:1.5625rem;text-transform:none}#sidebar input{padding:5px 0 5px 8px;height:auto;margin:10px 0}#sidebar button{border-radius:2px;padding:0 10px}#side-nav{padding-top:10px;background:#f2f9fc}#side-nav h1{font-size:1.375rem}#side-nav h4{font-weight:bold;margin-left:10px}#side-nav li{list-style:none}#side-nav ul{list-style:none;margin:0 0 20px}#side-nav ul li{margin:0 -15px;padding:5px 10px 5px 25px}#side-nav ul li:hover{background:#81adc1}#side-nav ul li a{color:darkblue}#side-nav ul li a:hover{color:#FFFFFF}#side-nav h3{text-transform:none;margin:0}#side-nav input{padding:5px 0 5px 8px;height:auto;margin-bottom:10px}#side-nav button{border-radius:2px;padding:0 10px}#extra{margin-top:15px}#extra p{line-height:1.3}#extra p.title{margin:0}#extra p.title#last{padding-top:10px}#extra p#message{text-transform:uppercase;color:lightblue;font-size:0.9375rem;margin:40px 0}.county-news{font-weight:bold}.current_page_item a{font-weight:bold}#ads_sidebar_container li{list-style:outside none none;text-align:center}.search-top #searchform{text-align:left;display:inline-block;position:relative}.search-top #searchform #search-button{width:22px;right:0px;position:absolute;padding:0;border:1px solid lightgray}.search-top input{height:20px;width:167px;padding:0 8px;margin:13px 0px 0px 18px;border-radius:3px;font-size:10px;color:#000000;display:inline-block}.search-top a.magnifying-glass{font-size:10em;width:0.75rem;height:0.75rem;border:0.125rem solid darkblue;position:absolute;top:15px;border-radius:0.35em;margin:0 0 0 -20px}.search-top a.magnifying-glass:before{content:"";display:inline-block;position:absolute;right:-0.4375rem;bottom:-0.25rem;border-width:0;background:darkblue;width:0.5rem;height:0.125rem;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}footer.main{background-color:#009543;position:relative;z-index:1;left:0;right:0;padding:20px 0 0px;box-shadow:0 8px 10px 0px rgba(0,0,0,0.5);-ms-box-shadow:0 8px 10px 0px rgba(0,0,0,0.5);-moz-box-shadow:0 8px 10px 0px rgba(0,0,0,0.5);-webkit-box-shadow:0 8px 10px 0px rgba(0,0,0,0.5)}footer.main a{color:#FFFFFF;text-decoration:underline}footer.main a:hover{color:#FFFFFF}#space{background:url(../assets/general.jpg) no-repeat center center;background-size:cover;height:400px}#footer_address .address{margin-bottom:10px}#footer_address .contact{margin-left:-5px}#footer_address .footer-img{padding-top:10px}#footer_address h4{text-transform:none;letter-spacing:normal;margin:0}#footer_address span{color:#FFFFFF;white-space:nowrap}#footer_address a{color:#FFFFFF;text-decoration:underline}#footer_address a span{color:#FFFFFF;text-decoration:underline}#footer-widget li{list-style:none}#footer-widget li ul{margin:0;list-style:none}#footer-widget li ul li{display:inline-block;padding:0 5px;width:auto}.social{display:inline-block}.social ul{list-style:none;margin:15px 0 0;display:block}.social ul li a.facebook,.social ul li a.insta,.social ul li a.twit,.social ul li a.tube{background:url(../assets/Social-Icons-Set-color.png) no-repeat;width:25px;height:25px;display:block}.social ul li{display:inline-block;padding:5px}.social ul li a.facebook{background-position:-672px 0}.social ul li a.insta{background-position:-751px 0}.social ul li a.twit{background-position:-712px 0}.social ul li a.tube{background-position:-792px 0}#connect{padding-top:20px;background:#4c4d4f}#connect ul{margin:0;list-style:none}#connect ul li{background:none;padding:0 5px;display:inline-block}#connect ul li>a{display:block;font-family:Open Sans, sans-serif;font-size:12px;color:#fff;padding:20px 18px;line-height:1.2}#connect ul li a#current{background:#96d3f9}#copyright{position:relative;z-index:0;background:#009543;padding:5px 0;margin:0 auto;float:none;text-align:center}#copyright span{font-size:0.625rem;color:#FFFFFF}#copyright span a{color:#FFFFFF;text-decoration:underline}#footer_address span.bullet,#copyright span.bullet{margin:0 5px}@media only screen and (max-width: 40em){#footer_address span.bullet,#copyright span.bullet{display:none !important;}}.off-canvas-wrap{min-height:100%}.off-canvas-wrap .inner-wrap{min-height:100vh;height:100%}h1{letter-spacing:0.05em;color:#009543}h2{font-family:Times;font-style:italic;color:#AAAAAA;letter-spacing:0.025em}h3{font-family:Times;font-style:italic;color:#009543}h4{font-weight:600;text-transform:uppercase;color:#FFFFFF;letter-spacing:0.05em}h5{text-transform:uppercase;color:#AAAAAA}h6{font-family:Times;font-style:italic;color:#009543}#example.element{background-color:transparent}aside.left-off-canvas-menu li.page_item{display:block;overflow:hidden;position:relative;padding:4px 8px}aside.left-off-canvas-menu .off-canvas-list ul li a{line-height:20px;color:white;border-bottom:1px solid #b1b3b6;background-repeat:no-repeat;background-position:3px 50%}aside.left-off-canvas-menu li.page_item_has_children a.toggle{position:absolute;right:10px;top:5px;width:auto;text-decoration:none}aside.left-off-canvas-menu li.page_item_has_children a.toggle:before{content:'>';transform:rotate(0deg);color:#FFFFFF;height:17px;width:17px;font-size:17px;font-weight:bold;display:block}aside.left-off-canvas-menu li.page_item_has_children a.toggle:hover{background:transparent}aside.left-off-canvas-menu li.page_item_has_children a.toggle.open{content:'>';transform:rotate(90deg);color:#FFFFFF;height:1rem;width:1rem;font-size:1rem;font-weight:bold;display:block}aside.left-off-canvas-menu ul.children{display:none}aside.left-off-canvas-menu .off-canvas-list ul li>ul li>a{padding-left:10px;margin-left:25px;line-height:18px}aside.left-off-canvas-menu ul.open{display:block}.left-off-canvas-menu{list-style:none}.left-off-canvas-menu li a{color:#FFFFFF;font-size:1rem;line-height:1.2;margin-bottom:5px;border-color:white}.left-off-canvas-menu li a:hover{color:#a6a090}.left-off-canvas-menu li .dropdown{list-style:none}.left-off-canvas-menu ul{list-style:none;padding:10px 0}.left-off-canvas-menu ul li{color:#FFFFFF}.left-off-canvas-menu ul li a{color:#FFFFFF}.left-off-canvas-menu ul li ul{list-style:none}.left-off-canvas-menu ul li ul li a{width:85%;display:block;white-space:pre-wrap}.left-off-canvas-menu .searchform .search-button{float:none;margin:0 auto 10px;display:block}.offcanvas-social-list{list-style:none;margin-top:0;margin-bottom:1.0625rem;margin-left:-1.375rem;margin-right:0;overflow:hidden;padding:0;margin-left:auto;display:inline-block}.offcanvas-social-list>li{display:block;float:left;list-style:none;margin-left:1.375rem}.offcanvas-social-list>li>*{display:block}.offcanvas-social-list li a.facebook,.offcanvas-social-list li a.insta,.offcanvas-social-list li a.twit,.offcanvas-social-list li a.tube{background:url(../assets/Social-Icons-Set-color.png) no-repeat;width:25px;height:25px;display:block}.offcanvas-social-list li{display:inline-block;padding:5px}.offcanvas-social-list li a.facebook{background-position:-672px 0}.offcanvas-social-list li a.insta{background-position:-751px 0}.offcanvas-social-list li a.twit{background-position:-712px 0}.offcanvas-social-list li a.tube{background-position:-792px 0}
\ No newline at end of file
diff --git a/css/app.css.map b/css/app.css.map
new file mode 100644 (file)
index 0000000..a923262
--- /dev/null
@@ -0,0 +1,72 @@
+{
+       "version": 3,
+       "file": "app.css",
+       "sources": [
+               "../app.scss",
+               "../_settings.scss",
+               "../../bower_components/foundation/scss/foundation.scss",
+               "../_mixins.scss",
+               "../_wordpress.scss",
+               "../_defaults.scss",
+               "../_body.scss",
+               "../_page.header.scss",
+               "../_topbar.scss",
+               "../_main.scss",
+               "../_slideshow.scss",
+               "../_plugins.scss",
+               "../_blog.scss",
+               "../_sidebar.scss",
+               "../_search.scss",
+               "../_page.footer.scss",
+               "../_copyright.scss",
+               "../_structure.scss",
+               "../_left-off-canvas.scss",
+               "../../bower_components/foundation/scss/foundation/_functions.scss",
+               "../../bower_components/foundation/scss/foundation/components/_grid.scss",
+               "../../bower_components/foundation/scss/foundation/components/_accordion.scss",
+               "../../bower_components/foundation/scss/foundation/components/_alert-boxes.scss",
+               "../../bower_components/foundation/scss/foundation/components/_block-grid.scss",
+               "../../bower_components/foundation/scss/foundation/components/_breadcrumbs.scss",
+               "../../bower_components/foundation/scss/foundation/components/_button-groups.scss",
+               "../../bower_components/foundation/scss/foundation/components/_buttons.scss",
+               "../../bower_components/foundation/scss/foundation/components/_clearing.scss",
+               "../../bower_components/foundation/scss/foundation/components/_dropdown.scss",
+               "../../bower_components/foundation/scss/foundation/components/_dropdown-buttons.scss",
+               "../../bower_components/foundation/scss/foundation/components/_flex-video.scss",
+               "../../bower_components/foundation/scss/foundation/components/_forms.scss",
+               "../../bower_components/foundation/scss/foundation/components/_icon-bar.scss",
+               "../../bower_components/foundation/scss/foundation/components/_inline-lists.scss",
+               "../../bower_components/foundation/scss/foundation/components/_joyride.scss",
+               "../../bower_components/foundation/scss/foundation/components/_keystrokes.scss",
+               "../../bower_components/foundation/scss/foundation/components/_labels.scss",
+               "../../bower_components/foundation/scss/foundation/components/_magellan.scss",
+               "../../bower_components/foundation/scss/foundation/components/_orbit.scss",
+               "../../bower_components/foundation/scss/foundation/components/_pagination.scss",
+               "../../bower_components/foundation/scss/foundation/components/_panels.scss",
+               "../../bower_components/foundation/scss/foundation/components/_pricing-tables.scss",
+               "../../bower_components/foundation/scss/foundation/components/_progress-bars.scss",
+               "../../bower_components/foundation/scss/foundation/components/_range-slider.scss",
+               "../../bower_components/foundation/scss/foundation/components/_reveal.scss",
+               "../../bower_components/foundation/scss/foundation/components/_side-nav.scss",
+               "../../bower_components/foundation/scss/foundation/components/_split-buttons.scss",
+               "../../bower_components/foundation/scss/foundation/components/_sub-nav.scss",
+               "../../bower_components/foundation/scss/foundation/components/_switches.scss",
+               "../../bower_components/foundation/scss/foundation/components/_tables.scss",
+               "../../bower_components/foundation/scss/foundation/components/_tabs.scss",
+               "../../bower_components/foundation/scss/foundation/components/_thumbs.scss",
+               "../../bower_components/foundation/scss/foundation/components/_tooltips.scss",
+               "../../bower_components/foundation/scss/foundation/components/_top-bar.scss",
+               "../../bower_components/foundation/scss/foundation/components/_type.scss",
+               "../../bower_components/foundation/scss/foundation/components/_offcanvas.scss",
+               "../../bower_components/foundation/scss/foundation/components/_visibility.scss",
+               "../mixins/_gradient.scss",
+               "../mixins/_off-canvas-arrow.scss",
+               "../plugins/_nextgen.scss",
+               "../plugins/_gravityForms.scss",
+               "../plugins/_woocommerce.scss",
+               "../../bower_components/foundation/scss/foundation/components/_global.scss"
+       ],
+       "sourcesContent": [],
+       "mappings": "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",
+       "names": []
+}
\ No newline at end of file
diff --git a/fancybox/lib/jquery.mousewheel-3.0.6.pack.js b/fancybox/lib/jquery.mousewheel-3.0.6.pack.js
new file mode 100644 (file)
index 0000000..e39a83a
--- /dev/null
@@ -0,0 +1,13 @@
+/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
+ *
+ * Version: 3.0.6
+ * 
+ * Requires: 1.2.2+
+ */
+(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;b.axis!==void 0&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);b.wheelDeltaY!==void 0&&(g=b.wheelDeltaY/120);b.wheelDeltaX!==void 0&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=
+d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,false);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);
\ No newline at end of file
diff --git a/fancybox/source/blank.gif b/fancybox/source/blank.gif
new file mode 100644 (file)
index 0000000..35d42e8
Binary files /dev/null and b/fancybox/source/blank.gif differ
diff --git a/fancybox/source/fancybox_loading.gif b/fancybox/source/fancybox_loading.gif
new file mode 100644 (file)
index 0000000..a03a40c
Binary files /dev/null and b/fancybox/source/fancybox_loading.gif differ
diff --git a/fancybox/source/fancybox_loading@2x.gif b/fancybox/source/fancybox_loading@2x.gif
new file mode 100644 (file)
index 0000000..9205aeb
Binary files /dev/null and b/fancybox/source/fancybox_loading@2x.gif differ
diff --git a/fancybox/source/fancybox_overlay.png b/fancybox/source/fancybox_overlay.png
new file mode 100644 (file)
index 0000000..a439139
Binary files /dev/null and b/fancybox/source/fancybox_overlay.png differ
diff --git a/fancybox/source/fancybox_sprite.png b/fancybox/source/fancybox_sprite.png
new file mode 100644 (file)
index 0000000..fd8d5ca
Binary files /dev/null and b/fancybox/source/fancybox_sprite.png differ
diff --git a/fancybox/source/fancybox_sprite@2x.png b/fancybox/source/fancybox_sprite@2x.png
new file mode 100644 (file)
index 0000000..d0e4779
Binary files /dev/null and b/fancybox/source/fancybox_sprite@2x.png differ
diff --git a/fancybox/source/helpers/fancybox_buttons.png b/fancybox/source/helpers/fancybox_buttons.png
new file mode 100644 (file)
index 0000000..0787207
Binary files /dev/null and b/fancybox/source/helpers/fancybox_buttons.png differ
diff --git a/fancybox/source/helpers/jquery.fancybox-buttons.css b/fancybox/source/helpers/jquery.fancybox-buttons.css
new file mode 100644 (file)
index 0000000..a26273a
--- /dev/null
@@ -0,0 +1,97 @@
+#fancybox-buttons {
+       position: fixed;
+       left: 0;
+       width: 100%;
+       z-index: 8050;
+}
+
+#fancybox-buttons.top {
+       top: 10px;
+}
+
+#fancybox-buttons.bottom {
+       bottom: 10px;
+}
+
+#fancybox-buttons ul {
+       display: block;
+       width: 166px;
+       height: 30px;
+       margin: 0 auto;
+       padding: 0;
+       list-style: none;
+       border: 1px solid #111;
+       border-radius: 3px;
+       -webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
+          -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
+               box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
+       background: rgb(50,50,50);
+       background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51)));
+       background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+       background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+       background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+       background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+       filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 );
+}
+
+#fancybox-buttons ul li {
+       float: left;
+       margin: 0;
+       padding: 0;
+}
+
+#fancybox-buttons a {
+       display: block;
+       width: 30px;
+       height: 30px;
+       text-indent: -9999px;
+       background-color: transparent;
+       background-image: url('fancybox_buttons.png');
+       background-repeat: no-repeat;
+       outline: none;
+       opacity: 0.8;
+}
+
+#fancybox-buttons a:hover {
+       opacity: 1;
+}
+
+#fancybox-buttons a.btnPrev {
+       background-position: 5px 0;
+}
+
+#fancybox-buttons a.btnNext {
+       background-position: -33px 0;
+       border-right: 1px solid #3e3e3e;
+}
+
+#fancybox-buttons a.btnPlay {
+       background-position: 0 -30px;
+}
+
+#fancybox-buttons a.btnPlayOn {
+       background-position: -30px -30px;
+}
+
+#fancybox-buttons a.btnToggle {
+       background-position: 3px -60px;
+       border-left: 1px solid #111;
+       border-right: 1px solid #3e3e3e;
+       width: 35px
+}
+
+#fancybox-buttons a.btnToggleOn {
+       background-position: -27px -60px;
+}
+
+#fancybox-buttons a.btnClose {
+       border-left: 1px solid #111;
+       width: 35px;
+       background-position: -56px 0px;
+}
+
+#fancybox-buttons a.btnDisabled {
+       opacity : 0.4;
+       cursor: default;
+}
\ No newline at end of file
diff --git a/fancybox/source/helpers/jquery.fancybox-buttons.js b/fancybox/source/helpers/jquery.fancybox-buttons.js
new file mode 100644 (file)
index 0000000..fd8b955
--- /dev/null
@@ -0,0 +1,122 @@
+ /*!
+ * Buttons helper for fancyBox
+ * version: 1.0.5 (Mon, 15 Oct 2012)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             buttons: {
+ *                 position : 'top'
+ *             }
+ *         }
+ *     });
+ *
+ */
+(function ($) {
+       //Shortcut for fancyBox object
+       var F = $.fancybox;
+
+       //Add helper object
+       F.helpers.buttons = {
+               defaults : {
+                       skipSingle : false, // disables if gallery contains single image
+                       position   : 'top', // 'top' or 'bottom'
+                       tpl        : '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>'
+               },
+
+               list : null,
+               buttons: null,
+
+               beforeLoad: function (opts, obj) {
+                       //Remove self if gallery do not have at least two items
+
+                       if (opts.skipSingle && obj.group.length < 2) {
+                               obj.helpers.buttons = false;
+                               obj.closeBtn = true;
+
+                               return;
+                       }
+
+                       //Increase top margin to give space for buttons
+                       obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30;
+               },
+
+               onPlayStart: function () {
+                       if (this.buttons) {
+                               this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
+                       }
+               },
+
+               onPlayEnd: function () {
+                       if (this.buttons) {
+                               this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
+                       }
+               },
+
+               afterShow: function (opts, obj) {
+                       var buttons = this.buttons;
+
+                       if (!buttons) {
+                               this.list = $(opts.tpl).addClass(opts.position).appendTo('body');
+
+                               buttons = {
+                                       prev   : this.list.find('.btnPrev').click( F.prev ),
+                                       next   : this.list.find('.btnNext').click( F.next ),
+                                       play   : this.list.find('.btnPlay').click( F.play ),
+                                       toggle : this.list.find('.btnToggle').click( F.toggle ),
+                                       close  : this.list.find('.btnClose').click( F.close )
+                               }
+                       }
+
+                       //Prev
+                       if (obj.index > 0 || obj.loop) {
+                               buttons.prev.removeClass('btnDisabled');
+                       } else {
+                               buttons.prev.addClass('btnDisabled');
+                       }
+
+                       //Next / Play
+                       if (obj.loop || obj.index < obj.group.length - 1) {
+                               buttons.next.removeClass('btnDisabled');
+                               buttons.play.removeClass('btnDisabled');
+
+                       } else {
+                               buttons.next.addClass('btnDisabled');
+                               buttons.play.addClass('btnDisabled');
+                       }
+
+                       this.buttons = buttons;
+
+                       this.onUpdate(opts, obj);
+               },
+
+               onUpdate: function (opts, obj) {
+                       var toggle;
+
+                       if (!this.buttons) {
+                               return;
+                       }
+
+                       toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
+
+                       //Size toggle button
+                       if (obj.canShrink) {
+                               toggle.addClass('btnToggleOn');
+
+                       } else if (!obj.canExpand) {
+                               toggle.addClass('btnDisabled');
+                       }
+               },
+
+               beforeClose: function () {
+                       if (this.list) {
+                               this.list.remove();
+                       }
+
+                       this.list    = null;
+                       this.buttons = null;
+               }
+       };
+
+}(jQuery));
diff --git a/fancybox/source/helpers/jquery.fancybox-media.js b/fancybox/source/helpers/jquery.fancybox-media.js
new file mode 100644 (file)
index 0000000..3584c8a
--- /dev/null
@@ -0,0 +1,199 @@
+/*!
+ * Media helper for fancyBox
+ * version: 1.0.6 (Fri, 14 Jun 2013)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             media: true
+ *         }
+ *     });
+ *
+ * Set custom URL parameters:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             media: {
+ *                 youtube : {
+ *                     params : {
+ *                         autoplay : 0
+ *                     }
+ *                 }
+ *             }
+ *         }
+ *     });
+ *
+ * Or:
+ *     $(".fancybox").fancybox({,
+ *         helpers : {
+ *             media: true
+ *         },
+ *         youtube : {
+ *             autoplay: 0
+ *         }
+ *     });
+ *
+ *  Supports:
+ *
+ *      Youtube
+ *          http://www.youtube.com/watch?v=opj24KnzrWo
+ *          http://www.youtube.com/embed/opj24KnzrWo
+ *          http://youtu.be/opj24KnzrWo
+ *                     http://www.youtube-nocookie.com/embed/opj24KnzrWo
+ *      Vimeo
+ *          http://vimeo.com/40648169
+ *          http://vimeo.com/channels/staffpicks/38843628
+ *          http://vimeo.com/groups/surrealism/videos/36516384
+ *          http://player.vimeo.com/video/45074303
+ *      Metacafe
+ *          http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
+ *          http://www.metacafe.com/watch/7635964/
+ *      Dailymotion
+ *          http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
+ *      Twitvid
+ *          http://twitvid.com/QY7MD
+ *      Twitpic
+ *          http://twitpic.com/7p93st
+ *      Instagram
+ *          http://instagr.am/p/IejkuUGxQn/
+ *          http://instagram.com/p/IejkuUGxQn/
+ *      Google maps
+ *          http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
+ *          http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
+ *          http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
+ */
+(function ($) {
+       "use strict";
+
+       //Shortcut for fancyBox object
+       var F = $.fancybox,
+               format = function( url, rez, params ) {
+                       params = params || '';
+
+                       if ( $.type( params ) === "object" ) {
+                               params = $.param(params, true);
+                       }
+
+                       $.each(rez, function(key, value) {
+                               url = url.replace( '$' + key, value || '' );
+                       });
+
+                       if (params.length) {
+                               url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params;
+                       }
+
+                       return url;
+               };
+
+       //Add helper object
+       F.helpers.media = {
+               defaults : {
+                       youtube : {
+                               matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i,
+                               params  : {
+                                       autoplay    : 1,
+                                       autohide    : 1,
+                                       fs          : 1,
+                                       rel         : 0,
+                                       hd          : 1,
+                                       wmode       : 'opaque',
+                                       enablejsapi : 1
+                               },
+                               type : 'iframe',
+                               url  : '//www.youtube.com/embed/$3'
+                       },
+                       vimeo : {
+                               matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/,
+                               params  : {
+                                       autoplay      : 1,
+                                       hd            : 1,
+                                       show_title    : 1,
+                                       show_byline   : 1,
+                                       show_portrait : 0,
+                                       fullscreen    : 1
+                               },
+                               type : 'iframe',
+                               url  : '//player.vimeo.com/video/$1'
+                       },
+                       metacafe : {
+                               matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/,
+                               params  : {
+                                       autoPlay : 'yes'
+                               },
+                               type : 'swf',
+                               url  : function( rez, params, obj ) {
+                                       obj.swf.flashVars = 'playerVars=' + $.param( params, true );
+
+                                       return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf';
+                               }
+                       },
+                       dailymotion : {
+                               matcher : /dailymotion.com\/video\/(.*)\/?(.*)/,
+                               params  : {
+                                       additionalInfos : 0,
+                                       autoStart : 1
+                               },
+                               type : 'swf',
+                               url  : '//www.dailymotion.com/swf/video/$1'
+                       },
+                       twitvid : {
+                               matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i,
+                               params  : {
+                                       autoplay : 0
+                               },
+                               type : 'iframe',
+                               url  : '//www.twitvid.com/embed.php?guid=$1'
+                       },
+                       twitpic : {
+                               matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i,
+                               type : 'image',
+                               url  : '//twitpic.com/show/full/$1/'
+                       },
+                       instagram : {
+                               matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,
+                               type : 'image',
+                               url  : '//$1/p/$2/media/?size=l'
+                       },
+                       google_maps : {
+                               matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i,
+                               type : 'iframe',
+                               url  : function( rez ) {
+                                       return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed');
+                               }
+                       }
+               },
+
+               beforeLoad : function(opts, obj) {
+                       var url   = obj.href || '',
+                               type  = false,
+                               what,
+                               item,
+                               rez,
+                               params;
+
+                       for (what in opts) {
+                               if (opts.hasOwnProperty(what)) {
+                                       item = opts[ what ];
+                                       rez  = url.match( item.matcher );
+
+                                       if (rez) {
+                                               type   = item.type;
+                                               params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null));
+
+                                               url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params );
+
+                                               break;
+                                       }
+                               }
+                       }
+
+                       if (type) {
+                               obj.href = url;
+                               obj.type = type;
+
+                               obj.autoHeight = false;
+                       }
+               }
+       };
+
+}(jQuery));
\ No newline at end of file
diff --git a/fancybox/source/helpers/jquery.fancybox-thumbs.css b/fancybox/source/helpers/jquery.fancybox-thumbs.css
new file mode 100644 (file)
index 0000000..63d2943
--- /dev/null
@@ -0,0 +1,55 @@
+#fancybox-thumbs {
+       position: fixed;
+       left: 0;
+       width: 100%;
+       overflow: hidden;
+       z-index: 8050;
+}
+
+#fancybox-thumbs.bottom {
+       bottom: 2px;
+}
+
+#fancybox-thumbs.top {
+       top: 2px;
+}
+
+#fancybox-thumbs ul {
+       position: relative;
+       list-style: none;
+       margin: 0;
+       padding: 0;
+}
+
+#fancybox-thumbs ul li {
+       float: left;
+       padding: 1px;
+       opacity: 0.5;
+}
+
+#fancybox-thumbs ul li.active {
+       opacity: 0.75;
+       padding: 0;
+       border: 1px solid #fff;
+}
+
+#fancybox-thumbs ul li:hover {
+       opacity: 1;
+}
+
+#fancybox-thumbs ul li a {
+       display: block;
+       position: relative;
+       overflow: hidden;
+       border: 1px solid #222;
+       background: #111;
+       outline: none;
+}
+
+#fancybox-thumbs ul li img {
+       display: block;
+       position: relative;
+       border: 0;
+       padding: 0;
+       max-width: none;
+}
\ No newline at end of file
diff --git a/fancybox/source/helpers/jquery.fancybox-thumbs.js b/fancybox/source/helpers/jquery.fancybox-thumbs.js
new file mode 100644 (file)
index 0000000..5db3d4a
--- /dev/null
@@ -0,0 +1,162 @@
+ /*!
+ * Thumbnail helper for fancyBox
+ * version: 1.0.7 (Mon, 01 Oct 2012)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             thumbs: {
+ *                 width  : 50,
+ *                 height : 50
+ *             }
+ *         }
+ *     });
+ *
+ */
+(function ($) {
+       //Shortcut for fancyBox object
+       var F = $.fancybox;
+
+       //Add helper object
+       F.helpers.thumbs = {
+               defaults : {
+                       width    : 50,       // thumbnail width
+                       height   : 50,       // thumbnail height
+                       position : 'bottom', // 'top' or 'bottom'
+                       source   : function ( item ) {  // function to obtain the URL of the thumbnail image
+                               var href;
+
+                               if (item.element) {
+                                       href = $(item.element).find('img').attr('src');
+                               }
+
+                               if (!href && item.type === 'image' && item.href) {
+                                       href = item.href;
+                               }
+
+                               return href;
+                       }
+               },
+
+               wrap  : null,
+               list  : null,
+               width : 0,
+
+               init: function (opts, obj) {
+                       var that = this,
+                               list,
+                               thumbWidth  = opts.width,
+                               thumbHeight = opts.height,
+                               thumbSource = opts.source;
+
+                       //Build list structure
+                       list = '';
+
+                       for (var n = 0; n < obj.group.length; n++) {
+                               list += '<li><a style="width:' + thumbWidth + 'px;height:' + thumbHeight + 'px;" href="javascript:jQuery.fancybox.jumpto(' + n + ');"></a></li>';
+                       }
+
+                       this.wrap = $('<div id="fancybox-thumbs"></div>').addClass(opts.position).appendTo('body');
+                       this.list = $('<ul>' + list + '</ul>').appendTo(this.wrap);
+
+                       //Load each thumbnail
+                       $.each(obj.group, function (i) {
+                               var href = thumbSource( obj.group[ i ] );
+
+                               if (!href) {
+                                       return;
+                               }
+
+                               $("<img />").load(function () {
+                                       var width  = this.width,
+                                               height = this.height,
+                                               widthRatio, heightRatio, parent;
+
+                                       if (!that.list || !width || !height) {
+                                               return;
+                                       }
+
+                                       //Calculate thumbnail width/height and center it
+                                       widthRatio  = width / thumbWidth;
+                                       heightRatio = height / thumbHeight;
+
+                                       parent = that.list.children().eq(i).find('a');
+
+                                       if (widthRatio >= 1 && heightRatio >= 1) {
+                                               if (widthRatio > heightRatio) {
+                                                       width  = Math.floor(width / heightRatio);
+                                                       height = thumbHeight;
+
+                                               } else {
+                                                       width  = thumbWidth;
+                                                       height = Math.floor(height / widthRatio);
+                                               }
+                                       }
+
+                                       $(this).css({
+                                               width  : width,
+                                               height : height,
+                                               top    : Math.floor(thumbHeight / 2 - height / 2),
+                                               left   : Math.floor(thumbWidth / 2 - width / 2)
+                                       });
+
+                                       parent.width(thumbWidth).height(thumbHeight);
+
+                                       $(this).hide().appendTo(parent).fadeIn(300);
+
+                               }).attr('src', href);
+                       });
+
+                       //Set initial width
+                       this.width = this.list.children().eq(0).outerWidth(true);
+
+                       this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)));
+               },
+
+               beforeLoad: function (opts, obj) {
+                       //Remove self if gallery do not have at least two items
+                       if (obj.group.length < 2) {
+                               obj.helpers.thumbs = false;
+
+                               return;
+                       }
+
+                       //Increase bottom margin to give space for thumbs
+                       obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15);
+               },
+
+               afterShow: function (opts, obj) {
+                       //Check if exists and create or update list
+                       if (this.list) {
+                               this.onUpdate(opts, obj);
+
+                       } else {
+                               this.init(opts, obj);
+                       }
+
+                       //Set active element
+                       this.list.children().removeClass('active').eq(obj.index).addClass('active');
+               },
+
+               //Center list
+               onUpdate: function (opts, obj) {
+                       if (this.list) {
+                               this.list.stop(true).animate({
+                                       'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))
+                               }, 150);
+                       }
+               },
+
+               beforeClose: function () {
+                       if (this.wrap) {
+                               this.wrap.remove();
+                       }
+
+                       this.wrap  = null;
+                       this.list  = null;
+                       this.width = 0;
+               }
+       }
+
+}(jQuery));
\ No newline at end of file
diff --git a/fancybox/source/jquery.fancybox.css b/fancybox/source/jquery.fancybox.css
new file mode 100644 (file)
index 0000000..367890a
--- /dev/null
@@ -0,0 +1,274 @@
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
+.fancybox-wrap,
+.fancybox-skin,
+.fancybox-outer,
+.fancybox-inner,
+.fancybox-image,
+.fancybox-wrap iframe,
+.fancybox-wrap object,
+.fancybox-nav,
+.fancybox-nav span,
+.fancybox-tmp
+{
+       padding: 0;
+       margin: 0;
+       border: 0;
+       outline: none;
+       vertical-align: top;
+}
+
+.fancybox-wrap {
+       position: absolute;
+       top: 0;
+       left: 0;
+       z-index: 8020;
+}
+
+.fancybox-skin {
+       position: relative;
+       background: #f9f9f9;
+       color: #444;
+       text-shadow: none;
+       -webkit-border-radius: 4px;
+          -moz-border-radius: 4px;
+               border-radius: 4px;
+}
+
+.fancybox-opened {
+       z-index: 8030;
+}
+
+.fancybox-opened .fancybox-skin {
+       -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+          -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+               box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+}
+
+.fancybox-outer, .fancybox-inner {
+       position: relative;
+}
+
+.fancybox-inner {
+       overflow: hidden;
+}
+
+.fancybox-type-iframe .fancybox-inner {
+       -webkit-overflow-scrolling: touch;
+}
+
+.fancybox-error {
+       color: #444;
+       font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+       margin: 0;
+       padding: 15px;
+       white-space: nowrap;
+}
+
+.fancybox-image, .fancybox-iframe {
+       display: block;
+       width: 100%;
+       height: 100%;
+}
+
+.fancybox-image {
+       max-width: 100%;
+       max-height: 100%;
+}
+
+#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+       background-image: url('fancybox_sprite.png');
+}
+
+#fancybox-loading {
+       position: fixed;
+       top: 50%;
+       left: 50%;
+       margin-top: -22px;
+       margin-left: -22px;
+       background-position: 0 -108px;
+       opacity: 0.8;
+       cursor: pointer;
+       z-index: 8060;
+}
+
+#fancybox-loading div {
+       width: 44px;
+       height: 44px;
+       background: url('fancybox_loading.gif') center center no-repeat;
+}
+
+.fancybox-close {
+       position: absolute;
+       top: -18px;
+       right: -18px;
+       width: 36px;
+       height: 36px;
+       cursor: pointer;
+       z-index: 8040;
+}
+
+.fancybox-nav {
+       position: absolute;
+       top: 0;
+       width: 40%;
+       height: 100%;
+       cursor: pointer;
+       text-decoration: none;
+       background: transparent url('blank.gif'); /* helps IE */
+       -webkit-tap-highlight-color: rgba(0,0,0,0);
+       z-index: 8040;
+}
+
+.fancybox-prev {
+       left: 0;
+}
+
+.fancybox-next {
+       right: 0;
+}
+
+.fancybox-nav span {
+       position: absolute;
+       top: 50%;
+       width: 36px;
+       height: 34px;
+       margin-top: -18px;
+       cursor: pointer;
+       z-index: 8040;
+       visibility: hidden;
+}
+
+.fancybox-prev span {
+       left: 10px;
+       background-position: 0 -36px;
+}
+
+.fancybox-next span {
+       right: 10px;
+       background-position: 0 -72px;
+}
+
+.fancybox-nav:hover span {
+       visibility: visible;
+}
+
+.fancybox-tmp {
+       position: absolute;
+       top: -99999px;
+       left: -99999px;
+       visibility: hidden;
+       max-width: 99999px;
+       max-height: 99999px;
+       overflow: visible !important;
+}
+
+/* Overlay helper */
+
+.fancybox-lock {
+    overflow: hidden !important;
+    width: auto;
+}
+
+.fancybox-lock body {
+    overflow: hidden !important;
+}
+
+.fancybox-lock-test {
+    overflow-y: hidden !important;
+}
+
+.fancybox-overlay {
+       position: absolute;
+       top: 0;
+       left: 0;
+       overflow: hidden;
+       display: none;
+       z-index: 8010;
+       background: url('fancybox_overlay.png');
+}
+
+.fancybox-overlay-fixed {
+       position: fixed;
+       bottom: 0;
+       right: 0;
+}
+
+.fancybox-lock .fancybox-overlay {
+       overflow: auto;
+       overflow-y: scroll;
+}
+
+/* Title helper */
+
+.fancybox-title {
+       visibility: hidden;
+       font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+       position: relative;
+       text-shadow: none;
+       z-index: 8050;
+}
+
+.fancybox-opened .fancybox-title {
+       visibility: visible;
+}
+
+.fancybox-title-float-wrap {
+       position: absolute;
+       bottom: 0;
+       right: 50%;
+       margin-bottom: -35px;
+       z-index: 8050;
+       text-align: center;
+}
+
+.fancybox-title-float-wrap .child {
+       display: inline-block;
+       margin-right: -100%;
+       padding: 2px 20px;
+       background: transparent; /* Fallback for web browsers that doesn't support RGBa */
+       background: rgba(0, 0, 0, 0.8);
+       -webkit-border-radius: 15px;
+          -moz-border-radius: 15px;
+               border-radius: 15px;
+       text-shadow: 0 1px 2px #222;
+       color: #FFF;
+       font-weight: bold;
+       line-height: 24px;
+       white-space: nowrap;
+}
+
+.fancybox-title-outside-wrap {
+       position: relative;
+       margin-top: 10px;
+       color: #fff;
+}
+
+.fancybox-title-inside-wrap {
+       padding-top: 10px;
+}
+
+.fancybox-title-over-wrap {
+       position: absolute;
+       bottom: 0;
+       left: 0;
+       color: #fff;
+       padding: 10px;
+       background: #000;
+       background: rgba(0, 0, 0, .8);
+}
+
+/*Retina graphics!*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
+          only screen and (min--moz-device-pixel-ratio: 1.5),
+          only screen and (min-device-pixel-ratio: 1.5){
+
+       #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+               background-image: url('fancybox_sprite@2x.png');
+               background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
+       }
+
+       #fancybox-loading div {
+               background-image: url('fancybox_loading@2x.gif');
+               background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
+       }
+}
\ No newline at end of file
diff --git a/fancybox/source/jquery.fancybox.js b/fancybox/source/jquery.fancybox.js
new file mode 100644 (file)
index 0000000..e8e1987
--- /dev/null
@@ -0,0 +1,2020 @@
+/*!
+ * fancyBox - jQuery Plugin
+ * version: 2.1.5 (Fri, 14 Jun 2013)
+ * @requires jQuery v1.6 or later
+ *
+ * Examples at http://fancyapps.com/fancybox/
+ * License: www.fancyapps.com/fancybox/#license
+ *
+ * Copyright 2012 Janis Skarnelis - janis@fancyapps.com
+ *
+ */
+
+(function (window, document, $, undefined) {
+       "use strict";
+
+       var H = $("html"),
+               W = $(window),
+               D = $(document),
+               F = $.fancybox = function () {
+                       F.open.apply( this, arguments );
+               },
+               IE =  navigator.userAgent.match(/msie/i),
+               didUpdate       = null,
+               isTouch         = document.createTouch !== undefined,
+
+               isQuery = function(obj) {
+                       return obj && obj.hasOwnProperty && obj instanceof $;
+               },
+               isString = function(str) {
+                       return str && $.type(str) === "string";
+               },
+               isPercentage = function(str) {
+                       return isString(str) && str.indexOf('%') > 0;
+               },
+               isScrollable = function(el) {
+                       return (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight)));
+               },
+               getScalar = function(orig, dim) {
+                       var value = parseInt(orig, 10) || 0;
+
+                       if (dim && isPercentage(orig)) {
+                               value = F.getViewport()[ dim ] / 100 * value;
+                       }
+
+                       return Math.ceil(value);
+               },
+               getValue = function(value, dim) {
+                       return getScalar(value, dim) + 'px';
+               };
+
+       $.extend(F, {
+               // The current version of fancyBox
+               version: '2.1.5',
+
+               defaults: {
+                       padding : 15,
+                       margin  : 20,
+
+                       width     : 800,
+                       height    : 600,
+                       minWidth  : 100,
+                       minHeight : 100,
+                       maxWidth  : 9999,
+                       maxHeight : 9999,
+                       pixelRatio: 1, // Set to 2 for retina display support
+
+                       autoSize   : true,
+                       autoHeight : false,
+                       autoWidth  : false,
+
+                       autoResize  : true,
+                       autoCenter  : !isTouch,
+                       fitToView   : true,
+                       aspectRatio : false,
+                       topRatio    : 0.5,
+                       leftRatio   : 0.5,
+
+                       scrolling : 'auto', // 'auto', 'yes' or 'no'
+                       wrapCSS   : '',
+
+                       arrows     : true,
+                       closeBtn   : true,
+                       closeClick : false,
+                       nextClick  : false,
+                       mouseWheel : true,
+                       autoPlay   : false,
+                       playSpeed  : 3000,
+                       preload    : 3,
+                       modal      : false,
+                       loop       : true,
+
+                       ajax  : {
+                               dataType : 'html',
+                               headers  : { 'X-fancyBox': true }
+                       },
+                       iframe : {
+                               scrolling : 'auto',
+                               preload   : true
+                       },
+                       swf : {
+                               wmode: 'transparent',
+                               allowfullscreen   : 'true',
+                               allowscriptaccess : 'always'
+                       },
+
+                       keys  : {
+                               next : {
+                                       13 : 'left', // enter
+                                       34 : 'up',   // page down
+                                       39 : 'left', // right arrow
+                                       40 : 'up'    // down arrow
+                               },
+                               prev : {
+                                       8  : 'right',  // backspace
+                                       33 : 'down',   // page up
+                                       37 : 'right',  // left arrow
+                                       38 : 'down'    // up arrow
+                               },
+                               close  : [27], // escape key
+                               play   : [32], // space - start/stop slideshow
+                               toggle : [70]  // letter "f" - toggle fullscreen
+                       },
+
+                       direction : {
+                               next : 'left',
+                               prev : 'right'
+                       },
+
+                       scrollOutside  : true,
+
+                       // Override some properties
+                       index   : 0,
+                       type    : null,
+                       href    : null,
+                       content : null,
+                       title   : null,
+
+                       // HTML templates
+                       tpl: {
+                               wrap     : '<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',
+                               image    : '<img class="fancybox-image" src="{href}" alt="" />',
+                               iframe   : '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen' + (IE ? ' allowtransparency="true"' : '') + '></iframe>',
+                               error    : '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
+                               closeBtn : '<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',
+                               next     : '<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',
+                               prev     : '<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'
+                       },
+
+                       // Properties for each animation type
+                       // Opening fancyBox
+                       openEffect  : 'fade', // 'elastic', 'fade' or 'none'
+                       openSpeed   : 250,
+                       openEasing  : 'swing',
+                       openOpacity : true,
+                       openMethod  : 'zoomIn',
+
+                       // Closing fancyBox
+                       closeEffect  : 'fade', // 'elastic', 'fade' or 'none'
+                       closeSpeed   : 250,
+                       closeEasing  : 'swing',
+                       closeOpacity : true,
+                       closeMethod  : 'zoomOut',
+
+                       // Changing next gallery item
+                       nextEffect : 'elastic', // 'elastic', 'fade' or 'none'
+                       nextSpeed  : 250,
+                       nextEasing : 'swing',
+                       nextMethod : 'changeIn',
+
+                       // Changing previous gallery item
+                       prevEffect : 'elastic', // 'elastic', 'fade' or 'none'
+                       prevSpeed  : 250,
+                       prevEasing : 'swing',
+                       prevMethod : 'changeOut',
+
+                       // Enable default helpers
+                       helpers : {
+                               overlay : true,
+                               title   : true
+                       },
+
+                       // Callbacks
+                       onCancel     : $.noop, // If canceling
+                       beforeLoad   : $.noop, // Before loading
+                       afterLoad    : $.noop, // After loading
+                       beforeShow   : $.noop, // Before changing in current item
+                       afterShow    : $.noop, // After opening
+                       beforeChange : $.noop, // Before changing gallery item
+                       beforeClose  : $.noop, // Before closing
+                       afterClose   : $.noop  // After closing
+               },
+
+               //Current state
+               group    : {}, // Selected group
+               opts     : {}, // Group options
+               previous : null,  // Previous element
+               coming   : null,  // Element being loaded
+               current  : null,  // Currently loaded element
+               isActive : false, // Is activated
+               isOpen   : false, // Is currently open
+               isOpened : false, // Have been fully opened at least once
+
+               wrap  : null,
+               skin  : null,
+               outer : null,
+               inner : null,
+
+               player : {
+                       timer    : null,
+                       isActive : false
+               },
+
+               // Loaders
+               ajaxLoad   : null,
+               imgPreload : null,
+
+               // Some collections
+               transitions : {},
+               helpers     : {},
+
+               /*
+                *      Static methods
+                */
+
+               open: function (group, opts) {
+                       if (!group) {
+                               return;
+                       }
+
+                       if (!$.isPlainObject(opts)) {
+                               opts = {};
+                       }
+
+                       // Close if already active
+                       if (false === F.close(true)) {
+                               return;
+                       }
+
+                       // Normalize group
+                       if (!$.isArray(group)) {
+                               group = isQuery(group) ? $(group).get() : [group];
+                       }
+
+                       // Recheck if the type of each element is `object` and set content type (image, ajax, etc)
+                       $.each(group, function(i, element) {
+                               var obj = {},
+                                       href,
+                                       title,
+                                       content,
+                                       type,
+                                       rez,
+                                       hrefParts,
+                                       selector;
+
+                               if ($.type(element) === "object") {
+                                       // Check if is DOM element
+                                       if (element.nodeType) {
+                                               element = $(element);
+                                       }
+
+                                       if (isQuery(element)) {
+                                               obj = {
+                                                       href    : element.data('fancybox-href') || element.attr('href'),
+                                                       title   : element.data('fancybox-title') || element.attr('title'),
+                                                       isDom   : true,
+                                                       element : element
+                                               };
+
+                                               if ($.metadata) {
+                                                       $.extend(true, obj, element.metadata());
+                                               }
+
+                                       } else {
+                                               obj = element;
+                                       }
+                               }
+
+                               href  = opts.href  || obj.href || (isString(element) ? element : null);
+                               title = opts.title !== undefined ? opts.title : obj.title || '';
+
+                               content = opts.content || obj.content;
+                               type    = content ? 'html' : (opts.type  || obj.type);
+
+                               if (!type && obj.isDom) {
+                                       type = element.data('fancybox-type');
+
+                                       if (!type) {
+                                               rez  = element.prop('class').match(/fancybox\.(\w+)/);
+                                               type = rez ? rez[1] : null;
+                                       }
+                               }
+
+                               if (isString(href)) {
+                                       // Try to guess the content type
+                                       if (!type) {
+                                               if (F.isImage(href)) {
+                                                       type = 'image';
+
+                                               } else if (F.isSWF(href)) {
+                                                       type = 'swf';
+
+                                               } else if (href.charAt(0) === '#') {
+                                                       type = 'inline';
+
+                                               } else if (isString(element)) {
+                                                       type    = 'html';
+                                                       content = element;
+                                               }
+                                       }
+
+                                       // Split url into two pieces with source url and content selector, e.g,
+                                       // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id"
+                                       if (type === 'ajax') {
+                                               hrefParts = href.split(/\s+/, 2);
+                                               href      = hrefParts.shift();
+                                               selector  = hrefParts.shift();
+                                       }
+                               }
+
+                               if (!content) {
+                                       if (type === 'inline') {
+                                               if (href) {
+                                                       content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7
+
+                                               } else if (obj.isDom) {
+                                                       content = element;
+                                               }
+
+                                       } else if (type === 'html') {
+                                               content = href;
+
+                                       } else if (!type && !href && obj.isDom) {
+                                               type    = 'inline';
+                                               content = element;
+                                       }
+                               }
+
+                               $.extend(obj, {
+                                       href     : href,
+                                       type     : type,
+                                       content  : content,
+                                       title    : title,
+                                       selector : selector
+                               });
+
+                               group[ i ] = obj;
+                       });
+
+                       // Extend the defaults
+                       F.opts = $.extend(true, {}, F.defaults, opts);
+
+                       // All options are merged recursive except keys
+                       if (opts.keys !== undefined) {
+                               F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;
+                       }
+
+                       F.group = group;
+
+                       return F._start(F.opts.index);
+               },
+
+               // Cancel image loading or abort ajax request
+               cancel: function () {
+                       var coming = F.coming;
+
+                       if (!coming || false === F.trigger('onCancel')) {
+                               return;
+                       }
+
+                       F.hideLoading();
+
+                       if (F.ajaxLoad) {
+                               F.ajaxLoad.abort();
+                       }
+
+                       F.ajaxLoad = null;
+
+                       if (F.imgPreload) {
+                               F.imgPreload.onload = F.imgPreload.onerror = null;
+                       }
+
+                       if (coming.wrap) {
+                               coming.wrap.stop(true, true).trigger('onReset').remove();
+                       }
+
+                       F.coming = null;
+
+                       // If the first item has been canceled, then clear everything
+                       if (!F.current) {
+                               F._afterZoomOut( coming );
+                       }
+               },
+
+               // Start closing animation if is open; remove immediately if opening/closing
+               close: function (event) {
+                       F.cancel();
+
+                       if (false === F.trigger('beforeClose')) {
+                               return;
+                       }
+
+                       F.unbindEvents();
+
+                       if (!F.isActive) {
+                               return;
+                       }
+
+                       if (!F.isOpen || event === true) {
+                               $('.fancybox-wrap').stop(true).trigger('onReset').remove();
+
+                               F._afterZoomOut();
+
+                       } else {
+                               F.isOpen = F.isOpened = false;
+                               F.isClosing = true;
+
+                               $('.fancybox-item, .fancybox-nav').remove();
+
+                               F.wrap.stop(true, true).removeClass('fancybox-opened');
+
+                               F.transitions[ F.current.closeMethod ]();
+                       }
+               },
+
+               // Manage slideshow:
+               //   $.fancybox.play(); - toggle slideshow
+               //   $.fancybox.play( true ); - start
+               //   $.fancybox.play( false ); - stop
+               play: function ( action ) {
+                       var clear = function () {
+                                       clearTimeout(F.player.timer);
+                               },
+                               set = function () {
+                                       clear();
+
+                                       if (F.current && F.player.isActive) {
+                                               F.player.timer = setTimeout(F.next, F.current.playSpeed);
+                                       }
+                               },
+                               stop = function () {
+                                       clear();
+
+                                       D.unbind('.player');
+
+                                       F.player.isActive = false;
+
+                                       F.trigger('onPlayEnd');
+                               },
+                               start = function () {
+                                       if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {
+                                               F.player.isActive = true;
+
+                                               D.bind({
+                                                       'onCancel.player beforeClose.player' : stop,
+                                                       'onUpdate.player'   : set,
+                                                       'beforeLoad.player' : clear
+                                               });
+
+                                               set();
+
+                                               F.trigger('onPlayStart');
+                                       }
+                               };
+
+                       if (action === true || (!F.player.isActive && action !== false)) {
+                               start();
+                       } else {
+                               stop();
+                       }
+               },
+
+               // Navigate to next gallery item
+               next: function ( direction ) {
+                       var current = F.current;
+
+                       if (current) {
+                               if (!isString(direction)) {
+                                       direction = current.direction.next;
+                               }
+
+                               F.jumpto(current.index + 1, direction, 'next');
+                       }
+               },
+
+               // Navigate to previous gallery item
+               prev: function ( direction ) {
+                       var current = F.current;
+
+                       if (current) {
+                               if (!isString(direction)) {
+                                       direction = current.direction.prev;
+                               }
+
+                               F.jumpto(current.index - 1, direction, 'prev');
+                       }
+               },
+
+               // Navigate to gallery item by index
+               jumpto: function ( index, direction, router ) {
+                       var current = F.current;
+
+                       if (!current) {
+                               return;
+                       }
+
+                       index = getScalar(index);
+
+                       F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ];
+                       F.router    = router || 'jumpto';
+
+                       if (current.loop) {
+                               if (index < 0) {
+                                       index = current.group.length + (index % current.group.length);
+                               }
+
+                               index = index % current.group.length;
+                       }
+
+                       if (current.group[ index ] !== undefined) {
+                               F.cancel();
+
+                               F._start(index);
+                       }
+               },
+
+               // Center inside viewport and toggle position type to fixed or absolute if needed
+               reposition: function (e, onlyAbsolute) {
+                       var current = F.current,
+                               wrap    = current ? current.wrap : null,
+                               pos;
+
+                       if (wrap) {
+                               pos = F._getPosition(onlyAbsolute);
+
+                               if (e && e.type === 'scroll') {
+                                       delete pos.position;
+
+                                       wrap.stop(true, true).animate(pos, 200);
+
+                               } else {
+                                       wrap.css(pos);
+
+                                       current.pos = $.extend({}, current.dim, pos);
+                               }
+                       }
+               },
+
+               update: function (e) {
+                       var type = (e && e.type),
+                               anyway = !type || type === 'orientationchange';
+
+                       if (anyway) {
+                               clearTimeout(didUpdate);
+
+                               didUpdate = null;
+                       }
+
+                       if (!F.isOpen || didUpdate) {
+                               return;
+                       }
+
+                       didUpdate = setTimeout(function() {
+                               var current = F.current;
+
+                               if (!current || F.isClosing) {
+                                       return;
+                               }
+
+                               F.wrap.removeClass('fancybox-tmp');
+
+                               if (anyway || type === 'load' || (type === 'resize' && current.autoResize)) {
+                                       F._setDimension();
+                               }
+
+                               if (!(type === 'scroll' && current.canShrink)) {
+                                       F.reposition(e);
+                               }
+
+                               F.trigger('onUpdate');
+
+                               didUpdate = null;
+
+                       }, (anyway && !isTouch ? 0 : 300));
+               },
+
+               // Shrink content to fit inside viewport or restore if resized
+               toggle: function ( action ) {
+                       if (F.isOpen) {
+                               F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView;
+
+                               // Help browser to restore document dimensions
+                               if (isTouch) {
+                                       F.wrap.removeAttr('style').addClass('fancybox-tmp');
+
+                                       F.trigger('onUpdate');
+                               }
+
+                               F.update();
+                       }
+               },
+
+               hideLoading: function () {
+                       D.unbind('.loading');
+
+                       $('#fancybox-loading').remove();
+               },
+
+               showLoading: function () {
+                       var el, viewport;
+
+                       F.hideLoading();
+
+                       el = $('<div id="fancybox-loading"><div></div></div>').click(F.cancel).appendTo('body');
+
+                       // If user will press the escape-button, the request will be canceled
+                       D.bind('keydown.loading', function(e) {
+                               if ((e.which || e.keyCode) === 27) {
+                                       e.preventDefault();
+
+                                       F.cancel();
+                               }
+                       });
+
+                       if (!F.defaults.fixed) {
+                               viewport = F.getViewport();
+
+                               el.css({
+                                       position : 'absolute',
+                                       top  : (viewport.h * 0.5) + viewport.y,
+                                       left : (viewport.w * 0.5) + viewport.x
+                               });
+                       }
+               },
+
+               getViewport: function () {
+                       var locked = (F.current && F.current.locked) || false,
+                               rez    = {
+                                       x: W.scrollLeft(),
+                                       y: W.scrollTop()
+                               };
+
+                       if (locked) {
+                               rez.w = locked[0].clientWidth;
+                               rez.h = locked[0].clientHeight;
+
+                       } else {
+                               // See http://bugs.jquery.com/ticket/6724
+                               rez.w = isTouch && window.innerWidth  ? window.innerWidth  : W.width();
+                               rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height();
+                       }
+
+                       return rez;
+               },
+
+               // Unbind the keyboard / clicking actions
+               unbindEvents: function () {
+                       if (F.wrap && isQuery(F.wrap)) {
+                               F.wrap.unbind('.fb');
+                       }
+
+                       D.unbind('.fb');
+                       W.unbind('.fb');
+               },
+
+               bindEvents: function () {
+                       var current = F.current,
+                               keys;
+
+                       if (!current) {
+                               return;
+                       }
+
+                       // Changing document height on iOS devices triggers a 'resize' event,
+                       // that can change document height... repeating infinitely
+                       W.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update);
+
+                       keys = current.keys;
+
+                       if (keys) {
+                               D.bind('keydown.fb', function (e) {
+                                       var code   = e.which || e.keyCode,
+                                               target = e.target || e.srcElement;
+
+                                       // Skip esc key if loading, because showLoading will cancel preloading
+                                       if (code === 27 && F.coming) {
+                                               return false;
+                                       }
+
+                                       // Ignore key combinations and key events within form elements
+                                       if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) {
+                                               $.each(keys, function(i, val) {
+                                                       if (current.group.length > 1 && val[ code ] !== undefined) {
+                                                               F[ i ]( val[ code ] );
+
+                                                               e.preventDefault();
+                                                               return false;
+                                                       }
+
+                                                       if ($.inArray(code, val) > -1) {
+                                                               F[ i ] ();
+
+                                                               e.preventDefault();
+                                                               return false;
+                                                       }
+                                               });
+                                       }
+                               });
+                       }
+
+                       if ($.fn.mousewheel && current.mouseWheel) {
+                               F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) {
+                                       var target = e.target || null,
+                                               parent = $(target),
+                                               canScroll = false;
+
+                                       while (parent.length) {
+                                               if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) {
+                                                       break;
+                                               }
+
+                                               canScroll = isScrollable( parent[0] );
+                                               parent    = $(parent).parent();
+                                       }
+
+                                       if (delta !== 0 && !canScroll) {
+                                               if (F.group.length > 1 && !current.canShrink) {
+                                                       if (deltaY > 0 || deltaX > 0) {
+                                                               F.prev( deltaY > 0 ? 'down' : 'left' );
+
+                                                       } else if (deltaY < 0 || deltaX < 0) {
+                                                               F.next( deltaY < 0 ? 'up' : 'right' );
+                                                       }
+
+                                                       e.preventDefault();
+                                               }
+                                       }
+                               });
+                       }
+               },
+
+               trigger: function (event, o) {
+                       var ret, obj = o || F.coming || F.current;
+
+                       if (!obj) {
+                               return;
+                       }
+
+                       if ($.isFunction( obj[event] )) {
+                               ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));
+                       }
+
+                       if (ret === false) {
+                               return false;
+                       }
+
+                       if (obj.helpers) {
+                               $.each(obj.helpers, function (helper, opts) {
+                                       if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) {
+                                               F.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj);
+                                       }
+                               });
+                       }
+
+                       D.trigger(event);
+               },
+
+               isImage: function (str) {
+                       return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i);
+               },
+
+               isSWF: function (str) {
+                       return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i);
+               },
+
+               _start: function (index) {
+                       var coming = {},
+                               obj,
+                               href,
+                               type,
+                               margin,
+                               padding;
+
+                       index = getScalar( index );
+                       obj   = F.group[ index ] || null;
+
+                       if (!obj) {
+                               return false;
+                       }
+
+                       coming = $.extend(true, {}, F.opts, obj);
+
+                       // Convert margin and padding properties to array - top, right, bottom, left
+                       margin  = coming.margin;
+                       padding = coming.padding;
+
+                       if ($.type(margin) === 'number') {
+                               coming.margin = [margin, margin, margin, margin];
+                       }
+
+                       if ($.type(padding) === 'number') {
+                               coming.padding = [padding, padding, padding, padding];
+                       }
+
+                       // 'modal' propery is just a shortcut
+                       if (coming.modal) {
+                               $.extend(true, coming, {
+                                       closeBtn   : false,
+                                       closeClick : false,
+                                       nextClick  : false,
+                                       arrows     : false,
+                                       mouseWheel : false,
+                                       keys       : null,
+                                       helpers: {
+                                               overlay : {
+                                                       closeClick : false
+                                               }
+                                       }
+                               });
+                       }
+
+                       // 'autoSize' property is a shortcut, too
+                       if (coming.autoSize) {
+                               coming.autoWidth = coming.autoHeight = true;
+                       }
+
+                       if (coming.width === 'auto') {
+                               coming.autoWidth = true;
+                       }
+
+                       if (coming.height === 'auto') {
+                               coming.autoHeight = true;
+                       }
+
+                       /*
+                        * Add reference to the group, so it`s possible to access from callbacks, example:
+                        * afterLoad : function() {
+                        *     this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
+                        * }
+                        */
+
+                       coming.group  = F.group;
+                       coming.index  = index;
+
+                       // Give a chance for callback or helpers to update coming item (type, title, etc)
+                       F.coming = coming;
+
+                       if (false === F.trigger('beforeLoad')) {
+                               F.coming = null;
+
+                               return;
+                       }
+
+                       type = coming.type;
+                       href = coming.href;
+
+                       if (!type) {
+                               F.coming = null;
+
+                               //If we can not determine content type then drop silently or display next/prev item if looping through gallery
+                               if (F.current && F.router && F.router !== 'jumpto') {
+                                       F.current.index = index;
+
+                                       return F[ F.router ]( F.direction );
+                               }
+
+                               return false;
+                       }
+
+                       F.isActive = true;
+
+                       if (type === 'image' || type === 'swf') {
+                               coming.autoHeight = coming.autoWidth = false;
+                               coming.scrolling  = 'visible';
+                       }
+
+                       if (type === 'image') {
+                               coming.aspectRatio = true;
+                       }
+
+                       if (type === 'iframe' && isTouch) {
+                               coming.scrolling = 'scroll';
+                       }
+
+                       // Build the neccessary markup
+                       coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' );
+
+                       $.extend(coming, {
+                               skin  : $('.fancybox-skin',  coming.wrap),
+                               outer : $('.fancybox-outer', coming.wrap),
+                               inner : $('.fancybox-inner', coming.wrap)
+                       });
+
+                       $.each(["Top", "Right", "Bottom", "Left"], function(i, v) {
+                               coming.skin.css('padding' + v, getValue(coming.padding[ i ]));
+                       });
+
+                       F.trigger('onReady');
+
+                       // Check before try to load; 'inline' and 'html' types need content, others - href
+                       if (type === 'inline' || type === 'html') {
+                               if (!coming.content || !coming.content.length) {
+                                       return F._error( 'content' );
+                               }
+
+                       } else if (!href) {
+                               return F._error( 'href' );
+                       }
+
+                       if (type === 'image') {
+                               F._loadImage();
+
+                       } else if (type === 'ajax') {
+                               F._loadAjax();
+
+                       } else if (type === 'iframe') {
+                               F._loadIframe();
+
+                       } else {
+                               F._afterLoad();
+                       }
+               },
+
+               _error: function ( type ) {
+                       $.extend(F.coming, {
+                               type       : 'html',
+                               autoWidth  : true,
+                               autoHeight : true,
+                               minWidth   : 0,
+                               minHeight  : 0,
+                               scrolling  : 'no',
+                               hasError   : type,
+                               content    : F.coming.tpl.error
+                       });
+
+                       F._afterLoad();
+               },
+
+               _loadImage: function () {
+                       // Reset preload image so it is later possible to check "complete" property
+                       var img = F.imgPreload = new Image();
+
+                       img.onload = function () {
+                               this.onload = this.onerror = null;
+
+                               F.coming.width  = this.width / F.opts.pixelRatio;
+                               F.coming.height = this.height / F.opts.pixelRatio;
+
+                               F._afterLoad();
+                       };
+
+                       img.onerror = function () {
+                               this.onload = this.onerror = null;
+
+                               F._error( 'image' );
+                       };
+
+                       img.src = F.coming.href;
+
+                       if (img.complete !== true) {
+                               F.showLoading();
+                       }
+               },
+
+               _loadAjax: function () {
+                       var coming = F.coming;
+
+                       F.showLoading();
+
+                       F.ajaxLoad = $.ajax($.extend({}, coming.ajax, {
+                               url: coming.href,
+                               error: function (jqXHR, textStatus) {
+                                       if (F.coming && textStatus !== 'abort') {
+                                               F._error( 'ajax', jqXHR );
+
+                                       } else {
+                                               F.hideLoading();
+                                       }
+                               },
+                               success: function (data, textStatus) {
+                                       if (textStatus === 'success') {
+                                               coming.content = data;
+
+                                               F._afterLoad();
+                                       }
+                               }
+                       }));
+               },
+
+               _loadIframe: function() {
+                       var coming = F.coming,
+                               iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime()))
+                                       .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling)
+                                       .attr('src', coming.href);
+
+                       // This helps IE
+                       $(coming.wrap).bind('onReset', function () {
+                               try {
+                                       $(this).find('iframe').hide().attr('src', '//about:blank').end().empty();
+                               } catch (e) {}
+                       });
+
+                       if (coming.iframe.preload) {
+                               F.showLoading();
+
+                               iframe.one('load', function() {
+                                       $(this).data('ready', 1);
+
+                                       // iOS will lose scrolling if we resize
+                                       if (!isTouch) {
+                                               $(this).bind('load.fb', F.update);
+                                       }
+
+                                       // Without this trick:
+                                       //   - iframe won't scroll on iOS devices
+                                       //   - IE7 sometimes displays empty iframe
+                                       $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show();
+
+                                       F._afterLoad();
+                               });
+                       }
+
+                       coming.content = iframe.appendTo( coming.inner );
+
+                       if (!coming.iframe.preload) {
+                               F._afterLoad();
+                       }
+               },
+
+               _preloadImages: function() {
+                       var group   = F.group,
+                               current = F.current,
+                               len     = group.length,
+                               cnt     = current.preload ? Math.min(current.preload, len - 1) : 0,
+                               item,
+                               i;
+
+                       for (i = 1; i <= cnt; i += 1) {
+                               item = group[ (current.index + i ) % len ];
+
+                               if (item.type === 'image' && item.href) {
+                                       new Image().src = item.href;
+                               }
+                       }
+               },
+
+               _afterLoad: function () {
+                       var coming   = F.coming,
+                               previous = F.current,
+                               placeholder = 'fancybox-placeholder',
+                               current,
+                               content,
+                               type,
+                               scrolling,
+                               href,
+                               embed;
+
+                       F.hideLoading();
+
+                       if (!coming || F.isActive === false) {
+                               return;
+                       }
+
+                       if (false === F.trigger('afterLoad', coming, previous)) {
+                               coming.wrap.stop(true).trigger('onReset').remove();
+
+                               F.coming = null;
+
+                               return;
+                       }
+
+                       if (previous) {
+                               F.trigger('beforeChange', previous);
+
+                               previous.wrap.stop(true).removeClass('fancybox-opened')
+                                       .find('.fancybox-item, .fancybox-nav')
+                                       .remove();
+                       }
+
+                       F.unbindEvents();
+
+                       current   = coming;
+                       content   = coming.content;
+                       type      = coming.type;
+                       scrolling = coming.scrolling;
+
+                       $.extend(F, {
+                               wrap  : current.wrap,
+                               skin  : current.skin,
+                               outer : current.outer,
+                               inner : current.inner,
+                               current  : current,
+                               previous : previous
+                       });
+
+                       href = current.href;
+
+                       switch (type) {
+                               case 'inline':
+                               case 'ajax':
+                               case 'html':
+                                       if (current.selector) {
+                                               content = $('<div>').html(content).find(current.selector);
+
+                                       } else if (isQuery(content)) {
+                                               if (!content.data(placeholder)) {
+                                                       content.data(placeholder, $('<div class="' + placeholder + '"></div>').insertAfter( content ).hide() );
+                                               }
+
+                                               content = content.show().detach();
+
+                                               current.wrap.bind('onReset', function () {
+                                                       if ($(this).find(content).length) {
+                                                               content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false);
+                                                       }
+                                               });
+                                       }
+                               break;
+
+                               case 'image':
+                                       content = current.tpl.image.replace('{href}', href);
+                               break;
+
+                               case 'swf':
+                                       content = '<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="' + href + '"></param>';
+                                       embed   = '';
+
+                                       $.each(current.swf, function(name, val) {
+                                               content += '<param name="' + name + '" value="' + val + '"></param>';
+                                               embed   += ' ' + name + '="' + val + '"';
+                                       });
+
+                                       content += '<embed src="' + href + '" type="application/x-shockwave-flash" width="100%" height="100%"' + embed + '></embed></object>';
+                               break;
+                       }
+
+                       if (!(isQuery(content) && content.parent().is(current.inner))) {
+                               current.inner.append( content );
+                       }
+
+                       // Give a chance for helpers or callbacks to update elements
+                       F.trigger('beforeShow');
+
+                       // Set scrolling before calculating dimensions
+                       current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));
+
+                       // Set initial dimensions and start position
+                       F._setDimension();
+
+                       F.reposition();
+
+                       F.isOpen = false;
+                       F.coming = null;
+
+                       F.bindEvents();
+
+                       if (!F.isOpened) {
+                               $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove();
+
+                       } else if (previous.prevMethod) {
+                               F.transitions[ previous.prevMethod ]();
+                       }
+
+                       F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ]();
+
+                       F._preloadImages();
+               },
+
+               _setDimension: function () {
+                       var viewport   = F.getViewport(),
+                               steps      = 0,
+                               canShrink  = false,
+                               canExpand  = false,
+                               wrap       = F.wrap,
+                               skin       = F.skin,
+                               inner      = F.inner,
+                               current    = F.current,
+                               width      = current.width,
+                               height     = current.height,
+                               minWidth   = current.minWidth,
+                               minHeight  = current.minHeight,
+                               maxWidth   = current.maxWidth,
+                               maxHeight  = current.maxHeight,
+                               scrolling  = current.scrolling,
+                               scrollOut  = current.scrollOutside ? current.scrollbarWidth : 0,
+                               margin     = current.margin,
+                               wMargin    = getScalar(margin[1] + margin[3]),
+                               hMargin    = getScalar(margin[0] + margin[2]),
+                               wPadding,
+                               hPadding,
+                               wSpace,
+                               hSpace,
+                               origWidth,
+                               origHeight,
+                               origMaxWidth,
+                               origMaxHeight,
+                               ratio,
+                               width_,
+                               height_,
+                               maxWidth_,
+                               maxHeight_,
+                               iframe,
+                               body;
+
+                       // Reset dimensions so we could re-check actual size
+                       wrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp');
+
+                       wPadding = getScalar(skin.outerWidth(true)  - skin.width());
+                       hPadding = getScalar(skin.outerHeight(true) - skin.height());
+
+                       // Any space between content and viewport (margin, padding, border, title)
+                       wSpace = wMargin + wPadding;
+                       hSpace = hMargin + hPadding;
+
+                       origWidth  = isPercentage(width)  ? (viewport.w - wSpace) * getScalar(width)  / 100 : width;
+                       origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height;
+
+                       if (current.type === 'iframe') {
+                               iframe = current.content;
+
+                               if (current.autoHeight && iframe.data('ready') === 1) {
+                                       try {
+                                               if (iframe[0].contentWindow.document.location) {
+                                                       inner.width( origWidth ).height(9999);
+
+                                                       body = iframe.contents().find('body');
+
+                                                       if (scrollOut) {
+                                                               body.css('overflow-x', 'hidden');
+                                                       }
+
+                                                       origHeight = body.outerHeight(true);
+                                               }
+
+                                       } catch (e) {}
+                               }
+
+                       } else if (current.autoWidth || current.autoHeight) {
+                               inner.addClass( 'fancybox-tmp' );
+
+                               // Set width or height in case we need to calculate only one dimension
+                               if (!current.autoWidth) {
+                                       inner.width( origWidth );
+                               }
+
+                               if (!current.autoHeight) {
+                                       inner.height( origHeight );
+                               }
+
+                               if (current.autoWidth) {
+                                       origWidth = inner.width();
+                               }
+
+                               if (current.autoHeight) {
+                                       origHeight = inner.height();
+                               }
+
+                               inner.removeClass( 'fancybox-tmp' );
+                       }
+
+                       width  = getScalar( origWidth );
+                       height = getScalar( origHeight );
+
+                       ratio  = origWidth / origHeight;
+
+                       // Calculations for the content
+                       minWidth  = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth);
+                       maxWidth  = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth);
+
+                       minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight);
+                       maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight);
+
+                       // These will be used to determine if wrap can fit in the viewport
+                       origMaxWidth  = maxWidth;
+                       origMaxHeight = maxHeight;
+
+                       if (current.fitToView) {
+                               maxWidth  = Math.min(viewport.w - wSpace, maxWidth);
+                               maxHeight = Math.min(viewport.h - hSpace, maxHeight);
+                       }
+
+                       maxWidth_  = viewport.w - wMargin;
+                       maxHeight_ = viewport.h - hMargin;
+
+                       if (current.aspectRatio) {
+                               if (width > maxWidth) {
+                                       width  = maxWidth;
+                                       height = getScalar(width / ratio);
+                               }
+
+                               if (height > maxHeight) {
+                                       height = maxHeight;
+                                       width  = getScalar(height * ratio);
+                               }
+
+                               if (width < minWidth) {
+                                       width  = minWidth;
+                                       height = getScalar(width / ratio);
+                               }
+
+                               if (height < minHeight) {
+                                       height = minHeight;
+                                       width  = getScalar(height * ratio);
+                               }
+
+                       } else {
+                               width = Math.max(minWidth, Math.min(width, maxWidth));
+
+                               if (current.autoHeight && current.type !== 'iframe') {
+                                       inner.width( width );
+
+                                       height = inner.height();
+                               }
+
+                               height = Math.max(minHeight, Math.min(height, maxHeight));
+                       }
+
+                       // Try to fit inside viewport (including the title)
+                       if (current.fitToView) {
+                               inner.width( width ).height( height );
+
+                               wrap.width( width + wPadding );
+
+                               // Real wrap dimensions
+                               width_  = wrap.width();
+                               height_ = wrap.height();
+
+                               if (current.aspectRatio) {
+                                       while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) {
+                                               if (steps++ > 19) {
+                                                       break;
+                                               }
+
+                                               height = Math.max(minHeight, Math.min(maxHeight, height - 10));
+                                               width  = getScalar(height * ratio);
+
+                                               if (width < minWidth) {
+                                                       width  = minWidth;
+                                                       height = getScalar(width / ratio);
+                                               }
+
+                                               if (width > maxWidth) {
+                                                       width  = maxWidth;
+                                                       height = getScalar(width / ratio);
+                                               }
+
+                                               inner.width( width ).height( height );
+
+                                               wrap.width( width + wPadding );
+
+                                               width_  = wrap.width();
+                                               height_ = wrap.height();
+                                       }
+
+                               } else {
+                                       width  = Math.max(minWidth,  Math.min(width,  width  - (width_  - maxWidth_)));
+                                       height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_)));
+                               }
+                       }
+
+                       if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) {
+                               width += scrollOut;
+                       }
+
+                       inner.width( width ).height( height );
+
+                       wrap.width( width + wPadding );
+
+                       width_  = wrap.width();
+                       height_ = wrap.height();
+
+                       canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight;
+                       canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight));
+
+                       $.extend(current, {
+                               dim : {
+                                       width   : getValue( width_ ),
+                                       height  : getValue( height_ )
+                               },
+                               origWidth  : origWidth,
+                               origHeight : origHeight,
+                               canShrink  : canShrink,
+                               canExpand  : canExpand,
+                               wPadding   : wPadding,
+                               hPadding   : hPadding,
+                               wrapSpace  : height_ - skin.outerHeight(true),
+                               skinSpace  : skin.height() - height
+                       });
+
+                       if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) {
+                               inner.height('auto');
+                       }
+               },
+
+               _getPosition: function (onlyAbsolute) {
+                       var current  = F.current,
+                               viewport = F.getViewport(),
+                               margin   = current.margin,
+                               width    = F.wrap.width()  + margin[1] + margin[3],
+                               height   = F.wrap.height() + margin[0] + margin[2],
+                               rez      = {
+                                       position: 'absolute',
+                                       top  : margin[0],
+                                       left : margin[3]
+                               };
+
+                       if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) {
+                               rez.position = 'fixed';
+
+                       } else if (!current.locked) {
+                               rez.top  += viewport.y;
+                               rez.left += viewport.x;
+                       }
+
+                       rez.top  = getValue(Math.max(rez.top,  rez.top  + ((viewport.h - height) * current.topRatio)));
+                       rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width)  * current.leftRatio)));
+
+                       return rez;
+               },
+
+               _afterZoomIn: function () {
+                       var current = F.current;
+
+                       if (!current) {
+                               return;
+                       }
+
+                       F.isOpen = F.isOpened = true;
+
+                       F.wrap.css('overflow', 'visible').addClass('fancybox-opened');
+
+                       F.update();
+
+                       // Assign a click event
+                       if ( current.closeClick || (current.nextClick && F.group.length > 1) ) {
+                               F.inner.css('cursor', 'pointer').bind('click.fb', function(e) {
+                                       if (!$(e.target).is('a') && !$(e.target).parent().is('a')) {
+                                               e.preventDefault();
+
+                                               F[ current.closeClick ? 'close' : 'next' ]();
+                                       }
+                               });
+                       }
+
+                       // Create a close button
+                       if (current.closeBtn) {
+                               $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) {
+                                       e.preventDefault();
+
+                                       F.close();
+                               });
+                       }
+
+                       // Create navigation arrows
+                       if (current.arrows && F.group.length > 1) {
+                               if (current.loop || current.index > 0) {
+                                       $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);
+                               }
+
+                               if (current.loop || current.index < F.group.length - 1) {
+                                       $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);
+                               }
+                       }
+
+                       F.trigger('afterShow');
+
+                       // Stop the slideshow if this is the last item
+                       if (!current.loop && current.index === current.group.length - 1) {
+                               F.play( false );
+
+                       } else if (F.opts.autoPlay && !F.player.isActive) {
+                               F.opts.autoPlay = false;
+
+                               F.play();
+                       }
+               },
+
+               _afterZoomOut: function ( obj ) {
+                       obj = obj || F.current;
+
+                       $('.fancybox-wrap').trigger('onReset').remove();
+
+                       $.extend(F, {
+                               group  : {},
+                               opts   : {},
+                               router : false,
+                               current   : null,
+                               isActive  : false,
+                               isOpened  : false,
+                               isOpen    : false,
+                               isClosing : false,
+                               wrap   : null,
+                               skin   : null,
+                               outer  : null,
+                               inner  : null
+                       });
+
+                       F.trigger('afterClose', obj);
+               }
+       });
+
+       /*
+        *      Default transitions
+        */
+
+       F.transitions = {
+               getOrigPosition: function () {
+                       var current  = F.current,
+                               element  = current.element,
+                               orig     = current.orig,
+                               pos      = {},
+                               width    = 50,
+                               height   = 50,
+                               hPadding = current.hPadding,
+                               wPadding = current.wPadding,
+                               viewport = F.getViewport();
+
+                       if (!orig && current.isDom && element.is(':visible')) {
+                               orig = element.find('img:first');
+
+                               if (!orig.length) {
+                                       orig = element;
+                               }
+                       }
+
+                       if (isQuery(orig)) {
+                               pos = orig.offset();
+
+                               if (orig.is('img')) {
+                                       width  = orig.outerWidth();
+                                       height = orig.outerHeight();
+                               }
+
+                       } else {
+                               pos.top  = viewport.y + (viewport.h - height) * current.topRatio;
+                               pos.left = viewport.x + (viewport.w - width)  * current.leftRatio;
+                       }
+
+                       if (F.wrap.css('position') === 'fixed' || current.locked) {
+                               pos.top  -= viewport.y;
+                               pos.left -= viewport.x;
+                       }
+
+                       pos = {
+                               top     : getValue(pos.top  - hPadding * current.topRatio),
+                               left    : getValue(pos.left - wPadding * current.leftRatio),
+                               width   : getValue(width  + wPadding),
+                               height  : getValue(height + hPadding)
+                       };
+
+                       return pos;
+               },
+
+               step: function (now, fx) {
+                       var ratio,
+                               padding,
+                               value,
+                               prop       = fx.prop,
+                               current    = F.current,
+                               wrapSpace  = current.wrapSpace,
+                               skinSpace  = current.skinSpace;
+
+                       if (prop === 'width' || prop === 'height') {
+                               ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start);
+
+                               if (F.isClosing) {
+                                       ratio = 1 - ratio;
+                               }
+
+                               padding = prop === 'width' ? current.wPadding : current.hPadding;
+                               value   = now - padding;
+
+                               F.skin[ prop ](  getScalar( prop === 'width' ?  value : value - (wrapSpace * ratio) ) );
+                               F.inner[ prop ]( getScalar( prop === 'width' ?  value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) );
+                       }
+               },
+
+               zoomIn: function () {
+                       var current  = F.current,
+                               startPos = current.pos,
+                               effect   = current.openEffect,
+                               elastic  = effect === 'elastic',
+                               endPos   = $.extend({opacity : 1}, startPos);
+
+                       // Remove "position" property that breaks older IE
+                       delete endPos.position;
+
+                       if (elastic) {
+                               startPos = this.getOrigPosition();
+
+                               if (current.openOpacity) {
+                                       startPos.opacity = 0.1;
+                               }
+
+                       } else if (effect === 'fade') {
+                               startPos.opacity = 0.1;
+                       }
+
+                       F.wrap.css(startPos).animate(endPos, {
+                               duration : effect === 'none' ? 0 : current.openSpeed,
+                               easing   : current.openEasing,
+                               step     : elastic ? this.step : null,
+                               complete : F._afterZoomIn
+                       });
+               },
+
+               zoomOut: function () {
+                       var current  = F.current,
+                               effect   = current.closeEffect,
+                               elastic  = effect === 'elastic',
+                               endPos   = {opacity : 0.1};
+
+                       if (elastic) {
+                               endPos = this.getOrigPosition();
+
+                               if (current.closeOpacity) {
+                                       endPos.opacity = 0.1;
+                               }
+                       }
+
+                       F.wrap.animate(endPos, {
+                               duration : effect === 'none' ? 0 : current.closeSpeed,
+                               easing   : current.closeEasing,
+                               step     : elastic ? this.step : null,
+                               complete : F._afterZoomOut
+                       });
+               },
+
+               changeIn: function () {
+                       var current   = F.current,
+                               effect    = current.nextEffect,
+                               startPos  = current.pos,
+                               endPos    = { opacity : 1 },
+                               direction = F.direction,
+                               distance  = 200,
+                               field;
+
+                       startPos.opacity = 0.1;
+
+                       if (effect === 'elastic') {
+                               field = direction === 'down' || direction === 'up' ? 'top' : 'left';
+
+                               if (direction === 'down' || direction === 'right') {
+                                       startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance);
+                                       endPos[ field ]   = '+=' + distance + 'px';
+
+                               } else {
+                                       startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance);
+                                       endPos[ field ]   = '-=' + distance + 'px';
+                               }
+                       }
+
+                       // Workaround for http://bugs.jquery.com/ticket/12273
+                       if (effect === 'none') {
+                               F._afterZoomIn();
+
+                       } else {
+                               F.wrap.css(startPos).animate(endPos, {
+                                       duration : current.nextSpeed,
+                                       easing   : current.nextEasing,
+                                       complete : F._afterZoomIn
+                               });
+                       }
+               },
+
+               changeOut: function () {
+                       var previous  = F.previous,
+                               effect    = previous.prevEffect,
+                               endPos    = { opacity : 0.1 },
+                               direction = F.direction,
+                               distance  = 200;
+
+                       if (effect === 'elastic') {
+                               endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px';
+                       }
+
+                       previous.wrap.animate(endPos, {
+                               duration : effect === 'none' ? 0 : previous.prevSpeed,
+                               easing   : previous.prevEasing,
+                               complete : function () {
+                                       $(this).trigger('onReset').remove();
+                               }
+                       });
+               }
+       };
+
+       /*
+        *      Overlay helper
+        */
+
+       F.helpers.overlay = {
+               defaults : {
+                       closeClick : true,      // if true, fancyBox will be closed when user clicks on the overlay
+                       speedOut   : 200,       // duration of fadeOut animation
+                       showEarly  : true,      // indicates if should be opened immediately or wait until the content is ready
+                       css        : {},        // custom CSS properties
+                       locked     : !isTouch,  // if true, the content will be locked into overlay
+                       fixed      : true       // if false, the overlay CSS position property will not be set to "fixed"
+               },
+
+               overlay : null,      // current handle
+               fixed   : false,     // indicates if the overlay has position "fixed"
+               el      : $('html'), // element that contains "the lock"
+
+               // Public methods
+               create : function(opts) {
+                       opts = $.extend({}, this.defaults, opts);
+
+                       if (this.overlay) {
+                               this.close();
+                       }
+
+                       this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( F.coming ? F.coming.parent : opts.parent );
+                       this.fixed   = false;
+
+                       if (opts.fixed && F.defaults.fixed) {
+                               this.overlay.addClass('fancybox-overlay-fixed');
+
+                               this.fixed = true;
+                       }
+               },
+
+               open : function(opts) {
+                       var that = this;
+
+                       opts = $.extend({}, this.defaults, opts);
+
+                       if (this.overlay) {
+                               this.overlay.unbind('.overlay').width('auto').height('auto');
+
+                       } else {
+                               this.create(opts);
+                       }
+
+                       if (!this.fixed) {
+                               W.bind('resize.overlay', $.proxy( this.update, this) );
+
+                               this.update();
+                       }
+
+                       if (opts.closeClick) {
+                               this.overlay.bind('click.overlay', function(e) {
+                                       if ($(e.target).hasClass('fancybox-overlay')) {
+                                               if (F.isActive) {
+                                                       F.close();
+                                               } else {
+                                                       that.close();
+                                               }
+
+                                               return false;
+                                       }
+                               });
+                       }
+
+                       this.overlay.css( opts.css ).show();
+               },
+
+               close : function() {
+                       var scrollV, scrollH;
+
+                       W.unbind('resize.overlay');
+
+                       if (this.el.hasClass('fancybox-lock')) {
+                               $('.fancybox-margin').removeClass('fancybox-margin');
+
+                               scrollV = W.scrollTop();
+                               scrollH = W.scrollLeft();
+
+                               this.el.removeClass('fancybox-lock');
+
+                               W.scrollTop( scrollV ).scrollLeft( scrollH );
+                       }
+
+                       $('.fancybox-overlay').remove().hide();
+
+                       $.extend(this, {
+                               overlay : null,
+                               fixed   : false
+                       });
+               },
+
+               // Private, callbacks
+
+               update : function () {
+                       var width = '100%', offsetWidth;
+
+                       // Reset width/height so it will not mess
+                       this.overlay.width(width).height('100%');
+
+                       // jQuery does not return reliable result for IE
+                       if (IE) {
+                               offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
+
+                               if (D.width() > offsetWidth) {
+                                       width = D.width();
+                               }
+
+                       } else if (D.width() > W.width()) {
+                               width = D.width();
+                       }
+
+                       this.overlay.width(width).height(D.height());
+               },
+
+               // This is where we can manipulate DOM, because later it would cause iframes to reload
+               onReady : function (opts, obj) {
+                       var overlay = this.overlay;
+
+                       $('.fancybox-overlay').stop(true, true);
+
+                       if (!overlay) {
+                               this.create(opts);
+                       }
+
+                       if (opts.locked && this.fixed && obj.fixed) {
+                               if (!overlay) {
+                                       this.margin = D.height() > W.height() ? $('html').css('margin-right').replace("px", "") : false;
+                               }
+
+                               obj.locked = this.overlay.append( obj.wrap );
+                               obj.fixed  = false;
+                       }
+
+                       if (opts.showEarly === true) {
+                               this.beforeShow.apply(this, arguments);
+                       }
+               },
+
+               beforeShow : function(opts, obj) {
+                       var scrollV, scrollH;
+
+                       if (obj.locked) {
+                               if (this.margin !== false) {
+                                       $('*').filter(function(){
+                                               return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") );
+                                       }).addClass('fancybox-margin');
+
+                                       this.el.addClass('fancybox-margin');
+                               }
+
+                               scrollV = W.scrollTop();
+                               scrollH = W.scrollLeft();
+
+                               this.el.addClass('fancybox-lock');
+
+                               W.scrollTop( scrollV ).scrollLeft( scrollH );
+                       }
+
+                       this.open(opts);
+               },
+
+               onUpdate : function() {
+                       if (!this.fixed) {
+                               this.update();
+                       }
+               },
+
+               afterClose: function (opts) {
+                       // Remove overlay if exists and fancyBox is not opening
+                       // (e.g., it is not being open using afterClose callback)
+                       //if (this.overlay && !F.isActive) {
+                       if (this.overlay && !F.coming) {
+                               this.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this ));
+                       }
+               }
+       };
+
+       /*
+        *      Title helper
+        */
+
+       F.helpers.title = {
+               defaults : {
+                       type     : 'float', // 'float', 'inside', 'outside' or 'over',
+                       position : 'bottom' // 'top' or 'bottom'
+               },
+
+               beforeShow: function (opts) {
+                       var current = F.current,
+                               text    = current.title,
+                               type    = opts.type,
+                               title,
+                               target;
+
+                       if ($.isFunction(text)) {
+                               text = text.call(current.element, current);
+                       }
+
+                       if (!isString(text) || $.trim(text) === '') {
+                               return;
+                       }
+
+                       title = $('<div class="fancybox-title fancybox-title-' + type + '-wrap">' + text + '</div>');
+
+                       switch (type) {
+                               case 'inside':
+                                       target = F.skin;
+                               break;
+
+                               case 'outside':
+                                       target = F.wrap;
+                               break;
+
+                               case 'over':
+                                       target = F.inner;
+                               break;
+
+                               default: // 'float'
+                                       target = F.skin;
+
+                                       title.appendTo('body');
+
+                                       if (IE) {
+                                               title.width( title.width() );
+                                       }
+
+                                       title.wrapInner('<span class="child"></span>');
+
+                                       //Increase bottom margin so this title will also fit into viewport
+                                       F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) );
+                               break;
+                       }
+
+                       title[ (opts.position === 'top' ? 'prependTo'  : 'appendTo') ](target);
+               }
+       };
+
+       // jQuery plugin initialization
+       $.fn.fancybox = function (options) {
+               var index,
+                       that     = $(this),
+                       selector = this.selector || '',
+                       run      = function(e) {
+                               var what = $(this).blur(), idx = index, relType, relVal;
+
+                               if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) {
+                                       relType = options.groupAttr || 'data-fancybox-group';
+                                       relVal  = what.attr(relType);
+
+                                       if (!relVal) {
+                                               relType = 'rel';
+                                               relVal  = what.get(0)[ relType ];
+                                       }
+
+                                       if (relVal && relVal !== '' && relVal !== 'nofollow') {
+                                               what = selector.length ? $(selector) : that;
+                                               what = what.filter('[' + relType + '="' + relVal + '"]');
+                                               idx  = what.index(this);
+                                       }
+
+                                       options.index = idx;
+
+                                       // Stop an event from bubbling if everything is fine
+                                       if (F.open(what, options) !== false) {
+                                               e.preventDefault();
+                                       }
+                               }
+                       };
+
+               options = options || {};
+               index   = options.index || 0;
+
+               if (!selector || options.live === false) {
+                       that.unbind('click.fb-start').bind('click.fb-start', run);
+
+               } else {
+                       D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run);
+               }
+
+               this.filter('[data-fancybox-start=1]').trigger('click');
+
+               return this;
+       };
+
+       // Tests that need a body at doc ready
+       D.ready(function() {
+               var w1, w2;
+
+               if ( $.scrollbarWidth === undefined ) {
+                       // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
+                       $.scrollbarWidth = function() {
+                               var parent = $('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo('body'),
+                                       child  = parent.children(),
+                                       width  = child.innerWidth() - child.height( 99 ).innerWidth();
+
+                               parent.remove();
+
+                               return width;
+                       };
+               }
+
+               if ( $.support.fixedPosition === undefined ) {
+                       $.support.fixedPosition = (function() {
+                               var elem  = $('<div style="position:fixed;top:20px;"></div>').appendTo('body'),
+                                       fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 );
+
+                               elem.remove();
+
+                               return fixed;
+                       }());
+               }
+
+               $.extend(F.defaults, {
+                       scrollbarWidth : $.scrollbarWidth(),
+                       fixed  : $.support.fixedPosition,
+                       parent : $('body')
+               });
+
+               //Get real width of page scroll-bar
+               w1 = $(window).width();
+
+               H.addClass('fancybox-lock-test');
+
+               w2 = $(window).width();
+
+               H.removeClass('fancybox-lock-test');
+
+               $("<style type='text/css'>.fancybox-margin{margin-right:" + (w2 - w1) + "px;}</style>").appendTo("head");
+       });
+
+}(window, document, jQuery));
\ No newline at end of file
diff --git a/fancybox/source/jquery.fancybox.pack.js b/fancybox/source/jquery.fancybox.pack.js
new file mode 100644 (file)
index 0000000..73f7578
--- /dev/null
@@ -0,0 +1,46 @@
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
+(function(r,G,f,v){var J=f("html"),n=f(r),p=f(G),b=f.fancybox=function(){b.open.apply(this,arguments)},I=navigator.userAgent.match(/msie/i),B=null,s=G.createTouch!==v,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},q=function(a){return a&&"string"===f.type(a)},E=function(a){return q(a)&&0<a.indexOf("%")},l=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},w=function(a,b){return l(a,b)+"px"};f.extend(b,{version:"2.1.5",defaults:{padding:15,margin:20,
+width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!s,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},
+keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+
+(I?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
+openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
+isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,
+c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&
+k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||
+b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=
+setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,p.bind({"onCancel.player beforeClose.player":c,"onUpdate.player":e,"beforeLoad.player":d}),e(),b.trigger("onPlayStart")}else c()},next:function(a){var d=b.current;d&&(q(a)||(a=d.direction.next),b.jumpto(d.index+1,a,"next"))},prev:function(a){var d=b.current;
+d&&(q(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,"prev"))},jumpto:function(a,d,e){var c=b.current;c&&(a=l(a),b.direction=d||c.direction[a>=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d=
+a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")),
+b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id="fancybox-loading"><div></div></div>').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(),
+y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement;
+if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1<a.group.length&&k[c]!==v)return b[d](k[c]),e.preventDefault(),!1;if(-1<f.inArray(c,k))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind("mousewheel.fb",function(d,c,k,g){for(var h=f(d.target||null),j=!1;h.length&&!j&&!h.is(".fancybox-skin")&&!h.is(".fancybox-wrap");)j=h[0]&&!(h[0].style.overflow&&"hidden"===h[0].style.overflow)&&
+(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1<b.group.length&&!a.canShrink){if(0<g||0<k)b.prev(0<g?"down":"left");else if(0>g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,
+{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,
+mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=
+!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");
+"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=
+this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);
+f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,
+e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,
+outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("<div>").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('<div class="fancybox-placeholder"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}",
+g);break;case "swf":e='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+g+'"></param>',h="",f.each(a.swf,function(a,b){e+='<param name="'+a+'" value="'+b+'"></param>';h+=" "+a+'="'+b+'"'}),e+='<embed src="'+g+'" type="application/x-shockwave-flash" width="100%" height="100%"'+h+"></embed></object>"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll":
+"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside?
+h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth||
+h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),c<m&&(c=m,j=l(c/D)),j<u&&(j=u,c=l(j*D))):(c=Math.max(m,Math.min(c,n)),h.autoHeight&&
+"iframe"!==h.type&&(g.width(c),j=g.height()),j=Math.max(u,Math.min(j,p)));if(h.fitToView)if(g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>r)&&(c>m&&j>u)&&!(19<d++);)j=Math.max(u,Math.min(p,j-10)),c=l(j*D),c<m&&(c=m,j=l(c/D)),c>n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&j<A&&c+x+q<z)&&(c+=q);g.width(c).height(j);e.width(c+x);a=e.width();
+y=e.height();e=(a>z||y>r)&&c>m&&j>u;c=h.aspectRatio?c<F&&j<B&&c<C&&j<A:(c<F||j<B)&&(c<C||j<A);f.extend(h,{dim:{width:w(a),height:w(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:x,hPadding:v,wrapSpace:y-k.outerHeight(!0),skinSpace:k.height()-j});!H&&(h.autoHeight&&j>u&&j<p&&!c)&&g.height("auto")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:"absolute",top:c[0],left:c[3]};d.autoCenter&&d.fixed&&
+!a&&g<=e.h&&f<=e.w?c.position="fixed":d.locked||(c.top+=e.y,c.left+=e.x);c.top=w(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=w(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css("overflow","visible").addClass("fancybox-opened"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css("cursor","pointer").bind("click.fb",function(d){!f(d.target).is("a")&&!f(d.target).parent().is("a")&&(d.preventDefault(),
+b[a.closeClick?"close":"next"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind("click.fb",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind("click.fb",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind("click.fb",b.next)),b.trigger("afterShow"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=!1,b.play()))},_afterZoomOut:function(a){a=
+a||b.current;f(".fancybox-wrap").trigger("onReset").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger("afterClose",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,j=a.wPadding,m=b.getViewport();!e&&(a.isDom&&d.is(":visible"))&&(e=d.find("img:first"),e.length||(e=d));t(e)?(c=e.offset(),e.is("img")&&(f=e.outerWidth(),g=e.outerHeight())):
+(c.top=m.y+(m.h-g)*a.topRatio,c.left=m.x+(m.w-f)*a.leftRatio);if("fixed"===b.wrap.css("position")||a.locked)c.top-=m.y,c.left-=m.x;return c={top:w(c.top-h*a.topRatio),left:w(c.left-j*a.leftRatio),width:w(f+j),height:w(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if("width"===f||"height"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c="width"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](l("width"===f?c:c-g*e)),b.inner[f](l("width"===
+f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c="elastic"===e,k=f.extend({opacity:1},d);delete k.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):"fade"===e&&(d.opacity=0.1);b.wrap.css(d).animate(k,{duration:"none"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e="elastic"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&(c.opacity=0.1));b.wrap.animate(c,
+{duration:"none"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;"elastic"===d&&(g="down"===f||"up"===f?"top":"left","down"===f||"right"===f?(e[g]=w(l(e[g])-200),c[g]="+=200px"):(e[g]=w(l(e[g])+200),c[g]="-=200px"));"none"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:b._afterZoomIn})},changeOut:function(){var a=
+b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;"elastic"===d&&(e["down"===c||"up"===c?"top":"left"]=("up"===c||"left"===c?"-":"+")+"=200px");a.wrap.animate(e,{duration:"none"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger("onReset").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!s,fixed:!0},overlay:null,fixed:!1,el:f("html"),create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();this.overlay=
+f('<div class="fancybox-overlay"></div>').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?
+b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth),
+p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"===
+f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=
+b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('<div class="fancybox-title fancybox-title-'+c+'-wrap">'+e+"</div>");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner('<span class="child"></span>'),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,
+e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+
+":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('<div style="position:fixed;top:20px;"></div>').appendTo("body");var e=20===
+d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(r).width();J.addClass("fancybox-lock-test");d=f(r).width();J.removeClass("fancybox-lock-test");f("<style type='text/css'>.fancybox-margin{margin-right:"+(d-a)+"px;}</style>").appendTo("head")})})(window,document,jQuery);
\ No newline at end of file
diff --git a/fancybox/sprite.psd b/fancybox/sprite.psd
new file mode 100644 (file)
index 0000000..6f2032d
Binary files /dev/null and b/fancybox/sprite.psd differ
diff --git a/footer.php b/footer.php
new file mode 100644 (file)
index 0000000..39d1029
--- /dev/null
@@ -0,0 +1,41 @@
+                    </main><!--End of main-->
+                        <div id="space"></div>
+                        <footer class="main opensearchserver.ignore">
+                            <div class="row">
+                                <div class="small-12 small-centered large-uncentered large-4 columns small-text-center large-text-left">
+                                    <a href="#"><img alt="footer image"></a>
+                                </div>
+                                <?php get_template_part('parts/client-info-footer');?>
+                                <div id="footer-widget" class="small-12 text-center medium-text-left small-centered medium-uncentered medium-6 large-4 columns">
+                                    <?php if (is_active_sidebar('sidebar-f')) :?>
+                                        <?php dynamic_sidebar('sidebar-f');?>
+                                    <?php endif;?>
+                                    <div class="social show-for-medium-up">
+                                        <ul>
+                                            <li><a class="facebook" href="#" target="_blank"></a></li>
+                                            <li><a class="insta" href="#" target="_blank"></a></li>
+                                            <li><a class="twit" href="#" target="_blank"></a></li>
+                                            <li><a class="tube" href="#" target="_blank"></a></li>
+                                        </ul>
+                                    </div>
+                                </div>                                
+                            </div>
+                        </footer>
+                    
+                <div id="copyright" class="opensearchserver.ignore">
+                    <span>Copyright &copy; <?php echo date('Y');?> </span>
+                    <span class="bullet"> &#8226; </span>
+                    <span> Produced by <a target="_blank" href="http://www.gaslightmedia.com">Gaslight Media</a></span>
+                    <span class="bullet"> &#8226; </span>
+                    <span> All Rights Reserved.</span>
+                </div>
+            </div><!--/#page-wrapper-->
+        <a class="exit-off-canvas"></a>
+        </div><!--End of inner-wrap-->
+      </div><!--End of off-canvas-->
+  <?php wp_footer();?>
+<script charset="utf-8" type="text/javascript">var switchTo5x=true;</script>
+<script charset="utf-8" type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
+<script charset="utf-8" type="text/javascript">stLight.options({"publisher":"wp.c3d3647e-de70-4780-b71d-6b739fad685a"});var st_type="wordpress4.3.1";</script>
+  </body>
+</html>
diff --git a/front-page.php b/front-page.php
new file mode 100644 (file)
index 0000000..b2d6423
--- /dev/null
@@ -0,0 +1,72 @@
+<?php get_header(); ?>
+<main class="page-front">
+    <?php get_template_part('parts/slide-show');?>
+    <div id="content-wrapper">
+        <div id="block-row" class="row" data-equalizer data-options="equalize_on_stack: false">
+            <?php
+            get_template_part('parts/glm-blocks');
+            ?>
+        </div>
+        <div class="row">
+            <div id="main-content" class="small-11 small-centered columns">
+                <?php if(have_posts()) : while(have_posts()): the_post();?>
+                <?php the_content();?>
+                <?php endwhile; else:?>
+                <p><?php _e('Sorry, no posts yet');?></p>
+                <?php endif;?>
+            </div>
+        </div>    
+<!--
+            <div class="small-12 medium-6 large-4 columns small-text-center medium-text-left">
+                <?php //get_sidebar(); ?>
+            </div>
+-->
+            <div id="rotation">
+                <?php
+                //get_template_part('parts/event-feed');
+                ?>
+                <div id="event-container" class="row">
+                    <h1 class="text-center">Feature Events</h1>
+                    <div class="arrow small-1 column">
+                        <a class="left" href="#"><img src="<?php echo esc_url( get_template_directory_uri() ); ?>/assets/arrow-left.jpg"></a>
+                    </div>
+                    <div class="small-10 columns">
+                        <div class="row">
+                            <div class="small-12 medium-6 large-4 columns">
+                                <div class="event">
+                                    <a href="#"><img src="<?php echo esc_url( get_template_directory_uri() ); ?>/assets/block-image-wine-grapes.jpg"></a>
+                                    <a href="#"><h6>Event One</h6></a>
+                                    <span class="left">Oct.28</span>
+                                    <span class="right">More</span>
+                                </div>                            
+                            </div>
+                            <div class="medium-6 large-4 columns show-for-medium-up">
+                                <div class="event">
+                                    <a href="#"><img src="<?php echo esc_url( get_template_directory_uri() ); ?>/assets/block-image-wine-grapes.jpg"></a>
+                                    <a href="#"><h6>Event Two</h6></a>
+                                    <span class="left">Oct.30</span>
+                                    <span class="right">More</span>
+                                </div>
+                            </div>
+                            <div class="large-4 columns show-for-large-up">
+                                <div class="event">
+                                    <a href="#"><img src="<?php echo esc_url( get_template_directory_uri() ); ?>/assets/block-image-wine-grapes.jpg"></a>
+                                    <a href="#"><h6>Event Three</h6></a>
+                                    <span class="left">Oct.31</span>
+                                    <span class="right">More</span>
+                                </div>                            
+                            </div>
+                        </div>
+                    </div>
+                    <div class="arrow small-1 column">
+                        <a class="right" href="#"><img src="<?php echo esc_url( get_template_directory_uri() ); ?>/assets/arrow-right.jpg"></a>
+                    </div>
+                </div>
+            </div>
+        <div class="row">
+            <div id="blog-feed" class="small-11 small-centered columns">
+                <?php get_template_part('parts/blog-feed-home'); ?>
+            </div>
+        </div>
+    </div>
+<?php get_footer(); ?>
diff --git a/functions.php b/functions.php
new file mode 100644 (file)
index 0000000..116d395
--- /dev/null
@@ -0,0 +1,322 @@
+<?php
+require_once 'lib/menu-walker.php';
+require_once 'lib/navigation.php';
+
+DEFINE("REGIONS_PAGE_ID", 100);
+DEFINE("REGIONS_GROUP",468);
+DEFINE("FRONT_GROUP",470);
+
+$ancestorId   = null;
+$includePages = array();
+$frontPageId  = get_option('page_on_front');
+add_action('widgets_init', 'glm_quicksite_widget_init');
+
+if (!function_exists('glm_quicksite_widget_init')) {
+
+    function glm_quicksite_widget_init()
+    {
+        register_sidebar(array(
+            'name'        => __('Footer Widget Area'),
+            'id'          => 'sidebar-f',
+            'description' => __('Widget Area in the Footer')
+        ));
+        register_sidebar(array(
+            'name'        => __('Slideshow'),
+            'id'          => 'slideshow',
+            'description' => __('Meta Slider/Slideshow Area')
+        ));
+        
+    }
+
+}
+
+/**
+ * Return the client info option for the given key
+ *
+ * @param type $name Name of the client info option to return
+ *
+ * @return string Option
+ */
+if (!function_exists('glm_get_clientinfo_option')) {
+    function glm_get_clientinfo_option($name)
+    {
+        $settings = get_option('glmclientinfo_settings');
+        $states   = get_option('glmclientinfo_states');
+        if ($name == 'stateFull' && $settings['state']) {
+            return $states[$settings['state']];
+        }
+        if ($name == 'state2Full' && $settings['state2']) {
+            return $states[$settings['state2']];
+        }
+        return ($settings && $settings[$name])
+            ? $settings[$name]
+            : null;
+    }
+}
+
+add_filter( 'woocommerce_product_tabs', 'woo_product_tab_edits' );
+
+function woo_product_tab_edits( $tabs ) {
+        // to always have the WooCommerce product inquiry tab display
+    $tabs[ 'product_inquiry_tab' ] = array(
+        'title'     => __( 'Inquire about this tour', 'woocommerce' ),
+        'callback'  => 'woo_product_inquiry_content'
+    );
+    $tabs[ 'itinerary_tab' ] = array(
+        'title'     => __('Itinerary', 'woocommerce'),
+        'callback'  => 'woo_itinerary_content'
+    );
+    $tabs[ 'photos_tab' ] = array(
+        'title'     => __('Photos', 'woocommerce'),
+        'callback'  => 'woo_photos_content'
+    );
+    $tabs['description']['title'] = __('Details');
+    unset( $tabs[ 'reviews' ]);
+    
+    unset( $tabs[ 'additional_information' ]);
+//    
+    $tabs[ 'photos_tab' ][ 'priority' ] = 5;
+    $tabs[ 'description' ][ 'priority' ] = 10;
+    $tabs[ 'itinerary_tab' ][ 'priority' ] = 20;
+    $tabs[ 'html5_video' ][ 'priority' ] = 30;
+    $tabs[ 'product_inquiry_tab' ][ 'priority' ] = 40;
+
+    return $tabs;
+    
+}
+
+function woo_product_inquiry_content() {
+    global $product;
+    echo do_shortcode('[gravityform id="3" title="true" description="true"]');
+}
+
+function woo_itinerary_content() {
+    global $product;
+    echo the_field('itinerary');
+}
+
+function woo_photos_content() {
+    global $product;
+    
+    $attachment_ids = $product->get_gallery_attachment_ids();
+    echo "<ul class='product_gallery_images'>";
+    foreach( $attachment_ids as $attachment_id ) 
+    {   
+        $full_url = wp_get_attachment_image_src( $attachment_id, 'full' )[0];
+        
+        echo '<li class="products_image_container">
+            <a class="product_image_link" rel="gallery1" href="' . $full_url .'" style="background: url('.$full_url.')no-repeat center center;background-size: cover;">
+          
+            </a>
+        </li>';   
+    }
+    echo "</ul>";
+}
+
+add_filter( 'gform_field_value_product_name', 'gform_add_product_name_field' );
+function gform_add_product_name_field( $value ) {
+    
+    global $product, $post, $woocommerce;
+    
+    if ( ! empty($_GET) && isset($_GET)){
+        $title = $_GET['title'];
+    } else {
+        $id = $post->ID;
+        $product_meta = new WC_Product($id);
+        $title = $product_meta->get_title();
+        $title = str_replace(' ', '-', $title);
+    }
+
+    if ($title){
+        return $title;
+    } else {
+        return  __( '(not set)', 'woocommerce' );
+    }
+}
+add_filter( 'gform_field_value_product_sku', 'gform_add_product_sku_field' );
+function gform_add_product_sku_field( $value ) {
+    global $product, $post, $woocommerce;
+    
+    if ( ! empty($_GET) && isset($_GET)){
+        $sku = $_GET['sku'];
+    } else {
+        $id = $post->ID;
+        $product_meta = new WC_Product($id);
+        $sku = $product_meta->get_sku();
+    }
+
+    if ($sku){
+        return $sku;
+    } else {
+        return  __( '(not set)', 'woocommerce' );
+    }
+}
+
+// custom form submission confirmation message
+function after_submission(){
+    echo '<div class="form-confirmation"><div class="confirmation-text"> Thanks for contacting us! We will get in touch with you shortly.</div></div>';
+}
+
+add_action( 'gform_after_submission_3', 'after_submission', 10, 2 );
+
+
+// remove pagination from products page
+add_filter( 'loop_shop_per_page', create_function( '$cols', 'return -1;' ) );
+
+/*---Move Product Title*/
+remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
+add_action( 'woocommerce_before_single_product_summary', 'woocommerce_template_single_title', 5 );
+
+remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 10);
+add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20);
+
+remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40);
+remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products' , 20);
+
+add_action('woocommerce_after_shop_loop_item_title','woocommerce_template_single_excerpt', 5);
+
+function shareThis(){
+    echo '<span class="st_sharethis" st_title="'. get_the_title().'" st_url="'. get_the_permalink() .'"></span>';   
+}
+add_action( 'woocommerce_single_product_summary', 'shareThis', 20);
+
+add_theme_support('post-thumbnails');
+set_post_thumbnail_size(120, 100, true);
+
+
+/**
+ * glm_site_scripts
+ *
+ * Add the scripts that we'll need for any home page stuff
+ */
+function glm_site_scripts()
+{
+    wp_enqueue_script(
+        'modernizr',
+        get_template_directory_uri() . '/js/modernizr/modernizr.min.js'
+    );
+    wp_enqueue_script('jquery');
+    wp_enqueue_script(
+        'glm_foundation',
+        get_template_directory_uri() . '/js/app.js',
+        'jquery',
+        '1.0',
+        true
+    );
+    wp_enqueue_style('jquery-style', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
+    wp_enqueue_script('jquery-ui-datepicker');
+    wp_enqueue_style('fancyStyle', get_template_directory_uri() . '/fancybox/source/jquery.fancybox.css?v=2.1.5');
+    wp_enqueue_style('fancyStyleButtons', get_template_directory_uri()  . '/fancybox/source/helpers/jquery.fancybox-buttons.css?v=1.0.5');
+    wp_enqueue_style('fancyStyleThumbs', get_template_directory_uri()  . '/fancybox/source/helpers/jquery.fancybox-thumbs.css?v=1.0.7');
+
+    wp_enqueue_script('fancyScript', get_template_directory_uri()  . '/fancybox/source/jquery.fancybox.pack.js?v=2.1.5', array('jquery'), '', true );
+    wp_enqueue_script('fancyMouse', get_template_directory_uri()  . '/fancybox/lib/jquery.mousewheel-3.0.6.pack.js', array('jquery'), '', true );
+    wp_enqueue_script('fancyThumbs', get_template_directory_uri()  . '/fancybox/source/helpers/jquery.fancybox-thumbs.js?v=1.0.7', array('jquery'), '', true );
+    wp_enqueue_script('fancyButtons', get_template_directory_uri()  . '/fancybox/source/helpers/jquery.fancybox-buttons.js?v=1.0.5', array('jquery'), '', true );
+    wp_enqueue_script('fancyMedia', get_template_directory_uri()  . '/fancybox/source/helpers/jquery.fancybox-media.js?v=1.0.6', array('jquery'), '', true );
+
+}
+
+
+/* Header for posts*/
+function glm_get_header() {
+    global $post;
+    $post_id = $post->ID;
+
+    // inherit featured image from parent pages
+    if ( $post->post_parent && !has_post_thumbnail($post->ID)){
+        $post_id = $post->post_parent;
+    }
+    echo '<div class="header-image-background"';
+    if ( has_post_thumbnail($post_id) && is_post_type('page')) {
+        
+            $image_data = wp_get_attachment_image_src(get_post_thumbnail_id($post_id), "full");
+            echo ' style="background-image: url('.$image_data[0].');padding:0;padding-bottom:20%;background-position:center center;background-size: 100%;background-repeat:no-repeat;max-height: 370px; "';
+        
+    //} else {
+//            echo ' style="background-image: url('.get_template_directory_uri().'/assets/header-images-2.jpg);padding:0;padding-bottom:30%;background-position:center center;background-size:cover;background-repeat:no-repeat;max-height: 370px; "';
+//            echo ' class="no-featured"';
+    }
+    echo '>';
+    echo '</div>';
+    echo '<div class="row">';
+    echo '<div class="small-12 columns">';
+    echo '</div>';
+    echo '</div>';
+}
+
+// // The code below is useful when you want the image to resize to
+//    if (has_post_thumbnail()) {
+//            $image_data = wp_get_attachment_image_src(get_post_thumbnail_id(), "full");
+//            echo '<img src="'.$image_data[0].'" style="no-repeat;max-height:400px;">';
+//    } else {
+//            echo '<img src="'.get_template_directory_uri().'/assets/default-header.gif" style="max-height:400px;">';
+//    }
+//    echo '<div class="row">';
+//    echo '<div class="small-12 columns">';
+//    echo '</div>';
+//    echo '</div>';
+
+add_action('wp_enqueue_scripts', 'glm_site_scripts');
+
+
+// Start of the Contextual/Highlight Search functions
+function mytheme_init() {
+   remove_action('thematic_searchloop', 'thematic_search_loop');
+}
+
+add_action('init', 'mytheme_init', 10);
+
+function wpse_setup_theme() {
+    add_image_size('glm-block-image', 290, 190,true);
+}
+
+add_action( 'after_setup_theme', 'wpse_setup_theme' );
+function mytheme_search_loop() {
+  while ( have_posts() ) : the_post(); ?>
+
+    <div id="post-<?php the_ID() ?>" class="<?php thematic_post_class() ?>">
+      <?php thematic_postheader(); ?>
+      <div class="entry-content">
+        <?php thematic_content(); /* We will replace this next */ ?>
+
+      </div>
+      <?php thematic_postfooter(); ?>
+  </div><!-- .post -->
+
+  <?php endwhile;
+}
+
+function is_post_type($type){
+    global $wp_query;
+    if($type == get_post_type($wp_query->post->ID)){
+        return true;
+    } else {
+        return false;
+    }
+}
+
+add_action('thematic_searchloop', 'mytheme_search_loop');
+// End of the Contextual/Highlight Search functions
+
+/*
+ * This function returns true when the current page is the page given by ID
+ *  or a descendent thereof.
+ */
+if (!function_exists('is_in_tree')) {
+    function is_in_tree( $pid ) {
+        global $post;
+
+        if ( is_page($pid) )
+            return true;
+
+        $anc = get_post_ancestors( $post->ID );
+        foreach ( $anc as $ancestor ) {
+            if( is_page() && $ancestor == $pid ) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
+?>
diff --git a/header.php b/header.php
new file mode 100644 (file)
index 0000000..7b6e55d
--- /dev/null
@@ -0,0 +1,42 @@
+<!doctype html>
+<html class="no-js" lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title><?php wp_title(); ?></title>
+<!--    <link rel="shortcut icon" href="<?php echo get_template_directory_uri(); ?>/favicon.ico">  -->
+    <link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri() ; ?>/css/app.css?v=1.0">
+    <link href='https://fonts.googleapis.com/css?family=Josefin+Sans:400,600,700' rel='stylesheet' type='text/css'>
+    <?php wp_head(); ?>
+  </head>
+  <body>
+      <div class="off-canvas-wrap" data-offcanvas>
+        <div class="inner-wrap">
+            <div id="page-wrapper">
+                    <header class="main sticky opensearchserver.ignore">
+                        <div class="row medium-uncollapse large-collapse">
+                            <div id="logo-tag" class="small-12 text-center medium-12 columns">
+                                <?php get_custom_logo($blog_id = 0 );?>
+                            <?php the_custom_logo($blog_id = 0 );?>
+                            <?php
+                                if ( is_front_page() && is_home() ) : ?>
+                                    <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
+                                <?php else : ?>
+                                    <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
+                                <?php endif;
+
+                                $description = get_bloginfo( 'description', 'display' );
+                                if ( $description || is_customize_preview() ) : ?>
+                                    <h3 class="site-description"><?php echo $description; ?></h3>
+                                <?php endif;
+                            ?>
+                            </div>
+                        </div>
+<!--
+                        <div class="search-top show-for-large-up">
+                            <?php //get_template_part('parts/search');?>
+                        </div>
+-->
+                        <?php get_template_part('parts/top-bar');?>
+                    </header>
+                    <?php get_template_part('parts/off-canvas-menu');?>
diff --git a/home.php b/home.php
new file mode 100644 (file)
index 0000000..d25faa5
--- /dev/null
+++ b/home.php
@@ -0,0 +1,52 @@
+<?php get_header(); ?>
+<main class="blog-home">
+    <div id="header-image" class="page-header">
+        <?php echo glm_get_header();?>
+    </div>
+<!--    <article <?php // post_class() ?> id="interior-featured">
+    <?php // GLM_get_header(); ?>
+    </article> -->
+    <div class="row">
+        <div id="blog-posts-over" class="small-12 medium-9 columns">
+            <?php if(have_posts()) : while(have_posts()): the_post();?>
+            <?php $status =  get_post_status($post->ID); ?>
+            <div class="row content blog-posts-container">
+                <?php 
+                    if (has_post_thumbnail()) {
+                        $thumbnail = get_the_post_thumbnail($post->ID, 'blog-feed-front'); ?>
+                <div class="small-12 medium-4 columns text-center blog-feed-imgs">
+                    <?php echo $thumbnail; ?>
+                </div>
+                <?php  echo '<div class="small-12 medium-8 small-centered columns right">';
+                    } else {
+                        echo '<div class="small-12 small-centered columns">';
+                    }
+                ?>
+                <article id="<?php the_ID()?>" <?php post_class()?>>
+                    <h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h2>
+                    <div class="blog-excerpt-date">
+                        Posted on <strong><?php the_time('F jS, Y'); ?></strong>
+                    </div>
+                    <?php echo the_advanced_excerpt('length=265&length_type=characters&no_custom=1&ellipsis=%26hellip;&exclude_tags=a,img,p,strong,h1,h2,h3,hr,div'); ?>
+                    <!--                    <hr class="contentBreak">-->
+                </article>
+            </div>
+        </div>
+        <?php endwhile; ?>
+        <div class="navigation">
+            <span class="newer"><?php previous_posts_link(__('« Newer','example')) ?></span>
+            <span class="older"><?php next_posts_link(__('Older »','example')) ?></span>
+        </div>
+        <!-- /.navigation -->
+        <?php else: ?>
+        <div id="post-404" class="noposts">
+            <p><?php _e('Sorry, no results were found.');?></p>
+        </div>
+        <!-- /#post-404 -->
+        <?php endif;?>
+    </div>
+<?php get_template_part('parts/blog-sidebar-r'); ?>
+</div>
+<?php get_footer(); ?>
+
+
diff --git a/index.php b/index.php
new file mode 100644 (file)
index 0000000..bf7910f
--- /dev/null
+++ b/index.php
@@ -0,0 +1,29 @@
+<?php get_header(); ?>
+<main class="page-inside">
+    <div id="header-image" class="page-header">
+        <?php echo glm_get_header();?>
+    </div>
+    
+        
+        <div id="content-wrapper">
+            <div class="row">
+                <?php
+                get_template_part('parts/bread-crumbs');
+                ?>
+            </div>
+            <div class="row">
+                
+            </div>
+            <div class="row">
+            
+                
+                <div id="main-content" class="small-12 columns">
+                        <?php if(have_posts()) : while(have_posts()): the_post();?>
+                        <?php the_content();?>
+                        <?php endwhile; else:?>
+                        <p><?php _e('Sorry, no results found.');?></p>
+                        <?php endif;?>
+                </div>
+            </div>
+        </div>
+<?php get_footer(); ?>
diff --git a/js/app.js b/js/app.js
new file mode 100644 (file)
index 0000000..739fcfa
--- /dev/null
+++ b/js/app.js
@@ -0,0 +1,124 @@
+/*
+ * To avoid conflicts, Wordpress tends to prefer jQuery being used over $.
+ * As long as this file is included, no such conflicts should arise. Ensure it
+ * is called before other .js files using $.
+ */
+var $=jQuery.noConflict();;!function(a,b,c,d){"use strict";function e(a){return("string"==typeof a||a instanceof String)&&(a=a.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g,"")),a}function f(a){this.selector=a,this.query=""}var g=function(b){var c=a("head");c.prepend(a.map(b,function(a){return 0===c.has("."+a).length?'<meta class="'+a+'" />':void 0}))};g(["foundation-mq-small","foundation-mq-small-only","foundation-mq-medium","foundation-mq-medium-only","foundation-mq-large","foundation-mq-large-only","foundation-mq-xlarge","foundation-mq-xlarge-only","foundation-mq-xxlarge","foundation-data-attribute-namespace"]),a(function(){"undefined"!=typeof FastClick&&"undefined"!=typeof c.body&&FastClick.attach(c.body)});var h=function(b,d){if("string"==typeof b){if(d){var e;if(d.jquery){if(e=d[0],!e)return d}else e=d;return a(e.querySelectorAll(b))}return a(c.querySelectorAll(b))}return a(b,d)},i=function(a){var b=[];return a||b.push("data"),this.namespace.length>0&&b.push(this.namespace),b.push(this.name),b.join("-")},j=function(a){for(var b=a.split("-"),c=b.length,d=[];c--;)0!==c?d.push(b[c]):this.namespace.length>0?d.push(this.namespace,b[c]):d.push(b[c]);return d.reverse().join("-")},k=function(b,c){var d=this,e=function(){var e=h(this),f=!e.data(d.attr_name(!0)+"-init");e.data(d.attr_name(!0)+"-init",a.extend({},d.settings,c||b,d.data_options(e))),f&&d.events(this)};return h(this.scope).is("["+this.attr_name()+"]")?e.call(this.scope):h("["+this.attr_name()+"]",this.scope).each(e),"string"==typeof b?this[b].call(this,c):void 0},l=function(a,b){function c(){b(a[0])}function d(){if(this.one("load",c),/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var a=this.attr("src"),b=a.match(/\?/)?"&":"?";b+="random="+(new Date).getTime(),this.attr("src",a+b)}}return a.attr("src")?void(a[0].complete||4===a[0].readyState?c():d.call(a)):void c()};/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+b.matchMedia||(b.matchMedia=function(){var a=b.styleMedia||b.media;if(!a){var d=c.createElement("style"),e=c.getElementsByTagName("script")[0],f=null;d.type="text/css",d.id="matchmediajs-test",e.parentNode.insertBefore(d,e),f="getComputedStyle"in b&&b.getComputedStyle(d,null)||d.currentStyle,a={matchMedium:function(a){var b="@media "+a+"{ #matchmediajs-test { width: 1px; } }";return d.styleSheet?d.styleSheet.cssText=b:d.textContent=b,"1px"===f.width}}}return function(b){return{matches:a.matchMedium(b||"all"),media:b||"all"}}}()),function(a){function c(){d&&(g(c),i&&a.fx.tick())}for(var d,e=0,f=["webkit","moz"],g=b.requestAnimationFrame,h=b.cancelAnimationFrame,i="undefined"!=typeof a.fx;e<f.length&&!g;e++)g=b[f[e]+"RequestAnimationFrame"],h=h||b[f[e]+"CancelAnimationFrame"]||b[f[e]+"CancelRequestAnimationFrame"];g?(b.requestAnimationFrame=g,b.cancelAnimationFrame=h,i&&(a.fx.timer=function(b){b()&&a.timers.push(b)&&!d&&(d=!0,c())},a.fx.stop=function(){d=!1})):(b.requestAnimationFrame=function(a){var c=(new Date).getTime(),d=Math.max(0,16-(c-e)),f=b.setTimeout(function(){a(c+d)},d);return e=c+d,f},b.cancelAnimationFrame=function(a){clearTimeout(a)})}(a),f.prototype.toString=function(){return this.query||(this.query=h(this.selector).css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""))},b.Foundation={name:"Foundation",version:"5.5.3",media_queries:{small:new f(".foundation-mq-small"),"small-only":new f(".foundation-mq-small-only"),medium:new f(".foundation-mq-medium"),"medium-only":new f(".foundation-mq-medium-only"),large:new f(".foundation-mq-large"),"large-only":new f(".foundation-mq-large-only"),xlarge:new f(".foundation-mq-xlarge"),"xlarge-only":new f(".foundation-mq-xlarge-only"),xxlarge:new f(".foundation-mq-xxlarge")},stylesheet:a("<style></style>").appendTo("head")[0].sheet,global:{namespace:d},init:function(a,c,d,e,f){var g=[a,d,e,f],i=[];if(this.rtl=/rtl/i.test(h("html").attr("dir")),this.scope=a||this.scope,this.set_namespace(),c&&"string"==typeof c&&!/reflow/i.test(c))this.libs.hasOwnProperty(c)&&i.push(this.init_lib(c,g));else for(var j in this.libs)i.push(this.init_lib(j,c));return h(b).load(function(){h(b).trigger("resize.fndtn.clearing").trigger("resize.fndtn.dropdown").trigger("resize.fndtn.equalizer").trigger("resize.fndtn.interchange").trigger("resize.fndtn.joyride").trigger("resize.fndtn.magellan").trigger("resize.fndtn.topbar").trigger("resize.fndtn.slider")}),a},init_lib:function(b,c){return this.libs.hasOwnProperty(b)?(this.patch(this.libs[b]),c&&c.hasOwnProperty(b)?("undefined"!=typeof this.libs[b].settings?a.extend(!0,this.libs[b].settings,c[b]):"undefined"!=typeof this.libs[b].defaults&&a.extend(!0,this.libs[b].defaults,c[b]),this.libs[b].init.apply(this.libs[b],[this.scope,c[b]])):(c=c instanceof Array?c:new Array(c),this.libs[b].init.apply(this.libs[b],c))):function(){}},patch:function(a){a.scope=this.scope,a.namespace=this.global.namespace,a.rtl=this.rtl,a.data_options=this.utils.data_options,a.attr_name=i,a.add_namespace=j,a.bindings=k,a.S=this.utils.S},inherit:function(a,b){for(var c=b.split(" "),d=c.length;d--;)this.utils.hasOwnProperty(c[d])&&(a[c[d]]=this.utils[c[d]])},set_namespace:function(){var b=this.global.namespace===d?a(".foundation-data-attribute-namespace").css("font-family"):this.global.namespace;this.global.namespace=b===d||/false/i.test(b)?"":b},libs:{},utils:{S:h,throttle:function(a,b){var c=null;return function(){var d=this,e=arguments;null==c&&(c=setTimeout(function(){a.apply(d,e),c=null},b))}},debounce:function(a,b,c){var d,e;return function(){var f=this,g=arguments,h=function(){d=null,c||(e=a.apply(f,g))},i=c&&!d;return clearTimeout(d),d=setTimeout(h,b),i&&(e=a.apply(f,g)),e}},data_options:function(b,c){function d(a){return!isNaN(a-0)&&null!==a&&""!==a&&a!==!1&&a!==!0}function e(b){return"string"==typeof b?a.trim(b):b}c=c||"options";var f,g,h,i={},j=function(a){var b=Foundation.global.namespace;return b.length>0?a.data(b+"-"+c):a.data(c)},k=j(b);if("object"==typeof k)return k;for(h=(k||":").split(";"),f=h.length;f--;)g=h[f].split(":"),g=[g[0],g.slice(1).join(":")],/true/i.test(g[1])&&(g[1]=!0),/false/i.test(g[1])&&(g[1]=!1),d(g[1])&&(-1===g[1].indexOf(".")?g[1]=parseInt(g[1],10):g[1]=parseFloat(g[1])),2===g.length&&g[0].length>0&&(i[e(g[0])]=e(g[1]));return i},register_media:function(b,c){Foundation.media_queries[b]===d&&(a("head").append('<meta class="'+c+'"/>'),Foundation.media_queries[b]=e(a("."+c).css("font-family")))},add_custom_rule:function(a,b){if(b===d&&Foundation.stylesheet)Foundation.stylesheet.insertRule(a,Foundation.stylesheet.cssRules.length);else{var c=Foundation.media_queries[b];c!==d&&Foundation.stylesheet.insertRule("@media "+Foundation.media_queries[b]+"{ "+a+" }",Foundation.stylesheet.cssRules.length)}},image_loaded:function(a,b){function c(a){for(var b=a.length,c=b-1;c>=0;c--)if(a.attr("height")===d)return!1;return!0}var e=this,f=a.length;(0===f||c(a))&&b(a),a.each(function(){l(e.S(this),function(){f-=1,0===f&&b(a)})})},random_str:function(){return this.fidx||(this.fidx=0),this.prefix=this.prefix||[this.name||"F",(+new Date).toString(36)].join("-"),this.prefix+(this.fidx++).toString(36)},match:function(a){return b.matchMedia(a).matches},is_small_up:function(){return this.match(Foundation.media_queries.small)},is_medium_up:function(){return this.match(Foundation.media_queries.medium)},is_large_up:function(){return this.match(Foundation.media_queries.large)},is_xlarge_up:function(){return this.match(Foundation.media_queries.xlarge)},is_xxlarge_up:function(){return this.match(Foundation.media_queries.xxlarge)},is_small_only:function(){return!(this.is_medium_up()||this.is_large_up()||this.is_xlarge_up()||this.is_xxlarge_up())},is_medium_only:function(){return this.is_medium_up()&&!this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_large_only:function(){return this.is_medium_up()&&this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xxlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&this.is_xxlarge_up()}}},a.fn.foundation=function(){var a=Array.prototype.slice.call(arguments,0);return this.each(function(){return Foundation.init.apply(Foundation,[this].concat(a)),this})}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.abide={name:"abide",version:"5.5.3",settings:{live_validate:!0,validate_on_blur:!0,focus_on_invalid:!0,error_labels:!0,error_class:"error",timeout:1e3,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/},validators:{equalTo:function(a,b,d){var e=c.getElementById(a.getAttribute(this.add_namespace("data-equalto"))).value,f=a.value,g=e===f;return g}}},timer:null,init:function(a,b,c){this.bindings(b,c)},events:function(b){function c(a,b){clearTimeout(d.timer),d.timer=setTimeout(function(){d.validate([a],b)}.bind(a),f.timeout)}var d=this,e=d.S(b).attr("novalidate","novalidate"),f=e.data(this.attr_name(!0)+"-init")||{};this.invalid_attr=this.add_namespace("data-invalid"),e.off(".abide").on("submit.fndtn.abide",function(a){var b=/ajax/i.test(d.S(this).attr(d.attr_name()));return d.validate(d.S(this).find("input, textarea, select").not(":hidden, [data-abide-ignore]").get(),a,b)}).on("validate.fndtn.abide",function(a){"manual"===f.validate_on&&d.validate([a.target],a)}).on("reset",function(b){return d.reset(a(this),b)}).find("input, textarea, select").not(":hidden, [data-abide-ignore]").off(".abide").on("blur.fndtn.abide change.fndtn.abide",function(a){var b=this.getAttribute("id"),d=e.find('[data-equalto="'+b+'"]');f.validate_on_blur&&f.validate_on_blur===!0&&c(this,a),"undefined"!=typeof d.get(0)&&d.val().length&&c(d.get(0),a),"change"===f.validate_on&&c(this,a)}).on("keydown.fndtn.abide",function(a){var b=this.getAttribute("id"),d=e.find('[data-equalto="'+b+'"]');f.live_validate&&f.live_validate===!0&&9!=a.which&&c(this,a),"undefined"!=typeof d.get(0)&&d.val().length&&c(d.get(0),a),"tab"===f.validate_on&&9===a.which?c(this,a):"change"===f.validate_on&&c(this,a)}).on("focus",function(b){navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)&&a("html, body").animate({scrollTop:a(b.target).offset().top},100)})},reset:function(b,c){var d=this;b.removeAttr(d.invalid_attr),a("["+d.invalid_attr+"]",b).removeAttr(d.invalid_attr),a("."+d.settings.error_class,b).not("small").removeClass(d.settings.error_class),a(":input",b).not(":button, :submit, :reset, :hidden, [data-abide-ignore]").val("").removeAttr(d.invalid_attr)},validate:function(a,b,c){for(var d=this.parse_patterns(a),e=d.length,f=this.S(a[0]).closest("form"),g=/submit/.test(b.type),h=0;e>h;h++)if(!d[h]&&(g||c))return this.settings.focus_on_invalid&&a[h].focus(),f.trigger("invalid.fndtn.abide"),this.S(a[h]).closest("form").attr(this.invalid_attr,""),!1;return(g||c)&&f.trigger("valid.fndtn.abide"),f.removeAttr(this.invalid_attr),c?!1:!0},parse_patterns:function(a){for(var b=a.length,c=[];b--;)c.push(this.pattern(a[b]));return this.check_validation_and_apply_styles(c)},pattern:function(a){var b=a.getAttribute("type"),c="string"==typeof a.getAttribute("required"),d=a.getAttribute("pattern")||"";return this.settings.patterns.hasOwnProperty(d)&&d.length>0?[a,this.settings.patterns[d],c]:d.length>0?[a,new RegExp(d),c]:this.settings.patterns.hasOwnProperty(b)?[a,this.settings.patterns[b],c]:(d=/.*/,[a,d,c])},check_validation_and_apply_styles:function(b){var c=b.length,d=[];if(0==c)return d;var e=this.S(b[0][0]).closest("[data-"+this.attr_name(!0)+"]");for(e.data(this.attr_name(!0)+"-init")||{};c--;){var f,g,h=b[c][0],i=b[c][2],j=h.value.trim(),k=this.S(h).parent(),l=h.getAttribute(this.add_namespace("data-abide-validator")),m="radio"===h.type,n="checkbox"===h.type,o=this.S('label[for="'+h.getAttribute("id")+'"]'),p=i?h.value.length>0:!0,q=[];if(h.getAttribute(this.add_namespace("data-equalto"))&&(l="equalTo"),f=k.is("label")?k.parent():k,m&&i)q.push(this.valid_radio(h,i));else if(n&&i)q.push(this.valid_checkbox(h,i));else if(l){for(var r=l.split(" "),s=!0,t=!0,u=0;u<r.length;u++)g=this.settings.validators[r[u]].apply(this,[h,i,f]),q.push(g),t=g&&s,s=g;t?(this.S(h).removeAttr(this.invalid_attr),f.removeClass("error"),o.length>0&&this.settings.error_labels&&o.removeClass(this.settings.error_class).removeAttr("role"),a(h).triggerHandler("valid")):(this.S(h).attr(this.invalid_attr,""),f.addClass("error"),o.length>0&&this.settings.error_labels&&o.addClass(this.settings.error_class).attr("role","alert"),a(h).triggerHandler("invalid"))}else if(b[c][1].test(j)&&p||!i&&h.value.length<1||a(h).attr("disabled")?q.push(!0):q.push(!1),q=[q.every(function(a){return a})],q[0])this.S(h).removeAttr(this.invalid_attr),h.setAttribute("aria-invalid","false"),h.removeAttribute("aria-describedby"),f.removeClass(this.settings.error_class),o.length>0&&this.settings.error_labels&&o.removeClass(this.settings.error_class).removeAttr("role"),a(h).triggerHandler("valid");else{this.S(h).attr(this.invalid_attr,""),h.setAttribute("aria-invalid","true");var v=f.find("small."+this.settings.error_class,"span."+this.settings.error_class),w=v.length>0?v[0].id:"";w.length>0&&h.setAttribute("aria-describedby",w),f.addClass(this.settings.error_class),o.length>0&&this.settings.error_labels&&o.addClass(this.settings.error_class).attr("role","alert"),a(h).triggerHandler("invalid")}d=d.concat(q)}return d},valid_checkbox:function(b,c){var b=this.S(b),d=b.is(":checked")||!c||b.get(0).getAttribute("disabled");return d?(b.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class),a(b).triggerHandler("valid")):(b.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),a(b).triggerHandler("invalid")),d},valid_radio:function(b,c){for(var d=b.getAttribute("name"),e=this.S(b).closest("[data-"+this.attr_name(!0)+"]").find("[name='"+d+"']"),f=e.length,g=!1,h=!1,i=0;f>i;i++)e[i].getAttribute("disabled")?(h=!0,g=!0):e[i].checked?g=!0:h&&(g=!1);for(var i=0;f>i;i++)g?(this.S(e[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class),a(e[i]).triggerHandler("valid")):(this.S(e[i]).attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),a(e[i]).triggerHandler("invalid"));return g},valid_equal:function(a,b,d){var e=c.getElementById(a.getAttribute(this.add_namespace("data-equalto"))).value,f=a.value,g=e===f;return g?(this.S(a).removeAttr(this.invalid_attr),d.removeClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.removeClass(this.settings.error_class)):(this.S(a).attr(this.invalid_attr,""),d.addClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.addClass(this.settings.error_class)),g},valid_oneof:function(a,b,c,d){var a=this.S(a),e=this.S("["+this.add_namespace("data-oneof")+"]"),f=e.filter(":checked").length>0;if(f?a.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class):a.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),!d){var g=this;e.each(function(){g.valid_oneof.call(g,this,null,null,!0)})}return f},reflow:function(a,b){var c=this,d=c.S("["+this.attr_name()+"]").attr("novalidate","novalidate");c.S(d).each(function(a,b){c.events(b)})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.accordion={name:"accordion",version:"5.5.3",settings:{content_class:"content",active_class:"active",multi_expand:!1,toggleable:!0,callback:function(){}},init:function(a,b,c){this.bindings(b,c)},events:function(b){var c=this,d=this.S;c.create(this.S(b)),d(this.scope).off(".fndtn.accordion").on("click.fndtn.accordion","["+this.attr_name()+"] > dd > a, ["+this.attr_name()+"] > li > a",function(b){var e=d(this).closest("["+c.attr_name()+"]"),f=c.attr_name()+"="+e.attr(c.attr_name()),g=e.data(c.attr_name(!0)+"-init")||c.settings,h=d("#"+this.href.split("#")[1]),i=a("> dd, > li",e),j=i.children("."+g.content_class),k=j.filter("."+g.active_class);return b.preventDefault(),e.attr(c.attr_name())&&(j=j.add("["+f+"] dd > ."+g.content_class+", ["+f+"] li > ."+g.content_class),i=i.add("["+f+"] dd, ["+f+"] li")),g.toggleable&&h.is(k)?(h.parent("dd, li").toggleClass(g.active_class,!1),h.toggleClass(g.active_class,!1),d(this).attr("aria-expanded",function(a,b){return"true"===b?"false":"true"}),g.callback(h),h.triggerHandler("toggled",[e]),void e.triggerHandler("toggled",[h])):(g.multi_expand||(j.removeClass(g.active_class),i.removeClass(g.active_class),i.children("a").attr("aria-expanded","false")),h.addClass(g.active_class).parent().addClass(g.active_class),g.callback(h),h.triggerHandler("toggled",[e]),e.triggerHandler("toggled",[h]),void d(this).attr("aria-expanded","true"))})},create:function(b){var c=this,d=b,e=a("> .accordion-navigation",d),f=d.data(c.attr_name(!0)+"-init")||c.settings;e.children("a").attr("aria-expanded","false"),e.has("."+f.content_class+"."+f.active_class).addClass(f.active_class).children("a").attr("aria-expanded","true"),f.multi_expand&&b.attr("aria-multiselectable","true")},toggle:function(a){var a="undefined"!=typeof a?a:{},c="undefined"!=typeof a.selector?a.selector:"",d="undefined"!=typeof a.toggle_state?a.toggle_state:"",e="undefined"!=typeof a.$accordion?a.$accordion:this.S(this.scope).closest("["+this.attr_name()+"]"),f=e.find("> dd"+c+", > li"+c);if(f.length<1)return b.console&&console.error("Selection not found.",c),!1;var g=this.S,h=this.settings.active_class;f.each(function(){var a=g(this),b=a.hasClass(h);(b&&"close"===d||!b&&"open"===d||""===d)&&a.find("> a").trigger("click.fndtn.accordion")})},open:function(a){var a="undefined"!=typeof a?a:{};a.toggle_state="open",this.toggle(a)},close:function(a){var a="undefined"!=typeof a?a:{};a.toggle_state="close",this.toggle(a)},off:function(){},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.alert={name:"alert",version:"5.5.3",settings:{callback:function(){}},init:function(a,b,c){this.bindings(b,c)},events:function(){var b=this,c=this.S;a(this.scope).off(".alert").on("click.fndtn.alert","["+this.attr_name()+"] .close",function(a){var d=c(this).closest("["+b.attr_name()+"]"),e=d.data(b.attr_name(!0)+"-init")||b.settings;a.preventDefault(),Modernizr.csstransitions?(d.addClass("alert-close"),d.on("transitionend webkitTransitionEnd oTransitionEnd",function(a){c(this).trigger("close.fndtn.alert").remove(),e.callback()})):d.fadeOut(300,function(){c(this).trigger("close.fndtn.alert").remove(),e.callback()})})},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.clearing={name:"clearing",version:"5.5.3",settings:{templates:{viewing:'<a href="#" class="clearing-close">&times;</a><div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" /><p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a><a href="#" class="clearing-main-next"><span></span></a></div><img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" /><img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />'},close_selectors:".clearing-close, div.clearing-blackout",open_selectors:"",skip_selector:"",touch_label:"",init:!1,locked:!1},init:function(a,b,c){var d=this;Foundation.inherit(this,"throttle image_loaded"),this.bindings(b,c),d.S(this.scope).is("["+this.attr_name()+"]")?this.assemble(d.S("li",this.scope)):d.S("["+this.attr_name()+"]",this.scope).each(function(){d.assemble(d.S("li",this))})},events:function(d){var e=this,f=e.S,g=a(".scroll-container");g.length>0&&(this.scope=g),f(this.scope).off(".clearing").on("click.fndtn.clearing","ul["+this.attr_name()+"] li "+this.settings.open_selectors,function(a,b,c){var b=b||f(this),c=c||b,d=b.next("li"),g=b.closest("["+e.attr_name()+"]").data(e.attr_name(!0)+"-init"),h=f(a.target);a.preventDefault(),g||(e.init(),g=b.closest("["+e.attr_name()+"]").data(e.attr_name(!0)+"-init")),c.hasClass("visible")&&b[0]===c[0]&&d.length>0&&e.is_open(b)&&(c=d,h=f("img",c)),e.open(h,b,c),e.update_paddles(c)}).on("click.fndtn.clearing",".clearing-main-next",function(a){e.nav(a,"next")}).on("click.fndtn.clearing",".clearing-main-prev",function(a){e.nav(a,"prev")}).on("click.fndtn.clearing",this.settings.close_selectors,function(a){Foundation.libs.clearing.close(a,this)}),a(c).on("keydown.fndtn.clearing",function(a){e.keydown(a)}),f(b).off(".clearing").on("resize.fndtn.clearing",function(){e.resize()}),this.swipe_events(d)},swipe_events:function(a){var b=this,c=b.S;c(this.scope).on("touchstart.fndtn.clearing",".visible-img",function(a){a.touches||(a=a.originalEvent);var b={start_page_x:a.touches[0].pageX,start_page_y:a.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:d};c(this).data("swipe-transition",b),a.stopPropagation()}).on("touchmove.fndtn.clearing",".visible-img",function(a){if(a.touches||(a=a.originalEvent),!(a.touches.length>1||a.scale&&1!==a.scale)){var d=c(this).data("swipe-transition");if("undefined"==typeof d&&(d={}),d.delta_x=a.touches[0].pageX-d.start_page_x,Foundation.rtl&&(d.delta_x=-d.delta_x),"undefined"==typeof d.is_scrolling&&(d.is_scrolling=!!(d.is_scrolling||Math.abs(d.delta_x)<Math.abs(a.touches[0].pageY-d.start_page_y))),!d.is_scrolling&&!d.active){a.preventDefault();var e=d.delta_x<0?"next":"prev";d.active=!0,b.nav(a,e)}}}).on("touchend.fndtn.clearing",".visible-img",function(a){c(this).data("swipe-transition",{}),a.stopPropagation()})},assemble:function(b){var c=b.parent();if(!c.parent().hasClass("carousel")){c.after('<div id="foundationClearingHolder"></div>');var d=c.detach(),e="";if(null!=d[0]){e=d[0].outerHTML;var f=this.S("#foundationClearingHolder"),g=c.data(this.attr_name(!0)+"-init"),h={grid:'<div class="carousel">'+e+"</div>",viewing:g.templates.viewing},i='<div class="clearing-assembled"><div>'+h.viewing+h.grid+"</div></div>",j=this.settings.touch_label;Modernizr.touch&&(i=a(i).find(".clearing-touch-label").html(j).end()),f.after(i).remove()}}},open:function(b,d,e){function f(){setTimeout(function(){this.image_loaded(m,function(){1!==m.outerWidth()||o?g.call(this,m):f.call(this)}.bind(this))}.bind(this),100)}function g(b){var c=a(b);c.css("visibility","visible"),c.trigger("imageVisible"),i.css("overflow","hidden"),j.addClass("clearing-blackout"),k.addClass("clearing-container"),l.show(),this.fix_height(e).caption(h.S(".clearing-caption",l),h.S("img",e)).center_and_label(b,n).shift(d,e,function(){e.closest("li").siblings().removeClass("visible"),e.closest("li").addClass("visible")}),l.trigger("opened.fndtn.clearing")}var h=this,i=a(c.body),j=e.closest(".clearing-assembled"),k=h.S("div",j).first(),l=h.S(".visible-img",k),m=h.S("img",l).not(b),n=h.S(".clearing-touch-label",k),o=!1,p={};a("body").on("touchmove",function(a){a.preventDefault()}),m.error(function(){o=!0}),this.locked()||(l.trigger("open.fndtn.clearing"),p=this.load(b),p.interchange?m.attr("data-interchange",p.interchange).foundation("interchange","reflow"):m.attr("src",p.src).attr("data-interchange",""),m.css("visibility","hidden"),f.call(this))},close:function(b,d){b.preventDefault();var e,f,g=function(a){return/blackout/.test(a.selector)?a:a.closest(".clearing-blackout")}(a(d)),h=a(c.body);return d===b.target&&g&&(h.css("overflow",""),e=a("div",g).first(),f=a(".visible-img",e),f.trigger("close.fndtn.clearing"),this.settings.prev_index=0,a("ul["+this.attr_name()+"]",g).attr("style","").closest(".clearing-blackout").removeClass("clearing-blackout"),e.removeClass("clearing-container"),f.hide(),f.trigger("closed.fndtn.clearing")),a("body").off("touchmove"),!1},is_open:function(a){return a.parent().prop("style").length>0},keydown:function(b){var c=a(".clearing-blackout ul["+this.attr_name()+"]"),d=this.rtl?37:39,e=this.rtl?39:37,f=27;b.which===d&&this.go(c,"next"),b.which===e&&this.go(c,"prev"),b.which===f&&this.S("a.clearing-close").trigger("click.fndtn.clearing")},nav:function(b,c){var d=a("ul["+this.attr_name()+"]",".clearing-blackout");b.preventDefault(),this.go(d,c)},resize:function(){var b=a("img",".clearing-blackout .visible-img"),c=a(".clearing-touch-label",".clearing-blackout");b.length&&(this.center_and_label(b,c),b.trigger("resized.fndtn.clearing"))},fix_height:function(a){var b=a.parent().children(),c=this;return b.each(function(){var a=c.S(this),b=a.find("img");a.height()>b.outerHeight()&&a.addClass("fix-height")}).closest("ul").width(100*b.length+"%"),this},update_paddles:function(a){a=a.closest("li");var b=a.closest(".carousel").siblings(".visible-img");a.next().length>0?this.S(".clearing-main-next",b).removeClass("disabled"):this.S(".clearing-main-next",b).addClass("disabled"),a.prev().length>0?this.S(".clearing-main-prev",b).removeClass("disabled"):this.S(".clearing-main-prev",b).addClass("disabled")},center_and_label:function(a,b){return!this.rtl&&b.length>0?b.css({marginLeft:-(b.outerWidth()/2),marginTop:-(a.outerHeight()/2)-b.outerHeight()-10}):b.css({marginRight:-(b.outerWidth()/2),marginTop:-(a.outerHeight()/2)-b.outerHeight()-10,left:"auto",right:"50%"}),this},load:function(a){var b,c,d;return"A"===a[0].nodeName?(b=a.attr("href"),c=a.data("clearing-interchange")):(d=a.closest("a"),b=d.attr("href"),c=d.data("clearing-interchange")),this.preload(a),{src:b?b:a.attr("src"),interchange:b?c:a.data("clearing-interchange")}},preload:function(a){this.img(a.closest("li").next(),"next").img(a.closest("li").prev(),"prev")},img:function(b,c){if(b.length){var d,e,f,g=a(".clearing-preload-"+c),h=this.S("a",b);h.length?(d=h.attr("href"),e=h.data("clearing-interchange")):(f=this.S("img",b),d=f.attr("src"),e=f.data("clearing-interchange")),e?g.attr("data-interchange",e):(g.attr("src",d),g.attr("data-interchange",""))}return this},caption:function(a,b){var c=b.attr("data-caption");if(c){var d=a.get(0);d.innerHTML=c,a.show()}else a.text("").hide();return this},go:function(a,b){var c=this.S(".visible",a),d=c[b]();this.settings.skip_selector&&0!=d.find(this.settings.skip_selector).length&&(d=d[b]()),d.length&&this.S("img",d).trigger("click.fndtn.clearing",[c,d]).trigger("change.fndtn.clearing")},shift:function(a,b,c){var d,e=b.parent(),f=this.settings.prev_index||b.index(),g=this.direction(e,a,b),h=this.rtl?"right":"left",i=parseInt(e.css("left"),10),j=b.outerWidth(),k={};b.index()===f||/skip/.test(g)?/skip/.test(g)&&(d=b.index()-this.settings.up_count,this.lock(),d>0?(k[h]=-(d*j),e.animate(k,300,this.unlock())):(k[h]=0,e.animate(k,300,this.unlock()))):/left/.test(g)?(this.lock(),k[h]=i+j,e.animate(k,300,this.unlock())):/right/.test(g)&&(this.lock(),k[h]=i-j,e.animate(k,300,this.unlock())),c()},direction:function(a,b,c){var d,e=this.S("li",a),f=e.outerWidth()+e.outerWidth()/4,g=Math.floor(this.S(".clearing-container").outerWidth()/f)-1,h=e.index(c);return this.settings.up_count=g,d=this.adjacent(this.settings.prev_index,h)?h>g&&h>this.settings.prev_index?"right":h>g-1&&h<=this.settings.prev_index?"left":!1:"skip",this.settings.prev_index=h,d},adjacent:function(a,b){for(var c=b+1;c>=b-1;c--)if(c===a)return!0;return!1},lock:function(){this.settings.locked=!0},unlock:function(){this.settings.locked=!1},locked:function(){return this.settings.locked},off:function(){this.S(this.scope).off(".fndtn.clearing"),this.S(b).off(".fndtn.clearing")},reflow:function(){this.init()}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.dropdown={name:"dropdown",version:"5.5.3",settings:{active_class:"open",disabled_class:"disabled",mega_class:"mega",align:"bottom",is_hover:!1,hover_timeout:150,opened:function(){},closed:function(){}},init:function(b,c,d){Foundation.inherit(this,"throttle"),a.extend(!0,this.settings,c,d),this.bindings(c,d)},events:function(d){var e=this,f=e.S;f(this.scope).off(".dropdown").on("click.fndtn.dropdown","["+this.attr_name()+"]",function(b){var c=f(this).data(e.attr_name(!0)+"-init")||e.settings;(!c.is_hover||Modernizr.touch)&&(b.preventDefault(),f(this).parent("[data-reveal-id]").length&&b.stopPropagation(),e.toggle(a(this)))}).on("mouseenter.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(a){var b,c,d=f(this);clearTimeout(e.timeout),d.data(e.data_attr())?(b=f("#"+d.data(e.data_attr())),c=d):(b=d,c=f("["+e.attr_name()+'="'+b.attr("id")+'"]'));var g=c.data(e.attr_name(!0)+"-init")||e.settings;f(a.currentTarget).data(e.data_attr())&&g.is_hover&&e.closeall.call(e),g.is_hover&&e.open.apply(e,[b,c])}).on("mouseleave.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(a){var b,c=f(this);if(c.data(e.data_attr()))b=c.data(e.data_attr(!0)+"-init")||e.settings;else var d=f("["+e.attr_name()+'="'+f(this).attr("id")+'"]'),b=d.data(e.attr_name(!0)+"-init")||e.settings;e.timeout=setTimeout(function(){c.data(e.data_attr())?b.is_hover&&e.close.call(e,f("#"+c.data(e.data_attr()))):b.is_hover&&e.close.call(e,c)}.bind(this),b.hover_timeout)}).on("click.fndtn.dropdown",function(b){var d=f(b.target).closest("["+e.attr_name()+"-content]"),g=d.find("a");return g.length>0&&"false"!==d.attr("aria-autoclose")&&e.close.call(e,f("["+e.attr_name()+"-content]")),b.target!==c&&!a.contains(c.documentElement,b.target)||f(b.target).closest("["+e.attr_name()+"]").length>0?void 0:!f(b.target).data("revealId")&&d.length>0&&(f(b.target).is("["+e.attr_name()+"-content]")||a.contains(d.first()[0],b.target))?void b.stopPropagation():void e.close.call(e,f("["+e.attr_name()+"-content]"))}).on("opened.fndtn.dropdown","["+e.attr_name()+"-content]",function(){e.settings.opened.call(this)}).on("closed.fndtn.dropdown","["+e.attr_name()+"-content]",function(){e.settings.closed.call(this)}),f(b).off(".dropdown").on("resize.fndtn.dropdown",e.throttle(function(){e.resize.call(e)},50)),this.resize()},close:function(b){var c=this;b.each(function(d){var e=a("["+c.attr_name()+"="+b[d].id+"]")||a("aria-controls="+b[d].id+"]");e.attr("aria-expanded","false"),c.S(this).hasClass(c.settings.active_class)&&(c.S(this).css(Foundation.rtl?"right":"left","-99999px").attr("aria-hidden","true").removeClass(c.settings.active_class).prev("["+c.attr_name()+"]").removeClass(c.settings.active_class).removeData("target"),c.S(this).trigger("closed.fndtn.dropdown",[b]))}),b.removeClass("f-open-"+this.attr_name(!0))},closeall:function(){var b=this;a.each(b.S(".f-open-"+this.attr_name(!0)),function(){b.close.call(b,b.S(this))})},open:function(a,b){this.css(a.addClass(this.settings.active_class),b),a.prev("["+this.attr_name()+"]").addClass(this.settings.active_class),a.data("target",b.get(0)).trigger("opened.fndtn.dropdown",[a,b]),a.attr("aria-hidden","false"),b.attr("aria-expanded","true"),a.focus(),a.addClass("f-open-"+this.attr_name(!0))},data_attr:function(){return this.namespace.length>0?this.namespace+"-"+this.name:this.name},toggle:function(a){if(!a.hasClass(this.settings.disabled_class)){var b=this.S("#"+a.data(this.data_attr()));0!==b.length&&(this.close.call(this,this.S("["+this.attr_name()+"-content]").not(b)),b.hasClass(this.settings.active_class)?(this.close.call(this,b),b.data("target")!==a.get(0)&&this.open.call(this,b,a)):this.open.call(this,b,a))}},resize:function(){var b=this.S("["+this.attr_name()+"-content].open"),c=a(b.data("target"));b.length&&c.length&&this.css(b,c)},css:function(a,b){var c=Math.max((b.width()-a.width())/2,8),d=b.data(this.attr_name(!0)+"-init")||this.settings,e=a.parent().css("overflow-y")||a.parent().css("overflow");if(this.clear_idx(),this.small()){var f=this.dirs.bottom.call(a,b,d);a.attr("style","").removeClass("drop-left drop-right drop-top").css({position:"absolute",width:"95%","max-width":"none",top:f.top}),a.css(Foundation.rtl?"right":"left",c)}else if("visible"!==e){var g=b[0].offsetTop+b[0].offsetHeight;a.attr("style","").css({position:"absolute",top:g}),a.css(Foundation.rtl?"right":"left",c)}else this.style(a,b,d);return a},style:function(b,c,d){var e=a.extend({position:"absolute"},this.dirs[d.align].call(b,c,d));b.attr("style","").css(e)},dirs:{_base:function(a,d){var e=this.offsetParent(),f=e.offset(),g=a.offset();g.top-=f.top,g.left-=f.left,g.missRight=!1,g.missTop=!1,g.missLeft=!1,g.leftRightFlag=!1;var h,i=b.innerWidth;h=c.getElementsByClassName("row")[0]?c.getElementsByClassName("row")[0].clientWidth:i;var j=(i-h)/2,k=h;if(!this.hasClass("mega")&&!d.ignore_repositioning){var l=this.outerWidth(),m=a.offset().left;a.offset().top<=this.outerHeight()&&(g.missTop=!0,k=i-j,g.leftRightFlag=!0),m+l>m+j&&m-j>l&&(g.missRight=!0,g.missLeft=!1),0>=m-l&&(g.missLeft=!0,g.missRight=!1)}return g},top:function(a,b){var c=Foundation.libs.dropdown,d=c.dirs._base.call(this,a,b);return this.addClass("drop-top"),1==d.missTop&&(d.top=d.top+a.outerHeight()+this.outerHeight(),
+this.removeClass("drop-top")),1==d.missRight&&(d.left=d.left-this.outerWidth()+a.outerWidth()),(a.outerWidth()<this.outerWidth()||c.small()||this.hasClass(b.mega_menu))&&c.adjust_pip(this,a,b,d),Foundation.rtl?{left:d.left-this.outerWidth()+a.outerWidth(),top:d.top-this.outerHeight()}:{left:d.left,top:d.top-this.outerHeight()}},bottom:function(a,b){var c=Foundation.libs.dropdown,d=c.dirs._base.call(this,a,b);return 1==d.missRight&&(d.left=d.left-this.outerWidth()+a.outerWidth()),(a.outerWidth()<this.outerWidth()||c.small()||this.hasClass(b.mega_menu))&&c.adjust_pip(this,a,b,d),c.rtl?{left:d.left-this.outerWidth()+a.outerWidth(),top:d.top+a.outerHeight()}:{left:d.left,top:d.top+a.outerHeight()}},left:function(a,b){var c=Foundation.libs.dropdown.dirs._base.call(this,a,b);return this.addClass("drop-left"),1==c.missLeft&&(c.left=c.left+this.outerWidth(),c.top=c.top+a.outerHeight(),this.removeClass("drop-left")),{left:c.left-this.outerWidth(),top:c.top}},right:function(a,b){var c=Foundation.libs.dropdown.dirs._base.call(this,a,b);this.addClass("drop-right"),1==c.missRight?(c.left=c.left-this.outerWidth(),c.top=c.top+a.outerHeight(),this.removeClass("drop-right")):c.triggeredRight=!0;var d=Foundation.libs.dropdown;return(a.outerWidth()<this.outerWidth()||d.small()||this.hasClass(b.mega_menu))&&d.adjust_pip(this,a,b,c),{left:c.left+a.outerWidth(),top:c.top}}},adjust_pip:function(a,b,c,d){var e=Foundation.stylesheet,f=8;a.hasClass(c.mega_class)?f=d.left+b.outerWidth()/2-8:this.small()&&(f+=d.left-8),this.rule_idx=e.cssRules.length;var g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left: "+f+"px;",j="left: "+(f-1)+"px;";1==d.missRight&&(f=a.outerWidth()-23,g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left: "+f+"px;",j="left: "+(f-1)+"px;"),1==d.triggeredRight&&(g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left:-12px;",j="left:-14px;"),e.insertRule?(e.insertRule([g,"{",i,"}"].join(" "),this.rule_idx),e.insertRule([h,"{",j,"}"].join(" "),this.rule_idx+1)):(e.addRule(g,i,this.rule_idx),e.addRule(h,j,this.rule_idx+1))},clear_idx:function(){var a=Foundation.stylesheet;"undefined"!=typeof this.rule_idx&&(a.deleteRule(this.rule_idx),a.deleteRule(this.rule_idx),delete this.rule_idx)},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},off:function(){this.S(this.scope).off(".fndtn.dropdown"),this.S("html, body").off(".fndtn.dropdown"),this.S(b).off(".fndtn.dropdown"),this.S("[data-dropdown-content]").off(".fndtn.dropdown")},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.equalizer={name:"equalizer",version:"5.5.3",settings:{use_tallest:!0,before_height_change:a.noop,after_height_change:a.noop,equalize_on_stack:!1,act_on_hidden_el:!1},init:function(a,b,c){Foundation.inherit(this,"image_loaded"),this.bindings(b,c),this.reflow()},events:function(){this.S(b).off(".equalizer").on("resize.fndtn.equalizer",function(a){this.reflow()}.bind(this))},equalize:function(b){var c,d,e=!1,f=b.data("equalizer"),g=b.data(this.attr_name(!0)+"-init")||this.settings;if(c=g.act_on_hidden_el?f?b.find("["+this.attr_name()+'-watch="'+f+'"]'):b.find("["+this.attr_name()+"-watch]"):f?b.find("["+this.attr_name()+'-watch="'+f+'"]:visible'):b.find("["+this.attr_name()+"-watch]:visible"),0!==c.length&&(g.before_height_change(),b.trigger("before-height-change.fndth.equalizer"),c.height("inherit"),g.equalize_on_stack!==!1||(d=c.first().offset().top,c.each(function(){return a(this).offset().top!==d?(e=!0,!1):void 0}),!e))){var h=c.map(function(){return a(this).outerHeight(!1)}).get();if(g.use_tallest){var i=Math.max.apply(null,h);c.css("height",i)}else{var j=Math.min.apply(null,h);c.css("height",j)}g.after_height_change(),b.trigger("after-height-change.fndtn.equalizer")}},reflow:function(){var b=this;this.S("["+this.attr_name()+"]",this.scope).each(function(){var c=a(this),d=c.data("equalizer-mq"),e=!0;d&&(d="is_"+d.replace(/-/g,"_"),Foundation.utils.hasOwnProperty(d)&&(e=!1)),b.image_loaded(b.S("img",this),function(){if(e||Foundation.utils[d]())b.equalize(c);else{var a=c.find("["+b.attr_name()+"-watch]:visible");a.css("height","auto")}})})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.interchange={name:"interchange",version:"5.5.3",cache:{},images_loaded:!1,nodes_loaded:!1,settings:{load_attr:"interchange",named_queries:{"default":"only screen",small:Foundation.media_queries.small,"small-only":Foundation.media_queries["small-only"],medium:Foundation.media_queries.medium,"medium-only":Foundation.media_queries["medium-only"],large:Foundation.media_queries.large,"large-only":Foundation.media_queries["large-only"],xlarge:Foundation.media_queries.xlarge,"xlarge-only":Foundation.media_queries["xlarge-only"],xxlarge:Foundation.media_queries.xxlarge,landscape:"only screen and (orientation: landscape)",portrait:"only screen and (orientation: portrait)",retina:"only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx)"},directives:{replace:function(b,c,d){if(null!==b&&/IMG/.test(b[0].nodeName)){var e=a.each(b,function(){this.src=c});if(new RegExp(c,"i").test(e))return;return b.attr("src",c),d(b[0].src)}var f=b.data(this.data_attr+"-last-path"),g=this;if(f!=c)return/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(c)?(a(b).css("background-image","url("+c+")"),b.data("interchange-last-path",c),d(c)):a.get(c,function(a){b.html(a),b.data(g.data_attr+"-last-path",c),d()})}}},init:function(b,c,d){Foundation.inherit(this,"throttle random_str"),this.data_attr=this.set_data_attr(),a.extend(!0,this.settings,c,d),this.bindings(c,d),this.reflow()},get_media_hash:function(){var a="";for(var b in this.settings.named_queries)a+=matchMedia(this.settings.named_queries[b]).matches.toString();return a},events:function(){var c,d=this;return a(b).off(".interchange").on("resize.fndtn.interchange",d.throttle(function(){var a=d.get_media_hash();a!==c&&d.resize(),c=a},50)),this},resize:function(){var b=this.cache;if(!this.images_loaded||!this.nodes_loaded)return void setTimeout(a.proxy(this.resize,this),50);for(var c in b)if(b.hasOwnProperty(c)){var d=this.results(c,b[c]);d&&this.settings.directives[d.scenario[1]].call(this,d.el,d.scenario[0],function(a){if(arguments[0]instanceof Array)var b=arguments[0];else var b=Array.prototype.slice.call(arguments,0);return function(){a.el.trigger(a.scenario[1],b)}}(d))}},results:function(a,b){var c=b.length;if(c>0)for(var d=this.S("["+this.add_namespace("data-uuid")+'="'+a+'"]');c--;){var e,f=b[c][2];if(e=this.settings.named_queries.hasOwnProperty(f)?matchMedia(this.settings.named_queries[f]):matchMedia(f),e.matches)return{el:d,scenario:b[c]}}return!1},load:function(a,b){return("undefined"==typeof this["cached_"+a]||b)&&this["update_"+a](),this["cached_"+a]},update_images:function(){var a=this.S("img["+this.data_attr+"]"),b=a.length,c=b,d=0,e=this.data_attr;for(this.cache={},this.cached_images=[],this.images_loaded=0===b;c--;){if(d++,a[c]){var f=a[c].getAttribute(e)||"";f.length>0&&this.cached_images.push(a[c])}d===b&&(this.images_loaded=!0,this.enhance("images"))}return this},update_nodes:function(){var a=this.S("["+this.data_attr+"]").not("img"),b=a.length,c=b,d=0,e=this.data_attr;for(this.cached_nodes=[],this.nodes_loaded=0===b;c--;){d++;var f=a[c].getAttribute(e)||"";f.length>0&&this.cached_nodes.push(a[c]),d===b&&(this.nodes_loaded=!0,this.enhance("nodes"))}return this},enhance:function(c){for(var d=this["cached_"+c].length;d--;)this.object(a(this["cached_"+c][d]));return a(b).trigger("resize.fndtn.interchange")},convert_directive:function(a){var b=this.trim(a);return b.length>0?b:"replace"},parse_scenario:function(a){var b=a[0].match(/(.+),\s*(\w+)\s*$/),c=a[1].match(/(.*)\)/);if(b)var d=b[1],e=b[2];else var f=a[0].split(/,\s*$/),d=f[0],e="";return[this.trim(d),this.convert_directive(e),this.trim(c[1])]},object:function(a){var b=this.parse_data_attr(a),c=[],d=b.length;if(d>0)for(;d--;){var e=b[d].split(/,\s?\(/);if(e.length>1){var f=this.parse_scenario(e);c.push(f)}}return this.store(a,c)},store:function(a,b){var c=this.random_str(),d=a.data(this.add_namespace("uuid",!0));return this.cache[d]?this.cache[d]:(a.attr(this.add_namespace("data-uuid"),c),this.cache[c]=b)},trim:function(b){return"string"==typeof b?a.trim(b):b},set_data_attr:function(a){return a?this.namespace.length>0?this.namespace+"-"+this.settings.load_attr:this.settings.load_attr:this.namespace.length>0?"data-"+this.namespace+"-"+this.settings.load_attr:"data-"+this.settings.load_attr},parse_data_attr:function(a){for(var b=a.attr(this.attr_name()).split(/\[(.*?)\]/),c=b.length,d=[];c--;)b[c].replace(/[\W\d]+/,"").length>4&&d.push(b[c]);return d},reflow:function(){this.load("images",!0),this.load("nodes",!0)}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.joyride={name:"joyride",version:"5.5.3",defaults:{expose:!1,modal:!0,keyboard:!0,tip_location:"bottom",nub_position:"auto",scroll_speed:1500,scroll_animation:"linear",timer:0,start_timer_on_click:!0,start_offset:0,next_button:!0,prev_button:!0,tip_animation:"fade",pause_after:[],exposed:[],tip_animation_fade_speed:300,cookie_monster:!1,cookie_name:"joyride",cookie_domain:!1,cookie_expires:365,tip_container:"body",abort_on_close:!0,tip_location_patterns:{top:["bottom"],bottom:[],left:["right","top","bottom"],right:["left","top","bottom"]},post_ride_callback:function(){},post_step_callback:function(){},pre_step_callback:function(){},pre_ride_callback:function(){},post_expose_callback:function(){},template:{link:'<a href="#close" class="joyride-close-tip">&times;</a>',timer:'<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',tip:'<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',wrapper:'<div class="joyride-content-wrapper"></div>',button:'<a href="#" class="small button joyride-next-tip"></a>',prev_button:'<a href="#" class="small button joyride-prev-tip"></a>',modal:'<div class="joyride-modal-bg"></div>',expose:'<div class="joyride-expose-wrapper"></div>',expose_cover:'<div class="joyride-expose-cover"></div>'},expose_add_class:""},init:function(b,c,d){Foundation.inherit(this,"throttle random_str"),this.settings=this.settings||a.extend({},this.defaults,d||c),this.bindings(c,d)},go_next:function(){this.settings.$li.next().length<1?this.end():this.settings.timer>0?(clearTimeout(this.settings.automate),this.hide(),this.show(),this.startTimer()):(this.hide(),this.show())},go_prev:function(){this.settings.$li.prev().length<1||(this.settings.timer>0?(clearTimeout(this.settings.automate),this.hide(),this.show(null,!0),this.startTimer()):(this.hide(),this.show(null,!0)))},events:function(){var c=this;a(this.scope).off(".joyride").on("click.fndtn.joyride",".joyride-next-tip, .joyride-modal-bg",function(a){a.preventDefault(),this.go_next()}.bind(this)).on("click.fndtn.joyride",".joyride-prev-tip",function(a){a.preventDefault(),this.go_prev()}.bind(this)).on("click.fndtn.joyride",".joyride-close-tip",function(a){a.preventDefault(),this.end(this.settings.abort_on_close)}.bind(this)).on("keyup.fndtn.joyride",function(a){if(this.settings.keyboard&&this.settings.riding)switch(a.which){case 39:a.preventDefault(),this.go_next();break;case 37:a.preventDefault(),this.go_prev();break;case 27:a.preventDefault(),this.end(this.settings.abort_on_close)}}.bind(this)),a(b).off(".joyride").on("resize.fndtn.joyride",c.throttle(function(){if(a("["+c.attr_name()+"]").length>0&&c.settings.$next_tip&&c.settings.riding){if(c.settings.exposed.length>0){var b=a(c.settings.exposed);b.each(function(){var b=a(this);c.un_expose(b),c.expose(b)})}c.is_phone()?c.pos_phone():c.pos_default(!1)}},100))},start:function(){var b=this,c=a("["+this.attr_name()+"]",this.scope),d=["timer","scrollSpeed","startOffset","tipAnimationFadeSpeed","cookieExpires"],e=d.length;!c.length>0||(this.settings.init||this.events(),this.settings=c.data(this.attr_name(!0)+"-init"),this.settings.$content_el=c,this.settings.$body=a(this.settings.tip_container),this.settings.body_offset=a(this.settings.tip_container).position(),this.settings.$tip_content=this.settings.$content_el.find("> li"),this.settings.paused=!1,this.settings.attempts=0,this.settings.riding=!0,"function"!=typeof a.cookie&&(this.settings.cookie_monster=!1),(!this.settings.cookie_monster||this.settings.cookie_monster&&!a.cookie(this.settings.cookie_name))&&(this.settings.$tip_content.each(function(c){var f=a(this);this.settings=a.extend({},b.defaults,b.data_options(f));for(var g=e;g--;)b.settings[d[g]]=parseInt(b.settings[d[g]],10);b.create({$li:f,index:c})}),!this.settings.start_timer_on_click&&this.settings.timer>0?(this.show("init"),this.startTimer()):this.show("init")))},resume:function(){this.set_li(),this.show()},tip_template:function(b){var c,d;return b.tip_class=b.tip_class||"",c=a(this.settings.template.tip).addClass(b.tip_class),d=a.trim(a(b.li).html())+this.prev_button_text(b.prev_button_text,b.index)+this.button_text(b.button_text)+this.settings.template.link+this.timer_instance(b.index),c.append(a(this.settings.template.wrapper)),c.first().attr(this.add_namespace("data-index"),b.index),a(".joyride-content-wrapper",c).append(d),c[0]},timer_instance:function(b){var c;return c=0===b&&this.settings.start_timer_on_click&&this.settings.timer>0||0===this.settings.timer?"":a(this.settings.template.timer)[0].outerHTML},button_text:function(b){return this.settings.tip_settings.next_button?(b=a.trim(b)||"Next",b=a(this.settings.template.button).append(b)[0].outerHTML):b="",b},prev_button_text:function(b,c){return this.settings.tip_settings.prev_button?(b=a.trim(b)||"Previous",b=0==c?a(this.settings.template.prev_button).append(b).addClass("disabled")[0].outerHTML:a(this.settings.template.prev_button).append(b)[0].outerHTML):b="",b},create:function(b){this.settings.tip_settings=a.extend({},this.settings,this.data_options(b.$li));var c=b.$li.attr(this.add_namespace("data-button"))||b.$li.attr(this.add_namespace("data-text")),d=b.$li.attr(this.add_namespace("data-button-prev"))||b.$li.attr(this.add_namespace("data-prev-text")),e=b.$li.attr("class"),f=a(this.tip_template({tip_class:e,index:b.index,button_text:c,prev_button_text:d,li:b.$li}));a(this.settings.tip_container).append(f)},show:function(b,c){var e=null;if(this.settings.$li===d||-1===a.inArray(this.settings.$li.index(),this.settings.pause_after))if(this.settings.paused?this.settings.paused=!1:this.set_li(b,c),this.settings.attempts=0,this.settings.$li.length&&this.settings.$target.length>0){if(b&&(this.settings.pre_ride_callback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.show_modal()),this.settings.pre_step_callback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.settings.expose&&this.expose(),this.settings.tip_settings=a.extend({},this.settings,this.data_options(this.settings.$li)),this.settings.timer=parseInt(this.settings.timer,10),this.settings.tip_settings.tip_location_pattern=this.settings.tip_location_patterns[this.settings.tip_settings.tip_location],!/body/i.test(this.settings.$target.selector)&&!this.settings.expose){var f=a(".joyride-modal-bg");/pop/i.test(this.settings.tipAnimation)?f.hide():f.fadeOut(this.settings.tipAnimationFadeSpeed),this.scroll_to()}this.is_phone()?this.pos_phone(!0):this.pos_default(!0),e=this.settings.$next_tip.find(".joyride-timer-indicator"),/pop/i.test(this.settings.tip_animation)?(e.width(0),this.settings.timer>0?(this.settings.$next_tip.show(),setTimeout(function(){e.animate({width:e.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tip_animation_fade_speed)):this.settings.$next_tip.show()):/fade/i.test(this.settings.tip_animation)&&(e.width(0),this.settings.timer>0?(this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed).show(),setTimeout(function(){e.animate({width:e.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tip_animation_fade_speed)):this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed)),this.settings.$current_tip=this.settings.$next_tip}else this.settings.$li&&this.settings.$target.length<1?this.show(b,c):this.end();else this.settings.paused=!0},is_phone:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},hide:function(){this.settings.modal&&this.settings.expose&&this.un_expose(),this.settings.modal||a(".joyride-modal-bg").hide(),this.settings.$current_tip.css("visibility","hidden"),setTimeout(a.proxy(function(){this.hide(),this.css("visibility","visible")},this.settings.$current_tip),0),this.settings.post_step_callback(this.settings.$li.index(),this.settings.$current_tip)},set_li:function(a,b){a?(this.settings.$li=this.settings.$tip_content.eq(this.settings.start_offset),this.set_next_tip(),this.settings.$current_tip=this.settings.$next_tip):(b?this.settings.$li=this.settings.$li.prev():this.settings.$li=this.settings.$li.next(),this.set_next_tip()),this.set_target()},set_next_tip:function(){this.settings.$next_tip=a(".joyride-tip-guide").eq(this.settings.$li.index()),this.settings.$next_tip.data("closed","")},set_target:function(){var b=this.settings.$li.attr(this.add_namespace("data-class")),d=this.settings.$li.attr(this.add_namespace("data-id")),e=function(){return d?a(c.getElementById(d)):b?a("."+b).first():a("body")};this.settings.$target=e()},scroll_to:function(){var c,d;c=a(b).height()/2,d=Math.ceil(this.settings.$target.offset().top-c+this.settings.$next_tip.outerHeight()),0!=d&&a("html, body").stop().animate({scrollTop:d},this.settings.scroll_speed,"swing")},paused:function(){return-1===a.inArray(this.settings.$li.index()+1,this.settings.pause_after)},restart:function(){this.hide(),this.settings.$li=d,this.show("init")},pos_default:function(a){var b=this.settings.$next_tip.find(".joyride-nub"),c=Math.ceil(b.outerWidth()/2),d=Math.ceil(b.outerHeight()/2),e=a||!1;if(e&&(this.settings.$next_tip.css("visibility","hidden"),this.settings.$next_tip.show()),/body/i.test(this.settings.$target.selector))this.settings.$li.length&&this.pos_modal(b);else{var f=this.settings.tip_settings.tipAdjustmentY?parseInt(this.settings.tip_settings.tipAdjustmentY):0,g=this.settings.tip_settings.tipAdjustmentX?parseInt(this.settings.tip_settings.tipAdjustmentX):0;this.bottom()?(this.rtl?this.settings.$next_tip.css({top:this.settings.$target.offset().top+d+this.settings.$target.outerHeight()+f,left:this.settings.$target.offset().left+this.settings.$target.outerWidth()-this.settings.$next_tip.outerWidth()+g}):this.settings.$next_tip.css({top:this.settings.$target.offset().top+d+this.settings.$target.outerHeight()+f,left:this.settings.$target.offset().left+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"top")):this.top()?(this.rtl?this.settings.$next_tip.css({top:this.settings.$target.offset().top-this.settings.$next_tip.outerHeight()-d+f,left:this.settings.$target.offset().left+this.settings.$target.outerWidth()-this.settings.$next_tip.outerWidth()}):this.settings.$next_tip.css({top:this.settings.$target.offset().top-this.settings.$next_tip.outerHeight()-d+f,left:this.settings.$target.offset().left+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"bottom")):this.right()?(this.settings.$next_tip.css({top:this.settings.$target.offset().top+f,left:this.settings.$target.outerWidth()+this.settings.$target.offset().left+c+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"left")):this.left()&&(this.settings.$next_tip.css({top:this.settings.$target.offset().top+f,left:this.settings.$target.offset().left-this.settings.$next_tip.outerWidth()-c+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"right")),!this.visible(this.corners(this.settings.$next_tip))&&this.settings.attempts<this.settings.tip_settings.tip_location_pattern.length&&(b.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),this.settings.tip_settings.tip_location=this.settings.tip_settings.tip_location_pattern[this.settings.attempts],this.settings.attempts++,this.pos_default())}e&&(this.settings.$next_tip.hide(),this.settings.$next_tip.css("visibility","visible"))},pos_phone:function(b){var c=this.settings.$next_tip.outerHeight(),d=(this.settings.$next_tip.offset(),this.settings.$target.outerHeight()),e=a(".joyride-nub",this.settings.$next_tip),f=Math.ceil(e.outerHeight()/2),g=b||!1;e.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),g&&(this.settings.$next_tip.css("visibility","hidden"),this.settings.$next_tip.show()),/body/i.test(this.settings.$target.selector)?this.settings.$li.length&&this.pos_modal(e):this.top()?(this.settings.$next_tip.offset({top:this.settings.$target.offset().top-c-f}),e.addClass("bottom")):(this.settings.$next_tip.offset({top:this.settings.$target.offset().top+d+f}),e.addClass("top")),g&&(this.settings.$next_tip.hide(),this.settings.$next_tip.css("visibility","visible"))},pos_modal:function(a){this.center(),a.hide(),this.show_modal()},show_modal:function(){if(!this.settings.$next_tip.data("closed")){var b=a(".joyride-modal-bg");if(b.length<1){var b=a(this.settings.template.modal);b.appendTo("body")}/pop/i.test(this.settings.tip_animation)?b.show():b.fadeIn(this.settings.tip_animation_fade_speed)}},expose:function(){var c,d,e,f,g,h="expose-"+this.random_str(6);if(arguments.length>0&&arguments[0]instanceof a)e=arguments[0];else{if(!this.settings.$target||/body/i.test(this.settings.$target.selector))return!1;e=this.settings.$target}return e.length<1?(b.console&&console.error("element not valid",e),!1):(c=a(this.settings.template.expose),this.settings.$body.append(c),c.css({top:e.offset().top,left:e.offset().left,width:e.outerWidth(!0),height:e.outerHeight(!0)}),d=a(this.settings.template.expose_cover),f={zIndex:e.css("z-index"),position:e.css("position")},g=null==e.attr("class")?"":e.attr("class"),e.css("z-index",parseInt(c.css("z-index"))+1),"static"==f.position&&e.css("position","relative"),e.data("expose-css",f),e.data("orig-class",g),e.attr("class",g+" "+this.settings.expose_add_class),d.css({top:e.offset().top,left:e.offset().left,width:e.outerWidth(!0),height:e.outerHeight(!0)}),this.settings.modal&&this.show_modal(),this.settings.$body.append(d),c.addClass(h),d.addClass(h),e.data("expose",h),this.settings.post_expose_callback(this.settings.$li.index(),this.settings.$next_tip,e),void this.add_exposed(e))},un_expose:function(){var c,d,e,f,g,h=!1;if(arguments.length>0&&arguments[0]instanceof a)d=arguments[0];else{if(!this.settings.$target||/body/i.test(this.settings.$target.selector))return!1;d=this.settings.$target}return d.length<1?(b.console&&console.error("element not valid",d),!1):(c=d.data("expose"),e=a("."+c),arguments.length>1&&(h=arguments[1]),h===!0?a(".joyride-expose-wrapper,.joyride-expose-cover").remove():e.remove(),f=d.data("expose-css"),"auto"==f.zIndex?d.css("z-index",""):d.css("z-index",f.zIndex),f.position!=d.css("position")&&("static"==f.position?d.css("position",""):d.css("position",f.position)),g=d.data("orig-class"),d.attr("class",g),d.removeData("orig-classes"),d.removeData("expose"),d.removeData("expose-z-index"),void this.remove_exposed(d))},add_exposed:function(b){this.settings.exposed=this.settings.exposed||[],b instanceof a||"object"==typeof b?this.settings.exposed.push(b[0]):"string"==typeof b&&this.settings.exposed.push(b)},remove_exposed:function(b){var c,d;for(b instanceof a?c=b[0]:"string"==typeof b&&(c=b),this.settings.exposed=this.settings.exposed||[],d=this.settings.exposed.length;d--;)if(this.settings.exposed[d]==c)return void this.settings.exposed.splice(d,1)},center:function(){var c=a(b);return this.settings.$next_tip.css({top:(c.height()-this.settings.$next_tip.outerHeight())/2+c.scrollTop(),left:(c.width()-this.settings.$next_tip.outerWidth())/2+c.scrollLeft()}),!0},bottom:function(){return/bottom/i.test(this.settings.tip_settings.tip_location)},top:function(){return/top/i.test(this.settings.tip_settings.tip_location)},right:function(){return/right/i.test(this.settings.tip_settings.tip_location)},left:function(){return/left/i.test(this.settings.tip_settings.tip_location)},corners:function(c){if(0===c.length)return[!1,!1,!1,!1];var d=a(b),e=d.height()/2,f=Math.ceil(this.settings.$target.offset().top-e+this.settings.$next_tip.outerHeight()),g=d.width()+d.scrollLeft(),h=d.height()+f,i=d.height()+d.scrollTop(),j=d.scrollTop();return j>f&&(j=0>f?0:f),h>i&&(i=h),[c.offset().top<j,g<c.offset().left+c.outerWidth(),i<c.offset().top+c.outerHeight(),d.scrollLeft()>c.offset().left]},visible:function(a){for(var b=a.length;b--;)if(a[b])return!1;return!0},nub_position:function(a,b,c){"auto"===b?a.addClass(c):a.addClass(b)},startTimer:function(){this.settings.$li.length?this.settings.automate=setTimeout(function(){this.hide(),this.show(),this.startTimer()}.bind(this),this.settings.timer):clearTimeout(this.settings.automate)},end:function(b){this.settings.cookie_monster&&a.cookie(this.settings.cookie_name,"ridden",{expires:this.settings.cookie_expires,domain:this.settings.cookie_domain}),this.settings.timer>0&&clearTimeout(this.settings.automate),this.settings.modal&&this.settings.expose&&this.un_expose(),a(this.scope).off("keyup.joyride"),this.settings.$next_tip.data("closed",!0),this.settings.riding=!1,a(".joyride-modal-bg").hide(),this.settings.$current_tip.hide(),("undefined"==typeof b||b===!1)&&(this.settings.post_step_callback(this.settings.$li.index(),this.settings.$current_tip),this.settings.post_ride_callback(this.settings.$li.index(),this.settings.$current_tip)),a(".joyride-tip-guide").remove()},off:function(){a(this.scope).off(".joyride"),a(b).off(".joyride"),a(".joyride-close-tip, .joyride-next-tip, .joyride-modal-bg").off(".joyride"),a(".joyride-tip-guide, .joyride-modal-bg").remove(),clearTimeout(this.settings.automate)},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs["magellan-expedition"]={name:"magellan-expedition",version:"5.5.3",settings:{active_class:"active",threshold:0,destination_threshold:20,throttle_delay:30,fixed_top:0,offset_by_height:!0,duration:700,easing:"swing"},init:function(a,b,c){Foundation.inherit(this,"throttle"),this.bindings(b,c)},events:function(){var b=this,c=b.S,d=b.settings;b.set_expedition_position(),c(b.scope).off(".magellan").on("click.fndtn.magellan","["+b.add_namespace("data-magellan-arrival")+"] a[href*=#]",function(c){var d=this.hostname===location.hostname||!this.hostname,e=b.filterPathname(location.pathname)===b.filterPathname(this.pathname),f=this.hash.replace(/(:|\.|\/)/g,"\\$1"),g=this;if(d&&e&&f){c.preventDefault();var h=a(this).closest("["+b.attr_name()+"]"),i=h.data("magellan-expedition-init"),j=this.hash.split("#").join(""),k=a('a[name="'+j+'"]');0===k.length&&(k=a("#"+j));var l=k.offset().top-i.destination_threshold+1;i.offset_by_height&&(l-=h.outerHeight()),a("html, body").stop().animate({scrollTop:l},i.duration,i.easing,function(){history.pushState?history.pushState(null,null,g.pathname+g.search+"#"+j):location.hash=g.pathname+g.search+"#"+j})}}).on("scroll.fndtn.magellan",b.throttle(this.check_for_arrivals.bind(this),d.throttle_delay))},check_for_arrivals:function(){var a=this;a.update_arrivals(),a.update_expedition_positions()},set_expedition_position:function(){var b=this;a("["+this.attr_name()+"=fixed]",b.scope).each(function(c,d){var e,f,g=a(this),h=g.data("magellan-expedition-init"),i=g.attr("styles");g.attr("style",""),e=g.offset().top+h.threshold,f=parseInt(g.data("magellan-fixed-top")),isNaN(f)||(b.settings.fixed_top=f),g.data(b.data_attr("magellan-top-offset"),e),g.attr("style",i)})},update_expedition_positions:function(){var c=this,d=a(b).scrollTop();a("["+this.attr_name()+"=fixed]",c.scope).each(function(){var b=a(this),e=b.data("magellan-expedition-init"),f=b.attr("style"),g=b.data("magellan-top-offset");if(d+c.settings.fixed_top>=g){var h=b.prev("["+c.add_namespace("data-magellan-expedition-clone")+"]");0===h.length&&(h=b.clone(),h.removeAttr(c.attr_name()),h.attr(c.add_namespace("data-magellan-expedition-clone"),""),b.before(h)),b.css({position:"fixed",top:e.fixed_top}).addClass("fixed")}else b.prev("["+c.add_namespace("data-magellan-expedition-clone")+"]").remove(),b.attr("style",f).css("position","").css("top","").removeClass("fixed")})},update_arrivals:function(){var c=this,d=a(b).scrollTop();a("["+this.attr_name()+"]",c.scope).each(function(){var b=a(this),e=b.data(c.attr_name(!0)+"-init"),f=c.offsets(b,d),g=b.find("["+c.add_namespace("data-magellan-arrival")+"]"),h=!1;f.each(function(a,d){if(d.viewport_offset>=d.top_offset){var f=b.find("["+c.add_namespace("data-magellan-arrival")+"]");return f.not(d.arrival).removeClass(e.active_class),d.arrival.addClass(e.active_class),h=!0,!0}}),h||g.removeClass(e.active_class)})},offsets:function(b,c){var d=this,e=b.data(d.attr_name(!0)+"-init"),f=c;return b.find("["+d.add_namespace("data-magellan-arrival")+"]").map(function(c,g){var h=a(this).data(d.data_attr("magellan-arrival")),i=a("["+d.add_namespace("data-magellan-destination")+"="+h+"]");if(i.length>0){var j=i.offset().top-e.destination_threshold;return e.offset_by_height&&(j-=b.outerHeight()),j=Math.floor(j),{destination:i,arrival:a(this),top_offset:j,viewport_offset:f}}}).sort(function(a,b){return a.top_offset<b.top_offset?-1:a.top_offset>b.top_offset?1:0})},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},off:function(){this.S(this.scope).off(".magellan"),this.S(b).off(".magellan")},filterPathname:function(a){return a=a||"",a.replace(/^\//,"").replace(/(?:index|default).[a-zA-Z]{3,4}$/,"").replace(/\/$/,"")},reflow:function(){var b=this;a("["+b.add_namespace("data-magellan-expedition-clone")+"]",b.scope).remove()}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.offcanvas={name:"offcanvas",version:"5.5.3",settings:{open_method:"move",close_on_click:!1},init:function(a,b,c){this.bindings(b,c)},events:function(){var b=this,c=b.S,d="",e="",f="",g="",h="";"move"===this.settings.open_method?(d="move-",e="right",f="left",g="top",h="bottom"):"overlap_single"===this.settings.open_method?(d="offcanvas-overlap-",e="right",f="left",g="top",h="bottom"):"overlap"===this.settings.open_method&&(d="offcanvas-overlap"),c(this.scope).off(".offcanvas").on("click.fndtn.offcanvas",".left-off-canvas-toggle",function(f){b.click_toggle_class(f,d+e),"overlap"!==b.settings.open_method&&c(".left-submenu").removeClass(d+e),a(".left-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".left-off-canvas-menu a",function(f){var g=b.get_settings(f),h=c(this).parent();!g.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(f.preventDefault(),c(this).siblings(".left-submenu").toggleClass(d+e)):h.hasClass("back")&&(f.preventDefault(),h.parent().removeClass(d+e)):(b.hide.call(b,d+e,b.get_wrapper(f)),h.parent().removeClass(d+e)),a(".left-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".right-off-canvas-toggle",function(e){b.click_toggle_class(e,d+f),"overlap"!==b.settings.open_method&&c(".right-submenu").removeClass(d+f),a(".right-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".right-off-canvas-menu a",function(e){var g=b.get_settings(e),h=c(this).parent();!g.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".right-submenu").toggleClass(d+f)):h.hasClass("back")&&(e.preventDefault(),h.parent().removeClass(d+f)):(b.hide.call(b,d+f,b.get_wrapper(e)),h.parent().removeClass(d+f)),a(".right-off-canvas-toggle").attr("aria-expanded","true");
+}).on("click.fndtn.offcanvas",".top-off-canvas-toggle",function(e){b.click_toggle_class(e,d+h),"overlap"!==b.settings.open_method&&c(".top-submenu").removeClass(d+h),a(".top-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".top-off-canvas-menu a",function(e){var f=b.get_settings(e),g=c(this).parent();!f.close_on_click||g.hasClass("has-submenu")||g.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".top-submenu").toggleClass(d+h)):g.hasClass("back")&&(e.preventDefault(),g.parent().removeClass(d+h)):(b.hide.call(b,d+h,b.get_wrapper(e)),g.parent().removeClass(d+h)),a(".top-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".bottom-off-canvas-toggle",function(e){b.click_toggle_class(e,d+g),"overlap"!==b.settings.open_method&&c(".bottom-submenu").removeClass(d+g),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".bottom-off-canvas-menu a",function(e){var f=b.get_settings(e),h=c(this).parent();!f.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".bottom-submenu").toggleClass(d+g)):h.hasClass("back")&&(e.preventDefault(),h.parent().removeClass(d+g)):(b.hide.call(b,d+g,b.get_wrapper(e)),h.parent().removeClass(d+g)),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(g){b.click_remove_class(g,d+f),c(".right-submenu").removeClass(d+f),e&&(b.click_remove_class(g,d+e),c(".left-submenu").removeClass(d+f)),a(".right-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(c){b.click_remove_class(c,d+f),a(".left-off-canvas-toggle").attr("aria-expanded","false"),e&&(b.click_remove_class(c,d+e),a(".right-off-canvas-toggle").attr("aria-expanded","false"))}).on("click.fndtn.offcanvas",".exit-off-canvas",function(e){b.click_remove_class(e,d+g),c(".bottom-submenu").removeClass(d+g),h&&(b.click_remove_class(e,d+h),c(".top-submenu").removeClass(d+g)),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(c){b.click_remove_class(c,d+g),a(".top-off-canvas-toggle").attr("aria-expanded","false"),h&&(b.click_remove_class(c,d+h),a(".bottom-off-canvas-toggle").attr("aria-expanded","false"))})},toggle:function(a,b){b=b||this.get_wrapper(),b.is("."+a)?this.hide(a,b):this.show(a,b)},show:function(a,b){b=b||this.get_wrapper(),b.trigger("open.fndtn.offcanvas"),b.addClass(a)},hide:function(a,b){b=b||this.get_wrapper(),b.trigger("close.fndtn.offcanvas"),b.removeClass(a)},click_toggle_class:function(a,b){a.preventDefault();var c=this.get_wrapper(a);this.toggle(b,c)},click_remove_class:function(a,b){a.preventDefault();var c=this.get_wrapper(a);this.hide(b,c)},get_settings:function(a){var b=this.S(a.target).closest("["+this.attr_name()+"]");return b.data(this.attr_name(!0)+"-init")||this.settings},get_wrapper:function(a){var b=this.S(a?a.target:this.scope).closest(".off-canvas-wrap");return 0===b.length&&(b=this.S(".off-canvas-wrap")),b},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";var e=function(){},f=function(e,f){if(e.hasClass(f.slides_container_class))return this;var j,k,l,m,n,o,p=this,q=e,r=0,s=!1;p.slides=function(){return q.children(f.slide_selector)},p.slides().first().addClass(f.active_slide_class),p.update_slide_number=function(b){f.slide_number&&(k.find("span:first").text(parseInt(b)+1),k.find("span:last").text(p.slides().length)),f.bullets&&(l.children().removeClass(f.bullets_active_class),a(l.children().get(b)).addClass(f.bullets_active_class))},p.update_active_link=function(b){var c=a('[data-orbit-link="'+p.slides().eq(b).attr("data-orbit-slide")+'"]');c.siblings().removeClass(f.bullets_active_class),c.addClass(f.bullets_active_class)},p.build_markup=function(){q.wrap('<div class="'+f.container_class+'"></div>'),j=q.parent(),q.addClass(f.slides_container_class),f.stack_on_small&&j.addClass(f.stack_on_small_class),f.navigation_arrows&&(j.append(a('<a href="#"><span></span></a>').addClass(f.prev_class)),j.append(a('<a href="#"><span></span></a>').addClass(f.next_class))),f.timer&&(m=a("<div>").addClass(f.timer_container_class),m.append("<span>"),m.append(a("<div>").addClass(f.timer_progress_class)),m.addClass(f.timer_paused_class),j.append(m)),f.slide_number&&(k=a("<div>").addClass(f.slide_number_class),k.append("<span></span> "+f.slide_number_text+" <span></span>"),j.append(k)),f.bullets&&(l=a("<ol>").addClass(f.bullets_container_class),j.append(l),l.wrap('<div class="orbit-bullets-container"></div>'),p.slides().each(function(b,c){var d=a("<li>").attr("data-orbit-slide",b).on("click",p.link_bullet);l.append(d)}))},p._goto=function(b,c){if(b===r)return!1;"object"==typeof o&&o.restart();var d=p.slides(),e="next";if(s=!0,r>b&&(e="prev"),b>=d.length){if(!f.circular)return!1;b=0}else if(0>b){if(!f.circular)return!1;b=d.length-1}var g=a(d.get(r)),h=a(d.get(b));g.css("zIndex",2),g.removeClass(f.active_slide_class),h.css("zIndex",4).addClass(f.active_slide_class),q.trigger("before-slide-change.fndtn.orbit"),f.before_slide_change(),p.update_active_link(b);var i=function(){var a=function(){r=b,s=!1,c===!0&&(o=p.create_timer(),o.start()),p.update_slide_number(r),q.trigger("after-slide-change.fndtn.orbit",[{slide_number:r,total_slides:d.length}]),f.after_slide_change(r,d.length)};q.outerHeight()!=h.outerHeight()&&f.variable_height?q.animate({height:h.outerHeight()},250,"linear",a):a()};if(1===d.length)return i(),!1;var j=function(){"next"===e&&n.next(g,h,i),"prev"===e&&n.prev(g,h,i)};h.outerHeight()>q.outerHeight()&&f.variable_height?q.animate({height:h.outerHeight()},250,"linear",j):j()},p.next=function(a){a.stopImmediatePropagation(),a.preventDefault(),p._goto(r+1)},p.prev=function(a){a.stopImmediatePropagation(),a.preventDefault(),p._goto(r-1)},p.link_custom=function(b){b.preventDefault();var c=a(this).attr("data-orbit-link");if("string"==typeof c&&""!=(c=a.trim(c))){var d=j.find("[data-orbit-slide="+c+"]");-1!=d.index()&&p._goto(d.index())}},p.link_bullet=function(b){var c=a(this).attr("data-orbit-slide");if("string"==typeof c&&""!=(c=a.trim(c)))if(isNaN(parseInt(c))){var d=j.find("[data-orbit-slide="+c+"]");-1!=d.index()&&p._goto(d.index()+1)}else p._goto(parseInt(c))},p.timer_callback=function(){p._goto(r+1,!0)},p.compute_dimensions=function(){var b=a(p.slides().get(r)),c=b.outerHeight();f.variable_height||p.slides().each(function(){a(this).outerHeight()>c&&(c=a(this).outerHeight())}),q.height(c)},p.create_timer=function(){var a=new g(j.find("."+f.timer_container_class),f,p.timer_callback);return a},p.stop_timer=function(){"object"==typeof o&&o.stop()},p.toggle_timer=function(){var a=j.find("."+f.timer_container_class);a.hasClass(f.timer_paused_class)?("undefined"==typeof o&&(o=p.create_timer()),o.start()):"object"==typeof o&&o.stop()},p.init=function(){p.build_markup(),f.timer&&(o=p.create_timer(),Foundation.utils.image_loaded(this.slides().children("img"),o.start)),n=new i(f,q),"slide"===f.animation&&(n=new h(f,q)),j.on("click","."+f.next_class,p.next),j.on("click","."+f.prev_class,p.prev),f.next_on_click&&j.on("click","."+f.slides_container_class+" [data-orbit-slide]",p.link_bullet),j.on("click",p.toggle_timer),f.swipe&&j.on("touchstart.fndtn.orbit",function(a){a.touches||(a=a.originalEvent);var b={start_page_x:a.touches[0].pageX,start_page_y:a.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:d};j.data("swipe-transition",b),a.stopPropagation()}).on("touchmove.fndtn.orbit",function(a){if(a.touches||(a=a.originalEvent),!(a.touches.length>1||a.scale&&1!==a.scale)){var b=j.data("swipe-transition");if("undefined"==typeof b&&(b={}),b.delta_x=a.touches[0].pageX-b.start_page_x,"undefined"==typeof b.is_scrolling&&(b.is_scrolling=!!(b.is_scrolling||Math.abs(b.delta_x)<Math.abs(a.touches[0].pageY-b.start_page_y))),!b.is_scrolling&&!b.active){a.preventDefault();var c=b.delta_x<0?r+1:r-1;b.active=!0,p._goto(c)}}}).on("touchend.fndtn.orbit",function(a){j.data("swipe-transition",{}),a.stopPropagation()}),j.on("mouseenter.fndtn.orbit",function(a){f.timer&&f.pause_on_hover&&p.stop_timer()}).on("mouseleave.fndtn.orbit",function(a){f.timer&&f.resume_on_mouseout&&o.start()}),a(c).on("click","[data-orbit-link]",p.link_custom),a(b).on("load resize",p.compute_dimensions),Foundation.utils.image_loaded(this.slides().children("img"),p.compute_dimensions),Foundation.utils.image_loaded(this.slides().children("img"),function(){j.prev("."+f.preloader_class).css("display","none"),p.update_slide_number(0),p.update_active_link(0),q.trigger("ready.fndtn.orbit")})},p.init()},g=function(a,b,c){var d,e,f=this,g=b.timer_speed,h=a.find("."+b.timer_progress_class),i=-1;this.update_progress=function(a){var b=h.clone();b.attr("style",""),b.css("width",a+"%"),h.replaceWith(b),h=b},this.restart=function(){clearTimeout(e),a.addClass(b.timer_paused_class),i=-1,f.update_progress(0)},this.start=function(){return a.hasClass(b.timer_paused_class)?(i=-1===i?g:i,a.removeClass(b.timer_paused_class),d=(new Date).getTime(),h.animate({width:"100%"},i,"linear"),e=setTimeout(function(){f.restart(),c()},i),void a.trigger("timer-started.fndtn.orbit")):!0},this.stop=function(){if(a.hasClass(b.timer_paused_class))return!0;clearTimeout(e),a.addClass(b.timer_paused_class);var c=(new Date).getTime();i-=c-d;var h=100-i/g*100;f.update_progress(h),a.trigger("timer-stopped.fndtn.orbit")}},h=function(b,c){var d=b.animation_speed,e=1===a("html[dir=rtl]").length,f=e?"marginRight":"marginLeft",g={};g[f]="0%",this.next=function(a,b,c){a.animate({marginLeft:"-100%"},d),b.animate(g,d,function(){a.css(f,"100%"),c()})},this.prev=function(a,b,c){a.animate({marginLeft:"100%"},d),b.css(f,"-100%"),b.animate(g,d,function(){a.css(f,"100%"),c()})}},i=function(b,c){var d=b.animation_speed;1===a("html[dir=rtl]").length;this.next=function(a,b,c){b.css({margin:"0%",opacity:"0.01"}),b.animate({opacity:"1"},d,"linear",function(){a.css("margin","100%"),c()})},this.prev=function(a,b,c){b.css({margin:"0%",opacity:"0.01"}),b.animate({opacity:"1"},d,"linear",function(){a.css("margin","100%"),c()})}};Foundation.libs=Foundation.libs||{},Foundation.libs.orbit={name:"orbit",version:"5.5.3",settings:{animation:"slide",timer_speed:1e4,pause_on_hover:!0,resume_on_mouseout:!1,next_on_click:!0,animation_speed:500,stack_on_small:!1,navigation_arrows:!0,slide_number:!0,slide_number_text:"of",container_class:"orbit-container",stack_on_small_class:"orbit-stack-on-small",next_class:"orbit-next",prev_class:"orbit-prev",timer_container_class:"orbit-timer",timer_paused_class:"paused",timer_progress_class:"orbit-progress",slides_container_class:"orbit-slides-container",preloader_class:"preloader",slide_selector:"*",bullets_container_class:"orbit-bullets",bullets_active_class:"active",slide_number_class:"orbit-slide-number",caption_class:"orbit-caption",active_slide_class:"active",orbit_transition_class:"orbit-transitioning",bullets:!0,circular:!0,timer:!0,variable_height:!1,swipe:!0,before_slide_change:e,after_slide_change:e},init:function(a,b,c){this.bindings(b,c)},events:function(a){var b=new f(this.S(a),this.S(a).data("orbit-init"));this.S(a).data(this.name+"-instance",b)},reflow:function(){var a=this;if(a.S(a.scope).is("[data-orbit]")){var b=a.S(a.scope),c=b.data(a.name+"-instance");c.compute_dimensions()}else a.S("[data-orbit]",a.scope).each(function(b,c){var d=a.S(c),e=(a.data_options(d),d.data(a.name+"-instance"));e.compute_dimensions()})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";function e(a){var b=/fade/i.test(a),c=/pop/i.test(a);return{animate:b||c,pop:c,fade:b}}var f=[];Foundation.libs.reveal={name:"reveal",version:"5.5.3",locked:!1,settings:{animation:"fadeAndPop",animation_speed:250,close_on_background_click:!0,close_on_esc:!0,dismiss_modal_class:"close-reveal-modal",multiple_opened:!1,bg_class:"reveal-modal-bg",root_element:"body",open:function(){},opened:function(){},close:function(){},closed:function(){},on_ajax_error:a.noop,bg:a(".reveal-modal-bg"),css:{open:{opacity:0,visibility:"visible",display:"block"},close:{opacity:1,visibility:"hidden",display:"none"}}},init:function(b,c,d){a.extend(!0,this.settings,c,d),this.bindings(c,d)},events:function(a){var b=this,d=b.S;return d(this.scope).off(".reveal").on("click.fndtn.reveal","["+this.add_namespace("data-reveal-id")+"]:not([disabled])",function(a){if(a.preventDefault(),!b.locked){var c=d(this),e=c.data(b.data_attr("reveal-ajax")),f=c.data(b.data_attr("reveal-replace-content"));if(b.locked=!0,"undefined"==typeof e)b.open.call(b,c);else{var g=e===!0?c.attr("href"):e;b.open.call(b,c,{url:g},{replaceContentSel:f})}}}),d(c).on("click.fndtn.reveal",this.close_targets(),function(a){if(a.preventDefault(),!b.locked){var c=d("["+b.attr_name()+"].open").data(b.attr_name(!0)+"-init")||b.settings,e=d(a.target)[0]===d("."+c.bg_class)[0];if(e){if(!c.close_on_background_click)return;a.stopPropagation()}b.locked=!0,b.close.call(b,e?d("["+b.attr_name()+"].open:not(.toback)"):d(this).closest("["+b.attr_name()+"]"))}}),d("["+b.attr_name()+"]",this.scope).length>0?d(this.scope).on("open.fndtn.reveal",this.settings.open).on("opened.fndtn.reveal",this.settings.opened).on("opened.fndtn.reveal",this.open_video).on("close.fndtn.reveal",this.settings.close).on("closed.fndtn.reveal",this.settings.closed).on("closed.fndtn.reveal",this.close_video):d(this.scope).on("open.fndtn.reveal","["+b.attr_name()+"]",this.settings.open).on("opened.fndtn.reveal","["+b.attr_name()+"]",this.settings.opened).on("opened.fndtn.reveal","["+b.attr_name()+"]",this.open_video).on("close.fndtn.reveal","["+b.attr_name()+"]",this.settings.close).on("closed.fndtn.reveal","["+b.attr_name()+"]",this.settings.closed).on("closed.fndtn.reveal","["+b.attr_name()+"]",this.close_video),!0},key_up_on:function(a){var b=this;return b.S("body").off("keyup.fndtn.reveal").on("keyup.fndtn.reveal",function(a){var c=b.S("["+b.attr_name()+"].open"),d=c.data(b.attr_name(!0)+"-init")||b.settings;d&&27===a.which&&d.close_on_esc&&!b.locked&&b.close.call(b,c)}),!0},key_up_off:function(a){return this.S("body").off("keyup.fndtn.reveal"),!0},open:function(c,e){var g,h=this;c?"undefined"!=typeof c.selector?g=h.S("#"+c.data(h.data_attr("reveal-id"))).first():(g=h.S(this.scope),e=c):g=h.S(this.scope);var i=g.data(h.attr_name(!0)+"-init");if(i=i||this.settings,g.hasClass("open")&&c!==d&&c.attr("data-reveal-id")==g.attr("id"))return h.close(g);if(!g.hasClass("open")){var j=h.S("["+h.attr_name()+"].open");"undefined"==typeof g.data("css-top")&&g.data("css-top",parseInt(g.css("top"),10)).data("offset",this.cache_offset(g)),g.attr("tabindex","0").attr("aria-hidden","false"),this.key_up_on(g),g.on("open.fndtn.reveal",function(a){"fndtn.reveal"!==a.namespace}),g.on("open.fndtn.reveal").trigger("open.fndtn.reveal"),j.length<1&&this.toggle_bg(g,!0),"string"==typeof e&&(e={url:e});var k=function(){j.length>0&&(i.multiple_opened?h.to_back(j):h.hide(j,i.css.close)),i.multiple_opened&&f.push(g),h.show(g,i.css.open)};if("undefined"!=typeof e&&e.url){var l="undefined"!=typeof e.success?e.success:null;a.extend(e,{success:function(b,c,d){if(a.isFunction(l)){var e=l(b,c,d);"string"==typeof e&&(b=e)}"undefined"!=typeof options&&"undefined"!=typeof options.replaceContentSel?g.find(options.replaceContentSel).html(b):g.html(b),h.S(g).foundation("section","reflow"),h.S(g).children().foundation(),k()}}),i.on_ajax_error!==a.noop&&a.extend(e,{error:i.on_ajax_error}),a.ajax(e)}else k()}h.S(b).trigger("resize")},close:function(b){var b=b&&b.length?b:this.S(this.scope),c=this.S("["+this.attr_name()+"].open"),d=b.data(this.attr_name(!0)+"-init")||this.settings,e=this;if(c.length>0)if(b.removeAttr("tabindex","0").attr("aria-hidden","true"),this.locked=!0,this.key_up_off(b),b.trigger("close.fndtn.reveal"),(d.multiple_opened&&1===c.length||!d.multiple_opened||b.length>1)&&(e.toggle_bg(b,!1),e.to_front(b)),d.multiple_opened){var g=b.is(":not(.toback)");e.hide(b,d.css.close,d),g?f.pop():f=a.grep(f,function(a){var c=a[0]===b[0];return c&&e.to_front(b),!c}),f.length>0&&e.to_front(f[f.length-1])}else e.hide(c,d.css.close,d)},close_targets:function(){var a="."+this.settings.dismiss_modal_class;return this.settings.close_on_background_click?a+", ."+this.settings.bg_class:a},toggle_bg:function(b,c){0===this.S("."+this.settings.bg_class).length&&(this.settings.bg=a("<div />",{"class":this.settings.bg_class}).appendTo("body").hide());var e=this.settings.bg.filter(":visible").length>0;c!=e&&((c==d?e:!c)?this.hide(this.settings.bg):this.show(this.settings.bg))},show:function(c,d){if(d){var f=c.data(this.attr_name(!0)+"-init")||this.settings,g=f.root_element,h=this;if(0===c.parent(g).length){var i=c.wrap('<div style="display: none;" />').parent();c.on("closed.fndtn.reveal.wrapped",function(){c.detach().appendTo(i),c.unwrap().unbind("closed.fndtn.reveal.wrapped")}),c.detach().appendTo(g)}var j=e(f.animation);if(j.animate||(this.locked=!1),j.pop){d.top=a(b).scrollTop()-c.data("offset")+"px";var k={top:a(b).scrollTop()+c.data("css-top")+"px",opacity:1};return setTimeout(function(){return c.css(d).animate(k,f.animation_speed,"linear",function(){h.locked=!1,c.trigger("opened.fndtn.reveal")}).addClass("open")},f.animation_speed/2)}if(d.top=a(b).scrollTop()+c.data("css-top")+"px",j.fade){var k={opacity:1};return setTimeout(function(){return c.css(d).animate(k,f.animation_speed,"linear",function(){h.locked=!1,c.trigger("opened.fndtn.reveal")}).addClass("open")},f.animation_speed/2)}return c.css(d).show().css({opacity:1}).addClass("open").trigger("opened.fndtn.reveal")}var f=this.settings;return e(f.animation).fade?c.fadeIn(f.animation_speed/2):(this.locked=!1,c.show())},to_back:function(a){a.addClass("toback")},to_front:function(a){a.removeClass("toback")},hide:function(c,d){if(d){var f=c.data(this.attr_name(!0)+"-init"),g=this;f=f||this.settings;var h=e(f.animation);if(h.animate||(this.locked=!1),h.pop){var i={top:-a(b).scrollTop()-c.data("offset")+"px",opacity:0};return setTimeout(function(){return c.animate(i,f.animation_speed,"linear",function(){g.locked=!1,c.css(d).trigger("closed.fndtn.reveal")}).removeClass("open")},f.animation_speed/2)}if(h.fade){var i={opacity:0};return setTimeout(function(){return c.animate(i,f.animation_speed,"linear",function(){g.locked=!1,c.css(d).trigger("closed.fndtn.reveal")}).removeClass("open")},f.animation_speed/2)}return c.hide().css(d).removeClass("open").trigger("closed.fndtn.reveal")}var f=this.settings;return e(f.animation).fade?c.fadeOut(f.animation_speed/2):c.hide()},close_video:function(b){var c=a(".flex-video",b.target),d=a("iframe",c);d.length>0&&(d.attr("data-src",d[0].src),d.attr("src",d.attr("src")),c.hide())},open_video:function(b){var c=a(".flex-video",b.target),e=c.find("iframe");if(e.length>0){var f=e.attr("data-src");if("string"==typeof f)e[0].src=e.attr("data-src");else{var g=e[0].src;e[0].src=d,e[0].src=g}c.show()}},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},cache_offset:function(a){var b=a.show().height()+parseInt(a.css("top"),10)+a.scrollY;return a.hide(),b},off:function(){a(this.scope).off(".fndtn.reveal")},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.slider={name:"slider",version:"5.5.3",settings:{start:0,end:100,step:1,precision:2,initial:null,display_selector:"",vertical:!1,trigger_input_change:!1,on_change:function(){}},cache:{},init:function(a,b,c){Foundation.inherit(this,"throttle"),this.bindings(b,c),this.reflow()},events:function(){var c=this;a(this.scope).off(".slider").on("mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider","["+c.attr_name()+"]:not(.disabled, [disabled]) .range-slider-handle",function(b){c.cache.active||(b.preventDefault(),c.set_active_slider(a(b.target)))}).on("mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider",function(d){if(c.cache.active)if(d.preventDefault(),a.data(c.cache.active[0],"settings").vertical){var e=0;d.pageY||(e=b.scrollY),c.calculate_position(c.cache.active,c.get_cursor_position(d,"y")+e)}else c.calculate_position(c.cache.active,c.get_cursor_position(d,"x"))}).on("mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider",function(d){if(!c.cache.active){var e="slider"===a(d.target).attr("role")?a(d.target):a(d.target).closest(".range-slider").find("[role='slider']");if(e.length&&!e.parent().hasClass("disabled")&&!e.parent().attr("disabled"))if(c.set_active_slider(e),a.data(c.cache.active[0],"settings").vertical){var f=0;d.pageY||(f=b.scrollY),c.calculate_position(c.cache.active,c.get_cursor_position(d,"y")+f)}else c.calculate_position(c.cache.active,c.get_cursor_position(d,"x"))}c.remove_active_slider()}).on("change.fndtn.slider",function(a){c.settings.on_change()}),c.S(b).on("resize.fndtn.slider",c.throttle(function(a){c.reflow()},300)),this.S("["+this.attr_name()+"]").each(function(){var b=a(this),d=b.children(".range-slider-handle")[0],e=c.initialize_settings(d);""!=e.display_selector&&a(e.display_selector).each(function(){a(this).attr("value")&&a(this).off("change").on("change",function(){b.foundation("slider","set_value",a(this).val())})})})},get_cursor_position:function(a,b){var c,d="page"+b.toUpperCase(),e="client"+b.toUpperCase();return"undefined"!=typeof a[d]?c=a[d]:"undefined"!=typeof a.originalEvent[e]?c=a.originalEvent[e]:a.originalEvent.touches&&a.originalEvent.touches[0]&&"undefined"!=typeof a.originalEvent.touches[0][e]?c=a.originalEvent.touches[0][e]:a.currentPoint&&"undefined"!=typeof a.currentPoint[b]&&(c=a.currentPoint[b]),c},set_active_slider:function(a){this.cache.active=a},remove_active_slider:function(){this.cache.active=null},calculate_position:function(b,c){var d=this,e=a.data(b[0],"settings"),f=(a.data(b[0],"handle_l"),a.data(b[0],"handle_o"),a.data(b[0],"bar_l")),g=a.data(b[0],"bar_o");requestAnimationFrame(function(){var a;a=Foundation.rtl&&!e.vertical?d.limit_to((g+f-c)/f,0,1):d.limit_to((c-g)/f,0,1),a=e.vertical?1-a:a;var h=d.normalized_value(a,e.start,e.end,e.step,e.precision);d.set_ui(b,h)})},set_ui:function(b,c){var d=a.data(b[0],"settings"),e=a.data(b[0],"handle_l"),f=a.data(b[0],"bar_l"),g=this.normalized_percentage(c,d.start,d.end),h=g*(f-e)-1,i=100*g,j=b.parent(),k=b.parent().children("input[type=hidden]");Foundation.rtl&&!d.vertical&&(h=-h),h=d.vertical?-h+f-e+1:h,this.set_translate(b,h,d.vertical),d.vertical?b.siblings(".range-slider-active-segment").css("height",i+"%"):b.siblings(".range-slider-active-segment").css("width",i+"%"),j.attr(this.attr_name(),c).trigger("change.fndtn.slider"),k.val(c),d.trigger_input_change&&k.trigger("change.fndtn.slider"),b[0].hasAttribute("aria-valuemin")||b.attr({"aria-valuemin":d.start,"aria-valuemax":d.end}),b.attr("aria-valuenow",c),""!=d.display_selector&&a(d.display_selector).each(function(){this.hasAttribute("value")?a(this).val(c):a(this).text(c)})},normalized_percentage:function(a,b,c){return Math.min(1,(a-b)/(c-b))},normalized_value:function(a,b,c,d,e){var f=c-b,g=a*f,h=(g-g%d)/d,i=g%d,j=i>=.5*d?d:0;return(h*d+j+b).toFixed(e)},set_translate:function(b,c,d){d?a(b).css("-webkit-transform","translateY("+c+"px)").css("-moz-transform","translateY("+c+"px)").css("-ms-transform","translateY("+c+"px)").css("-o-transform","translateY("+c+"px)").css("transform","translateY("+c+"px)"):a(b).css("-webkit-transform","translateX("+c+"px)").css("-moz-transform","translateX("+c+"px)").css("-ms-transform","translateX("+c+"px)").css("-o-transform","translateX("+c+"px)").css("transform","translateX("+c+"px)")},limit_to:function(a,b,c){return Math.min(Math.max(a,b),c)},initialize_settings:function(b){var c,d=a.extend({},this.settings,this.data_options(a(b).parent()));return null===d.precision&&(c=(""+d.step).match(/\.([\d]*)/),d.precision=c&&c[1]?c[1].length:0),d.vertical?(a.data(b,"bar_o",a(b).parent().offset().top),a.data(b,"bar_l",a(b).parent().outerHeight()),a.data(b,"handle_o",a(b).offset().top),a.data(b,"handle_l",a(b).outerHeight())):(a.data(b,"bar_o",a(b).parent().offset().left),a.data(b,"bar_l",a(b).parent().outerWidth()),a.data(b,"handle_o",a(b).offset().left),a.data(b,"handle_l",a(b).outerWidth())),a.data(b,"bar",a(b).parent()),a.data(b,"settings",d)},set_initial_position:function(b){var c=a.data(b.children(".range-slider-handle")[0],"settings"),d="number"!=typeof c.initial||isNaN(c.initial)?Math.floor(.5*(c.end-c.start)/c.step)*c.step+c.start:c.initial,e=b.children(".range-slider-handle");this.set_ui(e,d)},set_value:function(b){var c=this;a("["+c.attr_name()+"]",this.scope).each(function(){a(this).attr(c.attr_name(),b)}),a(this.scope).attr(c.attr_name())&&a(this.scope).attr(c.attr_name(),b),c.reflow()},reflow:function(){var b=this;b.S("["+this.attr_name()+"]").each(function(){var c=a(this).children(".range-slider-handle")[0],d=a(this).attr(b.attr_name());b.initialize_settings(c),d?b.set_ui(a(c),parseFloat(d)):b.set_initial_position(a(this))})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.tab={name:"tab",version:"5.5.3",settings:{active_class:"active",callback:function(){},deep_linking:!1,scroll_to_content:!0,is_hover:!1},default_tab_hashes:[],init:function(a,b,c){var d=this,e=this.S;e("["+this.attr_name()+"] > .active > a",this.scope).each(function(){d.default_tab_hashes.push(this.hash)}),this.bindings(b,c),this.handle_location_hash_change()},events:function(){var a=this,c=this.S,d=function(b,d){var e=c(d).closest("["+a.attr_name()+"]").data(a.attr_name(!0)+"-init");if(!e.is_hover||Modernizr.touch){var f=b.keyCode||b.which;9!==f&&(b.preventDefault(),b.stopPropagation()),a.toggle_active_tab(c(d).parent())}};c(this.scope).off(".tab").on("keydown.fndtn.tab","["+this.attr_name()+"] > * > a",function(a){var b=a.keyCode||a.which;if(13===b||32===b){var c=this;d(a,c)}}).on("click.fndtn.tab","["+this.attr_name()+"] > * > a",function(a){var b=this;d(a,b)}).on("mouseenter.fndtn.tab","["+this.attr_name()+"] > * > a",function(b){var d=c(this).closest("["+a.attr_name()+"]").data(a.attr_name(!0)+"-init");d.is_hover&&a.toggle_active_tab(c(this).parent())}),c(b).on("hashchange.fndtn.tab",function(b){b.preventDefault(),a.handle_location_hash_change()})},handle_location_hash_change:function(){var b=this,c=this.S;c("["+this.attr_name()+"]",this.scope).each(function(){var e=c(this).data(b.attr_name(!0)+"-init");if(e.deep_linking){var f;if(f=e.scroll_to_content?b.scope.location.hash:b.scope.location.hash.replace("fndtn-",""),""!=f){var g=c(f);if(g.hasClass("content")&&g.parent().hasClass("tabs-content"))b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href="+f+"]").parent());else{var h=g.closest(".content").attr("id");h!=d&&b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href=#"+h+"]").parent(),f)}}else for(var i=0;i<b.default_tab_hashes.length;i++)b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href="+b.default_tab_hashes[i]+"]").parent())}})},toggle_active_tab:function(e,f){var g=this,h=g.S,i=e.closest("["+this.attr_name()+"]"),j=e.find("a"),k=e.children("a").first(),l="#"+k.attr("href").split("#")[1],m=h(l),n=e.siblings(),o=i.data(this.attr_name(!0)+"-init"),p=function(b){var d,e=a(this),f=a(this).parents("li").prev().children('[role="tab"]'),g=a(this).parents("li").next().children('[role="tab"]');switch(b.keyCode){case 37:d=f;break;case 39:d=g;break;default:d=!1}d.length&&(e.attr({tabindex:"-1","aria-selected":null}),d.attr({tabindex:"0","aria-selected":!0}).focus()),a('[role="tabpanel"]').attr("aria-hidden","true"),a("#"+a(c.activeElement).attr("href").substring(1)).attr("aria-hidden",null)},q=function(a){var c=o.scroll_to_content?g.default_tab_hashes[0]:"fndtn-"+g.default_tab_hashes[0].replace("#","");(a!==c||b.location.hash)&&(b.location.hash=a)};k.data("tab-content")&&(l="#"+k.data("tab-content").split("#")[1],m=h(l)),o.deep_linking&&(o.scroll_to_content?(q(f||l),f==d||f==l?e.parent()[0].scrollIntoView():h(l)[0].scrollIntoView()):q(f!=d?"fndtn-"+f.replace("#",""):"fndtn-"+l.replace("#",""))),e.addClass(o.active_class).triggerHandler("opened"),j.attr({"aria-selected":"true",tabindex:0}),n.removeClass(o.active_class),n.find("a").attr({"aria-selected":"false"}),m.siblings().removeClass(o.active_class).attr({"aria-hidden":"true"}),m.addClass(o.active_class).attr("aria-hidden","false").removeAttr("tabindex"),o.callback(e),m.triggerHandler("toggled",[m]),i.triggerHandler("toggled",[e]),j.off("keydown").on("keydown",p)},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},off:function(){},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.tooltip={name:"tooltip",version:"5.5.3",settings:{additional_inheritable_classes:[],tooltip_class:".tooltip",append_to:"body",touch_close_text:"Tap To Close",disable_for_touch:!1,hover_delay:200,fade_in_duration:150,fade_out_duration:150,show_on:"all",tip_template:function(a,b){return'<span data-selector="'+a+'" id="'+a+'" class="'+Foundation.libs.tooltip.settings.tooltip_class.substring(1)+'" role="tooltip">'+b+'<span class="nub"></span></span>'}},cache:{},init:function(a,b,c){Foundation.inherit(this,"random_str"),this.bindings(b,c)},should_show:function(b,c){var d=a.extend({},this.settings,this.data_options(b));return"all"===d.show_on?!0:this.small()&&"small"===d.show_on?!0:this.medium()&&"medium"===d.show_on?!0:this.large()&&"large"===d.show_on?!0:!1},medium:function(){return matchMedia(Foundation.media_queries.medium).matches},large:function(){return matchMedia(Foundation.media_queries.large).matches},events:function(b){function c(a,b,c){a.timer||(c?(a.timer=null,e.showTip(b)):a.timer=setTimeout(function(){a.timer=null,e.showTip(b)}.bind(a),e.settings.hover_delay))}function d(a,b){a.timer&&(clearTimeout(a.timer),a.timer=null),e.hide(b)}var e=this,f=e.S;e.create(this.S(b)),a(this.scope).off(".tooltip").on("mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"]",function(b){var g=f(this),h=a.extend({},e.settings,e.data_options(g)),i=!1;if(Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&f(b.target).is("a"))return!1;if(/mouse/i.test(b.type)&&e.ie_touch(b))return!1;if(g.hasClass("open"))Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&b.preventDefault(),e.hide(g);else{if(h.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type))return;if(!h.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&(b.preventDefault(),f(h.tooltip_class+".open").hide(),i=!0,a(".open["+e.attr_name()+"]").length>0)){var j=f(a(".open["+e.attr_name()+"]")[0]);e.hide(j)}/enter|over/i.test(b.type)?c(this,g):"mouseout"===b.type||"mouseleave"===b.type?d(this,g):c(this,g,!0)}}).on("mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"].open",function(b){return/mouse/i.test(b.type)&&e.ie_touch(b)?!1:void(("touch"!=a(this).data("tooltip-open-event-type")||"mouseleave"!=b.type)&&("mouse"==a(this).data("tooltip-open-event-type")&&/MSPointerDown|touchstart/i.test(b.type)?e.convert_to_touch(a(this)):d(this,a(this))))}).on("DOMNodeRemoved DOMAttrModified","["+this.attr_name()+"]:not(a)",function(a){d(this,f(this))})},ie_touch:function(a){return!1},showTip:function(a){var b=this.getTip(a);return this.should_show(a,b)?this.show(a):void 0},getTip:function(b){var c=this.selector(b),d=a.extend({},this.settings,this.data_options(b)),e=null;return c&&(e=this.S('span[data-selector="'+c+'"]'+d.tooltip_class)),"object"==typeof e?e:!1},selector:function(a){var b=a.attr(this.attr_name())||a.attr("data-selector");return"string"!=typeof b&&(b=this.random_str(6),a.attr("data-selector",b).attr("aria-describedby",b)),b},create:function(c){var d=this,e=a.extend({},this.settings,this.data_options(c)),f=this.settings.tip_template;"string"==typeof e.tip_template&&b.hasOwnProperty(e.tip_template)&&(f=b[e.tip_template]);
+var g=a(f(this.selector(c),a("<div></div>").html(c.attr("title")).html())),h=this.inheritable_classes(c);g.addClass(h).appendTo(e.append_to),Modernizr.touch&&(g.append('<span class="tap-to-close">'+e.touch_close_text+"</span>"),g.on("touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip",function(a){d.hide(c)})),c.removeAttr("title").attr("title","")},reposition:function(b,c,d){var e,f,g,h,i;c.css("visibility","hidden").show(),e=b.data("width"),f=c.children(".nub"),g=f.outerHeight(),h=f.outerWidth(),this.small()?c.css({width:"100%"}):c.css({width:e?e:"auto"}),i=function(a,b,c,d,e,f){return a.css({top:b?b:"auto",bottom:d?d:"auto",left:e?e:"auto",right:c?c:"auto"}).end()};var j=b.offset().top,k=b.offset().left,l=b.outerHeight();if(i(c,j+l+10,"auto","auto",k),this.small())i(c,j+l+10,"auto","auto",12.5,a(this.scope).width()),c.addClass("tip-override"),i(f,-g,"auto","auto",k);else{Foundation.rtl&&(f.addClass("rtl"),k=k+b.outerWidth()-c.outerWidth()),i(c,j+l+10,"auto","auto",k),f.attr("style")&&f.removeAttr("style"),c.removeClass("tip-override");var m=c.outerHeight();d&&d.indexOf("tip-top")>-1?(Foundation.rtl&&f.addClass("rtl"),i(c,j-m,"auto","auto",k).removeClass("tip-override")):d&&d.indexOf("tip-left")>-1?(i(c,j+l/2-m/2,"auto","auto",k-c.outerWidth()-g).removeClass("tip-override"),f.removeClass("rtl")):d&&d.indexOf("tip-right")>-1&&(i(c,j+l/2-m/2,"auto","auto",k+b.outerWidth()+g).removeClass("tip-override"),f.removeClass("rtl"))}c.css("visibility","visible").hide()},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},inheritable_classes:function(b){var c=a.extend({},this.settings,this.data_options(b)),d=["tip-top","tip-left","tip-bottom","tip-right","radius","round"].concat(c.additional_inheritable_classes),e=b.attr("class"),f=e?a.map(e.split(" "),function(b,c){return-1!==a.inArray(b,d)?b:void 0}).join(" "):"";return a.trim(f)},convert_to_touch:function(b){var c=this,d=c.getTip(b),e=a.extend({},c.settings,c.data_options(b));0===d.find(".tap-to-close").length&&(d.append('<span class="tap-to-close">'+e.touch_close_text+"</span>"),d.on("click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose",function(a){c.hide(b)})),b.data("tooltip-open-event-type","touch")},show:function(a){var b=this.getTip(a);"touch"==a.data("tooltip-open-event-type")&&this.convert_to_touch(a),this.reposition(a,b,a.attr("class")),a.addClass("open"),b.fadeIn(this.settings.fade_in_duration)},hide:function(a){var b=this.getTip(a);b.fadeOut(this.settings.fade_out_duration,function(){b.find(".tap-to-close").remove(),b.off("click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose"),a.removeClass("open")})},off:function(){var b=this;this.S(this.scope).off(".fndtn.tooltip"),this.S(this.settings.tooltip_class).each(function(c){a("["+b.attr_name()+"]").eq(c).attr("title",a(this).text())}).remove()},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.topbar={name:"topbar",version:"5.5.3",settings:{index:0,start_offset:0,sticky_class:"sticky",custom_back_text:!0,back_text:"Back",mobile_show_parent_link:!0,is_hover:!0,scrolltop:!0,sticky_on:"all",dropdown_autoclose:!0},init:function(b,c,d){Foundation.inherit(this,"add_custom_rule register_media throttle");var e=this;e.register_media("topbar","foundation-mq-topbar"),this.bindings(c,d),e.S("["+this.attr_name()+"]",this.scope).each(function(){var b=a(this),c=b.data(e.attr_name(!0)+"-init");e.S("section, .top-bar-section",this);b.data("index",0);var d=b.parent();d.hasClass("fixed")||e.is_sticky(b,d,c)?(e.settings.sticky_class=c.sticky_class,e.settings.sticky_topbar=b,b.data("height",d.outerHeight()),b.data("stickyoffset",d.offset().top)):b.data("height",b.outerHeight()),c.assembled||e.assemble(b),c.is_hover?e.S(".has-dropdown",b).addClass("not-click"):e.S(".has-dropdown",b).removeClass("not-click"),e.add_custom_rule(".f-topbar-fixed { padding-top: "+b.data("height")+"px }"),d.hasClass("fixed")&&e.S("body").addClass("f-topbar-fixed")})},is_sticky:function(a,b,c){var d=b.hasClass(c.sticky_class),e=matchMedia(Foundation.media_queries.small).matches,f=matchMedia(Foundation.media_queries.medium).matches,g=matchMedia(Foundation.media_queries.large).matches;return d&&"all"===c.sticky_on?!0:d&&this.small()&&-1!==c.sticky_on.indexOf("small")&&e&&!f&&!g?!0:d&&this.medium()&&-1!==c.sticky_on.indexOf("medium")&&e&&f&&!g?!0:d&&this.large()&&-1!==c.sticky_on.indexOf("large")&&e&&f&&g?!0:!1},toggle:function(c){var d,e=this;d=c?e.S(c).closest("["+this.attr_name()+"]"):e.S("["+this.attr_name()+"]");var f=d.data(this.attr_name(!0)+"-init"),g=e.S("section, .top-bar-section",d);e.breakpoint()&&(e.rtl?(g.css({right:"0%"}),a(">.name",g).css({right:"100%"})):(g.css({left:"0%"}),a(">.name",g).css({left:"100%"})),e.S("li.moved",g).removeClass("moved"),d.data("index",0),d.toggleClass("expanded").css("height","")),f.scrolltop?d.hasClass("expanded")?d.parent().hasClass("fixed")&&(f.scrolltop?(d.parent().removeClass("fixed"),d.addClass("fixed"),e.S("body").removeClass("f-topbar-fixed"),b.scrollTo(0,0)):d.parent().removeClass("expanded")):d.hasClass("fixed")&&(d.parent().addClass("fixed"),d.removeClass("fixed"),e.S("body").addClass("f-topbar-fixed")):(e.is_sticky(d,d.parent(),f)&&d.parent().addClass("fixed"),d.parent().hasClass("fixed")&&(d.hasClass("expanded")?(d.addClass("fixed"),d.parent().addClass("expanded"),e.S("body").addClass("f-topbar-fixed")):(d.removeClass("fixed"),d.parent().removeClass("expanded"),e.update_sticky_positioning())))},timer:null,events:function(c){var d=this,e=this.S;e(this.scope).off(".topbar").on("click.fndtn.topbar","["+this.attr_name()+"] .toggle-topbar",function(a){a.preventDefault(),d.toggle(this)}).on("click.fndtn.topbar contextmenu.fndtn.topbar",'.top-bar .top-bar-section li a[href^="#"],['+this.attr_name()+'] .top-bar-section li a[href^="#"]',function(b){var c=a(this).closest("li"),e=c.closest("["+d.attr_name()+"]"),f=e.data(d.attr_name(!0)+"-init");if(f.dropdown_autoclose&&f.is_hover){var g=a(this).closest(".hover");g.removeClass("hover")}!d.breakpoint()||c.hasClass("back")||c.hasClass("has-dropdown")||d.toggle()}).on("click.fndtn.topbar","["+this.attr_name()+"] li.has-dropdown",function(b){var c=e(this),f=e(b.target),g=c.closest("["+d.attr_name()+"]"),h=g.data(d.attr_name(!0)+"-init");return f.data("revealId")?void d.toggle():void(d.breakpoint()||(!h.is_hover||Modernizr.touch)&&(b.stopImmediatePropagation(),c.hasClass("hover")?(c.removeClass("hover").find("li").removeClass("hover"),c.parents("li.hover").removeClass("hover")):(c.addClass("hover"),a(c).siblings().removeClass("hover"),"A"===f[0].nodeName&&f.parent().hasClass("has-dropdown")&&b.preventDefault())))}).on("click.fndtn.topbar","["+this.attr_name()+"] .has-dropdown>a",function(a){if(d.breakpoint()){a.preventDefault();var b=e(this),c=b.closest("["+d.attr_name()+"]"),f=c.find("section, .top-bar-section"),g=(b.next(".dropdown").outerHeight(),b.closest("li"));c.data("index",c.data("index")+1),g.addClass("moved"),d.rtl?(f.css({right:-(100*c.data("index"))+"%"}),f.find(">.name").css({right:100*c.data("index")+"%"})):(f.css({left:-(100*c.data("index"))+"%"}),f.find(">.name").css({left:100*c.data("index")+"%"})),c.css("height",b.siblings("ul").outerHeight(!0)+c.data("height"))}}),e(b).off(".topbar").on("resize.fndtn.topbar",d.throttle(function(){d.resize.call(d)},50)).trigger("resize.fndtn.topbar").load(function(){e(this).trigger("resize.fndtn.topbar")}),e("body").off(".topbar").on("click.fndtn.topbar",function(a){var b=e(a.target).closest("li").closest("li.hover");b.length>0||e("["+d.attr_name()+"] li.hover").removeClass("hover")}),e(this.scope).on("click.fndtn.topbar","["+this.attr_name()+"] .has-dropdown .back",function(a){a.preventDefault();var b=e(this),c=b.closest("["+d.attr_name()+"]"),f=c.find("section, .top-bar-section"),g=(c.data(d.attr_name(!0)+"-init"),b.closest("li.moved")),h=g.parent();c.data("index",c.data("index")-1),d.rtl?(f.css({right:-(100*c.data("index"))+"%"}),f.find(">.name").css({right:100*c.data("index")+"%"})):(f.css({left:-(100*c.data("index"))+"%"}),f.find(">.name").css({left:100*c.data("index")+"%"})),0===c.data("index")?c.css("height",""):c.css("height",h.outerHeight(!0)+c.data("height")),setTimeout(function(){g.removeClass("moved")},300)}),e(this.scope).find(".dropdown a").focus(function(){a(this).parents(".has-dropdown").addClass("hover")}).blur(function(){a(this).parents(".has-dropdown").removeClass("hover")})},resize:function(){var a=this;a.S("["+this.attr_name()+"]").each(function(){var b,d=a.S(this),e=d.data(a.attr_name(!0)+"-init"),f=d.parent("."+a.settings.sticky_class);if(!a.breakpoint()){var g=d.hasClass("expanded");d.css("height","").removeClass("expanded").find("li").removeClass("hover"),g&&a.toggle(d)}a.is_sticky(d,f,e)&&(f.hasClass("fixed")?(f.removeClass("fixed"),b=f.offset().top,a.S(c.body).hasClass("f-topbar-fixed")&&(b-=d.data("height")),d.data("stickyoffset",b),f.addClass("fixed")):(b=f.offset().top,d.data("stickyoffset",b)))})},breakpoint:function(){return!matchMedia(Foundation.media_queries.topbar).matches},small:function(){return matchMedia(Foundation.media_queries.small).matches},medium:function(){return matchMedia(Foundation.media_queries.medium).matches},large:function(){return matchMedia(Foundation.media_queries.large).matches},assemble:function(b){var c=this,d=b.data(this.attr_name(!0)+"-init"),e=c.S("section, .top-bar-section",b);e.detach(),c.S(".has-dropdown>a",e).each(function(){var b,e=c.S(this),f=e.siblings(".dropdown"),g=e.attr("href");f.find(".title.back").length||(b=a(1==d.mobile_show_parent_link&&g?'<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="'+g+'">'+e.html()+"</a></li>":'<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>'),1==d.custom_back_text?a("h5>a",b).html(d.back_text):a("h5>a",b).html("&laquo; "+e.html()),f.prepend(b))}),e.appendTo(b),this.sticky(),this.assembled(b)},assembled:function(b){b.data(this.attr_name(!0),a.extend({},b.data(this.attr_name(!0)),{assembled:!0}))},height:function(b){var c=0,d=this;return a("> li",b).each(function(){c+=d.S(this).outerHeight(!0)}),c},sticky:function(){var a=this;this.S(b).on("scroll",function(){a.update_sticky_positioning()})},update_sticky_positioning:function(){var a="."+this.settings.sticky_class,c=this.S(b),d=this;if(d.settings.sticky_topbar&&d.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(),this.settings)){var e=this.settings.sticky_topbar.data("stickyoffset")+this.settings.start_offset;d.S(a).hasClass("expanded")||(c.scrollTop()>e?d.S(a).hasClass("fixed")||(d.S(a).addClass("fixed"),d.S("body").addClass("f-topbar-fixed")):c.scrollTop()<=e&&d.S(a).hasClass("fixed")&&(d.S(a).removeClass("fixed"),d.S("body").removeClass("f-topbar-fixed")))}},off:function(){this.S(this.scope).off(".fndtn.topbar"),this.S(b).off(".fndtn.topbar")},reflow:function(){}}}(jQuery,window,window.document);;// Load foundation
+$(document).foundation();
+$(document).ready(function () {
+    $('ul.children').each(function () {
+        $(this).before('<a class="toggle" href="#"></a>');
+    });
+    $('a.toggle').click('click', function () {
+        $(this).toggleClass('open');
+        $(this).siblings('ul').toggleClass('open');
+    });
+  
+        
+    //move the last list item before the first item. The purpose of this is if the user clicks previous he will be able to see the last item.  
+
+    //when user clicks the image for sliding right  
+    var event_feed = $("#feed");
+    var event_rotate = $(".rotate");
+    event_rotate.find("button").addClass("view-all");
+    event_feed.addClass("feed");
+    event_feed.children("div").addClass("feed-block");
+
+    Array.max = function( array ){
+        return Math.max.apply( Math, array );
+    };
+
+    var event_header_heights = [];
+    $(event_feed).find('div').each( function () {
+         var event_header = $(this).find('h6');
+         event_header_heights.push(event_header.height());
+    });
+
+    var header_height_max = Array.max(event_header_heights);
+
+     // replace the event's img element with a wrapper div that has a background image of the same src
+     $(event_feed).find("div").each( function () {
+        var event_header = $(this).find('h6');
+        var prev = $(this).prev();
+        var next = $(this).next();
+
+         event_header.css("height", header_height_max + "px");
+
+        var img_src = $(this).find("img").attr('src');
+        $(this).find('img').wrap("<div style='background: url(" + img_src + ") no-repeat center center;background-size: cover;' class='image-container'></div>");
+        $(this).find('img').remove();
+
+    });
+    
+//     changing the img tag for category view from a source to having a background to make the sizes uniform .attachment-shop_single
+    $(".attachment-shop_catalog").each( function () {
+        $(this).wrap('<div class="image_wrapper"></div>');
+    });
+    
+    $(".image_wrapper").each( function () {
+        var src = $(this).find('img').attr("src"); 
+        $(this).css("height", 175).css("width", 'auto');
+        $(this).css("background", 'url(' + src + ') no-repeat center center').css("background-size", "cover");
+        $(this).find('img').remove();
+    });
+    
+    var products = $("ul.products");
+    products.find("li").each( function () {
+       $(this).addClass("data-equalizer-watch"); 
+    }); 
+
+    $("#tab-description").find("h2:contains('Product Description')").remove();
+    $(".html5_video_tab").find('a').html("Video");
+    
+    // wrap every 3 li elements in a div class=row so we can add data equalizer
+    var divs = $("ul.products > li");
+    for(var i = 0; i < divs.length; i+=3) {
+        divs.slice(i, i+3).wrapAll("<div class='row categories data-equalizer'></div>");
+    }
+
+    // change breadcrumbs 'products' to 'experiences'
+    $(".post-product-archive").find('span').text('Tours');
+    
+    $("[property=name]:contains('Products')").html('Tours');
+
+    $("a.product_image_link").fancybox({
+
+         helpers: {
+            overlay: { locked: false },
+             title: { type: 'inside'},
+        },
+        afterLoad: function(){
+            this.title = $(this.element).find('img').attr('alt');
+        }
+    });
+    
+    $(".st_sharethis").insertAfter(".images");
+
+    $(".tag_image").each( function () {
+       $(this).on("click", function () {
+           window.location.href = $(this).siblings('a').attr("href")
+       });
+    });
+    
+    $(".categories").find(".type-product").each( function (){
+        $(this).find('small').insertAfter($(this).find('h3'));
+    });
+    
+    if ($(".form-confirmation").length > 0){
+        $("div.breadcrumbs").css("margin-bottom", "25px")
+        $(".form-confirmation").insertAfter("div.breadcrumbs");
+    }
+    
+    $(".blocks").find('a').removeAttr("target");
+    
+    if ($.trim($("#tab-html5_video").text()).length === 0){
+        $(".html5_video_tab").remove();
+    }
+    if ($.trim($("#tab-itinerary_tab").text()).length === 0){
+        $(".itinerary_tab_tab").remove();
+    } 
+});
diff --git a/js/custom/pageSetup.js b/js/custom/pageSetup.js
new file mode 100644 (file)
index 0000000..03ea78f
--- /dev/null
@@ -0,0 +1,115 @@
+// Load foundation
+$(document).foundation();
+$(document).ready(function () {
+    $('ul.children').each(function () {
+        $(this).before('<a class="toggle" href="#"></a>');
+    });
+    $('a.toggle').click('click', function () {
+        $(this).toggleClass('open');
+        $(this).siblings('ul').toggleClass('open');
+    });
+  
+        
+    //move the last list item before the first item. The purpose of this is if the user clicks previous he will be able to see the last item.  
+
+    //when user clicks the image for sliding right  
+    var event_feed = $("#feed");
+    var event_rotate = $(".rotate");
+    event_rotate.find("button").addClass("view-all");
+    event_feed.addClass("feed");
+    event_feed.children("div").addClass("feed-block");
+
+    Array.max = function( array ){
+        return Math.max.apply( Math, array );
+    };
+
+    var event_header_heights = [];
+    $(event_feed).find('div').each( function () {
+         var event_header = $(this).find('h6');
+         event_header_heights.push(event_header.height());
+    });
+
+    var header_height_max = Array.max(event_header_heights);
+
+     // replace the event's img element with a wrapper div that has a background image of the same src
+     $(event_feed).find("div").each( function () {
+        var event_header = $(this).find('h6');
+        var prev = $(this).prev();
+        var next = $(this).next();
+
+         event_header.css("height", header_height_max + "px");
+
+        var img_src = $(this).find("img").attr('src');
+        $(this).find('img').wrap("<div style='background: url(" + img_src + ") no-repeat center center;background-size: cover;' class='image-container'></div>");
+        $(this).find('img').remove();
+
+    });
+    
+//     changing the img tag for category view from a source to having a background to make the sizes uniform .attachment-shop_single
+    $(".attachment-shop_catalog").each( function () {
+        $(this).wrap('<div class="image_wrapper"></div>');
+    });
+    
+    $(".image_wrapper").each( function () {
+        var src = $(this).find('img').attr("src"); 
+        $(this).css("height", 175).css("width", 'auto');
+        $(this).css("background", 'url(' + src + ') no-repeat center center').css("background-size", "cover");
+        $(this).find('img').remove();
+    });
+    
+    var products = $("ul.products");
+    products.find("li").each( function () {
+       $(this).addClass("data-equalizer-watch"); 
+    }); 
+
+    $("#tab-description").find("h2:contains('Product Description')").remove();
+    $(".html5_video_tab").find('a').html("Video");
+    
+    // wrap every 3 li elements in a div class=row so we can add data equalizer
+    var divs = $("ul.products > li");
+    for(var i = 0; i < divs.length; i+=3) {
+        divs.slice(i, i+3).wrapAll("<div class='row categories data-equalizer'></div>");
+    }
+
+    // change breadcrumbs 'products' to 'experiences'
+    $(".post-product-archive").find('span').text('Tours');
+    
+    $("[property=name]:contains('Products')").html('Tours');
+
+    $("a.product_image_link").fancybox({
+
+         helpers: {
+            overlay: { locked: false },
+             title: { type: 'inside'},
+        },
+        afterLoad: function(){
+            this.title = $(this.element).find('img').attr('alt');
+        }
+    });
+    
+    $(".st_sharethis").insertAfter(".images");
+
+    $(".tag_image").each( function () {
+       $(this).on("click", function () {
+           window.location.href = $(this).siblings('a').attr("href")
+       });
+    });
+    
+    $(".categories").find(".type-product").each( function (){
+        $(this).find('small').insertAfter($(this).find('h3'));
+    });
+    
+    if ($(".form-confirmation").length > 0){
+        $("div.breadcrumbs").css("margin-bottom", "25px")
+        $(".form-confirmation").insertAfter("div.breadcrumbs");
+    }
+    
+    $(".blocks").find('a').removeAttr("target");
+    
+    if ($.trim($("#tab-html5_video").text()).length === 0){
+        $(".html5_video_tab").remove();
+    }
+    if ($.trim($("#tab-itinerary_tab").text()).length === 0){
+        $(".itinerary_tab_tab").remove();
+    } 
+});
diff --git a/js/dollarsign.js b/js/dollarsign.js
new file mode 100644 (file)
index 0000000..2d7a2e9
--- /dev/null
@@ -0,0 +1,6 @@
+/*
+ * To avoid conflicts, Wordpress tends to prefer jQuery being used over $.
+ * As long as this file is included, no such conflicts should arise. Ensure it
+ * is called before other .js files using $.
+ */
+var $=jQuery.noConflict();
\ No newline at end of file
diff --git a/js/fastclick/lib/fastclick.js b/js/fastclick/lib/fastclick.js
new file mode 100644 (file)
index 0000000..3af4f9d
--- /dev/null
@@ -0,0 +1,841 @@
+;(function () {
+       'use strict';
+
+       /**
+        * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.
+        *
+        * @codingstandard ftlabs-jsv2
+        * @copyright The Financial Times Limited [All Rights Reserved]
+        * @license MIT License (see LICENSE.txt)
+        */
+
+       /*jslint browser:true, node:true*/
+       /*global define, Event, Node*/
+
+
+       /**
+        * Instantiate fast-clicking listeners on the specified layer.
+        *
+        * @constructor
+        * @param {Element} layer The layer to listen on
+        * @param {Object} [options={}] The options to override the defaults
+        */
+       function FastClick(layer, options) {
+               var oldOnClick;
+
+               options = options || {};
+
+               /**
+                * Whether a click is currently being tracked.
+                *
+                * @type boolean
+                */
+               this.trackingClick = false;
+
+
+               /**
+                * Timestamp for when click tracking started.
+                *
+                * @type number
+                */
+               this.trackingClickStart = 0;
+
+
+               /**
+                * The element being tracked for a click.
+                *
+                * @type EventTarget
+                */
+               this.targetElement = null;
+
+
+               /**
+                * X-coordinate of touch start event.
+                *
+                * @type number
+                */
+               this.touchStartX = 0;
+
+
+               /**
+                * Y-coordinate of touch start event.
+                *
+                * @type number
+                */
+               this.touchStartY = 0;
+
+
+               /**
+                * ID of the last touch, retrieved from Touch.identifier.
+                *
+                * @type number
+                */
+               this.lastTouchIdentifier = 0;
+
+
+               /**
+                * Touchmove boundary, beyond which a click will be cancelled.
+                *
+                * @type number
+                */
+               this.touchBoundary = options.touchBoundary || 10;
+
+
+               /**
+                * The FastClick layer.
+                *
+                * @type Element
+                */
+               this.layer = layer;
+
+               /**
+                * The minimum time between tap(touchstart and touchend) events
+                *
+                * @type number
+                */
+               this.tapDelay = options.tapDelay || 200;
+
+               /**
+                * The maximum time for a tap
+                *
+                * @type number
+                */
+               this.tapTimeout = options.tapTimeout || 700;
+
+               if (FastClick.notNeeded(layer)) {
+                       return;
+               }
+
+               // Some old versions of Android don't have Function.prototype.bind
+               function bind(method, context) {
+                       return function() { return method.apply(context, arguments); };
+               }
+
+
+               var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel'];
+               var context = this;
+               for (var i = 0, l = methods.length; i < l; i++) {
+                       context[methods[i]] = bind(context[methods[i]], context);
+               }
+
+               // Set up event handlers as required
+               if (deviceIsAndroid) {
+                       layer.addEventListener('mouseover', this.onMouse, true);
+                       layer.addEventListener('mousedown', this.onMouse, true);
+                       layer.addEventListener('mouseup', this.onMouse, true);
+               }
+
+               layer.addEventListener('click', this.onClick, true);
+               layer.addEventListener('touchstart', this.onTouchStart, false);
+               layer.addEventListener('touchmove', this.onTouchMove, false);
+               layer.addEventListener('touchend', this.onTouchEnd, false);
+               layer.addEventListener('touchcancel', this.onTouchCancel, false);
+
+               // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)
+               // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick
+               // layer when they are cancelled.
+               if (!Event.prototype.stopImmediatePropagation) {
+                       layer.removeEventListener = function(type, callback, capture) {
+                               var rmv = Node.prototype.removeEventListener;
+                               if (type === 'click') {
+                                       rmv.call(layer, type, callback.hijacked || callback, capture);
+                               } else {
+                                       rmv.call(layer, type, callback, capture);
+                               }
+                       };
+
+                       layer.addEventListener = function(type, callback, capture) {
+                               var adv = Node.prototype.addEventListener;
+                               if (type === 'click') {
+                                       adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) {
+                                               if (!event.propagationStopped) {
+                                                       callback(event);
+                                               }
+                                       }), capture);
+                               } else {
+                                       adv.call(layer, type, callback, capture);
+                               }
+                       };
+               }
+
+               // If a handler is already declared in the element's onclick attribute, it will be fired before
+               // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and
+               // adding it as listener.
+               if (typeof layer.onclick === 'function') {
+
+                       // Android browser on at least 3.2 requires a new reference to the function in layer.onclick
+                       // - the old one won't work if passed to addEventListener directly.
+                       oldOnClick = layer.onclick;
+                       layer.addEventListener('click', function(event) {
+                               oldOnClick(event);
+                       }, false);
+                       layer.onclick = null;
+               }
+       }
+
+       /**
+       * Windows Phone 8.1 fakes user agent string to look like Android and iPhone.
+       *
+       * @type boolean
+       */
+       var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0;
+
+       /**
+        * Android requires exceptions.
+        *
+        * @type boolean
+        */
+       var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone;
+
+
+       /**
+        * iOS requires exceptions.
+        *
+        * @type boolean
+        */
+       var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone;
+
+
+       /**
+        * iOS 4 requires an exception for select elements.
+        *
+        * @type boolean
+        */
+       var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent);
+
+
+       /**
+        * iOS 6.0-7.* requires the target element to be manually derived
+        *
+        * @type boolean
+        */
+       var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\d/).test(navigator.userAgent);
+
+       /**
+        * BlackBerry requires exceptions.
+        *
+        * @type boolean
+        */
+       var deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0;
+
+       /**
+        * Determine whether a given element requires a native click.
+        *
+        * @param {EventTarget|Element} target Target DOM element
+        * @returns {boolean} Returns true if the element needs a native click
+        */
+       FastClick.prototype.needsClick = function(target) {
+               switch (target.nodeName.toLowerCase()) {
+
+               // Don't send a synthetic click to disabled inputs (issue #62)
+               case 'button':
+               case 'select':
+               case 'textarea':
+                       if (target.disabled) {
+                               return true;
+                       }
+
+                       break;
+               case 'input':
+
+                       // File inputs need real clicks on iOS 6 due to a browser bug (issue #68)
+                       if ((deviceIsIOS && target.type === 'file') || target.disabled) {
+                               return true;
+                       }
+
+                       break;
+               case 'label':
+               case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames
+               case 'video':
+                       return true;
+               }
+
+               return (/\bneedsclick\b/).test(target.className);
+       };
+
+
+       /**
+        * Determine whether a given element requires a call to focus to simulate click into element.
+        *
+        * @param {EventTarget|Element} target Target DOM element
+        * @returns {boolean} Returns true if the element requires a call to focus to simulate native click.
+        */
+       FastClick.prototype.needsFocus = function(target) {
+               switch (target.nodeName.toLowerCase()) {
+               case 'textarea':
+                       return true;
+               case 'select':
+                       return !deviceIsAndroid;
+               case 'input':
+                       switch (target.type) {
+                       case 'button':
+                       case 'checkbox':
+                       case 'file':
+                       case 'image':
+                       case 'radio':
+                       case 'submit':
+                               return false;
+                       }
+
+                       // No point in attempting to focus disabled inputs
+                       return !target.disabled && !target.readOnly;
+               default:
+                       return (/\bneedsfocus\b/).test(target.className);
+               }
+       };
+
+
+       /**
+        * Send a click event to the specified element.
+        *
+        * @param {EventTarget|Element} targetElement
+        * @param {Event} event
+        */
+       FastClick.prototype.sendClick = function(targetElement, event) {
+               var clickEvent, touch;
+
+               // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24)
+               if (document.activeElement && document.activeElement !== targetElement) {
+                       document.activeElement.blur();
+               }
+
+               touch = event.changedTouches[0];
+
+               // Synthesise a click event, with an extra attribute so it can be tracked
+               clickEvent = document.createEvent('MouseEvents');
+               clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);
+               clickEvent.forwardedTouchEvent = true;
+               targetElement.dispatchEvent(clickEvent);
+       };
+
+       FastClick.prototype.determineEventType = function(targetElement) {
+
+               //Issue #159: Android Chrome Select Box does not open with a synthetic click event
+               if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') {
+                       return 'mousedown';
+               }
+
+               return 'click';
+       };
+
+
+       /**
+        * @param {EventTarget|Element} targetElement
+        */
+       FastClick.prototype.focus = function(targetElement) {
+               var length;
+
+               // Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724.
+               if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') {
+                       length = targetElement.value.length;
+                       targetElement.setSelectionRange(length, length);
+               } else {
+                       targetElement.focus();
+               }
+       };
+
+
+       /**
+        * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it.
+        *
+        * @param {EventTarget|Element} targetElement
+        */
+       FastClick.prototype.updateScrollParent = function(targetElement) {
+               var scrollParent, parentElement;
+
+               scrollParent = targetElement.fastClickScrollParent;
+
+               // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the
+               // target element was moved to another parent.
+               if (!scrollParent || !scrollParent.contains(targetElement)) {
+                       parentElement = targetElement;
+                       do {
+                               if (parentElement.scrollHeight > parentElement.offsetHeight) {
+                                       scrollParent = parentElement;
+                                       targetElement.fastClickScrollParent = parentElement;
+                                       break;
+                               }
+
+                               parentElement = parentElement.parentElement;
+                       } while (parentElement);
+               }
+
+               // Always update the scroll top tracker if possible.
+               if (scrollParent) {
+                       scrollParent.fastClickLastScrollTop = scrollParent.scrollTop;
+               }
+       };
+
+
+       /**
+        * @param {EventTarget} targetElement
+        * @returns {Element|EventTarget}
+        */
+       FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) {
+
+               // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node.
+               if (eventTarget.nodeType === Node.TEXT_NODE) {
+                       return eventTarget.parentNode;
+               }
+
+               return eventTarget;
+       };
+
+
+       /**
+        * On touch start, record the position and scroll offset.
+        *
+        * @param {Event} event
+        * @returns {boolean}
+        */
+       FastClick.prototype.onTouchStart = function(event) {
+               var targetElement, touch, selection;
+
+               // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111).
+               if (event.targetTouches.length > 1) {
+                       return true;
+               }
+
+               targetElement = this.getTargetElementFromEventTarget(event.target);
+               touch = event.targetTouches[0];
+
+               if (deviceIsIOS) {
+
+                       // Only trusted events will deselect text on iOS (issue #49)
+                       selection = window.getSelection();
+                       if (selection.rangeCount && !selection.isCollapsed) {
+                               return true;
+                       }
+
+                       if (!deviceIsIOS4) {
+
+                               // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23):
+                               // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched
+                               // with the same identifier as the touch event that previously triggered the click that triggered the alert.
+                               // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an
+                               // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform.
+                               // Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string,
+                               // which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long,
+                               // random integers, it's safe to to continue if the identifier is 0 here.
+                               if (touch.identifier && touch.identifier === this.lastTouchIdentifier) {
+                                       event.preventDefault();
+                                       return false;
+                               }
+
+                               this.lastTouchIdentifier = touch.identifier;
+
+                               // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and:
+                               // 1) the user does a fling scroll on the scrollable layer
+                               // 2) the user stops the fling scroll with another tap
+                               // then the event.target of the last 'touchend' event will be the element that was under the user's finger
+                               // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check
+                               // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42).
+                               this.updateScrollParent(targetElement);
+                       }
+               }
+
+               this.trackingClick = true;
+               this.trackingClickStart = event.timeStamp;
+               this.targetElement = targetElement;
+
+               this.touchStartX = touch.pageX;
+               this.touchStartY = touch.pageY;
+
+               // Prevent phantom clicks on fast double-tap (issue #36)
+               if ((event.timeStamp - this.lastClickTime) < this.tapDelay) {
+                       event.preventDefault();
+               }
+
+               return true;
+       };
+
+
+       /**
+        * Based on a touchmove event object, check whether the touch has moved past a boundary since it started.
+        *
+        * @param {Event} event
+        * @returns {boolean}
+        */
+       FastClick.prototype.touchHasMoved = function(event) {
+               var touch = event.changedTouches[0], boundary = this.touchBoundary;
+
+               if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) {
+                       return true;
+               }
+
+               return false;
+       };
+
+
+       /**
+        * Update the last position.
+        *
+        * @param {Event} event
+        * @returns {boolean}
+        */
+       FastClick.prototype.onTouchMove = function(event) {
+               if (!this.trackingClick) {
+                       return true;
+               }
+
+               // If the touch has moved, cancel the click tracking
+               if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) {
+                       this.trackingClick = false;
+                       this.targetElement = null;
+               }
+
+               return true;
+       };
+
+
+       /**
+        * Attempt to find the labelled control for the given label element.
+        *
+        * @param {EventTarget|HTMLLabelElement} labelElement
+        * @returns {Element|null}
+        */
+       FastClick.prototype.findControl = function(labelElement) {
+
+               // Fast path for newer browsers supporting the HTML5 control attribute
+               if (labelElement.control !== undefined) {
+                       return labelElement.control;
+               }
+
+               // All browsers under test that support touch events also support the HTML5 htmlFor attribute
+               if (labelElement.htmlFor) {
+                       return document.getElementById(labelElement.htmlFor);
+               }
+
+               // If no for attribute exists, attempt to retrieve the first labellable descendant element
+               // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label
+               return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea');
+       };
+
+
+       /**
+        * On touch end, determine whether to send a click event at once.
+        *
+        * @param {Event} event
+        * @returns {boolean}
+        */
+       FastClick.prototype.onTouchEnd = function(event) {
+               var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement;
+
+               if (!this.trackingClick) {
+                       return true;
+               }
+
+               // Prevent phantom clicks on fast double-tap (issue #36)
+               if ((event.timeStamp - this.lastClickTime) < this.tapDelay) {
+                       this.cancelNextClick = true;
+                       return true;
+               }
+
+               if ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) {
+                       return true;
+               }
+
+               // Reset to prevent wrong click cancel on input (issue #156).
+               this.cancelNextClick = false;
+
+               this.lastClickTime = event.timeStamp;
+
+               trackingClickStart = this.trackingClickStart;
+               this.trackingClick = false;
+               this.trackingClickStart = 0;
+
+               // On some iOS devices, the targetElement supplied with the event is invalid if the layer
+               // is performing a transition or scroll, and has to be re-detected manually. Note that
+               // for this to function correctly, it must be called *after* the event target is checked!
+               // See issue #57; also filed as rdar://13048589 .
+               if (deviceIsIOSWithBadTarget) {
+                       touch = event.changedTouches[0];
+
+                       // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null
+                       targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement;
+                       targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent;
+               }
+
+               targetTagName = targetElement.tagName.toLowerCase();
+               if (targetTagName === 'label') {
+                       forElement = this.findControl(targetElement);
+                       if (forElement) {
+                               this.focus(targetElement);
+                               if (deviceIsAndroid) {
+                                       return false;
+                               }
+
+                               targetElement = forElement;
+                       }
+               } else if (this.needsFocus(targetElement)) {
+
+                       // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through.
+                       // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37).
+                       if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) {
+                               this.targetElement = null;
+                               return false;
+                       }
+
+                       this.focus(targetElement);
+                       this.sendClick(targetElement, event);
+
+                       // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open.
+                       // Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others)
+                       if (!deviceIsIOS || targetTagName !== 'select') {
+                               this.targetElement = null;
+                               event.preventDefault();
+                       }
+
+                       return false;
+               }
+
+               if (deviceIsIOS && !deviceIsIOS4) {
+
+                       // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled
+                       // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42).
+                       scrollParent = targetElement.fastClickScrollParent;
+                       if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) {
+                               return true;
+                       }
+               }
+
+               // Prevent the actual click from going though - unless the target node is marked as requiring
+               // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted.
+               if (!this.needsClick(targetElement)) {
+                       event.preventDefault();
+                       this.sendClick(targetElement, event);
+               }
+
+               return false;
+       };
+
+
+       /**
+        * On touch cancel, stop tracking the click.
+        *
+        * @returns {void}
+        */
+       FastClick.prototype.onTouchCancel = function() {
+               this.trackingClick = false;
+               this.targetElement = null;
+       };
+
+
+       /**
+        * Determine mouse events which should be permitted.
+        *
+        * @param {Event} event
+        * @returns {boolean}
+        */
+       FastClick.prototype.onMouse = function(event) {
+
+               // If a target element was never set (because a touch event was never fired) allow the event
+               if (!this.targetElement) {
+                       return true;
+               }
+
+               if (event.forwardedTouchEvent) {
+                       return true;
+               }
+
+               // Programmatically generated events targeting a specific element should be permitted
+               if (!event.cancelable) {
+                       return true;
+               }
+
+               // Derive and check the target element to see whether the mouse event needs to be permitted;
+               // unless explicitly enabled, prevent non-touch click events from triggering actions,
+               // to prevent ghost/doubleclicks.
+               if (!this.needsClick(this.targetElement) || this.cancelNextClick) {
+
+                       // Prevent any user-added listeners declared on FastClick element from being fired.
+                       if (event.stopImmediatePropagation) {
+                               event.stopImmediatePropagation();
+                       } else {
+
+                               // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)
+                               event.propagationStopped = true;
+                       }
+
+                       // Cancel the event
+                       event.stopPropagation();
+                       event.preventDefault();
+
+                       return false;
+               }
+
+               // If the mouse event is permitted, return true for the action to go through.
+               return true;
+       };
+
+
+       /**
+        * On actual clicks, determine whether this is a touch-generated click, a click action occurring
+        * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or
+        * an actual click which should be permitted.
+        *
+        * @param {Event} event
+        * @returns {boolean}
+        */
+       FastClick.prototype.onClick = function(event) {
+               var permitted;
+
+               // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early.
+               if (this.trackingClick) {
+                       this.targetElement = null;
+                       this.trackingClick = false;
+                       return true;
+               }
+
+               // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target.
+               if (event.target.type === 'submit' && event.detail === 0) {
+                       return true;
+               }
+
+               permitted = this.onMouse(event);
+
+               // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through.
+               if (!permitted) {
+                       this.targetElement = null;
+               }
+
+               // If clicks are permitted, return true for the action to go through.
+               return permitted;
+       };
+
+
+       /**
+        * Remove all FastClick's event listeners.
+        *
+        * @returns {void}
+        */
+       FastClick.prototype.destroy = function() {
+               var layer = this.layer;
+
+               if (deviceIsAndroid) {
+                       layer.removeEventListener('mouseover', this.onMouse, true);
+                       layer.removeEventListener('mousedown', this.onMouse, true);
+                       layer.removeEventListener('mouseup', this.onMouse, true);
+               }
+
+               layer.removeEventListener('click', this.onClick, true);
+               layer.removeEventListener('touchstart', this.onTouchStart, false);
+               layer.removeEventListener('touchmove', this.onTouchMove, false);
+               layer.removeEventListener('touchend', this.onTouchEnd, false);
+               layer.removeEventListener('touchcancel', this.onTouchCancel, false);
+       };
+
+
+       /**
+        * Check whether FastClick is needed.
+        *
+        * @param {Element} layer The layer to listen on
+        */
+       FastClick.notNeeded = function(layer) {
+               var metaViewport;
+               var chromeVersion;
+               var blackberryVersion;
+               var firefoxVersion;
+
+               // Devices that don't support touch don't need FastClick
+               if (typeof window.ontouchstart === 'undefined') {
+                       return true;
+               }
+
+               // Chrome version - zero for other browsers
+               chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];
+
+               if (chromeVersion) {
+
+                       if (deviceIsAndroid) {
+                               metaViewport = document.querySelector('meta[name=viewport]');
+
+                               if (metaViewport) {
+                                       // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89)
+                                       if (metaViewport.content.indexOf('user-scalable=no') !== -1) {
+                                               return true;
+                                       }
+                                       // Chrome 32 and above with width=device-width or less don't need FastClick
+                                       if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) {
+                                               return true;
+                                       }
+                               }
+
+                       // Chrome desktop doesn't need FastClick (issue #15)
+                       } else {
+                               return true;
+                       }
+               }
+
+               if (deviceIsBlackBerry10) {
+                       blackberryVersion = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/);
+
+                       // BlackBerry 10.3+ does not require Fastclick library.
+                       // https://github.com/ftlabs/fastclick/issues/251
+                       if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) {
+                               metaViewport = document.querySelector('meta[name=viewport]');
+
+                               if (metaViewport) {
+                                       // user-scalable=no eliminates click delay.
+                                       if (metaViewport.content.indexOf('user-scalable=no') !== -1) {
+                                               return true;
+                                       }
+                                       // width=device-width (or less than device-width) eliminates click delay.
+                                       if (document.documentElement.scrollWidth <= window.outerWidth) {
+                                               return true;
+                                       }
+                               }
+                       }
+               }
+
+               // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97)
+               if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') {
+                       return true;
+               }
+
+               // Firefox version - zero for other browsers
+               firefoxVersion = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];
+
+               if (firefoxVersion >= 27) {
+                       // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896
+
+                       metaViewport = document.querySelector('meta[name=viewport]');
+                       if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) {
+                               return true;
+                       }
+               }
+
+               // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version
+               // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx
+               if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') {
+                       return true;
+               }
+
+               return false;
+       };
+
+
+       /**
+        * Factory method for creating a FastClick object
+        *
+        * @param {Element} layer The layer to listen on
+        * @param {Object} [options={}] The options to override the defaults
+        */
+       FastClick.attach = function(layer, options) {
+               return new FastClick(layer, options);
+       };
+
+
+       if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
+
+               // AMD. Register as an anonymous module.
+               define(function() {
+                       return FastClick;
+               });
+       } else if (typeof module !== 'undefined' && module.exports) {
+               module.exports = FastClick.attach;
+               module.exports.FastClick = FastClick;
+       } else {
+               window.FastClick = FastClick;
+       }
+}());
diff --git a/js/foundation/css/foundation.css.map b/js/foundation/css/foundation.css.map
new file mode 100644 (file)
index 0000000..40bd448
--- /dev/null
@@ -0,0 +1,7 @@
+{
+"version": 3,
+"mappings": "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",
+"sources": ["../../../scss/foundation/components/_global.scss","../../../scss/foundation/components/_grid.scss","../../../scss/foundation/components/_accordion.scss","../../../scss/foundation/components/_alert-boxes.scss","../../../scss/foundation/components/_block-grid.scss","../../../scss/foundation/components/_breadcrumbs.scss","../../../scss/foundation/components/_buttons.scss","../../../scss/foundation/_functions.scss","../../../scss/foundation/components/_button-groups.scss","../../../scss/foundation/components/_clearing.scss","../../../scss/foundation/components/_dropdown.scss","../../../scss/foundation/components/_dropdown-buttons.scss","../../../scss/foundation/components/_flex-video.scss","../../../scss/foundation/components/_forms.scss","../../../scss/foundation/components/_icon-bar.scss","../../../scss/foundation/components/_inline-lists.scss","../../../scss/foundation/components/_joyride.scss","../../../scss/foundation/components/_keystrokes.scss","../../../scss/foundation/components/_labels.scss","../../../scss/foundation/components/_magellan.scss","../../../scss/foundation/components/_orbit.scss","../../../scss/foundation/components/_pagination.scss","../../../scss/foundation/components/_panels.scss","../../../scss/foundation/components/_pricing-tables.scss","../../../scss/foundation/components/_progress-bars.scss","../../../scss/foundation/components/_range-slider.scss","../../../scss/foundation/components/_reveal.scss","../../../scss/foundation/components/_side-nav.scss","../../../scss/foundation/components/_split-buttons.scss","../../../scss/foundation/components/_sub-nav.scss","../../../scss/foundation/components/_switches.scss","../../../scss/foundation/components/_tables.scss","../../../scss/foundation/components/_tabs.scss","../../../scss/foundation/components/_thumbs.scss","../../../scss/foundation/components/_tooltips.scss","../../../scss/foundation/components/_top-bar.scss","../../../scss/foundation/components/_type.scss","../../../scss/foundation/components/_offcanvas.scss","../../../scss/foundation/components/_visibility.scss"],
+"names": [],
+"file": "foundation.css"
+}
diff --git a/js/foundation/css/normalize.css.map b/js/foundation/css/normalize.css.map
new file mode 100644 (file)
index 0000000..8fc7c41
--- /dev/null
@@ -0,0 +1,7 @@
+{
+"version": 3,
+"mappings": ";;;;;;AAQA,IAAK;EACH,WAAW,EAAE,UAAU;;EACvB,oBAAoB,EAAE,IAAI;;EAC1B,wBAAwB,EAAE,IAAI;;;;;;AAOhC,IAAK;EACH,MAAM,EAAE,CAAC;;;;;;;;;;AAaX;;;;;;;;;;;;OAYQ;EACN,OAAO,EAAE,KAAK;;;;;;AAQhB;;;KAGM;EACJ,OAAO,EAAE,YAAY;;EACrB,cAAc,EAAE,QAAQ;;;;;;;AAQ1B,qBAAsB;EACpB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;;;;;;AAQX;QACS;EACP,OAAO,EAAE,IAAI;;;;;;;AAUf,CAAE;EACA,gBAAgB,EAAE,WAAW;;;;;;AAQ/B;OACQ;EACN,OAAO,EAAE,CAAC;;;;;;;AAUZ,WAAY;EACV,aAAa,EAAE,UAAU;;;;;AAO3B;MACO;EACL,WAAW,EAAE,IAAI;;;;;AAOnB,GAAI;EACF,UAAU,EAAE,MAAM;;;;;;AAQpB,EAAG;EACD,SAAS,EAAE,GAAG;EACd,MAAM,EAAE,QAAQ;;;;;AAOlB,IAAK;EACH,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;;;;;AAOb,KAAM;EACJ,SAAS,EAAE,GAAG;;;;;AAOhB;GACI;EACF,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,CAAC;EACd,QAAQ,EAAE,QAAQ;EAClB,cAAc,EAAE,QAAQ;;AAG1B,GAAI;EACF,GAAG,EAAE,MAAM;;AAGb,GAAI;EACF,MAAM,EAAE,OAAO;;;;;;;AAUjB,GAAI;EACF,MAAM,EAAE,CAAC;;;;;AAOX,cAAe;EACb,QAAQ,EAAE,MAAM;;;;;;;AAUlB,MAAO;EACL,MAAM,EAAE,QAAQ;;;;;AAOlB,EAAG;EACD,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;;;;;AAOX,GAAI;EACF,QAAQ,EAAE,IAAI;;;;;AAOhB;;;IAGK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,GAAG;;;;;;;;;;;;;;AAkBhB;;;;QAIS;EACP,KAAK,EAAE,OAAO;;EACd,IAAI,EAAE,OAAO;;EACb,MAAM,EAAE,CAAC;;;;;;AAOX,MAAO;EACL,QAAQ,EAAE,OAAO;;;;;;;;AAUnB;MACO;EACL,cAAc,EAAE,IAAI;;;;;;;;;AAWtB;;;oBAGqB;EACnB,kBAAkB,EAAE,MAAM;;EAC1B,MAAM,EAAE,OAAO;;;;;;AAOjB;oBACqB;EACnB,MAAM,EAAE,OAAO;;;;;AAOjB;uBACwB;EACtB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;;;;;;AAQZ,KAAM;EACJ,WAAW,EAAE,MAAM;;;;;;;;;AAWrB;mBACoB;EAClB,UAAU,EAAE,UAAU;;EACtB,OAAO,EAAE,CAAC;;;;;;;;AASZ;+CACgD;EAC9C,MAAM,EAAE,IAAI;;;;;;AAQd,oBAAqB;EACnB,kBAAkB,EAAE,SAAS;;EAC7B,UAAU,EAAE,WAAW;;;;;;;;AASzB;+CACgD;EAC9C,kBAAkB,EAAE,IAAI;;;;;AAO1B,QAAS;EACP,MAAM,EAAE,iBAAiB;EACzB,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,qBAAqB;;;;;;AAQhC,MAAO;EACL,MAAM,EAAE,CAAC;;EACT,OAAO,EAAE,CAAC;;;;;;AAOZ,QAAS;EACP,QAAQ,EAAE,IAAI;;;;;;AAQhB,QAAS;EACP,WAAW,EAAE,IAAI;;;;;;;AAUnB,KAAM;EACJ,eAAe,EAAE,QAAQ;EACzB,cAAc,EAAE,CAAC;;AAGnB;EACG;EACD,OAAO,EAAE,CAAC",
+"sources": ["../../../scss/normalize.scss"],
+"names": [],
+"file": "normalize.css"
+}
diff --git a/js/foundation/js/foundation.js b/js/foundation/js/foundation.js
new file mode 100644 (file)
index 0000000..13a76a2
--- /dev/null
@@ -0,0 +1,6581 @@
+/*
+ * Foundation Responsive Library
+ * http://foundation.zurb.com
+ * Copyright 2015, ZURB
+ * Free to use under the MIT license.
+ * http://www.opensource.org/licenses/mit-license.php
+*/
+
+(function ($, window, document, undefined) {
+  'use strict';
+
+  var header_helpers = function (class_array) {
+    var head = $('head');
+    head.prepend($.map(class_array, function (class_name) {
+      if (head.has('.' + class_name).length === 0) {
+        return '<meta class="' + class_name + '" />';
+      }
+    }));
+  };
+
+  header_helpers([
+    'foundation-mq-small',
+    'foundation-mq-small-only',
+    'foundation-mq-medium',
+    'foundation-mq-medium-only',
+    'foundation-mq-large',
+    'foundation-mq-large-only',
+    'foundation-mq-xlarge',
+    'foundation-mq-xlarge-only',
+    'foundation-mq-xxlarge',
+    'foundation-data-attribute-namespace']);
+
+  // Enable FastClick if present
+
+  $(function () {
+    if (typeof FastClick !== 'undefined') {
+      // Don't attach to body if undefined
+      if (typeof document.body !== 'undefined') {
+        FastClick.attach(document.body);
+      }
+    }
+  });
+
+  // private Fast Selector wrapper,
+  // returns jQuery object. Only use where
+  // getElementById is not available.
+  var S = function (selector, context) {
+    if (typeof selector === 'string') {
+      if (context) {
+        var cont;
+        if (context.jquery) {
+          cont = context[0];
+          if (!cont) {
+            return context;
+          }
+        } else {
+          cont = context;
+        }
+        return $(cont.querySelectorAll(selector));
+      }
+
+      return $(document.querySelectorAll(selector));
+    }
+
+    return $(selector, context);
+  };
+
+  // Namespace functions.
+
+  var attr_name = function (init) {
+    var arr = [];
+    if (!init) {
+      arr.push('data');
+    }
+    if (this.namespace.length > 0) {
+      arr.push(this.namespace);
+    }
+    arr.push(this.name);
+
+    return arr.join('-');
+  };
+
+  var add_namespace = function (str) {
+    var parts = str.split('-'),
+        i = parts.length,
+        arr = [];
+
+    while (i--) {
+      if (i !== 0) {
+        arr.push(parts[i]);
+      } else {
+        if (this.namespace.length > 0) {
+          arr.push(this.namespace, parts[i]);
+        } else {
+          arr.push(parts[i]);
+        }
+      }
+    }
+
+    return arr.reverse().join('-');
+  };
+
+  // Event binding and data-options updating.
+
+  var bindings = function (method, options) {
+    var self = this,
+        bind = function(){
+          var $this = S(this),
+              should_bind_events = !$this.data(self.attr_name(true) + '-init');
+          $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this)));
+
+          if (should_bind_events) {
+            self.events(this);
+          }
+        };
+
+    if (S(this.scope).is('[' + this.attr_name() +']')) {
+      bind.call(this.scope);
+    } else {
+      S('[' + this.attr_name() +']', this.scope).each(bind);
+    }
+    // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.
+    if (typeof method === 'string') {
+      return this[method].call(this, options);
+    }
+
+  };
+
+  var single_image_loaded = function (image, callback) {
+    function loaded () {
+      callback(image[0]);
+    }
+
+    function bindLoad () {
+      this.one('load', loaded);
+
+      if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
+        var src = this.attr( 'src' ),
+            param = src.match( /\?/ ) ? '&' : '?';
+
+        param += 'random=' + (new Date()).getTime();
+        this.attr('src', src + param);
+      }
+    }
+
+    if (!image.attr('src')) {
+      loaded();
+      return;
+    }
+
+    if (image[0].complete || image[0].readyState === 4) {
+      loaded();
+    } else {
+      bindLoad.call(image);
+    }
+  };
+
+  /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+
+  window.matchMedia || (window.matchMedia = function() {
+      "use strict";
+
+      // For browsers that support matchMedium api such as IE 9 and webkit
+      var styleMedia = (window.styleMedia || window.media);
+
+      // For those that don't support matchMedium
+      if (!styleMedia) {
+          var style       = document.createElement('style'),
+              script      = document.getElementsByTagName('script')[0],
+              info        = null;
+
+          style.type  = 'text/css';
+          style.id    = 'matchmediajs-test';
+
+          script.parentNode.insertBefore(style, script);
+
+          // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
+          info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;
+
+          styleMedia = {
+              matchMedium: function(media) {
+                  var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';
+
+                  // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
+                  if (style.styleSheet) {
+                      style.styleSheet.cssText = text;
+                  } else {
+                      style.textContent = text;
+                  }
+
+                  // Test if media query is true or false
+                  return info.width === '1px';
+              }
+          };
+      }
+
+      return function(media) {
+          return {
+              matches: styleMedia.matchMedium(media || 'all'),
+              media: media || 'all'
+          };
+      };
+  }());
+
+  /*
+   * jquery.requestAnimationFrame
+   * https://github.com/gnarf37/jquery-requestAnimationFrame
+   * Requires jQuery 1.8+
+   *
+   * Copyright (c) 2012 Corey Frang
+   * Licensed under the MIT license.
+   */
+
+  (function(jQuery) {
+
+
+  // requestAnimationFrame polyfill adapted from Erik Möller
+  // fixes from Paul Irish and Tino Zijdel
+  // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+  // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
+
+  var animating,
+      lastTime = 0,
+      vendors = ['webkit', 'moz'],
+      requestAnimationFrame = window.requestAnimationFrame,
+      cancelAnimationFrame = window.cancelAnimationFrame,
+      jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;
+
+  for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
+    requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ];
+    cancelAnimationFrame = cancelAnimationFrame ||
+      window[ vendors[lastTime] + 'CancelAnimationFrame' ] ||
+      window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ];
+  }
+
+  function raf() {
+    if (animating) {
+      requestAnimationFrame(raf);
+
+      if (jqueryFxAvailable) {
+        jQuery.fx.tick();
+      }
+    }
+  }
+
+  if (requestAnimationFrame) {
+    // use rAF
+    window.requestAnimationFrame = requestAnimationFrame;
+    window.cancelAnimationFrame = cancelAnimationFrame;
+
+    if (jqueryFxAvailable) {
+      jQuery.fx.timer = function (timer) {
+        if (timer() && jQuery.timers.push(timer) && !animating) {
+          animating = true;
+          raf();
+        }
+      };
+
+      jQuery.fx.stop = function () {
+        animating = false;
+      };
+    }
+  } else {
+    // polyfill
+    window.requestAnimationFrame = function (callback) {
+      var currTime = new Date().getTime(),
+        timeToCall = Math.max(0, 16 - (currTime - lastTime)),
+        id = window.setTimeout(function () {
+          callback(currTime + timeToCall);
+        }, timeToCall);
+      lastTime = currTime + timeToCall;
+      return id;
+    };
+
+    window.cancelAnimationFrame = function (id) {
+      clearTimeout(id);
+    };
+
+  }
+
+  }( $ ));
+
+  function removeQuotes (string) {
+    if (typeof string === 'string' || string instanceof String) {
+      string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
+    }
+
+    return string;
+  }
+
+  function MediaQuery(selector) {
+    this.selector = selector;
+    this.query = '';
+  }
+
+  MediaQuery.prototype.toString = function () {
+    return this.query || (this.query = S(this.selector).css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''));
+  };
+
+  window.Foundation = {
+    name : 'Foundation',
+
+    version : '5.5.3',
+
+    media_queries : {
+      'small'       : new MediaQuery('.foundation-mq-small'),
+      'small-only'  : new MediaQuery('.foundation-mq-small-only'),
+      'medium'      : new MediaQuery('.foundation-mq-medium'),
+      'medium-only' : new MediaQuery('.foundation-mq-medium-only'),
+      'large'       : new MediaQuery('.foundation-mq-large'),
+      'large-only'  : new MediaQuery('.foundation-mq-large-only'),
+      'xlarge'      : new MediaQuery('.foundation-mq-xlarge'),
+      'xlarge-only' : new MediaQuery('.foundation-mq-xlarge-only'),
+      'xxlarge'     : new MediaQuery('.foundation-mq-xxlarge')
+    },
+
+    stylesheet : $('<style></style>').appendTo('head')[0].sheet,
+
+    global : {
+      namespace : undefined
+    },
+
+    init : function (scope, libraries, method, options, response) {
+      var args = [scope, method, options, response],
+          responses = [];
+
+      // check RTL
+      this.rtl = /rtl/i.test(S('html').attr('dir'));
+
+      // set foundation global scope
+      this.scope = scope || this.scope;
+
+      this.set_namespace();
+
+      if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
+        if (this.libs.hasOwnProperty(libraries)) {
+          responses.push(this.init_lib(libraries, args));
+        }
+      } else {
+        for (var lib in this.libs) {
+          responses.push(this.init_lib(lib, libraries));
+        }
+      }
+
+      S(window).load(function () {
+        S(window)
+          .trigger('resize.fndtn.clearing')
+          .trigger('resize.fndtn.dropdown')
+          .trigger('resize.fndtn.equalizer')
+          .trigger('resize.fndtn.interchange')
+          .trigger('resize.fndtn.joyride')
+          .trigger('resize.fndtn.magellan')
+          .trigger('resize.fndtn.topbar')
+          .trigger('resize.fndtn.slider');
+      });
+
+      return scope;
+    },
+
+    init_lib : function (lib, args) {
+      if (this.libs.hasOwnProperty(lib)) {
+        this.patch(this.libs[lib]);
+
+        if (args && args.hasOwnProperty(lib)) {
+            if (typeof this.libs[lib].settings !== 'undefined') {
+              $.extend(true, this.libs[lib].settings, args[lib]);
+            } else if (typeof this.libs[lib].defaults !== 'undefined') {
+              $.extend(true, this.libs[lib].defaults, args[lib]);
+            }
+          return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
+        }
+
+        args = args instanceof Array ? args : new Array(args);
+        return this.libs[lib].init.apply(this.libs[lib], args);
+      }
+
+      return function () {};
+    },
+
+    patch : function (lib) {
+      lib.scope = this.scope;
+      lib.namespace = this.global.namespace;
+      lib.rtl = this.rtl;
+      lib['data_options'] = this.utils.data_options;
+      lib['attr_name'] = attr_name;
+      lib['add_namespace'] = add_namespace;
+      lib['bindings'] = bindings;
+      lib['S'] = this.utils.S;
+    },
+
+    inherit : function (scope, methods) {
+      var methods_arr = methods.split(' '),
+          i = methods_arr.length;
+
+      while (i--) {
+        if (this.utils.hasOwnProperty(methods_arr[i])) {
+          scope[methods_arr[i]] = this.utils[methods_arr[i]];
+        }
+      }
+    },
+
+    set_namespace : function () {
+
+      // Description:
+      //    Don't bother reading the namespace out of the meta tag
+      //    if the namespace has been set globally in javascript
+      //
+      // Example:
+      //    Foundation.global.namespace = 'my-namespace';
+      // or make it an empty string:
+      //    Foundation.global.namespace = '';
+      //
+      //
+
+      // If the namespace has not been set (is undefined), try to read it out of the meta element.
+      // Otherwise use the globally defined namespace, even if it's empty ('')
+      var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
+
+      // Finally, if the namsepace is either undefined or false, set it to an empty string.
+      // Otherwise use the namespace value.
+      this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
+    },
+
+    libs : {},
+
+    // methods that can be inherited in libraries
+    utils : {
+
+      // Description:
+      //    Fast Selector wrapper returns jQuery object. Only use where getElementById
+      //    is not available.
+      //
+      // Arguments:
+      //    Selector (String): CSS selector describing the element(s) to be
+      //    returned as a jQuery object.
+      //
+      //    Scope (String): CSS selector describing the area to be searched. Default
+      //    is document.
+      //
+      // Returns:
+      //    Element (jQuery Object): jQuery object containing elements matching the
+      //    selector within the scope.
+      S : S,
+
+      // Description:
+      //    Executes a function a max of once every n milliseconds
+      //
+      // Arguments:
+      //    Func (Function): Function to be throttled.
+      //
+      //    Delay (Integer): Function execution threshold in milliseconds.
+      //
+      // Returns:
+      //    Lazy_function (Function): Function with throttling applied.
+      throttle : function (func, delay) {
+        var timer = null;
+
+        return function () {
+          var context = this, args = arguments;
+
+          if (timer == null) {
+            timer = setTimeout(function () {
+              func.apply(context, args);
+              timer = null;
+            }, delay);
+          }
+        };
+      },
+
+      // Description:
+      //    Executes a function when it stops being invoked for n seconds
+      //    Modified version of _.debounce() http://underscorejs.org
+      //
+      // Arguments:
+      //    Func (Function): Function to be debounced.
+      //
+      //    Delay (Integer): Function execution threshold in milliseconds.
+      //
+      //    Immediate (Bool): Whether the function should be called at the beginning
+      //    of the delay instead of the end. Default is false.
+      //
+      // Returns:
+      //    Lazy_function (Function): Function with debouncing applied.
+      debounce : function (func, delay, immediate) {
+        var timeout, result;
+        return function () {
+          var context = this, args = arguments;
+          var later = function () {
+            timeout = null;
+            if (!immediate) {
+              result = func.apply(context, args);
+            }
+          };
+          var callNow = immediate && !timeout;
+          clearTimeout(timeout);
+          timeout = setTimeout(later, delay);
+          if (callNow) {
+            result = func.apply(context, args);
+          }
+          return result;
+        };
+      },
+
+      // Description:
+      //    Parses data-options attribute
+      //
+      // Arguments:
+      //    El (jQuery Object): Element to be parsed.
+      //
+      // Returns:
+      //    Options (Javascript Object): Contents of the element's data-options
+      //    attribute.
+      data_options : function (el, data_attr_name) {
+        data_attr_name = data_attr_name || 'options';
+        var opts = {}, ii, p, opts_arr,
+            data_options = function (el) {
+              var namespace = Foundation.global.namespace;
+
+              if (namespace.length > 0) {
+                return el.data(namespace + '-' + data_attr_name);
+              }
+
+              return el.data(data_attr_name);
+            };
+
+        var cached_options = data_options(el);
+
+        if (typeof cached_options === 'object') {
+          return cached_options;
+        }
+
+        opts_arr = (cached_options || ':').split(';');
+        ii = opts_arr.length;
+
+        function isNumber (o) {
+          return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true;
+        }
+
+        function trim (str) {
+          if (typeof str === 'string') {
+            return $.trim(str);
+          }
+          return str;
+        }
+
+        while (ii--) {
+          p = opts_arr[ii].split(':');
+          p = [p[0], p.slice(1).join(':')];
+
+          if (/true/i.test(p[1])) {
+            p[1] = true;
+          }
+          if (/false/i.test(p[1])) {
+            p[1] = false;
+          }
+          if (isNumber(p[1])) {
+            if (p[1].indexOf('.') === -1) {
+              p[1] = parseInt(p[1], 10);
+            } else {
+              p[1] = parseFloat(p[1]);
+            }
+          }
+
+          if (p.length === 2 && p[0].length > 0) {
+            opts[trim(p[0])] = trim(p[1]);
+          }
+        }
+
+        return opts;
+      },
+
+      // Description:
+      //    Adds JS-recognizable media queries
+      //
+      // Arguments:
+      //    Media (String): Key string for the media query to be stored as in
+      //    Foundation.media_queries
+      //
+      //    Class (String): Class name for the generated <meta> tag
+      register_media : function (media, media_class) {
+        if (Foundation.media_queries[media] === undefined) {
+          $('head').append('<meta class="' + media_class + '"/>');
+          Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
+        }
+      },
+
+      // Description:
+      //    Add custom CSS within a JS-defined media query
+      //
+      // Arguments:
+      //    Rule (String): CSS rule to be appended to the document.
+      //
+      //    Media (String): Optional media query string for the CSS rule to be
+      //    nested under.
+      add_custom_rule : function (rule, media) {
+        if (media === undefined && Foundation.stylesheet) {
+          Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
+        } else {
+          var query = Foundation.media_queries[media];
+
+          if (query !== undefined) {
+            Foundation.stylesheet.insertRule('@media ' +
+              Foundation.media_queries[media] + '{ ' + rule + ' }', Foundation.stylesheet.cssRules.length);
+          }
+        }
+      },
+
+      // Description:
+      //    Performs a callback function when an image is fully loaded
+      //
+      // Arguments:
+      //    Image (jQuery Object): Image(s) to check if loaded.
+      //
+      //    Callback (Function): Function to execute when image is fully loaded.
+      image_loaded : function (images, callback) {
+        var self = this,
+            unloaded = images.length;
+
+        function pictures_has_height(images) {
+          var pictures_number = images.length;
+
+          for (var i = pictures_number - 1; i >= 0; i--) {
+            if(images.attr('height') === undefined) {
+              return false;
+            };
+          };
+
+          return true;
+        }
+
+        if (unloaded === 0 || pictures_has_height(images)) {
+          callback(images);
+        }
+
+        images.each(function () {
+          single_image_loaded(self.S(this), function () {
+            unloaded -= 1;
+            if (unloaded === 0) {
+              callback(images);
+            }
+          });
+        });
+      },
+
+      // Description:
+      //    Returns a random, alphanumeric string
+      //
+      // Arguments:
+      //    Length (Integer): Length of string to be generated. Defaults to random
+      //    integer.
+      //
+      // Returns:
+      //    Rand (String): Pseudo-random, alphanumeric string.
+      random_str : function () {
+        if (!this.fidx) {
+          this.fidx = 0;
+        }
+        this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');
+
+        return this.prefix + (this.fidx++).toString(36);
+      },
+
+      // Description:
+      //    Helper for window.matchMedia
+      //
+      // Arguments:
+      //    mq (String): Media query
+      //
+      // Returns:
+      //    (Boolean): Whether the media query passes or not
+      match : function (mq) {
+        return window.matchMedia(mq).matches;
+      },
+
+      // Description:
+      //    Helpers for checking Foundation default media queries with JS
+      //
+      // Returns:
+      //    (Boolean): Whether the media query passes or not
+
+      is_small_up : function () {
+        return this.match(Foundation.media_queries.small);
+      },
+
+      is_medium_up : function () {
+        return this.match(Foundation.media_queries.medium);
+      },
+
+      is_large_up : function () {
+        return this.match(Foundation.media_queries.large);
+      },
+
+      is_xlarge_up : function () {
+        return this.match(Foundation.media_queries.xlarge);
+      },
+
+      is_xxlarge_up : function () {
+        return this.match(Foundation.media_queries.xxlarge);
+      },
+
+      is_small_only : function () {
+        return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+      },
+
+      is_medium_only : function () {
+        return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+      },
+
+      is_large_only : function () {
+        return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+      },
+
+      is_xlarge_only : function () {
+        return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();
+      },
+
+      is_xxlarge_only : function () {
+        return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();
+      }
+    }
+  };
+
+  $.fn.foundation = function () {
+    var args = Array.prototype.slice.call(arguments, 0);
+
+    return this.each(function () {
+      Foundation.init.apply(Foundation, [this].concat(args));
+      return this;
+    });
+  };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.abide = {
+    name : 'abide',
+
+    version : '5.5.3',
+
+    settings : {
+      live_validate : true, // validate the form as you go
+      validate_on_blur : true, // validate whenever you focus/blur on an input field
+      // validate_on: 'tab', // tab (when user tabs between fields), change (input changes), manual (call custom events)
+
+      focus_on_invalid : true, // automatically bring the focus to an invalid input field
+      error_labels : true, // labels with a for="inputId" will receive an `error` class
+      error_class : 'error', // labels with a for="inputId" will receive an `error` class
+      // the amount of time Abide will take before it validates the form (in ms).
+      // smaller time will result in faster validation
+      timeout : 1000,
+      patterns : {
+        alpha : /^[a-zA-Z]+$/,
+        alpha_numeric : /^[a-zA-Z0-9]+$/,
+        integer : /^[-+]?\d+$/,
+        number : /^[-+]?\d*(?:[\.\,]\d+)?$/,
+
+        // amex, visa, diners
+        card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
+        cvv : /^([0-9]){3,4}$/,
+
+        // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
+        email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
+
+        // http://blogs.lse.ac.uk/lti/2008/04/23/a-regular-expression-to-match-any-url/
+        url: /^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/,
+        // abc.de
+        domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
+
+        datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
+        // YYYY-MM-DD
+        date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
+        // HH:MM:SS
+        time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
+        dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
+        // MM/DD/YYYY
+        month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
+        // DD/MM/YYYY
+        day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
+
+        // #FFF or #FFFFFF
+        color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
+      },
+      validators : {
+        equalTo : function (el, required, parent) {
+          var from  = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
+              to    = el.value,
+              valid = (from === to);
+
+          return valid;
+        }
+      }
+    },
+
+    timer : null,
+
+    init : function (scope, method, options) {
+      this.bindings(method, options);
+    },
+
+    events : function (scope) {
+      var self = this,
+          form = self.S(scope).attr('novalidate', 'novalidate'),
+          settings = form.data(this.attr_name(true) + '-init') || {};
+
+      this.invalid_attr = this.add_namespace('data-invalid');
+
+      function validate(originalSelf, e) {
+        clearTimeout(self.timer);
+        self.timer = setTimeout(function () {
+          self.validate([originalSelf], e);
+        }.bind(originalSelf), settings.timeout);
+      }
+
+      form
+        .off('.abide')
+        .on('submit.fndtn.abide', function (e) {
+          var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));
+          return self.validate(self.S(this).find('input, textarea, select').not(":hidden, [data-abide-ignore]").get(), e, is_ajax);
+        })
+        .on('validate.fndtn.abide', function (e) {
+          if (settings.validate_on === 'manual') {
+            self.validate([e.target], e);
+          }
+        })
+        .on('reset', function (e) {
+          return self.reset($(this), e);
+        })
+        .find('input, textarea, select').not(":hidden, [data-abide-ignore]")
+          .off('.abide')
+          .on('blur.fndtn.abide change.fndtn.abide', function (e) {
+              var id = this.getAttribute('id'),
+                  eqTo = form.find('[data-equalto="'+ id +'"]');
+            // old settings fallback
+            // will be deprecated with F6 release
+            if (settings.validate_on_blur && settings.validate_on_blur === true) {
+              validate(this, e);
+            }
+            // checks if there is an equalTo equivalent related by id
+            if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
+              validate(eqTo.get(0),e);
+            }
+            // new settings combining validate options into one setting
+            if (settings.validate_on === 'change') {
+              validate(this, e);
+            }
+          })
+          .on('keydown.fndtn.abide', function (e) {
+            var id = this.getAttribute('id'),
+                eqTo = form.find('[data-equalto="'+ id +'"]');
+            // old settings fallback
+            // will be deprecated with F6 release
+            if (settings.live_validate && settings.live_validate === true && e.which != 9) {
+              validate(this, e);
+            }
+            // checks if there is an equalTo equivalent related by id
+            if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
+              validate(eqTo.get(0),e);
+            }
+            // new settings combining validate options into one setting
+            if (settings.validate_on === 'tab' && e.which === 9) {
+              validate(this, e);
+            }
+            else if (settings.validate_on === 'change') {
+              validate(this, e);
+            }
+          })
+          .on('focus', function (e) {
+            if (navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)) {
+              $('html, body').animate({
+                  scrollTop: $(e.target).offset().top
+              }, 100);
+            }
+          });
+    },
+
+    reset : function (form, e) {
+      var self = this;
+      form.removeAttr(self.invalid_attr);
+
+      $('[' + self.invalid_attr + ']', form).removeAttr(self.invalid_attr);
+      $('.' + self.settings.error_class, form).not('small').removeClass(self.settings.error_class);
+      $(':input', form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr(self.invalid_attr);
+    },
+
+    validate : function (els, e, is_ajax) {
+      var validations = this.parse_patterns(els),
+          validation_count = validations.length,
+          form = this.S(els[0]).closest('form'),
+          submit_event = /submit/.test(e.type);
+
+      // Has to count up to make sure the focus gets applied to the top error
+      for (var i = 0; i < validation_count; i++) {
+        if (!validations[i] && (submit_event || is_ajax)) {
+          if (this.settings.focus_on_invalid) {
+            els[i].focus();
+          }
+          form.trigger('invalid.fndtn.abide');
+          this.S(els[i]).closest('form').attr(this.invalid_attr, '');
+          return false;
+        }
+      }
+
+      if (submit_event || is_ajax) {
+        form.trigger('valid.fndtn.abide');
+      }
+
+      form.removeAttr(this.invalid_attr);
+
+      if (is_ajax) {
+        return false;
+      }
+
+      return true;
+    },
+
+    parse_patterns : function (els) {
+      var i = els.length,
+          el_patterns = [];
+
+      while (i--) {
+        el_patterns.push(this.pattern(els[i]));
+      }
+
+      return this.check_validation_and_apply_styles(el_patterns);
+    },
+
+    pattern : function (el) {
+      var type = el.getAttribute('type'),
+          required = typeof el.getAttribute('required') === 'string';
+
+      var pattern = el.getAttribute('pattern') || '';
+
+      if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {
+        return [el, this.settings.patterns[pattern], required];
+      } else if (pattern.length > 0) {
+        return [el, new RegExp(pattern), required];
+      }
+
+      if (this.settings.patterns.hasOwnProperty(type)) {
+        return [el, this.settings.patterns[type], required];
+      }
+
+      pattern = /.*/;
+
+      return [el, pattern, required];
+    },
+
+    // TODO: Break this up into smaller methods, getting hard to read.
+    check_validation_and_apply_styles : function (el_patterns) {
+      var i = el_patterns.length,
+          validations = [];
+      if (i == 0) {
+        return validations;
+      }
+      var form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
+          settings = form.data(this.attr_name(true) + '-init') || {};
+      while (i--) {
+        var el = el_patterns[i][0],
+            required = el_patterns[i][2],
+            value = el.value.trim(),
+            direct_parent = this.S(el).parent(),
+            validator = el.getAttribute(this.add_namespace('data-abide-validator')),
+            is_radio = el.type === 'radio',
+            is_checkbox = el.type === 'checkbox',
+            label = this.S('label[for="' + el.getAttribute('id') + '"]'),
+            valid_length = (required) ? (el.value.length > 0) : true,
+            el_validations = [];
+
+        var parent, valid;
+
+        // support old way to do equalTo validations
+        if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' }
+
+        if (!direct_parent.is('label')) {
+          parent = direct_parent;
+        } else {
+          parent = direct_parent.parent();
+        }
+
+        if (is_radio && required) {
+          el_validations.push(this.valid_radio(el, required));
+        } else if (is_checkbox && required) {
+          el_validations.push(this.valid_checkbox(el, required));
+
+        } else if (validator) {
+          // Validate using each of the specified (space-delimited) validators.
+          var validators = validator.split(' ');
+          var last_valid = true, all_valid = true;
+          for (var iv = 0; iv < validators.length; iv++) {
+              valid = this.settings.validators[validators[iv]].apply(this, [el, required, parent])
+              el_validations.push(valid);
+              all_valid = valid && last_valid;
+              last_valid = valid;
+          }
+          if (all_valid) {
+              this.S(el).removeAttr(this.invalid_attr);
+              parent.removeClass('error');
+              if (label.length > 0 && this.settings.error_labels) {
+                label.removeClass(this.settings.error_class).removeAttr('role');
+              }
+              $(el).triggerHandler('valid');
+          } else {
+              this.S(el).attr(this.invalid_attr, '');
+              parent.addClass('error');
+              if (label.length > 0 && this.settings.error_labels) {
+                label.addClass(this.settings.error_class).attr('role', 'alert');
+              }
+              $(el).triggerHandler('invalid');
+          }
+        } else {
+
+          if (el_patterns[i][1].test(value) && valid_length ||
+            !required && el.value.length < 1 || $(el).attr('disabled')) {
+            el_validations.push(true);
+          } else {
+            el_validations.push(false);
+          }
+
+          el_validations = [el_validations.every(function (valid) {return valid;})];
+          if (el_validations[0]) {
+            this.S(el).removeAttr(this.invalid_attr);
+            el.setAttribute('aria-invalid', 'false');
+            el.removeAttribute('aria-describedby');
+            parent.removeClass(this.settings.error_class);
+            if (label.length > 0 && this.settings.error_labels) {
+              label.removeClass(this.settings.error_class).removeAttr('role');
+            }
+            $(el).triggerHandler('valid');
+          } else {
+            this.S(el).attr(this.invalid_attr, '');
+            el.setAttribute('aria-invalid', 'true');
+
+            // Try to find the error associated with the input
+            var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class);
+            var errorID = errorElem.length > 0 ? errorElem[0].id : '';
+            if (errorID.length > 0) {
+              el.setAttribute('aria-describedby', errorID);
+            }
+
+            // el.setAttribute('aria-describedby', $(el).find('.error')[0].id);
+            parent.addClass(this.settings.error_class);
+            if (label.length > 0 && this.settings.error_labels) {
+              label.addClass(this.settings.error_class).attr('role', 'alert');
+            }
+            $(el).triggerHandler('invalid');
+          }
+        }
+        validations = validations.concat(el_validations);
+      }
+
+      return validations;
+    },
+
+    valid_checkbox : function (el, required) {
+      var el = this.S(el),
+          valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled'));
+
+      if (valid) {
+        el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+        $(el).triggerHandler('valid');
+      } else {
+        el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+        $(el).triggerHandler('invalid');
+      }
+
+      return valid;
+    },
+
+    valid_radio : function (el, required) {
+      var name = el.getAttribute('name'),
+          group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"),
+          count = group.length,
+          valid = false,
+          disabled = false;
+
+      // Has to count up to make sure the focus gets applied to the top error
+      for (var i=0; i < count; i++) {
+        if( group[i].getAttribute('disabled') ){
+          disabled=true;
+          valid=true;
+        } else {
+          if (group[i].checked){
+            valid = true;
+          } else {
+            if( disabled ){
+              valid = false;
+            }
+          }
+        }
+      }
+
+      // Has to count up to make sure the focus gets applied to the top error
+      for (var i = 0; i < count; i++) {
+        if (valid) {
+          this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+          $(group[i]).triggerHandler('valid');
+        } else {
+          this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+          $(group[i]).triggerHandler('invalid');
+        }
+      }
+
+      return valid;
+    },
+
+    valid_equal : function (el, required, parent) {
+      var from  = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
+          to    = el.value,
+          valid = (from === to);
+
+      if (valid) {
+        this.S(el).removeAttr(this.invalid_attr);
+        parent.removeClass(this.settings.error_class);
+        if (label.length > 0 && settings.error_labels) {
+          label.removeClass(this.settings.error_class);
+        }
+      } else {
+        this.S(el).attr(this.invalid_attr, '');
+        parent.addClass(this.settings.error_class);
+        if (label.length > 0 && settings.error_labels) {
+          label.addClass(this.settings.error_class);
+        }
+      }
+
+      return valid;
+    },
+
+    valid_oneof : function (el, required, parent, doNotValidateOthers) {
+      var el = this.S(el),
+        others = this.S('[' + this.add_namespace('data-oneof') + ']'),
+        valid = others.filter(':checked').length > 0;
+
+      if (valid) {
+        el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+      } else {
+        el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+      }
+
+      if (!doNotValidateOthers) {
+        var _this = this;
+        others.each(function () {
+          _this.valid_oneof.call(_this, this, null, null, true);
+        });
+      }
+
+      return valid;
+    },
+
+    reflow : function(scope, options) {
+      var self = this,
+          form = self.S('[' + this.attr_name() + ']').attr('novalidate', 'novalidate');
+          self.S(form).each(function (idx, el) {
+            self.events(el);
+          });
+    }
+  };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.accordion = {
+    name : 'accordion',
+
+    version : '5.5.3',
+
+    settings : {
+      content_class : 'content',
+      active_class : 'active',
+      multi_expand : false,
+      toggleable : true,
+      callback : function () {}
+    },
+
+    init : function (scope, method, options) {
+      this.bindings(method, options);
+    },
+
+    events : function (instance) {
+      var self = this;
+      var S = this.S;
+      self.create(this.S(instance));
+
+      S(this.scope)
+      .off('.fndtn.accordion')
+      .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a, [' + this.attr_name() + '] > li > a', function (e) {
+        var accordion = S(this).closest('[' + self.attr_name() + ']'),
+            groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()),
+            settings = accordion.data(self.attr_name(true) + '-init') || self.settings,
+            target = S('#' + this.href.split('#')[1]),
+            aunts = $('> dd, > li', accordion),
+            siblings = aunts.children('.' + settings.content_class),
+            active_content = siblings.filter('.' + settings.active_class);
+
+        e.preventDefault();
+
+        if (accordion.attr(self.attr_name())) {
+          siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class + ', [' + groupSelector + '] li > ' + '.' + settings.content_class);
+          aunts = aunts.add('[' + groupSelector + '] dd, [' + groupSelector + '] li');
+        }
+
+        if (settings.toggleable && target.is(active_content)) {
+          target.parent('dd, li').toggleClass(settings.active_class, false);
+          target.toggleClass(settings.active_class, false);
+          S(this).attr('aria-expanded', function(i, attr){
+              return attr === 'true' ? 'false' : 'true';
+          });
+          settings.callback(target);
+          target.triggerHandler('toggled', [accordion]);
+          accordion.triggerHandler('toggled', [target]);
+          return;
+        }
+
+        if (!settings.multi_expand) {
+          siblings.removeClass(settings.active_class);
+          aunts.removeClass(settings.active_class);
+          aunts.children('a').attr('aria-expanded','false');
+        }
+
+        target.addClass(settings.active_class).parent().addClass(settings.active_class);
+        settings.callback(target);
+        target.triggerHandler('toggled', [accordion]);
+        accordion.triggerHandler('toggled', [target]);
+        S(this).attr('aria-expanded','true');
+      });
+    },
+
+    create: function($instance) {
+      var self = this,
+          accordion = $instance,
+          aunts = $('> .accordion-navigation', accordion),
+          settings = accordion.data(self.attr_name(true) + '-init') || self.settings;
+
+      aunts.children('a').attr('aria-expanded','false');
+      aunts.has('.' + settings.content_class + '.' + settings.active_class).addClass(settings.active_class).children('a').attr('aria-expanded','true');
+
+      if (settings.multi_expand) {
+        $instance.attr('aria-multiselectable','true');
+      }
+    },
+       
+       toggle : function(options) {
+               var options = typeof options !== 'undefined' ? options : {};
+               var selector = typeof options.selector !== 'undefined' ? options.selector : '';
+               var toggle_state = typeof options.toggle_state !== 'undefined' ? options.toggle_state : '';
+               var $accordion = typeof options.$accordion !== 'undefined' ? options.$accordion : this.S(this.scope).closest('[' + this.attr_name() + ']');
+  
+               var $items = $accordion.find('> dd' + selector + ', > li' + selector);
+               if ( $items.length < 1 ) {
+                       if ( window.console ) {
+                               console.error('Selection not found.', selector);
+                       }
+                       return false;
+               }
+  
+               var S = this.S;
+               var active_class = this.settings.active_class;
+               $items.each(function() {
+                       var $item = S(this);
+                       var is_active = $item.hasClass(active_class);
+                       if ( ( is_active && toggle_state === 'close' ) || ( !is_active && toggle_state === 'open' ) || toggle_state === '' ) {
+                               $item.find('> a').trigger('click.fndtn.accordion');
+                       }
+               });
+       },
+  
+       open : function(options) {
+               var options = typeof options !== 'undefined' ? options : {};
+               options.toggle_state = 'open';
+               this.toggle(options);
+       },
+  
+       close : function(options) {
+               var options = typeof options !== 'undefined' ? options : {};
+               options.toggle_state = 'close';
+               this.toggle(options);
+       },      
+
+    off : function () {},
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.alert = {
+    name : 'alert',
+
+    version : '5.5.3',
+
+    settings : {
+      callback : function () {}
+    },
+
+    init : function (scope, method, options) {
+      this.bindings(method, options);
+    },
+
+    events : function () {
+      var self = this,
+          S = this.S;
+
+      $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) {
+        var alertBox = S(this).closest('[' + self.attr_name() + ']'),
+            settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;
+
+        e.preventDefault();
+        if (Modernizr.csstransitions) {
+          alertBox.addClass('alert-close');
+          alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) {
+            S(this).trigger('close.fndtn.alert').remove();
+            settings.callback();
+          });
+        } else {
+          alertBox.fadeOut(300, function () {
+            S(this).trigger('close.fndtn.alert').remove();
+            settings.callback();
+          });
+        }
+      });
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.clearing = {
+    name : 'clearing',
+
+    version : '5.5.3',
+
+    settings : {
+      templates : {
+        viewing : '<a href="#" class="clearing-close">&times;</a>' +
+          '<div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
+          '<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' +
+          '<a href="#" class="clearing-main-next"><span></span></a></div>' +
+          '<img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
+          '<img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />'
+      },
+
+      // comma delimited list of selectors that, on click, will close clearing,
+      // add 'div.clearing-blackout, div.visible-img' to close on background click
+      close_selectors : '.clearing-close, div.clearing-blackout',
+
+      // Default to the entire li element.
+      open_selectors : '',
+
+      // Image will be skipped in carousel.
+      skip_selector : '',
+
+      touch_label : '',
+
+      // event initializer and locks
+      init : false,
+      locked : false
+    },
+
+    init : function (scope, method, options) {
+      var self = this;
+      Foundation.inherit(this, 'throttle image_loaded');
+
+      this.bindings(method, options);
+
+      if (self.S(this.scope).is('[' + this.attr_name() + ']')) {
+        this.assemble(self.S('li', this.scope));
+      } else {
+        self.S('[' + this.attr_name() + ']', this.scope).each(function () {
+          self.assemble(self.S('li', this));
+        });
+      }
+    },
+
+    events : function (scope) {
+      var self = this,
+          S = self.S,
+          $scroll_container = $('.scroll-container');
+
+      if ($scroll_container.length > 0) {
+        this.scope = $scroll_container;
+      }
+
+      S(this.scope)
+        .off('.clearing')
+        .on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors,
+          function (e, current, target) {
+            var current = current || S(this),
+                target = target || current,
+                next = current.next('li'),
+                settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'),
+                image = S(e.target);
+
+            e.preventDefault();
+
+            if (!settings) {
+              self.init();
+              settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+            }
+
+            // if clearing is open and the current image is
+            // clicked, go to the next image in sequence
+            if (target.hasClass('visible') &&
+              current[0] === target[0] &&
+              next.length > 0 && self.is_open(current)) {
+              target = next;
+              image = S('img', target);
+            }
+
+            // set current and target to the clicked li if not otherwise defined.
+            self.open(image, current, target);
+            self.update_paddles(target);
+          })
+
+        .on('click.fndtn.clearing', '.clearing-main-next',
+          function (e) { self.nav(e, 'next') })
+        .on('click.fndtn.clearing', '.clearing-main-prev',
+          function (e) { self.nav(e, 'prev') })
+        .on('click.fndtn.clearing', this.settings.close_selectors,
+          function (e) { Foundation.libs.clearing.close(e, this) });
+
+      $(document).on('keydown.fndtn.clearing',
+          function (e) { self.keydown(e) });
+
+      S(window).off('.clearing').on('resize.fndtn.clearing',
+        function () { self.resize() });
+
+      this.swipe_events(scope);
+    },
+
+    swipe_events : function (scope) {
+      var self = this,
+      S = self.S;
+
+      S(this.scope)
+        .on('touchstart.fndtn.clearing', '.visible-img', function (e) {
+          if (!e.touches) { e = e.originalEvent; }
+          var data = {
+                start_page_x : e.touches[0].pageX,
+                start_page_y : e.touches[0].pageY,
+                start_time : (new Date()).getTime(),
+                delta_x : 0,
+                is_scrolling : undefined
+              };
+
+          S(this).data('swipe-transition', data);
+          e.stopPropagation();
+        })
+        .on('touchmove.fndtn.clearing', '.visible-img', function (e) {
+          if (!e.touches) {
+            e = e.originalEvent;
+          }
+          // Ignore pinch/zoom events
+          if (e.touches.length > 1 || e.scale && e.scale !== 1) {
+            return;
+          }
+
+          var data = S(this).data('swipe-transition');
+
+          if (typeof data === 'undefined') {
+            data = {};
+          }
+
+          data.delta_x = e.touches[0].pageX - data.start_page_x;
+
+          if (Foundation.rtl) {
+            data.delta_x = -data.delta_x;
+          }
+
+          if (typeof data.is_scrolling === 'undefined') {
+            data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
+          }
+
+          if (!data.is_scrolling && !data.active) {
+            e.preventDefault();
+            var direction = (data.delta_x < 0) ? 'next' : 'prev';
+            data.active = true;
+            self.nav(e, direction);
+          }
+        })
+        .on('touchend.fndtn.clearing', '.visible-img', function (e) {
+          S(this).data('swipe-transition', {});
+          e.stopPropagation();
+        });
+    },
+
+    assemble : function ($li) {
+      var $el = $li.parent();
+
+      if ($el.parent().hasClass('carousel')) {
+        return;
+      }
+
+      $el.after('<div id="foundationClearingHolder"></div>');
+
+      var grid = $el.detach(),
+          grid_outerHTML = '';
+
+      if (grid[0] == null) {
+        return;
+      } else {
+        grid_outerHTML = grid[0].outerHTML;
+      }
+
+      var holder = this.S('#foundationClearingHolder'),
+          settings = $el.data(this.attr_name(true) + '-init'),
+          data = {
+            grid : '<div class="carousel">' + grid_outerHTML + '</div>',
+            viewing : settings.templates.viewing
+          },
+          wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
+            data.grid + '</div></div>',
+          touch_label = this.settings.touch_label;
+
+      if (Modernizr.touch) {
+        wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end();
+      }
+
+      holder.after(wrapper).remove();
+    },
+
+    open : function ($image, current, target) {
+      var self = this,
+          body = $(document.body),
+          root = target.closest('.clearing-assembled'),
+          container = self.S('div', root).first(),
+          visible_image = self.S('.visible-img', container),
+          image = self.S('img', visible_image).not($image),
+          label = self.S('.clearing-touch-label', container),
+          error = false,
+          loaded = {};
+
+      // Event to disable scrolling on touch devices when Clearing is activated
+      $('body').on('touchmove', function (e) {
+        e.preventDefault();
+      });
+
+      image.error(function () {
+        error = true;
+      });
+
+      function startLoad() {
+        setTimeout(function () {
+          this.image_loaded(image, function () {
+            if (image.outerWidth() === 1 && !error) {
+              startLoad.call(this);
+            } else {
+              cb.call(this, image);
+            }
+          }.bind(this));
+        }.bind(this), 100);
+      }
+
+      function cb (image) {
+        var $image = $(image);
+        $image.css('visibility', 'visible');
+        $image.trigger('imageVisible');
+        // toggle the gallery
+        body.css('overflow', 'hidden');
+        root.addClass('clearing-blackout');
+        container.addClass('clearing-container');
+        visible_image.show();
+        this.fix_height(target)
+          .caption(self.S('.clearing-caption', visible_image), self.S('img', target))
+          .center_and_label(image, label)
+          .shift(current, target, function () {
+            target.closest('li').siblings().removeClass('visible');
+            target.closest('li').addClass('visible');
+          });
+        visible_image.trigger('opened.fndtn.clearing')
+      }
+
+      if (!this.locked()) {
+        visible_image.trigger('open.fndtn.clearing');
+        // set the image to the selected thumbnail
+        loaded = this.load($image);
+        if (loaded.interchange) {
+          image
+            .attr('data-interchange', loaded.interchange)
+            .foundation('interchange', 'reflow');
+        } else {
+          image
+            .attr('src', loaded.src)
+            .attr('data-interchange', '');
+        }
+        image.css('visibility', 'hidden');
+
+        startLoad.call(this);
+      }
+    },
+
+    close : function (e, el) {
+      e.preventDefault();
+
+      var root = (function (target) {
+            if (/blackout/.test(target.selector)) {
+              return target;
+            } else {
+              return target.closest('.clearing-blackout');
+            }
+          }($(el))),
+          body = $(document.body), container, visible_image;
+
+      if (el === e.target && root) {
+        body.css('overflow', '');
+        container = $('div', root).first();
+        visible_image = $('.visible-img', container);
+        visible_image.trigger('close.fndtn.clearing');
+        this.settings.prev_index = 0;
+        $('ul[' + this.attr_name() + ']', root)
+          .attr('style', '').closest('.clearing-blackout')
+          .removeClass('clearing-blackout');
+        container.removeClass('clearing-container');
+        visible_image.hide();
+        visible_image.trigger('closed.fndtn.clearing');
+      }
+
+      // Event to re-enable scrolling on touch devices
+      $('body').off('touchmove');
+
+      return false;
+    },
+
+    is_open : function (current) {
+      return current.parent().prop('style').length > 0;
+    },
+
+    keydown : function (e) {
+      var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'),
+          NEXT_KEY = this.rtl ? 37 : 39,
+          PREV_KEY = this.rtl ? 39 : 37,
+          ESC_KEY = 27;
+
+      if (e.which === NEXT_KEY) {
+        this.go(clearing, 'next');
+      }
+      if (e.which === PREV_KEY) {
+        this.go(clearing, 'prev');
+      }
+      if (e.which === ESC_KEY) {
+        this.S('a.clearing-close').trigger('click.fndtn.clearing');
+      }
+    },
+
+    nav : function (e, direction) {
+      var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout');
+
+      e.preventDefault();
+      this.go(clearing, direction);
+    },
+
+    resize : function () {
+      var image = $('img', '.clearing-blackout .visible-img'),
+          label = $('.clearing-touch-label', '.clearing-blackout');
+
+      if (image.length) {
+        this.center_and_label(image, label);
+        image.trigger('resized.fndtn.clearing')
+      }
+    },
+
+    // visual adjustments
+    fix_height : function (target) {
+      var lis = target.parent().children(),
+          self = this;
+
+      lis.each(function () {
+        var li = self.S(this),
+            image = li.find('img');
+
+        if (li.height() > image.outerHeight()) {
+          li.addClass('fix-height');
+        }
+      })
+      .closest('ul')
+      .width(lis.length * 100 + '%');
+
+      return this;
+    },
+
+    update_paddles : function (target) {
+      target = target.closest('li');
+      var visible_image = target
+        .closest('.carousel')
+        .siblings('.visible-img');
+
+      if (target.next().length > 0) {
+        this.S('.clearing-main-next', visible_image).removeClass('disabled');
+      } else {
+        this.S('.clearing-main-next', visible_image).addClass('disabled');
+      }
+
+      if (target.prev().length > 0) {
+        this.S('.clearing-main-prev', visible_image).removeClass('disabled');
+      } else {
+        this.S('.clearing-main-prev', visible_image).addClass('disabled');
+      }
+    },
+
+    center_and_label : function (target, label) {
+      if (!this.rtl && label.length > 0) {
+        label.css({
+          marginLeft : -(label.outerWidth() / 2),
+          marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10
+        });
+      } else {
+        label.css({
+          marginRight : -(label.outerWidth() / 2),
+          marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10,
+          left: 'auto',
+          right: '50%'
+        });
+      }
+      return this;
+    },
+
+    // image loading and preloading
+
+    load : function ($image) {
+      var href,
+          interchange,
+          closest_a;
+
+      if ($image[0].nodeName === 'A') {
+        href = $image.attr('href');
+        interchange = $image.data('clearing-interchange');
+      } else {
+        closest_a = $image.closest('a');
+        href = closest_a.attr('href');
+        interchange = closest_a.data('clearing-interchange');
+      }
+
+      this.preload($image);
+
+      return {
+        'src': href ? href : $image.attr('src'),
+        'interchange': href ? interchange : $image.data('clearing-interchange')
+      }
+    },
+
+    preload : function ($image) {
+      this
+        .img($image.closest('li').next(), 'next')
+        .img($image.closest('li').prev(), 'prev');
+    },
+
+    img : function (img, sibling_type) {
+      if (img.length) {
+        var preload_img = $('.clearing-preload-' + sibling_type),
+            new_a = this.S('a', img),
+            src,
+            interchange,
+            image;
+
+        if (new_a.length) {
+          src = new_a.attr('href');
+          interchange = new_a.data('clearing-interchange');
+        } else {
+          image = this.S('img', img);
+          src = image.attr('src');
+          interchange = image.data('clearing-interchange');
+        }
+
+        if (interchange) {
+          preload_img.attr('data-interchange', interchange);
+        } else {
+          preload_img.attr('src', src);
+          preload_img.attr('data-interchange', '');
+        }
+      }
+      return this;
+    },
+
+    // image caption
+
+    caption : function (container, $image) {
+      var caption = $image.attr('data-caption');
+
+      if (caption) {
+       var containerPlain = container.get(0);
+       containerPlain.innerHTML = caption;
+        container.show();
+      } else {
+        container
+          .text('')
+          .hide();
+      }
+      return this;
+    },
+
+    // directional methods
+
+    go : function ($ul, direction) {
+      var current = this.S('.visible', $ul),
+          target = current[direction]();
+
+      // Check for skip selector.
+      if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) {
+        target = target[direction]();
+      }
+
+      if (target.length) {
+        this.S('img', target)
+          .trigger('click.fndtn.clearing', [current, target])
+          .trigger('change.fndtn.clearing');
+      }
+    },
+
+    shift : function (current, target, callback) {
+      var clearing = target.parent(),
+          old_index = this.settings.prev_index || target.index(),
+          direction = this.direction(clearing, current, target),
+          dir = this.rtl ? 'right' : 'left',
+          left = parseInt(clearing.css('left'), 10),
+          width = target.outerWidth(),
+          skip_shift;
+
+      var dir_obj = {};
+
+      // we use jQuery animate instead of CSS transitions because we
+      // need a callback to unlock the next animation
+      // needs support for RTL **
+      if (target.index() !== old_index && !/skip/.test(direction)) {
+        if (/left/.test(direction)) {
+          this.lock();
+          dir_obj[dir] = left + width;
+          clearing.animate(dir_obj, 300, this.unlock());
+        } else if (/right/.test(direction)) {
+          this.lock();
+          dir_obj[dir] = left - width;
+          clearing.animate(dir_obj, 300, this.unlock());
+        }
+      } else if (/skip/.test(direction)) {
+        // the target image is not adjacent to the current image, so
+        // do we scroll right or not
+        skip_shift = target.index() - this.settings.up_count;
+        this.lock();
+
+        if (skip_shift > 0) {
+          dir_obj[dir] = -(skip_shift * width);
+          clearing.animate(dir_obj, 300, this.unlock());
+        } else {
+          dir_obj[dir] = 0;
+          clearing.animate(dir_obj, 300, this.unlock());
+        }
+      }
+
+      callback();
+    },
+
+    direction : function ($el, current, target) {
+      var lis = this.S('li', $el),
+          li_width = lis.outerWidth() + (lis.outerWidth() / 4),
+          up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1,
+          target_index = lis.index(target),
+          response;
+
+      this.settings.up_count = up_count;
+
+      if (this.adjacent(this.settings.prev_index, target_index)) {
+        if ((target_index > up_count) && target_index > this.settings.prev_index) {
+          response = 'right';
+        } else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) {
+          response = 'left';
+        } else {
+          response = false;
+        }
+      } else {
+        response = 'skip';
+      }
+
+      this.settings.prev_index = target_index;
+
+      return response;
+    },
+
+    adjacent : function (current_index, target_index) {
+      for (var i = target_index + 1; i >= target_index - 1; i--) {
+        if (i === current_index) {
+          return true;
+        }
+      }
+      return false;
+    },
+
+    // lock management
+
+    lock : function () {
+      this.settings.locked = true;
+    },
+
+    unlock : function () {
+      this.settings.locked = false;
+    },
+
+    locked : function () {
+      return this.settings.locked;
+    },
+
+    off : function () {
+      this.S(this.scope).off('.fndtn.clearing');
+      this.S(window).off('.fndtn.clearing');
+    },
+
+    reflow : function () {
+      this.init();
+    }
+  };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.dropdown = {
+    name : 'dropdown',
+
+    version : '5.5.3',
+
+    settings : {
+      active_class : 'open',
+      disabled_class : 'disabled',
+      mega_class : 'mega',
+      align : 'bottom',
+      is_hover : false,
+      hover_timeout : 150,
+      opened : function () {},
+      closed : function () {}
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle');
+
+      $.extend(true, this.settings, method, options);
+      this.bindings(method, options);
+    },
+
+    events : function (scope) {
+      var self = this,
+          S = self.S;
+
+      S(this.scope)
+        .off('.dropdown')
+        .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
+          var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
+          if (!settings.is_hover || Modernizr.touch) {
+            e.preventDefault();
+            if (S(this).parent('[data-reveal-id]').length) {
+              e.stopPropagation();
+            }
+            self.toggle($(this));
+          }
+        })
+        .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+          var $this = S(this),
+              dropdown,
+              target;
+
+          clearTimeout(self.timeout);
+
+          if ($this.data(self.data_attr())) {
+            dropdown = S('#' + $this.data(self.data_attr()));
+            target = $this;
+          } else {
+            dropdown = $this;
+            target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]');
+          }
+
+          var settings = target.data(self.attr_name(true) + '-init') || self.settings;
+
+          if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {
+            self.closeall.call(self);
+          }
+
+          if (settings.is_hover) {
+            self.open.apply(self, [dropdown, target]);
+          }
+        })
+        .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+          var $this = S(this);
+          var settings;
+
+          if ($this.data(self.data_attr())) {
+              settings = $this.data(self.data_attr(true) + '-init') || self.settings;
+          } else {
+              var target   = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
+                  settings = target.data(self.attr_name(true) + '-init') || self.settings;
+          }
+
+          self.timeout = setTimeout(function () {
+            if ($this.data(self.data_attr())) {
+              if (settings.is_hover) {
+                self.close.call(self, S('#' + $this.data(self.data_attr())));
+              }
+            } else {
+              if (settings.is_hover) {
+                self.close.call(self, $this);
+              }
+            }
+          }.bind(this), settings.hover_timeout);
+        })
+        .on('click.fndtn.dropdown', function (e) {
+          var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
+          var links  = parent.find('a');
+
+          if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {
+              self.close.call(self, S('[' + self.attr_name() + '-content]'));
+          }
+
+          if (e.target !== document && !$.contains(document.documentElement, e.target)) {
+            return;
+          }
+
+          if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {
+            return;
+          }
+
+          if (!(S(e.target).data('revealId')) &&
+            (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
+              $.contains(parent.first()[0], e.target)))) {
+            e.stopPropagation();
+            return;
+          }
+
+          self.close.call(self, S('[' + self.attr_name() + '-content]'));
+        })
+        .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+          self.settings.opened.call(this);
+        })
+        .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+          self.settings.closed.call(this);
+        });
+
+      S(window)
+        .off('.dropdown')
+        .on('resize.fndtn.dropdown', self.throttle(function () {
+          self.resize.call(self);
+        }, 50));
+
+      this.resize();
+    },
+
+    close : function (dropdown) {
+      var self = this;
+      dropdown.each(function (idx) {
+        var original_target = $('[' + self.attr_name() + '=' + dropdown[idx].id + ']') || $('aria-controls=' + dropdown[idx].id + ']');
+        original_target.attr('aria-expanded', 'false');
+        if (self.S(this).hasClass(self.settings.active_class)) {
+          self.S(this)
+            .css(Foundation.rtl ? 'right' : 'left', '-99999px')
+            .attr('aria-hidden', 'true')
+            .removeClass(self.settings.active_class)
+            .prev('[' + self.attr_name() + ']')
+            .removeClass(self.settings.active_class)
+            .removeData('target');
+
+          self.S(this).trigger('closed.fndtn.dropdown', [dropdown]);
+        }
+      });
+      dropdown.removeClass('f-open-' + this.attr_name(true));
+    },
+
+    closeall : function () {
+      var self = this;
+      $.each(self.S('.f-open-' + this.attr_name(true)), function () {
+        self.close.call(self, self.S(this));
+      });
+    },
+
+    open : function (dropdown, target) {
+      this
+        .css(dropdown
+        .addClass(this.settings.active_class), target);
+      dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
+      dropdown.data('target', target.get(0)).trigger('opened.fndtn.dropdown', [dropdown, target]);
+      dropdown.attr('aria-hidden', 'false');
+      target.attr('aria-expanded', 'true');
+      dropdown.focus();
+      dropdown.addClass('f-open-' + this.attr_name(true));
+    },
+
+    data_attr : function () {
+      if (this.namespace.length > 0) {
+        return this.namespace + '-' + this.name;
+      }
+
+      return this.name;
+    },
+
+    toggle : function (target) {
+      if (target.hasClass(this.settings.disabled_class)) {
+        return;
+      }
+      var dropdown = this.S('#' + target.data(this.data_attr()));
+      if (dropdown.length === 0) {
+        // No dropdown found, not continuing
+        return;
+      }
+
+      this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));
+
+      if (dropdown.hasClass(this.settings.active_class)) {
+        this.close.call(this, dropdown);
+        if (dropdown.data('target') !== target.get(0)) {
+          this.open.call(this, dropdown, target);
+        }
+      } else {
+        this.open.call(this, dropdown, target);
+      }
+    },
+
+    resize : function () {
+      var dropdown = this.S('[' + this.attr_name() + '-content].open');
+      var target = $(dropdown.data("target"));
+
+      if (dropdown.length && target.length) {
+        this.css(dropdown, target);
+      }
+    },
+
+    css : function (dropdown, target) {
+      var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),
+          settings = target.data(this.attr_name(true) + '-init') || this.settings,
+          parentOverflow = dropdown.parent().css('overflow-y') || dropdown.parent().css('overflow');
+
+      this.clear_idx();
+
+
+
+      if (this.small()) {
+        var p = this.dirs.bottom.call(dropdown, target, settings);
+
+        dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
+          position : 'absolute',
+          width : '95%',
+          'max-width' : 'none',
+          top : p.top
+        });
+
+        dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
+      }
+      // detect if dropdown is in an overflow container
+      else if (parentOverflow !== 'visible') {
+        var offset = target[0].offsetTop + target[0].offsetHeight;
+
+        dropdown.attr('style', '').css({
+          position : 'absolute',
+          top : offset
+        });
+
+        dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
+      }
+      else {
+
+        this.style(dropdown, target, settings);
+      }
+
+      return dropdown;
+    },
+
+    style : function (dropdown, target, settings) {
+      var css = $.extend({position : 'absolute'},
+        this.dirs[settings.align].call(dropdown, target, settings));
+
+      dropdown.attr('style', '').css(css);
+    },
+
+    // return CSS property object
+    // `this` is the dropdown
+    dirs : {
+      // Calculate target offset
+      _base : function (t, s) {
+        var o_p = this.offsetParent(),
+            o = o_p.offset(),
+            p = t.offset();
+
+        p.top -= o.top;
+        p.left -= o.left;
+
+        //set some flags on the p object to pass along
+        p.missRight = false;
+        p.missTop = false;
+        p.missLeft = false;
+        p.leftRightFlag = false;
+
+        //lets see if the panel will be off the screen
+        //get the actual width of the page and store it
+        var actualBodyWidth;
+        var windowWidth = window.innerWidth;
+        
+        if (document.getElementsByClassName('row')[0]) {
+          actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
+        } else {
+          actualBodyWidth = windowWidth;
+        }
+
+        var actualMarginWidth = (windowWidth - actualBodyWidth) / 2;
+        var actualBoundary = actualBodyWidth;
+
+        if (!this.hasClass('mega') && !s.ignore_repositioning) {
+          var outerWidth = this.outerWidth();
+          var o_left = t.offset().left;
+                 
+          //miss top
+          if (t.offset().top <= this.outerHeight()) {
+            p.missTop = true;
+            actualBoundary = windowWidth - actualMarginWidth;
+            p.leftRightFlag = true;
+          }
+
+          //miss right
+          if (o_left + outerWidth > o_left + actualMarginWidth && o_left - actualMarginWidth > outerWidth) {
+            p.missRight = true;
+            p.missLeft = false;
+          }
+
+          //miss left
+          if (o_left - outerWidth <= 0) {
+            p.missLeft = true;
+            p.missRight = false;
+          }
+        }
+
+        return p;
+      },
+
+      top : function (t, s) {
+        var self = Foundation.libs.dropdown,
+            p = self.dirs._base.call(this, t, s);
+
+        this.addClass('drop-top');
+
+        if (p.missTop == true) {
+          p.top = p.top + t.outerHeight() + this.outerHeight();
+          this.removeClass('drop-top');
+        }
+
+        if (p.missRight == true) {
+          p.left = p.left - this.outerWidth() + t.outerWidth();
+        }
+
+        if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+          self.adjust_pip(this, t, s, p);
+        }
+
+        if (Foundation.rtl) {
+          return {left : p.left - this.outerWidth() + t.outerWidth(),
+            top : p.top - this.outerHeight()};
+        }
+
+        return {left : p.left, top : p.top - this.outerHeight()};
+      },
+
+      bottom : function (t, s) {
+        var self = Foundation.libs.dropdown,
+            p = self.dirs._base.call(this, t, s);
+
+        if (p.missRight == true) {
+          p.left = p.left - this.outerWidth() + t.outerWidth();
+        }
+
+        if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+          self.adjust_pip(this, t, s, p);
+        }
+
+        if (self.rtl) {
+          return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};
+        }
+
+        return {left : p.left, top : p.top + t.outerHeight()};
+      },
+
+      left : function (t, s) {
+        var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
+
+        this.addClass('drop-left');
+
+        if (p.missLeft == true) {
+          p.left =  p.left + this.outerWidth();
+          p.top = p.top + t.outerHeight();
+          this.removeClass('drop-left');
+        }
+
+        return {left : p.left - this.outerWidth(), top : p.top};
+      },
+
+      right : function (t, s) {
+        var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
+
+        this.addClass('drop-right');
+
+        if (p.missRight == true) {
+          p.left = p.left - this.outerWidth();
+          p.top = p.top + t.outerHeight();
+          this.removeClass('drop-right');
+        } else {
+          p.triggeredRight = true;
+        }
+
+        var self = Foundation.libs.dropdown;
+
+        if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+          self.adjust_pip(this, t, s, p);
+        }
+
+        return {left : p.left + t.outerWidth(), top : p.top};
+      }
+    },
+
+    // Insert rule to style psuedo elements
+    adjust_pip : function (dropdown, target, settings, position) {
+      var sheet = Foundation.stylesheet,
+          pip_offset_base = 8;
+
+      if (dropdown.hasClass(settings.mega_class)) {
+        pip_offset_base = position.left + (target.outerWidth() / 2) - 8;
+      } else if (this.small()) {
+        pip_offset_base += position.left - 8;
+      }
+
+      this.rule_idx = sheet.cssRules.length;
+
+      //default
+      var sel_before = '.f-dropdown.open:before',
+          sel_after  = '.f-dropdown.open:after',
+          css_before = 'left: ' + pip_offset_base + 'px;',
+          css_after  = 'left: ' + (pip_offset_base - 1) + 'px;';
+
+      if (position.missRight == true) {
+        pip_offset_base = dropdown.outerWidth() - 23;
+        sel_before = '.f-dropdown.open:before',
+        sel_after  = '.f-dropdown.open:after',
+        css_before = 'left: ' + pip_offset_base + 'px;',
+        css_after  = 'left: ' + (pip_offset_base - 1) + 'px;';
+      }
+
+      //just a case where right is fired, but its not missing right
+      if (position.triggeredRight == true) {
+        sel_before = '.f-dropdown.open:before',
+        sel_after  = '.f-dropdown.open:after',
+        css_before = 'left:-12px;',
+        css_after  = 'left:-14px;';
+      }
+
+      if (sheet.insertRule) {
+        sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
+        sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
+      } else {
+        sheet.addRule(sel_before, css_before, this.rule_idx);
+        sheet.addRule(sel_after, css_after, this.rule_idx + 1);
+      }
+    },
+
+    // Remove old dropdown rule index
+    clear_idx : function () {
+      var sheet = Foundation.stylesheet;
+
+      if (typeof this.rule_idx !== 'undefined') {
+        sheet.deleteRule(this.rule_idx);
+        sheet.deleteRule(this.rule_idx);
+        delete this.rule_idx;
+      }
+    },
+
+    small : function () {
+      return matchMedia(Foundation.media_queries.small).matches &&
+        !matchMedia(Foundation.media_queries.medium).matches;
+    },
+
+    off : function () {
+      this.S(this.scope).off('.fndtn.dropdown');
+      this.S('html, body').off('.fndtn.dropdown');
+      this.S(window).off('.fndtn.dropdown');
+      this.S('[data-dropdown-content]').off('.fndtn.dropdown');
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.equalizer = {
+    name : 'equalizer',
+
+    version : '5.5.3',
+
+    settings : {
+      use_tallest : true,
+      before_height_change : $.noop,
+      after_height_change : $.noop,
+      equalize_on_stack : false,
+      act_on_hidden_el: false
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'image_loaded');
+      this.bindings(method, options);
+      this.reflow();
+    },
+
+    events : function () {
+      this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
+        this.reflow();
+      }.bind(this));
+    },
+
+    equalize : function (equalizer) {
+      var isStacked = false,
+          group = equalizer.data('equalizer'),
+          settings = equalizer.data(this.attr_name(true)+'-init') || this.settings,
+          vals,
+          firstTopOffset;
+
+      if (settings.act_on_hidden_el) {
+        vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]');
+      }
+      else {
+        vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible');
+      }
+      
+      if (vals.length === 0) {
+        return;
+      }
+
+      settings.before_height_change();
+      equalizer.trigger('before-height-change.fndth.equalizer');
+      vals.height('inherit');
+
+      if (settings.equalize_on_stack === false) {
+        firstTopOffset = vals.first().offset().top;
+        vals.each(function () {
+          if ($(this).offset().top !== firstTopOffset) {
+            isStacked = true;
+            return false;
+          }
+        });
+        if (isStacked) {
+          return;
+        }
+      }
+
+      var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
+
+      if (settings.use_tallest) {
+        var max = Math.max.apply(null, heights);
+        vals.css('height', max);
+      } else {
+        var min = Math.min.apply(null, heights);
+        vals.css('height', min);
+      }
+
+      settings.after_height_change();
+      equalizer.trigger('after-height-change.fndtn.equalizer');
+    },
+
+    reflow : function () {
+      var self = this;
+
+      this.S('[' + this.attr_name() + ']', this.scope).each(function () {
+        var $eq_target = $(this),
+            media_query = $eq_target.data('equalizer-mq'),
+            ignore_media_query = true;
+
+        if (media_query) {
+          media_query = 'is_' + media_query.replace(/-/g, '_');
+          if (Foundation.utils.hasOwnProperty(media_query)) {
+            ignore_media_query = false;
+          }
+        }
+
+        self.image_loaded(self.S('img', this), function () {
+          if (ignore_media_query || Foundation.utils[media_query]()) {
+            self.equalize($eq_target)
+          } else {
+            var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible');
+            vals.css('height', 'auto');
+          }
+        });
+      });
+    }
+  };
+})(jQuery, window, window.document);
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.interchange = {
+    name : 'interchange',
+
+    version : '5.5.3',
+
+    cache : {},
+
+    images_loaded : false,
+    nodes_loaded : false,
+
+    settings : {
+      load_attr : 'interchange',
+
+      named_queries : {
+        'default'     : 'only screen',
+        'small'       : Foundation.media_queries['small'],
+        'small-only'  : Foundation.media_queries['small-only'],
+        'medium'      : Foundation.media_queries['medium'],
+        'medium-only' : Foundation.media_queries['medium-only'],
+        'large'       : Foundation.media_queries['large'],
+        'large-only'  : Foundation.media_queries['large-only'],
+        'xlarge'      : Foundation.media_queries['xlarge'],
+        'xlarge-only' : Foundation.media_queries['xlarge-only'],
+        'xxlarge'     : Foundation.media_queries['xxlarge'],
+        'landscape'   : 'only screen and (orientation: landscape)',
+        'portrait'    : 'only screen and (orientation: portrait)',
+        'retina'      : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
+          'only screen and (min--moz-device-pixel-ratio: 2),' +
+          'only screen and (-o-min-device-pixel-ratio: 2/1),' +
+          'only screen and (min-device-pixel-ratio: 2),' +
+          'only screen and (min-resolution: 192dpi),' +
+          'only screen and (min-resolution: 2dppx)'
+      },
+
+      directives : {
+        replace : function (el, path, trigger) {
+          // The trigger argument, if called within the directive, fires
+          // an event named after the directive on the element, passing
+          // any parameters along to the event that you pass to trigger.
+          //
+          // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
+          //
+          // This allows you to bind a callback like so:
+          // $('#interchangeContainer').on('replace', function (e, a, b, c) {
+          //   console.log($(this).html(), a, b, c);
+          // });
+
+          if (el !== null && /IMG/.test(el[0].nodeName)) {
+            var orig_path = $.each(el, function(){this.src = path;});
+            // var orig_path = el[0].src;
+
+            if (new RegExp(path, 'i').test(orig_path)) {
+              return;
+            }
+
+            el.attr("src", path);
+
+            return trigger(el[0].src);
+          }
+          var last_path = el.data(this.data_attr + '-last-path'),
+              self = this;
+
+          if (last_path == path) {
+            return;
+          }
+
+          if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
+            $(el).css('background-image', 'url(' + path + ')');
+            el.data('interchange-last-path', path);
+            return trigger(path);
+          }
+
+          return $.get(path, function (response) {
+            el.html(response);
+            el.data(self.data_attr + '-last-path', path);
+            trigger();
+          });
+
+        }
+      }
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle random_str');
+
+      this.data_attr = this.set_data_attr();
+      $.extend(true, this.settings, method, options);
+      this.bindings(method, options);
+      this.reflow();
+    },
+
+    get_media_hash : function () {
+        var mediaHash = '';
+        for (var queryName in this.settings.named_queries ) {
+            mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
+        }
+        return mediaHash;
+    },
+
+    events : function () {
+      var self = this, prevMediaHash;
+
+      $(window)
+        .off('.interchange')
+        .on('resize.fndtn.interchange', self.throttle(function () {
+            var currMediaHash = self.get_media_hash();
+            if (currMediaHash !== prevMediaHash) {
+                self.resize();
+            }
+            prevMediaHash = currMediaHash;
+        }, 50));
+
+      return this;
+    },
+
+    resize : function () {
+      var cache = this.cache;
+
+      if (!this.images_loaded || !this.nodes_loaded) {
+        setTimeout($.proxy(this.resize, this), 50);
+        return;
+      }
+
+      for (var uuid in cache) {
+        if (cache.hasOwnProperty(uuid)) {
+          var passed = this.results(uuid, cache[uuid]);
+          if (passed) {
+            this.settings.directives[passed
+              .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) {
+                if (arguments[0] instanceof Array) {
+                  var args = arguments[0];
+                } else {
+                  var args = Array.prototype.slice.call(arguments, 0);
+                }
+
+                return function() {
+                  passed.el.trigger(passed.scenario[1], args);
+                }
+              }(passed)));
+          }
+        }
+      }
+
+    },
+
+    results : function (uuid, scenarios) {
+      var count = scenarios.length;
+
+      if (count > 0) {
+        var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
+
+        while (count--) {
+          var mq, rule = scenarios[count][2];
+          if (this.settings.named_queries.hasOwnProperty(rule)) {
+            mq = matchMedia(this.settings.named_queries[rule]);
+          } else {
+            mq = matchMedia(rule);
+          }
+          if (mq.matches) {
+            return {el : el, scenario : scenarios[count]};
+          }
+        }
+      }
+
+      return false;
+    },
+
+    load : function (type, force_update) {
+      if (typeof this['cached_' + type] === 'undefined' || force_update) {
+        this['update_' + type]();
+      }
+
+      return this['cached_' + type];
+    },
+
+    update_images : function () {
+      var images = this.S('img[' + this.data_attr + ']'),
+          count = images.length,
+          i = count,
+          loaded_count = 0,
+          data_attr = this.data_attr;
+
+      this.cache = {};
+      this.cached_images = [];
+      this.images_loaded = (count === 0);
+
+      while (i--) {
+        loaded_count++;
+        if (images[i]) {
+          var str = images[i].getAttribute(data_attr) || '';
+
+          if (str.length > 0) {
+            this.cached_images.push(images[i]);
+          }
+        }
+
+        if (loaded_count === count) {
+          this.images_loaded = true;
+          this.enhance('images');
+        }
+      }
+
+      return this;
+    },
+
+    update_nodes : function () {
+      var nodes = this.S('[' + this.data_attr + ']').not('img'),
+          count = nodes.length,
+          i = count,
+          loaded_count = 0,
+          data_attr = this.data_attr;
+
+      this.cached_nodes = [];
+      this.nodes_loaded = (count === 0);
+
+      while (i--) {
+        loaded_count++;
+        var str = nodes[i].getAttribute(data_attr) || '';
+
+        if (str.length > 0) {
+          this.cached_nodes.push(nodes[i]);
+        }
+
+        if (loaded_count === count) {
+          this.nodes_loaded = true;
+          this.enhance('nodes');
+        }
+      }
+
+      return this;
+    },
+
+    enhance : function (type) {
+      var i = this['cached_' + type].length;
+
+      while (i--) {
+        this.object($(this['cached_' + type][i]));
+      }
+
+      return $(window).trigger('resize.fndtn.interchange');
+    },
+
+    convert_directive : function (directive) {
+
+      var trimmed = this.trim(directive);
+
+      if (trimmed.length > 0) {
+        return trimmed;
+      }
+
+      return 'replace';
+    },
+
+    parse_scenario : function (scenario) {
+      // This logic had to be made more complex since some users were using commas in the url path
+      // So we cannot simply just split on a comma
+
+      var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/),
+      // getting the mq has gotten a bit complicated since we started accounting for several use cases
+      // of URLs. For now we'll continue to match these scenarios, but we may consider having these scenarios
+      // as nested objects or arrays in F6.
+      // regex: match everything before close parenthesis for mq
+      media_query         = scenario[1].match(/(.*)\)/);
+
+      if (directive_match) {
+        var path  = directive_match[1],
+        directive = directive_match[2];
+
+      } else {
+        var cached_split = scenario[0].split(/,\s*$/),
+        path             = cached_split[0],
+        directive        = '';
+      }
+
+      return [this.trim(path), this.convert_directive(directive), this.trim(media_query[1])];
+    },
+
+    object : function (el) {
+      var raw_arr = this.parse_data_attr(el),
+          scenarios = [],
+          i = raw_arr.length;
+
+      if (i > 0) {
+        while (i--) {
+          // split array between comma delimited content and mq
+          // regex: comma, optional space, open parenthesis
+          var scenario = raw_arr[i].split(/,\s?\(/);
+
+          if (scenario.length > 1) {
+            var params = this.parse_scenario(scenario);
+            scenarios.push(params);
+          }
+        }
+      }
+
+      return this.store(el, scenarios);
+    },
+
+    store : function (el, scenarios) {
+      var uuid = this.random_str(),
+          current_uuid = el.data(this.add_namespace('uuid', true));
+
+      if (this.cache[current_uuid]) {
+        return this.cache[current_uuid];
+      }
+
+      el.attr(this.add_namespace('data-uuid'), uuid);
+      return this.cache[uuid] = scenarios;
+    },
+
+    trim : function (str) {
+
+      if (typeof str === 'string') {
+        return $.trim(str);
+      }
+
+      return str;
+    },
+
+    set_data_attr : function (init) {
+      if (init) {
+        if (this.namespace.length > 0) {
+          return this.namespace + '-' + this.settings.load_attr;
+        }
+
+        return this.settings.load_attr;
+      }
+
+      if (this.namespace.length > 0) {
+        return 'data-' + this.namespace + '-' + this.settings.load_attr;
+      }
+
+      return 'data-' + this.settings.load_attr;
+    },
+
+    parse_data_attr : function (el) {
+      var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
+          i = raw.length,
+          output = [];
+
+      while (i--) {
+        if (raw[i].replace(/[\W\d]+/, '').length > 4) {
+          output.push(raw[i]);
+        }
+      }
+
+      return output;
+    },
+
+    reflow : function () {
+      this.load('images', true);
+      this.load('nodes', true);
+    }
+
+  };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  var Modernizr = Modernizr || false;
+
+  Foundation.libs.joyride = {
+    name : 'joyride',
+
+    version : '5.5.3',
+
+    defaults : {
+      expose                   : false,     // turn on or off the expose feature
+      modal                    : true,      // Whether to cover page with modal during the tour
+      keyboard                 : true,      // enable left, right and esc keystrokes
+      tip_location             : 'bottom',  // 'top', 'bottom', 'left' or 'right' in relation to parent
+      nub_position             : 'auto',    // override on a per tooltip bases
+      scroll_speed             : 1500,      // Page scrolling speed in milliseconds, 0 = no scroll animation
+      scroll_animation         : 'linear',  // supports 'swing' and 'linear', extend with jQuery UI.
+      timer                    : 0,         // 0 = no timer , all other numbers = timer in milliseconds
+      start_timer_on_click     : true,      // true or false - true requires clicking the first button start the timer
+      start_offset             : 0,         // the index of the tooltip you want to start on (index of the li)
+      next_button              : true,      // true or false to control whether a next button is used
+      prev_button              : true,      // true or false to control whether a prev button is used
+      tip_animation            : 'fade',    // 'pop' or 'fade' in each tip
+      pause_after              : [],        // array of indexes where to pause the tour after
+      exposed                  : [],        // array of expose elements
+      tip_animation_fade_speed : 300,       // when tipAnimation = 'fade' this is speed in milliseconds for the transition
+      cookie_monster           : false,     // true or false to control whether cookies are used
+      cookie_name              : 'joyride', // Name the cookie you'll use
+      cookie_domain            : false,     // Will this cookie be attached to a domain, ie. '.notableapp.com'
+      cookie_expires           : 365,       // set when you would like the cookie to expire.
+      tip_container            : 'body',    // Where will the tip be attached
+      abort_on_close           : true,      // When true, the close event will not fire any callback
+      tip_location_patterns    : {
+        top : ['bottom'],
+        bottom : [], // bottom should not need to be repositioned
+        left : ['right', 'top', 'bottom'],
+        right : ['left', 'top', 'bottom']
+      },
+      post_ride_callback     : function () {},    // A method to call once the tour closes (canceled or complete)
+      post_step_callback     : function () {},    // A method to call after each step
+      pre_step_callback      : function () {},    // A method to call before each step
+      pre_ride_callback      : function () {},    // A method to call before the tour starts (passed index, tip, and cloned exposed element)
+      post_expose_callback   : function () {},    // A method to call after an element has been exposed
+      template : { // HTML segments for tip layout
+        link          : '<a href="#close" class="joyride-close-tip">&times;</a>',
+        timer         : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
+        tip           : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
+        wrapper       : '<div class="joyride-content-wrapper"></div>',
+        button        : '<a href="#" class="small button joyride-next-tip"></a>',
+        prev_button   : '<a href="#" class="small button joyride-prev-tip"></a>',
+        modal         : '<div class="joyride-modal-bg"></div>',
+        expose        : '<div class="joyride-expose-wrapper"></div>',
+        expose_cover  : '<div class="joyride-expose-cover"></div>'
+      },
+      expose_add_class : '' // One or more space-separated class names to be added to exposed element
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle random_str');
+
+      this.settings = this.settings || $.extend({}, this.defaults, (options || method));
+
+      this.bindings(method, options)
+    },
+
+    go_next : function () {
+      if (this.settings.$li.next().length < 1) {
+        this.end();
+      } else if (this.settings.timer > 0) {
+        clearTimeout(this.settings.automate);
+        this.hide();
+        this.show();
+        this.startTimer();
+      } else {
+        this.hide();
+        this.show();
+      }
+    },
+
+    go_prev : function () {
+      if (this.settings.$li.prev().length < 1) {
+        // Do nothing if there are no prev element
+      } else if (this.settings.timer > 0) {
+        clearTimeout(this.settings.automate);
+        this.hide();
+        this.show(null, true);
+        this.startTimer();
+      } else {
+        this.hide();
+        this.show(null, true);
+      }
+    },
+
+    events : function () {
+      var self = this;
+
+      $(this.scope)
+        .off('.joyride')
+        .on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
+          e.preventDefault();
+          this.go_next()
+        }.bind(this))
+        .on('click.fndtn.joyride', '.joyride-prev-tip', function (e) {
+          e.preventDefault();
+          this.go_prev();
+        }.bind(this))
+
+        .on('click.fndtn.joyride', '.joyride-close-tip', function (e) {
+          e.preventDefault();
+          this.end(this.settings.abort_on_close);
+        }.bind(this))
+
+        .on('keyup.fndtn.joyride', function (e) {
+          // Don't do anything if keystrokes are disabled
+          // or if the joyride is not being shown
+          if (!this.settings.keyboard || !this.settings.riding) {
+            return;
+          }
+
+          switch (e.which) {
+            case 39: // right arrow
+              e.preventDefault();
+              this.go_next();
+              break;
+            case 37: // left arrow
+              e.preventDefault();
+              this.go_prev();
+              break;
+            case 27: // escape
+              e.preventDefault();
+              this.end(this.settings.abort_on_close);
+          }
+        }.bind(this));
+
+      $(window)
+        .off('.joyride')
+        .on('resize.fndtn.joyride', self.throttle(function () {
+          if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) {
+            if (self.settings.exposed.length > 0) {
+              var $els = $(self.settings.exposed);
+
+              $els.each(function () {
+                var $this = $(this);
+                self.un_expose($this);
+                self.expose($this);
+              });
+            }
+
+            if (self.is_phone()) {
+              self.pos_phone();
+            } else {
+              self.pos_default(false);
+            }
+          }
+        }, 100));
+    },
+
+    start : function () {
+      var self = this,
+          $this = $('[' + this.attr_name() + ']', this.scope),
+          integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
+          int_settings_count = integer_settings.length;
+
+      if (!$this.length > 0) {
+        return;
+      }
+
+      if (!this.settings.init) {
+        this.events();
+      }
+
+      this.settings = $this.data(this.attr_name(true) + '-init');
+
+      // non configureable settings
+      this.settings.$content_el = $this;
+      this.settings.$body = $(this.settings.tip_container);
+      this.settings.body_offset = $(this.settings.tip_container).position();
+      this.settings.$tip_content = this.settings.$content_el.find('> li');
+      this.settings.paused = false;
+      this.settings.attempts = 0;
+      this.settings.riding = true;
+
+      // can we create cookies?
+      if (typeof $.cookie !== 'function') {
+        this.settings.cookie_monster = false;
+      }
+
+      // generate the tips and insert into dom.
+      if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) {
+        this.settings.$tip_content.each(function (index) {
+          var $this = $(this);
+          this.settings = $.extend({}, self.defaults, self.data_options($this));
+
+          // Make sure that settings parsed from data_options are integers where necessary
+          var i = int_settings_count;
+          while (i--) {
+            self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);
+          }
+          self.create({$li : $this, index : index});
+        });
+
+        // show first tip
+        if (!this.settings.start_timer_on_click && this.settings.timer > 0) {
+          this.show('init');
+          this.startTimer();
+        } else {
+          this.show('init');
+        }
+
+      }
+    },
+
+    resume : function () {
+      this.set_li();
+      this.show();
+    },
+
+    tip_template : function (opts) {
+      var $blank, content;
+
+      opts.tip_class = opts.tip_class || '';
+
+      $blank = $(this.settings.template.tip).addClass(opts.tip_class);
+      content = $.trim($(opts.li).html()) +
+        this.prev_button_text(opts.prev_button_text, opts.index) +
+        this.button_text(opts.button_text) +
+        this.settings.template.link +
+        this.timer_instance(opts.index);
+
+      $blank.append($(this.settings.template.wrapper));
+      $blank.first().attr(this.add_namespace('data-index'), opts.index);
+      $('.joyride-content-wrapper', $blank).append(content);
+
+      return $blank[0];
+    },
+
+    timer_instance : function (index) {
+      var txt;
+
+      if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) {
+        txt = '';
+      } else {
+        txt = $(this.settings.template.timer)[0].outerHTML;
+      }
+      return txt;
+    },
+
+    button_text : function (txt) {
+      if (this.settings.tip_settings.next_button) {
+        txt = $.trim(txt) || 'Next';
+        txt = $(this.settings.template.button).append(txt)[0].outerHTML;
+      } else {
+        txt = '';
+      }
+      return txt;
+    },
+
+    prev_button_text : function (txt, idx) {
+      if (this.settings.tip_settings.prev_button) {
+        txt = $.trim(txt) || 'Previous';
+
+        // Add the disabled class to the button if it's the first element
+        if (idx == 0) {
+          txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML;
+        } else {
+          txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML;
+        }
+      } else {
+        txt = '';
+      }
+      return txt;
+    },
+
+    create : function (opts) {
+      this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li));
+      var buttonText = opts.$li.attr(this.add_namespace('data-button')) || opts.$li.attr(this.add_namespace('data-text')),
+          prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev')) || opts.$li.attr(this.add_namespace('data-prev-text')),
+        tipClass = opts.$li.attr('class'),
+        $tip_content = $(this.tip_template({
+          tip_class : tipClass,
+          index : opts.index,
+          button_text : buttonText,
+          prev_button_text : prevButtonText,
+          li : opts.$li
+        }));
+
+      $(this.settings.tip_container).append($tip_content);
+    },
+
+    show : function (init, is_prev) {
+      var $timer = null;
+
+      // are we paused?
+      if (this.settings.$li === undefined || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) {
+
+        // don't go to the next li if the tour was paused
+        if (this.settings.paused) {
+          this.settings.paused = false;
+        } else {
+          this.set_li(init, is_prev);
+        }
+
+        this.settings.attempts = 0;
+
+        if (this.settings.$li.length && this.settings.$target.length > 0) {
+          if (init) { //run when we first start
+            this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip);
+            if (this.settings.modal) {
+              this.show_modal();
+            }
+          }
+
+          this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip);
+
+          if (this.settings.modal && this.settings.expose) {
+            this.expose();
+          }
+
+          this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li));
+
+          this.settings.timer = parseInt(this.settings.timer, 10);
+
+          this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location];
+
+          // scroll and hide bg if not modal and not expose
+          if (!/body/i.test(this.settings.$target.selector) && !this.settings.expose) {
+            var joyridemodalbg = $('.joyride-modal-bg');
+            if (/pop/i.test(this.settings.tipAnimation)) {
+                joyridemodalbg.hide();
+            } else {
+                joyridemodalbg.fadeOut(this.settings.tipAnimationFadeSpeed);
+            }
+            this.scroll_to();
+          }
+
+          if (this.is_phone()) {
+            this.pos_phone(true);
+          } else {
+            this.pos_default(true);
+          }
+
+          $timer = this.settings.$next_tip.find('.joyride-timer-indicator');
+
+          if (/pop/i.test(this.settings.tip_animation)) {
+
+            $timer.width(0);
+
+            if (this.settings.timer > 0) {
+
+              this.settings.$next_tip.show();
+
+              setTimeout(function () {
+                $timer.animate({
+                  width : $timer.parent().width()
+                }, this.settings.timer, 'linear');
+              }.bind(this), this.settings.tip_animation_fade_speed);
+
+            } else {
+              this.settings.$next_tip.show();
+
+            }
+
+          } else if (/fade/i.test(this.settings.tip_animation)) {
+
+            $timer.width(0);
+
+            if (this.settings.timer > 0) {
+
+              this.settings.$next_tip
+                .fadeIn(this.settings.tip_animation_fade_speed)
+                .show();
+
+              setTimeout(function () {
+                $timer.animate({
+                  width : $timer.parent().width()
+                }, this.settings.timer, 'linear');
+              }.bind(this), this.settings.tip_animation_fade_speed);
+
+            } else {
+              this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed);
+            }
+          }
+
+          this.settings.$current_tip = this.settings.$next_tip;
+
+        // skip non-existant targets
+        } else if (this.settings.$li && this.settings.$target.length < 1) {
+
+          this.show(init, is_prev);
+
+        } else {
+
+          this.end();
+
+        }
+      } else {
+
+        this.settings.paused = true;
+
+      }
+
+    },
+
+    is_phone : function () {
+      return matchMedia(Foundation.media_queries.small).matches &&
+        !matchMedia(Foundation.media_queries.medium).matches;
+    },
+
+    hide : function () {
+      if (this.settings.modal && this.settings.expose) {
+        this.un_expose();
+      }
+
+      if (!this.settings.modal) {
+        $('.joyride-modal-bg').hide();
+      }
+
+      // Prevent scroll bouncing...wait to remove from layout
+      this.settings.$current_tip.css('visibility', 'hidden');
+      setTimeout($.proxy(function () {
+        this.hide();
+        this.css('visibility', 'visible');
+      }, this.settings.$current_tip), 0);
+      this.settings.post_step_callback(this.settings.$li.index(),
+        this.settings.$current_tip);
+    },
+
+    set_li : function (init, is_prev) {
+      if (init) {
+        this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset);
+        this.set_next_tip();
+        this.settings.$current_tip = this.settings.$next_tip;
+      } else {
+        if (is_prev) {
+          this.settings.$li = this.settings.$li.prev();
+        } else {
+          this.settings.$li = this.settings.$li.next();
+        }
+        this.set_next_tip();
+      }
+
+      this.set_target();
+    },
+
+    set_next_tip : function () {
+      this.settings.$next_tip = $('.joyride-tip-guide').eq(this.settings.$li.index());
+      this.settings.$next_tip.data('closed', '');
+    },
+
+    set_target : function () {
+      var cl = this.settings.$li.attr(this.add_namespace('data-class')),
+          id = this.settings.$li.attr(this.add_namespace('data-id')),
+          $sel = function () {
+            if (id) {
+              return $(document.getElementById(id));
+            } else if (cl) {
+              return $('.' + cl).first();
+            } else {
+              return $('body');
+            }
+          };
+
+      this.settings.$target = $sel();
+    },
+
+    scroll_to : function () {
+      var window_half, tipOffset;
+
+      window_half = $(window).height() / 2;
+      tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight());
+
+      if (tipOffset != 0) {
+        $('html, body').stop().animate({
+          scrollTop : tipOffset
+        }, this.settings.scroll_speed, 'swing');
+      }
+    },
+
+    paused : function () {
+      return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1);
+    },
+
+    restart : function () {
+      this.hide();
+      this.settings.$li = undefined;
+      this.show('init');
+    },
+
+    pos_default : function (init) {
+      var $nub = this.settings.$next_tip.find('.joyride-nub'),
+          nub_width = Math.ceil($nub.outerWidth() / 2),
+          nub_height = Math.ceil($nub.outerHeight() / 2),
+          toggle = init || false;
+
+      // tip must not be "display: none" to calculate position
+      if (toggle) {
+        this.settings.$next_tip.css('visibility', 'hidden');
+        this.settings.$next_tip.show();
+      }
+
+      if (!/body/i.test(this.settings.$target.selector)) {
+        var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0,
+            leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0;
+
+        if (this.bottom()) {
+          if (this.rtl) {
+            this.settings.$next_tip.css({
+              top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
+              left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment});
+          } else {
+            this.settings.$next_tip.css({
+              top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
+              left : this.settings.$target.offset().left + leftAdjustment});
+          }
+
+          this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');
+
+        } else if (this.top()) {
+          if (this.rtl) {
+            this.settings.$next_tip.css({
+              top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
+              left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
+          } else {
+            this.settings.$next_tip.css({
+              top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
+              left : this.settings.$target.offset().left + leftAdjustment});
+          }
+
+          this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');
+
+        } else if (this.right()) {
+
+          this.settings.$next_tip.css({
+            top : this.settings.$target.offset().top + topAdjustment,
+            left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)});
+
+          this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');
+
+        } else if (this.left()) {
+
+          this.settings.$next_tip.css({
+            top : this.settings.$target.offset().top + topAdjustment,
+            left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)});
+
+          this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');
+
+        }
+
+        if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {
+
+          $nub.removeClass('bottom')
+            .removeClass('top')
+            .removeClass('right')
+            .removeClass('left');
+
+          this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];
+
+          this.settings.attempts++;
+
+          this.pos_default();
+
+        }
+
+      } else if (this.settings.$li.length) {
+
+        this.pos_modal($nub);
+
+      }
+
+      if (toggle) {
+        this.settings.$next_tip.hide();
+        this.settings.$next_tip.css('visibility', 'visible');
+      }
+
+    },
+
+    pos_phone : function (init) {
+      var tip_height = this.settings.$next_tip.outerHeight(),
+          tip_offset = this.settings.$next_tip.offset(),
+          target_height = this.settings.$target.outerHeight(),
+          $nub = $('.joyride-nub', this.settings.$next_tip),
+          nub_height = Math.ceil($nub.outerHeight() / 2),
+          toggle = init || false;
+
+      $nub.removeClass('bottom')
+        .removeClass('top')
+        .removeClass('right')
+        .removeClass('left');
+
+      if (toggle) {
+        this.settings.$next_tip.css('visibility', 'hidden');
+        this.settings.$next_tip.show();
+      }
+
+      if (!/body/i.test(this.settings.$target.selector)) {
+
+        if (this.top()) {
+
+            this.settings.$next_tip.offset({top : this.settings.$target.offset().top - tip_height - nub_height});
+            $nub.addClass('bottom');
+
+        } else {
+
+          this.settings.$next_tip.offset({top : this.settings.$target.offset().top + target_height + nub_height});
+          $nub.addClass('top');
+
+        }
+
+      } else if (this.settings.$li.length) {
+        this.pos_modal($nub);
+      }
+
+      if (toggle) {
+        this.settings.$next_tip.hide();
+        this.settings.$next_tip.css('visibility', 'visible');
+      }
+    },
+
+    pos_modal : function ($nub) {
+      this.center();
+      $nub.hide();
+
+      this.show_modal();
+    },
+
+    show_modal : function () {
+      if (!this.settings.$next_tip.data('closed')) {
+        var joyridemodalbg =  $('.joyride-modal-bg');
+        if (joyridemodalbg.length < 1) {
+          var joyridemodalbg = $(this.settings.template.modal);
+          joyridemodalbg.appendTo('body');
+        }
+
+        if (/pop/i.test(this.settings.tip_animation)) {
+            joyridemodalbg.show();
+        } else {
+            joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed);
+        }
+      }
+    },
+
+    expose : function () {
+      var expose,
+          exposeCover,
+          el,
+          origCSS,
+          origClasses,
+          randId = 'expose-' + this.random_str(6);
+
+      if (arguments.length > 0 && arguments[0] instanceof $) {
+        el = arguments[0];
+      } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
+        el = this.settings.$target;
+      } else {
+        return false;
+      }
+
+      if (el.length < 1) {
+        if (window.console) {
+          console.error('element not valid', el);
+        }
+        return false;
+      }
+
+      expose = $(this.settings.template.expose);
+      this.settings.$body.append(expose);
+      expose.css({
+        top : el.offset().top,
+        left : el.offset().left,
+        width : el.outerWidth(true),
+        height : el.outerHeight(true)
+      });
+
+      exposeCover = $(this.settings.template.expose_cover);
+
+      origCSS = {
+        zIndex : el.css('z-index'),
+        position : el.css('position')
+      };
+
+      origClasses = el.attr('class') == null ? '' : el.attr('class');
+
+      el.css('z-index', parseInt(expose.css('z-index')) + 1);
+
+      if (origCSS.position == 'static') {
+        el.css('position', 'relative');
+      }
+
+      el.data('expose-css', origCSS);
+      el.data('orig-class', origClasses);
+      el.attr('class', origClasses + ' ' + this.settings.expose_add_class);
+
+      exposeCover.css({
+        top : el.offset().top,
+        left : el.offset().left,
+        width : el.outerWidth(true),
+        height : el.outerHeight(true)
+      });
+
+      if (this.settings.modal) {
+        this.show_modal();
+      }
+
+      this.settings.$body.append(exposeCover);
+      expose.addClass(randId);
+      exposeCover.addClass(randId);
+      el.data('expose', randId);
+      this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el);
+      this.add_exposed(el);
+    },
+
+    un_expose : function () {
+      var exposeId,
+          el,
+          expose,
+          origCSS,
+          origClasses,
+          clearAll = false;
+
+      if (arguments.length > 0 && arguments[0] instanceof $) {
+        el = arguments[0];
+      } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
+        el = this.settings.$target;
+      } else {
+        return false;
+      }
+
+      if (el.length < 1) {
+        if (window.console) {
+          console.error('element not valid', el);
+        }
+        return false;
+      }
+
+      exposeId = el.data('expose');
+      expose = $('.' + exposeId);
+
+      if (arguments.length > 1) {
+        clearAll = arguments[1];
+      }
+
+      if (clearAll === true) {
+        $('.joyride-expose-wrapper,.joyride-expose-cover').remove();
+      } else {
+        expose.remove();
+      }
+
+      origCSS = el.data('expose-css');
+
+      if (origCSS.zIndex == 'auto') {
+        el.css('z-index', '');
+      } else {
+        el.css('z-index', origCSS.zIndex);
+      }
+
+      if (origCSS.position != el.css('position')) {
+        if (origCSS.position == 'static') {// this is default, no need to set it.
+          el.css('position', '');
+        } else {
+          el.css('position', origCSS.position);
+        }
+      }
+
+      origClasses = el.data('orig-class');
+      el.attr('class', origClasses);
+      el.removeData('orig-classes');
+
+      el.removeData('expose');
+      el.removeData('expose-z-index');
+      this.remove_exposed(el);
+    },
+
+    add_exposed : function (el) {
+      this.settings.exposed = this.settings.exposed || [];
+      if (el instanceof $ || typeof el === 'object') {
+        this.settings.exposed.push(el[0]);
+      } else if (typeof el == 'string') {
+        this.settings.exposed.push(el);
+      }
+    },
+
+    remove_exposed : function (el) {
+      var search, i;
+      if (el instanceof $) {
+        search = el[0]
+      } else if (typeof el == 'string') {
+        search = el;
+      }
+
+      this.settings.exposed = this.settings.exposed || [];
+      i = this.settings.exposed.length;
+
+      while (i--) {
+        if (this.settings.exposed[i] == search) {
+          this.settings.exposed.splice(i, 1);
+          return;
+        }
+      }
+    },
+
+    center : function () {
+      var $w = $(window);
+
+      this.settings.$next_tip.css({
+        top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),
+        left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())
+      });
+
+      return true;
+    },
+
+    bottom : function () {
+      return /bottom/i.test(this.settings.tip_settings.tip_location);
+    },
+
+    top : function () {
+      return /top/i.test(this.settings.tip_settings.tip_location);
+    },
+
+    right : function () {
+      return /right/i.test(this.settings.tip_settings.tip_location);
+    },
+
+    left : function () {
+      return /left/i.test(this.settings.tip_settings.tip_location);
+    },
+
+    corners : function (el) {
+      if (el.length === 0) {
+         return [false, false, false, false];   
+      }
+      
+      var w = $(window),
+          window_half = w.height() / 2,
+          //using this to calculate since scroll may not have finished yet.
+          tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()),
+          right = w.width() + w.scrollLeft(),
+          offsetBottom =  w.height() + tipOffset,
+          bottom = w.height() + w.scrollTop(),
+          top = w.scrollTop();
+
+      if (tipOffset < top) {
+        if (tipOffset < 0) {
+          top = 0;
+        } else {
+          top = tipOffset;
+        }
+      }
+
+      if (offsetBottom > bottom) {
+        bottom = offsetBottom;
+      }
+
+      return [
+        el.offset().top < top,
+        right < el.offset().left + el.outerWidth(),
+        bottom < el.offset().top + el.outerHeight(),
+        w.scrollLeft() > el.offset().left
+      ];
+    },
+
+    visible : function (hidden_corners) {
+      var i = hidden_corners.length;
+
+      while (i--) {
+        if (hidden_corners[i]) {
+          return false;
+        }
+      }
+
+      return true;
+    },
+
+    nub_position : function (nub, pos, def) {
+      if (pos === 'auto') {
+        nub.addClass(def);
+      } else {
+        nub.addClass(pos);
+      }
+    },
+
+    startTimer : function () {
+      if (this.settings.$li.length) {
+        this.settings.automate = setTimeout(function () {
+          this.hide();
+          this.show();
+          this.startTimer();
+        }.bind(this), this.settings.timer);
+      } else {
+        clearTimeout(this.settings.automate);
+      }
+    },
+
+    end : function (abort) {
+      if (this.settings.cookie_monster) {
+        $.cookie(this.settings.cookie_name, 'ridden', {expires : this.settings.cookie_expires, domain : this.settings.cookie_domain});
+      }
+
+      if (this.settings.timer > 0) {
+        clearTimeout(this.settings.automate);
+      }
+
+      if (this.settings.modal && this.settings.expose) {
+        this.un_expose();
+      }
+
+      // Unplug keystrokes listener
+      $(this.scope).off('keyup.joyride')
+
+      this.settings.$next_tip.data('closed', true);
+      this.settings.riding = false;
+
+      $('.joyride-modal-bg').hide();
+      this.settings.$current_tip.hide();
+
+      if (typeof abort === 'undefined' || abort === false) {
+        this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip);
+        this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip);
+      }
+
+      $('.joyride-tip-guide').remove();
+    },
+
+    off : function () {
+      $(this.scope).off('.joyride');
+      $(window).off('.joyride');
+      $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
+      $('.joyride-tip-guide, .joyride-modal-bg').remove();
+      clearTimeout(this.settings.automate);
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs['magellan-expedition'] = {
+    name : 'magellan-expedition',
+
+    version : '5.5.3',
+
+    settings : {
+      active_class : 'active',
+      threshold : 0, // pixels from the top of the expedition for it to become fixes
+      destination_threshold : 20, // pixels from the top of destination for it to be considered active
+      throttle_delay : 30, // calculation throttling to increase framerate
+      fixed_top : 0, // top distance in pixels assigend to the fixed element on scroll
+      offset_by_height : true,  // whether to offset the destination by the expedition height. Usually you want this to be true, unless your expedition is on the side.
+      duration : 700, // animation duration time
+      easing : 'swing' // animation easing
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle');
+      this.bindings(method, options);
+    },
+
+    events : function () {
+      var self = this,
+          S = self.S,
+          settings = self.settings;
+
+      // initialize expedition offset
+      self.set_expedition_position();
+
+      S(self.scope)
+        .off('.magellan')
+        .on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href*=#]', function (e) {
+          var sameHost = ((this.hostname === location.hostname) || !this.hostname),
+              samePath = self.filterPathname(location.pathname) === self.filterPathname(this.pathname),
+              testHash = this.hash.replace(/(:|\.|\/)/g, '\\$1'),
+              anchor = this;
+
+          if (sameHost && samePath && testHash) {
+            e.preventDefault();
+            var expedition = $(this).closest('[' + self.attr_name() + ']'),
+                settings = expedition.data('magellan-expedition-init'),
+                hash = this.hash.split('#').join(''),
+                target = $('a[name="' + hash + '"]');
+
+            if (target.length === 0) {
+              target = $('#' + hash);
+
+            }
+
+            // Account for expedition height if fixed position
+            var scroll_top = target.offset().top - settings.destination_threshold + 1;
+            if (settings.offset_by_height) {
+              scroll_top = scroll_top - expedition.outerHeight();
+            }
+            $('html, body').stop().animate({
+              'scrollTop' : scroll_top
+            }, settings.duration, settings.easing, function () {
+              if (history.pushState) {
+                history.pushState(null, null, anchor.pathname + anchor.search + '#' + hash);
+              } else {
+                location.hash = anchor.pathname + anchor.search + '#' + hash;
+              }
+            });
+          }
+        })
+        .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay));
+    },
+
+    check_for_arrivals : function () {
+      var self = this;
+      self.update_arrivals();
+      self.update_expedition_positions();
+    },
+
+    set_expedition_position : function () {
+      var self = this;
+      $('[' + this.attr_name() + '=fixed]', self.scope).each(function (idx, el) {
+        var expedition = $(this),
+            settings = expedition.data('magellan-expedition-init'),
+            styles = expedition.attr('styles'), // save styles
+            top_offset, fixed_top;
+
+        expedition.attr('style', '');
+        top_offset = expedition.offset().top + settings.threshold;
+
+        //set fixed-top by attribute
+        fixed_top = parseInt(expedition.data('magellan-fixed-top'));
+        if (!isNaN(fixed_top)) {
+          self.settings.fixed_top = fixed_top;
+        }
+
+        expedition.data(self.data_attr('magellan-top-offset'), top_offset);
+        expedition.attr('style', styles);
+      });
+    },
+
+    update_expedition_positions : function () {
+      var self = this,
+          window_top_offset = $(window).scrollTop();
+
+      $('[' + this.attr_name() + '=fixed]', self.scope).each(function () {
+        var expedition = $(this),
+            settings = expedition.data('magellan-expedition-init'),
+            styles = expedition.attr('style'), // save styles
+            top_offset = expedition.data('magellan-top-offset');
+
+        //scroll to the top distance
+        if (window_top_offset + self.settings.fixed_top >= top_offset) {
+          // Placeholder allows height calculations to be consistent even when
+          // appearing to switch between fixed/non-fixed placement
+          var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']');
+          if (placeholder.length === 0) {
+            placeholder = expedition.clone();
+            placeholder.removeAttr(self.attr_name());
+            placeholder.attr(self.add_namespace('data-magellan-expedition-clone'), '');
+            expedition.before(placeholder);
+          }
+          expedition.css({position :'fixed', top : settings.fixed_top}).addClass('fixed');
+        } else {
+          expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove();
+          expedition.attr('style', styles).css('position', '').css('top', '').removeClass('fixed');
+        }
+      });
+    },
+
+    update_arrivals : function () {
+      var self = this,
+          window_top_offset = $(window).scrollTop();
+
+      $('[' + this.attr_name() + ']', self.scope).each(function () {
+        var expedition = $(this),
+            settings = expedition.data(self.attr_name(true) + '-init'),
+            offsets = self.offsets(expedition, window_top_offset),
+            arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'),
+            active_item = false;
+        offsets.each(function (idx, item) {
+          if (item.viewport_offset >= item.top_offset) {
+            var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']');
+            arrivals.not(item.arrival).removeClass(settings.active_class);
+            item.arrival.addClass(settings.active_class);
+            active_item = true;
+            return true;
+          }
+        });
+
+        if (!active_item) {
+          arrivals.removeClass(settings.active_class);
+        }
+      });
+    },
+
+    offsets : function (expedition, window_offset) {
+      var self = this,
+          settings = expedition.data(self.attr_name(true) + '-init'),
+          viewport_offset = window_offset;
+
+      return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function (idx, el) {
+        var name = $(this).data(self.data_attr('magellan-arrival')),
+            dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']');
+        if (dest.length > 0) {
+          var top_offset = dest.offset().top - settings.destination_threshold;
+          if (settings.offset_by_height) {
+            top_offset = top_offset - expedition.outerHeight();
+          }
+          top_offset = Math.floor(top_offset);
+          return {
+            destination : dest,
+            arrival : $(this),
+            top_offset : top_offset,
+            viewport_offset : viewport_offset
+          }
+        }
+      }).sort(function (a, b) {
+        if (a.top_offset < b.top_offset) {
+          return -1;
+        }
+        if (a.top_offset > b.top_offset) {
+          return 1;
+        }
+        return 0;
+      });
+    },
+
+    data_attr : function (str) {
+      if (this.namespace.length > 0) {
+        return this.namespace + '-' + str;
+      }
+
+      return str;
+    },
+
+    off : function () {
+      this.S(this.scope).off('.magellan');
+      this.S(window).off('.magellan');
+    },
+
+    filterPathname : function (pathname) {
+      pathname = pathname || '';
+      return pathname
+          .replace(/^\//,'')
+          .replace(/(?:index|default).[a-zA-Z]{3,4}$/,'')
+          .replace(/\/$/,'');
+    },
+
+    reflow : function () {
+      var self = this;
+      // remove placeholder expeditions used for height calculation purposes
+      $('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove();
+    }
+  };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.offcanvas = {
+    name : 'offcanvas',
+
+    version : '5.5.3',
+
+    settings : {
+      open_method : 'move',
+      close_on_click : false
+    },
+
+    init : function (scope, method, options) {
+      this.bindings(method, options);
+    },
+
+    events : function () {
+      var self = this,
+          S = self.S,
+          move_class = '',
+          right_postfix = '',
+          left_postfix = '',
+          top_postfix = '',
+          bottom_postfix = '';
+
+      if (this.settings.open_method === 'move') {
+        move_class = 'move-';
+        right_postfix = 'right';
+        left_postfix = 'left';
+        top_postfix = 'top';
+        bottom_postfix = 'bottom';
+      } else if (this.settings.open_method === 'overlap_single') {
+        move_class = 'offcanvas-overlap-';
+        right_postfix = 'right';
+        left_postfix = 'left';
+        top_postfix = 'top';
+        bottom_postfix = 'bottom';
+      } else if (this.settings.open_method === 'overlap') {
+        move_class = 'offcanvas-overlap';
+      }
+
+      S(this.scope).off('.offcanvas')
+        .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {
+          self.click_toggle_class(e, move_class + right_postfix);
+          if (self.settings.open_method !== 'overlap') {
+            S('.left-submenu').removeClass(move_class + right_postfix);
+          }
+          $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {
+          var settings = self.get_settings(e);
+          var parent = S(this).parent();
+
+          if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+            self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));
+            parent.parent().removeClass(move_class + right_postfix);
+          } else if (S(this).parent().hasClass('has-submenu')) {
+            e.preventDefault();
+            S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix);
+          } else if (parent.hasClass('back')) {
+            e.preventDefault();
+            parent.parent().removeClass(move_class + right_postfix);
+          }
+          $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        //end of left canvas
+        .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {
+          self.click_toggle_class(e, move_class + left_postfix);
+          if (self.settings.open_method !== 'overlap') {
+            S('.right-submenu').removeClass(move_class + left_postfix);
+          }
+          $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {
+          var settings = self.get_settings(e);
+          var parent = S(this).parent();
+
+          if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+            self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));
+            parent.parent().removeClass(move_class + left_postfix);
+          } else if (S(this).parent().hasClass('has-submenu')) {
+            e.preventDefault();
+            S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix);
+          } else if (parent.hasClass('back')) {
+            e.preventDefault();
+            parent.parent().removeClass(move_class + left_postfix);
+          }
+          $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        //end of right canvas
+        .on('click.fndtn.offcanvas', '.top-off-canvas-toggle', function (e) {
+          self.click_toggle_class(e, move_class + bottom_postfix);
+          if (self.settings.open_method !== 'overlap') {
+            S('.top-submenu').removeClass(move_class + bottom_postfix);
+          }
+          $('.top-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.top-off-canvas-menu a', function (e) {
+          var settings = self.get_settings(e);
+          var parent = S(this).parent();
+
+          if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+            self.hide.call(self, move_class + bottom_postfix, self.get_wrapper(e));
+            parent.parent().removeClass(move_class + bottom_postfix);
+          } else if (S(this).parent().hasClass('has-submenu')) {
+            e.preventDefault();
+            S(this).siblings('.top-submenu').toggleClass(move_class + bottom_postfix);
+          } else if (parent.hasClass('back')) {
+            e.preventDefault();
+            parent.parent().removeClass(move_class + bottom_postfix);
+          }
+          $('.top-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        //end of top canvas
+        .on('click.fndtn.offcanvas', '.bottom-off-canvas-toggle', function (e) {
+          self.click_toggle_class(e, move_class + top_postfix);
+          if (self.settings.open_method !== 'overlap') {
+            S('.bottom-submenu').removeClass(move_class + top_postfix);
+          }
+          $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.bottom-off-canvas-menu a', function (e) {
+          var settings = self.get_settings(e);
+          var parent = S(this).parent();
+
+          if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+            self.hide.call(self, move_class + top_postfix, self.get_wrapper(e));
+            parent.parent().removeClass(move_class + top_postfix);
+          } else if (S(this).parent().hasClass('has-submenu')) {
+            e.preventDefault();
+            S(this).siblings('.bottom-submenu').toggleClass(move_class + top_postfix);
+          } else if (parent.hasClass('back')) {
+            e.preventDefault();
+            parent.parent().removeClass(move_class + top_postfix);
+          }
+          $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        //end of bottom
+        .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+          self.click_remove_class(e, move_class + left_postfix);
+          S('.right-submenu').removeClass(move_class + left_postfix);
+          if (right_postfix) {
+            self.click_remove_class(e, move_class + right_postfix);
+            S('.left-submenu').removeClass(move_class + left_postfix);
+          }
+          $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+          self.click_remove_class(e, move_class + left_postfix);
+          $('.left-off-canvas-toggle').attr('aria-expanded', 'false');
+          if (right_postfix) {
+            self.click_remove_class(e, move_class + right_postfix);
+            $('.right-off-canvas-toggle').attr('aria-expanded', 'false');
+          }
+        })
+        .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+          self.click_remove_class(e, move_class + top_postfix);
+          S('.bottom-submenu').removeClass(move_class + top_postfix);
+          if (bottom_postfix) {
+            self.click_remove_class(e, move_class + bottom_postfix);
+            S('.top-submenu').removeClass(move_class + top_postfix);
+          }
+          $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+          self.click_remove_class(e, move_class + top_postfix);
+          $('.top-off-canvas-toggle').attr('aria-expanded', 'false');
+          if (bottom_postfix) {
+            self.click_remove_class(e, move_class + bottom_postfix);
+            $('.bottom-off-canvas-toggle').attr('aria-expanded', 'false');
+          }
+        });
+    },
+
+    toggle : function (class_name, $off_canvas) {
+      $off_canvas = $off_canvas || this.get_wrapper();
+      if ($off_canvas.is('.' + class_name)) {
+        this.hide(class_name, $off_canvas);
+      } else {
+        this.show(class_name, $off_canvas);
+      }
+    },
+
+    show : function (class_name, $off_canvas) {
+      $off_canvas = $off_canvas || this.get_wrapper();
+      $off_canvas.trigger('open.fndtn.offcanvas');
+      $off_canvas.addClass(class_name);
+    },
+
+    hide : function (class_name, $off_canvas) {
+      $off_canvas = $off_canvas || this.get_wrapper();
+      $off_canvas.trigger('close.fndtn.offcanvas');
+      $off_canvas.removeClass(class_name);
+    },
+
+    click_toggle_class : function (e, class_name) {
+      e.preventDefault();
+      var $off_canvas = this.get_wrapper(e);
+      this.toggle(class_name, $off_canvas);
+    },
+
+    click_remove_class : function (e, class_name) {
+      e.preventDefault();
+      var $off_canvas = this.get_wrapper(e);
+      this.hide(class_name, $off_canvas);
+    },
+
+    get_settings : function (e) {
+      var offcanvas  = this.S(e.target).closest('[' + this.attr_name() + ']');
+      return offcanvas.data(this.attr_name(true) + '-init') || this.settings;
+    },
+
+    get_wrapper : function (e) {
+      var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap');
+
+      if ($off_canvas.length === 0) {
+        $off_canvas = this.S('.off-canvas-wrap');
+      }
+      return $off_canvas;
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  var noop = function () {};
+
+  var Orbit = function (el, settings) {
+    // Don't reinitialize plugin
+    if (el.hasClass(settings.slides_container_class)) {
+      return this;
+    }
+
+    var self = this,
+        container,
+        slides_container = el,
+        number_container,
+        bullets_container,
+        timer_container,
+        idx = 0,
+        animate,
+        timer,
+        locked = false,
+        adjust_height_after = false;
+
+    self.slides = function () {
+      return slides_container.children(settings.slide_selector);
+    };
+
+    self.slides().first().addClass(settings.active_slide_class);
+
+    self.update_slide_number = function (index) {
+      if (settings.slide_number) {
+        number_container.find('span:first').text(parseInt(index) + 1);
+        number_container.find('span:last').text(self.slides().length);
+      }
+      if (settings.bullets) {
+        bullets_container.children().removeClass(settings.bullets_active_class);
+        $(bullets_container.children().get(index)).addClass(settings.bullets_active_class);
+      }
+    };
+
+    self.update_active_link = function (index) {
+      var link = $('[data-orbit-link="' + self.slides().eq(index).attr('data-orbit-slide') + '"]');
+      link.siblings().removeClass(settings.bullets_active_class);
+      link.addClass(settings.bullets_active_class);
+    };
+
+    self.build_markup = function () {
+      slides_container.wrap('<div class="' + settings.container_class + '"></div>');
+      container = slides_container.parent();
+      slides_container.addClass(settings.slides_container_class);
+
+      if (settings.stack_on_small) {
+        container.addClass(settings.stack_on_small_class);
+      }
+
+      if (settings.navigation_arrows) {
+        container.append($('<a href="#"><span></span></a>').addClass(settings.prev_class));
+        container.append($('<a href="#"><span></span></a>').addClass(settings.next_class));
+      }
+
+      if (settings.timer) {
+        timer_container = $('<div>').addClass(settings.timer_container_class);
+        timer_container.append('<span>');
+        timer_container.append($('<div>').addClass(settings.timer_progress_class));
+        timer_container.addClass(settings.timer_paused_class);
+        container.append(timer_container);
+      }
+
+      if (settings.slide_number) {
+        number_container = $('<div>').addClass(settings.slide_number_class);
+        number_container.append('<span></span> ' + settings.slide_number_text + ' <span></span>');
+        container.append(number_container);
+      }
+
+      if (settings.bullets) {
+        bullets_container = $('<ol>').addClass(settings.bullets_container_class);
+        container.append(bullets_container);
+        bullets_container.wrap('<div class="orbit-bullets-container"></div>');
+        self.slides().each(function (idx, el) {
+          var bullet = $('<li>').attr('data-orbit-slide', idx).on('click', self.link_bullet);;
+          bullets_container.append(bullet);
+        });
+      }
+
+    };
+
+    self._goto = function (next_idx, start_timer) {
+      // if (locked) {return false;}
+      if (next_idx === idx) {return false;}
+      if (typeof timer === 'object') {timer.restart();}
+      var slides = self.slides();
+
+      var dir = 'next';
+      locked = true;
+      if (next_idx < idx) {dir = 'prev';}
+      if (next_idx >= slides.length) {
+        if (!settings.circular) {
+          return false;
+        }
+        next_idx = 0;
+      } else if (next_idx < 0) {
+        if (!settings.circular) {
+          return false;
+        }
+        next_idx = slides.length - 1;
+      }
+
+      var current = $(slides.get(idx));
+      var next = $(slides.get(next_idx));
+
+      current.css('zIndex', 2);
+      current.removeClass(settings.active_slide_class);
+      next.css('zIndex', 4).addClass(settings.active_slide_class);
+
+      slides_container.trigger('before-slide-change.fndtn.orbit');
+      settings.before_slide_change();
+      self.update_active_link(next_idx);
+
+      var callback = function () {
+        var unlock = function () {
+          idx = next_idx;
+          locked = false;
+          if (start_timer === true) {timer = self.create_timer(); timer.start();}
+          self.update_slide_number(idx);
+          slides_container.trigger('after-slide-change.fndtn.orbit', [{slide_number : idx, total_slides : slides.length}]);
+          settings.after_slide_change(idx, slides.length);
+        };
+        if (slides_container.outerHeight() != next.outerHeight() && settings.variable_height) {
+          slides_container.animate({'height': next.outerHeight()}, 250, 'linear', unlock);
+        } else {
+          unlock();
+        }
+      };
+
+      if (slides.length === 1) {callback(); return false;}
+
+      var start_animation = function () {
+        if (dir === 'next') {animate.next(current, next, callback);}
+        if (dir === 'prev') {animate.prev(current, next, callback);}
+      };
+
+      if (next.outerHeight() > slides_container.outerHeight() && settings.variable_height) {
+        slides_container.animate({'height': next.outerHeight()}, 250, 'linear', start_animation);
+      } else {
+        start_animation();
+      }
+    };
+
+    self.next = function (e) {
+      e.stopImmediatePropagation();
+      e.preventDefault();
+      self._goto(idx + 1);
+    };
+
+    self.prev = function (e) {
+      e.stopImmediatePropagation();
+      e.preventDefault();
+      self._goto(idx - 1);
+    };
+
+    self.link_custom = function (e) {
+      e.preventDefault();
+      var link = $(this).attr('data-orbit-link');
+      if ((typeof link === 'string') && (link = $.trim(link)) != '') {
+        var slide = container.find('[data-orbit-slide=' + link + ']');
+        if (slide.index() != -1) {self._goto(slide.index());}
+      }
+    };
+
+    self.link_bullet = function (e) {
+      var index = $(this).attr('data-orbit-slide');
+      if ((typeof index === 'string') && (index = $.trim(index)) != '') {
+        if (isNaN(parseInt(index))) {
+          var slide = container.find('[data-orbit-slide=' + index + ']');
+          if (slide.index() != -1) {self._goto(slide.index() + 1);}
+        } else {
+          self._goto(parseInt(index));
+        }
+      }
+
+    }
+
+    self.timer_callback = function () {
+      self._goto(idx + 1, true);
+    }
+
+    self.compute_dimensions = function () {
+      var current = $(self.slides().get(idx));
+      var h = current.outerHeight();
+      if (!settings.variable_height) {
+        self.slides().each(function(){
+          if ($(this).outerHeight() > h) { h = $(this).outerHeight(); }
+        });
+      }
+      slides_container.height(h);
+    };
+
+    self.create_timer = function () {
+      var t = new Timer(
+        container.find('.' + settings.timer_container_class),
+        settings,
+        self.timer_callback
+      );
+      return t;
+    };
+
+    self.stop_timer = function () {
+      if (typeof timer === 'object') {
+        timer.stop();
+      }
+    };
+
+    self.toggle_timer = function () {
+      var t = container.find('.' + settings.timer_container_class);
+      if (t.hasClass(settings.timer_paused_class)) {
+        if (typeof timer === 'undefined') {timer = self.create_timer();}
+        timer.start();
+      } else {
+        if (typeof timer === 'object') {timer.stop();}
+      }
+    };
+
+    self.init = function () {
+      self.build_markup();
+      if (settings.timer) {
+        timer = self.create_timer();
+        Foundation.utils.image_loaded(this.slides().children('img'), timer.start);
+      }
+      animate = new FadeAnimation(settings, slides_container);
+      if (settings.animation === 'slide') {
+        animate = new SlideAnimation(settings, slides_container);
+      }
+
+      container.on('click', '.' + settings.next_class, self.next);
+      container.on('click', '.' + settings.prev_class, self.prev);
+
+      if (settings.next_on_click) {
+        container.on('click', '.' + settings.slides_container_class + ' [data-orbit-slide]', self.link_bullet);
+      }
+
+      container.on('click', self.toggle_timer);
+      if (settings.swipe) {
+        container.on('touchstart.fndtn.orbit', function (e) {
+          if (!e.touches) {e = e.originalEvent;}
+          var data = {
+            start_page_x : e.touches[0].pageX,
+            start_page_y : e.touches[0].pageY,
+            start_time : (new Date()).getTime(),
+            delta_x : 0,
+            is_scrolling : undefined
+          };
+          container.data('swipe-transition', data);
+          e.stopPropagation();
+        })
+        .on('touchmove.fndtn.orbit', function (e) {
+          if (!e.touches) {
+            e = e.originalEvent;
+          }
+          // Ignore pinch/zoom events
+          if (e.touches.length > 1 || e.scale && e.scale !== 1) {
+            return;
+          }
+
+          var data = container.data('swipe-transition');
+          if (typeof data === 'undefined') {data = {};}
+
+          data.delta_x = e.touches[0].pageX - data.start_page_x;
+
+          if ( typeof data.is_scrolling === 'undefined') {
+            data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
+          }
+
+          if (!data.is_scrolling && !data.active) {
+            e.preventDefault();
+            var direction = (data.delta_x < 0) ? (idx + 1) : (idx - 1);
+            data.active = true;
+            self._goto(direction);
+          }
+        })
+        .on('touchend.fndtn.orbit', function (e) {
+          container.data('swipe-transition', {});
+          e.stopPropagation();
+        })
+      }
+      container.on('mouseenter.fndtn.orbit', function (e) {
+        if (settings.timer && settings.pause_on_hover) {
+          self.stop_timer();
+        }
+      })
+      .on('mouseleave.fndtn.orbit', function (e) {
+        if (settings.timer && settings.resume_on_mouseout) {
+          timer.start();
+        }
+      });
+
+      $(document).on('click', '[data-orbit-link]', self.link_custom);
+      $(window).on('load resize', self.compute_dimensions);
+      Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions);
+      Foundation.utils.image_loaded(this.slides().children('img'), function () {
+        container.prev('.' + settings.preloader_class).css('display', 'none');
+        self.update_slide_number(0);
+        self.update_active_link(0);
+        slides_container.trigger('ready.fndtn.orbit');
+      });
+    };
+
+    self.init();
+  };
+
+  var Timer = function (el, settings, callback) {
+    var self = this,
+        duration = settings.timer_speed,
+        progress = el.find('.' + settings.timer_progress_class),
+        start,
+        timeout,
+        left = -1;
+
+    this.update_progress = function (w) {
+      var new_progress = progress.clone();
+      new_progress.attr('style', '');
+      new_progress.css('width', w + '%');
+      progress.replaceWith(new_progress);
+      progress = new_progress;
+    };
+
+    this.restart = function () {
+      clearTimeout(timeout);
+      el.addClass(settings.timer_paused_class);
+      left = -1;
+      self.update_progress(0);
+    };
+
+    this.start = function () {
+      if (!el.hasClass(settings.timer_paused_class)) {return true;}
+      left = (left === -1) ? duration : left;
+      el.removeClass(settings.timer_paused_class);
+      start = new Date().getTime();
+      progress.animate({'width' : '100%'}, left, 'linear');
+      timeout = setTimeout(function () {
+        self.restart();
+        callback();
+      }, left);
+      el.trigger('timer-started.fndtn.orbit')
+    };
+
+    this.stop = function () {
+      if (el.hasClass(settings.timer_paused_class)) {return true;}
+      clearTimeout(timeout);
+      el.addClass(settings.timer_paused_class);
+      var end = new Date().getTime();
+      left = left - (end - start);
+      var w = 100 - ((left / duration) * 100);
+      self.update_progress(w);
+      el.trigger('timer-stopped.fndtn.orbit');
+    };
+  };
+
+  var SlideAnimation = function (settings, container) {
+    var duration = settings.animation_speed;
+    var is_rtl = ($('html[dir=rtl]').length === 1);
+    var margin = is_rtl ? 'marginRight' : 'marginLeft';
+    var animMargin = {};
+    animMargin[margin] = '0%';
+
+    this.next = function (current, next, callback) {
+      current.animate({marginLeft : '-100%'}, duration);
+      next.animate(animMargin, duration, function () {
+        current.css(margin, '100%');
+        callback();
+      });
+    };
+
+    this.prev = function (current, prev, callback) {
+      current.animate({marginLeft : '100%'}, duration);
+      prev.css(margin, '-100%');
+      prev.animate(animMargin, duration, function () {
+        current.css(margin, '100%');
+        callback();
+      });
+    };
+  };
+
+  var FadeAnimation = function (settings, container) {
+    var duration = settings.animation_speed;
+    var is_rtl = ($('html[dir=rtl]').length === 1);
+    var margin = is_rtl ? 'marginRight' : 'marginLeft';
+
+    this.next = function (current, next, callback) {
+      next.css({'margin' : '0%', 'opacity' : '0.01'});
+      next.animate({'opacity' :'1'}, duration, 'linear', function () {
+        current.css('margin', '100%');
+        callback();
+      });
+    };
+
+    this.prev = function (current, prev, callback) {
+      prev.css({'margin' : '0%', 'opacity' : '0.01'});
+      prev.animate({'opacity' : '1'}, duration, 'linear', function () {
+        current.css('margin', '100%');
+        callback();
+      });
+    };
+  };
+
+  Foundation.libs = Foundation.libs || {};
+
+  Foundation.libs.orbit = {
+    name : 'orbit',
+
+    version : '5.5.3',
+
+    settings : {
+      animation : 'slide',
+      timer_speed : 10000,
+      pause_on_hover : true,
+      resume_on_mouseout : false,
+      next_on_click : true,
+      animation_speed : 500,
+      stack_on_small : false,
+      navigation_arrows : true,
+      slide_number : true,
+      slide_number_text : 'of',
+      container_class : 'orbit-container',
+      stack_on_small_class : 'orbit-stack-on-small',
+      next_class : 'orbit-next',
+      prev_class : 'orbit-prev',
+      timer_container_class : 'orbit-timer',
+      timer_paused_class : 'paused',
+      timer_progress_class : 'orbit-progress',
+      slides_container_class : 'orbit-slides-container',
+      preloader_class : 'preloader',
+      slide_selector : '*',
+      bullets_container_class : 'orbit-bullets',
+      bullets_active_class : 'active',
+      slide_number_class : 'orbit-slide-number',
+      caption_class : 'orbit-caption',
+      active_slide_class : 'active',
+      orbit_transition_class : 'orbit-transitioning',
+      bullets : true,
+      circular : true,
+      timer : true,
+      variable_height : false,
+      swipe : true,
+      before_slide_change : noop,
+      after_slide_change : noop
+    },
+
+    init : function (scope, method, options) {
+      var self = this;
+      this.bindings(method, options);
+    },
+
+    events : function (instance) {
+      var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init'));
+      this.S(instance).data(this.name + '-instance', orbit_instance);
+    },
+
+    reflow : function () {
+      var self = this;
+
+      if (self.S(self.scope).is('[data-orbit]')) {
+        var $el = self.S(self.scope);
+        var instance = $el.data(self.name + '-instance');
+        instance.compute_dimensions();
+      } else {
+        self.S('[data-orbit]', self.scope).each(function (idx, el) {
+          var $el = self.S(el);
+          var opts = self.data_options($el);
+          var instance = $el.data(self.name + '-instance');
+          instance.compute_dimensions();
+        });
+      }
+    }
+  };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  var openModals = [];
+
+  Foundation.libs.reveal = {
+    name : 'reveal',
+
+    version : '5.5.3',
+
+    locked : false,
+
+    settings : {
+      animation : 'fadeAndPop',
+      animation_speed : 250,
+      close_on_background_click : true,
+      close_on_esc : true,
+      dismiss_modal_class : 'close-reveal-modal',
+      multiple_opened : false,
+      bg_class : 'reveal-modal-bg',
+      root_element : 'body',
+      open : function(){},
+      opened : function(){},
+      close : function(){},
+      closed : function(){},
+      on_ajax_error: $.noop,
+      bg : $('.reveal-modal-bg'),
+      css : {
+        open : {
+          'opacity' : 0,
+          'visibility' : 'visible',
+          'display' : 'block'
+        },
+        close : {
+          'opacity' : 1,
+          'visibility' : 'hidden',
+          'display' : 'none'
+        }
+      }
+    },
+
+    init : function (scope, method, options) {
+      $.extend(true, this.settings, method, options);
+      this.bindings(method, options);
+    },
+
+    events : function (scope) {
+      var self = this,
+          S = self.S;
+
+      S(this.scope)
+        .off('.reveal')
+        .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {
+          e.preventDefault();
+
+          if (!self.locked) {
+            var element = S(this),
+                ajax = element.data(self.data_attr('reveal-ajax')),
+                replaceContentSel = element.data(self.data_attr('reveal-replace-content'));
+
+            self.locked = true;
+
+            if (typeof ajax === 'undefined') {
+              self.open.call(self, element);
+            } else {
+              var url = ajax === true ? element.attr('href') : ajax;
+              self.open.call(self, element, {url : url}, { replaceContentSel : replaceContentSel });
+            }
+          }
+        });
+
+      S(document)
+        .on('click.fndtn.reveal', this.close_targets(), function (e) {
+          e.preventDefault();
+          if (!self.locked) {
+            var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,
+                bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];
+
+            if (bg_clicked) {
+              if (settings.close_on_background_click) {
+                e.stopPropagation();
+              } else {
+                return;
+              }
+            }
+
+            self.locked = true;
+            self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open:not(.toback)') : S(this).closest('[' + self.attr_name() + ']'));
+          }
+        });
+
+      if (S('[' + self.attr_name() + ']', this.scope).length > 0) {
+        S(this.scope)
+          // .off('.reveal')
+          .on('open.fndtn.reveal', this.settings.open)
+          .on('opened.fndtn.reveal', this.settings.opened)
+          .on('opened.fndtn.reveal', this.open_video)
+          .on('close.fndtn.reveal', this.settings.close)
+          .on('closed.fndtn.reveal', this.settings.closed)
+          .on('closed.fndtn.reveal', this.close_video);
+      } else {
+        S(this.scope)
+          // .off('.reveal')
+          .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)
+          .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)
+          .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)
+          .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)
+          .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)
+          .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);
+      }
+
+      return true;
+    },
+
+    // PATCH #3: turning on key up capture only when a reveal window is open
+    key_up_on : function (scope) {
+      var self = this;
+
+      // PATCH #1: fixing multiple keyup event trigger from single key press
+      self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {
+        var open_modal = self.S('[' + self.attr_name() + '].open'),
+            settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;
+        // PATCH #2: making sure that the close event can be called only while unlocked,
+        //           so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.
+        if ( settings && event.which === 27  && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key
+          self.close.call(self, open_modal);
+        }
+      });
+
+      return true;
+    },
+
+    // PATCH #3: turning on key up capture only when a reveal window is open
+    key_up_off : function (scope) {
+      this.S('body').off('keyup.fndtn.reveal');
+      return true;
+    },
+
+    open : function (target, ajax_settings) {
+      var self = this,
+          modal;
+
+      if (target) {
+        if (typeof target.selector !== 'undefined') {
+          // Find the named node; only use the first one found, since the rest of the code assumes there's only one node
+          modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();
+        } else {
+          modal = self.S(this.scope);
+
+          ajax_settings = target;
+        }
+      } else {
+        modal = self.S(this.scope);
+      }
+
+      var settings = modal.data(self.attr_name(true) + '-init');
+      settings = settings || this.settings;
+
+
+      if (modal.hasClass('open') && target !== undefined && target.attr('data-reveal-id') == modal.attr('id')) {
+        return self.close(modal);
+      }
+
+      if (!modal.hasClass('open')) {
+        var open_modal = self.S('[' + self.attr_name() + '].open');
+
+        if (typeof modal.data('css-top') === 'undefined') {
+          modal.data('css-top', parseInt(modal.css('top'), 10))
+            .data('offset', this.cache_offset(modal));
+        }
+
+        modal.attr('tabindex','0').attr('aria-hidden','false');
+
+        this.key_up_on(modal);    // PATCH #3: turning on key up capture only when a reveal window is open
+
+        // Prevent namespace event from triggering twice
+        modal.on('open.fndtn.reveal', function(e) {
+          if (e.namespace !== 'fndtn.reveal') return;
+        });
+
+        modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal');
+
+        if (open_modal.length < 1) {
+          this.toggle_bg(modal, true);
+        }
+
+        if (typeof ajax_settings === 'string') {
+          ajax_settings = {
+            url : ajax_settings
+          };
+        }
+
+        var openModal = function() {
+          if(open_modal.length > 0) {
+            if(settings.multiple_opened) {
+              self.to_back(open_modal);
+            } else {
+              self.hide(open_modal, settings.css.close);
+            }
+          }
+
+          // bl: add the open_modal that isn't already in the background to the openModals array
+          if(settings.multiple_opened) {
+            openModals.push(modal);
+          }
+
+          self.show(modal, settings.css.open);
+        };
+
+        if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {
+          openModal();
+        } else {
+          var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;
+          $.extend(ajax_settings, {
+            success : function (data, textStatus, jqXHR) {
+              if ( $.isFunction(old_success) ) {
+                var result = old_success(data, textStatus, jqXHR);
+                if (typeof result == 'string') {
+                  data = result;
+                }
+              }
+
+              if (typeof options !== 'undefined' && typeof options.replaceContentSel !== 'undefined') {
+                modal.find(options.replaceContentSel).html(data);
+              } else {
+                modal.html(data);
+              }
+
+              self.S(modal).foundation('section', 'reflow');
+              self.S(modal).children().foundation();
+
+              openModal();
+            }
+          });
+
+          // check for if user initalized with error callback
+          if (settings.on_ajax_error !== $.noop) {
+            $.extend(ajax_settings, {
+              error : settings.on_ajax_error
+            });
+          }
+
+          $.ajax(ajax_settings);
+        }
+      }
+      self.S(window).trigger('resize');
+    },
+
+    close : function (modal) {
+      var modal = modal && modal.length ? modal : this.S(this.scope),
+          open_modals = this.S('[' + this.attr_name() + '].open'),
+          settings = modal.data(this.attr_name(true) + '-init') || this.settings,
+          self = this;
+
+      if (open_modals.length > 0) {
+
+        modal.removeAttr('tabindex','0').attr('aria-hidden','true');
+
+        this.locked = true;
+        this.key_up_off(modal);   // PATCH #3: turning on key up capture only when a reveal window is open
+
+        modal.trigger('close.fndtn.reveal');
+
+        if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) {
+          self.toggle_bg(modal, false);
+          self.to_front(modal);
+        }
+
+        if (settings.multiple_opened) {
+          var isCurrent = modal.is(':not(.toback)');
+          self.hide(modal, settings.css.close, settings);
+          if(isCurrent) {
+            // remove the last modal since it is now closed
+            openModals.pop();
+          } else {
+            // if this isn't the current modal, then find it in the array and remove it
+            openModals = $.grep(openModals, function(elt) {
+              var isThis = elt[0]===modal[0];
+              if(isThis) {
+                // since it's not currently in the front, put it in the front now that it is hidden
+                // so that if it's re-opened, it won't be .toback
+                self.to_front(modal);
+              }
+              return !isThis;
+            });
+          }
+          // finally, show the next modal in the stack, if there is one
+          if(openModals.length>0) {
+            self.to_front(openModals[openModals.length - 1]);
+          }
+        } else {
+          self.hide(open_modals, settings.css.close, settings);
+        }
+      }
+    },
+
+    close_targets : function () {
+      var base = '.' + this.settings.dismiss_modal_class;
+
+      if (this.settings.close_on_background_click) {
+        return base + ', .' + this.settings.bg_class;
+      }
+
+      return base;
+    },
+
+    toggle_bg : function (modal, state) {
+      if (this.S('.' + this.settings.bg_class).length === 0) {
+        this.settings.bg = $('<div />', {'class': this.settings.bg_class})
+          .appendTo('body').hide();
+      }
+
+      var visible = this.settings.bg.filter(':visible').length > 0;
+      if ( state != visible ) {
+        if ( state == undefined ? visible : !state ) {
+          this.hide(this.settings.bg);
+        } else {
+          this.show(this.settings.bg);
+        }
+      }
+    },
+
+    show : function (el, css) {
+      // is modal
+      if (css) {
+        var settings = el.data(this.attr_name(true) + '-init') || this.settings,
+            root_element = settings.root_element,
+            context = this;
+
+        if (el.parent(root_element).length === 0) {
+          var placeholder = el.wrap('<div style="display: none;" />').parent();
+
+          el.on('closed.fndtn.reveal.wrapped', function () {
+            el.detach().appendTo(placeholder);
+            el.unwrap().unbind('closed.fndtn.reveal.wrapped');
+          });
+
+          el.detach().appendTo(root_element);
+        }
+
+        var animData = getAnimationData(settings.animation);
+        if (!animData.animate) {
+          this.locked = false;
+        }
+        if (animData.pop) {
+          css.top = $(window).scrollTop() - el.data('offset') + 'px';
+          var end_css = {
+            top: $(window).scrollTop() + el.data('css-top') + 'px',
+            opacity: 1
+          };
+
+          return setTimeout(function () {
+            return el
+              .css(css)
+              .animate(end_css, settings.animation_speed, 'linear', function () {
+                context.locked = false;
+                el.trigger('opened.fndtn.reveal');
+              })
+              .addClass('open');
+          }, settings.animation_speed / 2);
+        }
+
+        css.top = $(window).scrollTop() + el.data('css-top') + 'px';
+
+        if (animData.fade) {
+          var end_css = {opacity: 1};
+
+          return setTimeout(function () {
+            return el
+              .css(css)
+              .animate(end_css, settings.animation_speed, 'linear', function () {
+                context.locked = false;
+                el.trigger('opened.fndtn.reveal');
+              })
+              .addClass('open');
+          }, settings.animation_speed / 2);
+        }
+
+        return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened.fndtn.reveal');
+      }
+
+      var settings = this.settings;
+
+      // should we animate the background?
+      if (getAnimationData(settings.animation).fade) {
+        return el.fadeIn(settings.animation_speed / 2);
+      }
+
+      this.locked = false;
+
+      return el.show();
+    },
+
+    to_back : function(el) {
+      el.addClass('toback');
+    },
+
+    to_front : function(el) {
+      el.removeClass('toback');
+    },
+
+    hide : function (el, css) {
+      // is modal
+      if (css) {
+        var settings = el.data(this.attr_name(true) + '-init'),
+            context = this;
+        settings = settings || this.settings;
+
+        var animData = getAnimationData(settings.animation);
+        if (!animData.animate) {
+          this.locked = false;
+        }
+        if (animData.pop) {
+          var end_css = {
+            top: - $(window).scrollTop() - el.data('offset') + 'px',
+            opacity: 0
+          };
+
+          return setTimeout(function () {
+            return el
+              .animate(end_css, settings.animation_speed, 'linear', function () {
+                context.locked = false;
+                el.css(css).trigger('closed.fndtn.reveal');
+              })
+              .removeClass('open');
+          }, settings.animation_speed / 2);
+        }
+
+        if (animData.fade) {
+          var end_css = {opacity : 0};
+
+          return setTimeout(function () {
+            return el
+              .animate(end_css, settings.animation_speed, 'linear', function () {
+                context.locked = false;
+                el.css(css).trigger('closed.fndtn.reveal');
+              })
+              .removeClass('open');
+          }, settings.animation_speed / 2);
+        }
+
+        return el.hide().css(css).removeClass('open').trigger('closed.fndtn.reveal');
+      }
+
+      var settings = this.settings;
+
+      // should we animate the background?
+      if (getAnimationData(settings.animation).fade) {
+        return el.fadeOut(settings.animation_speed / 2);
+      }
+
+      return el.hide();
+    },
+
+    close_video : function (e) {
+      var video = $('.flex-video', e.target),
+          iframe = $('iframe', video);
+
+      if (iframe.length > 0) {
+        iframe.attr('data-src', iframe[0].src);
+        iframe.attr('src', iframe.attr('src'));
+        video.hide();
+      }
+    },
+
+    open_video : function (e) {
+      var video = $('.flex-video', e.target),
+          iframe = video.find('iframe');
+
+      if (iframe.length > 0) {
+        var data_src = iframe.attr('data-src');
+        if (typeof data_src === 'string') {
+          iframe[0].src = iframe.attr('data-src');
+        } else {
+          var src = iframe[0].src;
+          iframe[0].src = undefined;
+          iframe[0].src = src;
+        }
+        video.show();
+      }
+    },
+
+    data_attr : function (str) {
+      if (this.namespace.length > 0) {
+        return this.namespace + '-' + str;
+      }
+
+      return str;
+    },
+
+    cache_offset : function (modal) {
+      var offset = modal.show().height() + parseInt(modal.css('top'), 10) + modal.scrollY;
+
+      modal.hide();
+
+      return offset;
+    },
+
+    off : function () {
+      $(this.scope).off('.fndtn.reveal');
+    },
+
+    reflow : function () {}
+  };
+
+  /*
+   * getAnimationData('popAndFade') // {animate: true,  pop: true,  fade: true}
+   * getAnimationData('fade')       // {animate: true,  pop: false, fade: true}
+   * getAnimationData('pop')        // {animate: true,  pop: true,  fade: false}
+   * getAnimationData('foo')        // {animate: false, pop: false, fade: false}
+   * getAnimationData(null)         // {animate: false, pop: false, fade: false}
+   */
+  function getAnimationData(str) {
+    var fade = /fade/i.test(str);
+    var pop = /pop/i.test(str);
+    return {
+      animate : fade || pop,
+      pop : pop,
+      fade : fade
+    };
+  }
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.slider = {
+    name : 'slider',
+
+    version : '5.5.3',
+
+    settings : {
+      start : 0,
+      end : 100,
+      step : 1,
+      precision : 2,
+      initial : null,
+      display_selector : '',
+      vertical : false,
+      trigger_input_change : false,
+      on_change : function () {}
+    },
+
+    cache : {},
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle');
+      this.bindings(method, options);
+      this.reflow();
+    },
+
+    events : function () {
+      var self = this;
+      $(this.scope)
+        .off('.slider')
+        .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider',
+        '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) {
+          if (!self.cache.active) {
+            e.preventDefault();
+            self.set_active_slider($(e.target));
+          }
+        })
+        .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) {
+          if (!!self.cache.active) {
+            e.preventDefault();
+            if ($.data(self.cache.active[0], 'settings').vertical) {
+              var scroll_offset = 0;
+              if (!e.pageY) {
+                scroll_offset = window.scrollY;
+              }
+              self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
+            } else {
+              self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
+            }
+          }
+        })
+        .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) {
+          if(!self.cache.active) {
+            // if the user has just clicked into the slider without starting to drag the handle
+            var slider = $(e.target).attr('role') === 'slider' ? $(e.target) : $(e.target).closest('.range-slider').find("[role='slider']");
+
+            if (slider.length && (!slider.parent().hasClass('disabled') && !slider.parent().attr('disabled'))) {
+              self.set_active_slider(slider);
+              if ($.data(self.cache.active[0], 'settings').vertical) {
+                var scroll_offset = 0;
+                if (!e.pageY) {
+                  scroll_offset = window.scrollY;
+                }
+                self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
+              } else {
+                self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
+              }
+            }
+          }
+          self.remove_active_slider();
+        })
+        .on('change.fndtn.slider', function (e) {
+          self.settings.on_change();
+        });
+
+      self.S(window)
+        .on('resize.fndtn.slider', self.throttle(function (e) {
+          self.reflow();
+        }, 300));
+
+      // update slider value as users change input value
+      this.S('[' + this.attr_name() + ']').each(function () {
+        var slider = $(this),
+            handle = slider.children('.range-slider-handle')[0],
+            settings = self.initialize_settings(handle);
+
+        if (settings.display_selector != '') {
+          $(settings.display_selector).each(function(){
+            if ($(this).attr('value')) {
+              $(this).off('change').on('change', function () {
+                slider.foundation("slider", "set_value", $(this).val());
+              });
+            }
+          });
+        }
+      });
+    },
+
+    get_cursor_position : function (e, xy) {
+      var pageXY = 'page' + xy.toUpperCase(),
+          clientXY = 'client' + xy.toUpperCase(),
+          position;
+
+      if (typeof e[pageXY] !== 'undefined') {
+        position = e[pageXY];
+      } else if (typeof e.originalEvent[clientXY] !== 'undefined') {
+        position = e.originalEvent[clientXY];
+      } else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') {
+        position = e.originalEvent.touches[0][clientXY];
+      } else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') {
+        position = e.currentPoint[xy];
+      }
+
+      return position;
+    },
+
+    set_active_slider : function ($handle) {
+      this.cache.active = $handle;
+    },
+
+    remove_active_slider : function () {
+      this.cache.active = null;
+    },
+
+    calculate_position : function ($handle, cursor_x) {
+      var self = this,
+          settings = $.data($handle[0], 'settings'),
+          handle_l = $.data($handle[0], 'handle_l'),
+          handle_o = $.data($handle[0], 'handle_o'),
+          bar_l = $.data($handle[0], 'bar_l'),
+          bar_o = $.data($handle[0], 'bar_o');
+
+      requestAnimationFrame(function () {
+        var pct;
+
+        if (Foundation.rtl && !settings.vertical) {
+          pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1);
+        } else {
+          pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1);
+        }
+
+        pct = settings.vertical ? 1 - pct : pct;
+
+        var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision);
+
+        self.set_ui($handle, norm);
+      });
+    },
+
+    set_ui : function ($handle, value) {
+      var settings = $.data($handle[0], 'settings'),
+          handle_l = $.data($handle[0], 'handle_l'),
+          bar_l = $.data($handle[0], 'bar_l'),
+          norm_pct = this.normalized_percentage(value, settings.start, settings.end),
+          handle_offset = norm_pct * (bar_l - handle_l) - 1,
+          progress_bar_length = norm_pct * 100,
+          $handle_parent = $handle.parent(),
+          $hidden_inputs = $handle.parent().children('input[type=hidden]');
+
+      if (Foundation.rtl && !settings.vertical) {
+        handle_offset = -handle_offset;
+      }
+
+      handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset;
+      this.set_translate($handle, handle_offset, settings.vertical);
+
+      if (settings.vertical) {
+        $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%');
+      } else {
+        $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%');
+      }
+
+      $handle_parent.attr(this.attr_name(), value).trigger('change.fndtn.slider');
+
+      $hidden_inputs.val(value);
+      if (settings.trigger_input_change) {
+          $hidden_inputs.trigger('change.fndtn.slider');
+      }
+
+      if (!$handle[0].hasAttribute('aria-valuemin')) {
+        $handle.attr({
+          'aria-valuemin' : settings.start,
+          'aria-valuemax' : settings.end
+        });
+      }
+      $handle.attr('aria-valuenow', value);
+
+      if (settings.display_selector != '') {
+        $(settings.display_selector).each(function () {
+          if (this.hasAttribute('value')) {
+            $(this).val(value);
+          } else {
+            $(this).text(value);
+          }
+        });
+      }
+
+    },
+
+    normalized_percentage : function (val, start, end) {
+      return Math.min(1, (val - start) / (end - start));
+    },
+
+    normalized_value : function (val, start, end, step, precision) {
+      var range = end - start,
+          point = val * range,
+          mod = (point - (point % step)) / step,
+          rem = point % step,
+          round = ( rem >= step * 0.5 ? step : 0);
+      return ((mod * step + round) + start).toFixed(precision);
+    },
+
+    set_translate : function (ele, offset, vertical) {
+      if (vertical) {
+        $(ele)
+          .css('-webkit-transform', 'translateY(' + offset + 'px)')
+          .css('-moz-transform', 'translateY(' + offset + 'px)')
+          .css('-ms-transform', 'translateY(' + offset + 'px)')
+          .css('-o-transform', 'translateY(' + offset + 'px)')
+          .css('transform', 'translateY(' + offset + 'px)');
+      } else {
+        $(ele)
+          .css('-webkit-transform', 'translateX(' + offset + 'px)')
+          .css('-moz-transform', 'translateX(' + offset + 'px)')
+          .css('-ms-transform', 'translateX(' + offset + 'px)')
+          .css('-o-transform', 'translateX(' + offset + 'px)')
+          .css('transform', 'translateX(' + offset + 'px)');
+      }
+    },
+
+    limit_to : function (val, min, max) {
+      return Math.min(Math.max(val, min), max);
+    },
+
+    initialize_settings : function (handle) {
+      var settings = $.extend({}, this.settings, this.data_options($(handle).parent())),
+          decimal_places_match_result;
+
+      if (settings.precision === null) {
+        decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/);
+        settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0;
+      }
+
+      if (settings.vertical) {
+        $.data(handle, 'bar_o', $(handle).parent().offset().top);
+        $.data(handle, 'bar_l', $(handle).parent().outerHeight());
+        $.data(handle, 'handle_o', $(handle).offset().top);
+        $.data(handle, 'handle_l', $(handle).outerHeight());
+      } else {
+        $.data(handle, 'bar_o', $(handle).parent().offset().left);
+        $.data(handle, 'bar_l', $(handle).parent().outerWidth());
+        $.data(handle, 'handle_o', $(handle).offset().left);
+        $.data(handle, 'handle_l', $(handle).outerWidth());
+      }
+
+      $.data(handle, 'bar', $(handle).parent());
+      return $.data(handle, 'settings', settings);
+    },
+
+    set_initial_position : function ($ele) {
+      var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'),
+          initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start),
+          $handle = $ele.children('.range-slider-handle');
+      this.set_ui($handle, initial);
+    },
+
+    set_value : function (value) {
+      var self = this;
+      $('[' + self.attr_name() + ']', this.scope).each(function () {
+        $(this).attr(self.attr_name(), value);
+      });
+      if (!!$(this.scope).attr(self.attr_name())) {
+        $(this.scope).attr(self.attr_name(), value);
+      }
+      self.reflow();
+    },
+
+    reflow : function () {
+      var self = this;
+      self.S('[' + this.attr_name() + ']').each(function () {
+        var handle = $(this).children('.range-slider-handle')[0],
+            val = $(this).attr(self.attr_name());
+        self.initialize_settings(handle);
+
+        if (val) {
+          self.set_ui($(handle), parseFloat(val));
+        } else {
+          self.set_initial_position($(this));
+        }
+      });
+    }
+  };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.tab = {
+    name : 'tab',
+
+    version : '5.5.3',
+
+    settings : {
+      active_class : 'active',
+      callback : function () {},
+      deep_linking : false,
+      scroll_to_content : true,
+      is_hover : false
+    },
+
+    default_tab_hashes : [],
+
+    init : function (scope, method, options) {
+      var self = this,
+          S = this.S;
+
+         // Store the default active tabs which will be referenced when the
+         // location hash is absent, as in the case of navigating the tabs and
+         // returning to the first viewing via the browser Back button.
+         S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {
+           self.default_tab_hashes.push(this.hash);
+         });
+
+      this.bindings(method, options);
+      this.handle_location_hash_change();
+    },
+
+    events : function () {
+      var self = this,
+          S = this.S;
+
+      var usual_tab_behavior =  function (e, target) {
+        var settings = S(target).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+        if (!settings.is_hover || Modernizr.touch) {
+          // if user did not pressed tab key, prevent default action
+          var keyCode = e.keyCode || e.which;
+          if (keyCode !== 9) { 
+            e.preventDefault();
+            e.stopPropagation();
+          }
+          self.toggle_active_tab(S(target).parent());
+          
+        }
+      };
+
+      S(this.scope)
+        .off('.tab')
+        // Key event: focus/tab key
+        .on('keydown.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
+          var keyCode = e.keyCode || e.which;
+          // if user pressed tab key
+          if (keyCode === 13 || keyCode === 32) { // enter or space
+            var el = this;
+            usual_tab_behavior(e, el);
+          } 
+        })
+        // Click event: tab title
+        .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
+          var el = this;
+          usual_tab_behavior(e, el);
+        })
+        // Hover event: tab title
+        .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {
+          var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+          if (settings.is_hover) {
+            self.toggle_active_tab(S(this).parent());
+          }
+        });
+
+      // Location hash change event
+      S(window).on('hashchange.fndtn.tab', function (e) {
+        e.preventDefault();
+        self.handle_location_hash_change();
+      });
+    },
+
+    handle_location_hash_change : function () {
+
+      var self = this,
+          S = this.S;
+
+      S('[' + this.attr_name() + ']', this.scope).each(function () {
+        var settings = S(this).data(self.attr_name(true) + '-init');
+        if (settings.deep_linking) {
+          // Match the location hash to a label
+          var hash;
+          if (settings.scroll_to_content) {
+            hash = self.scope.location.hash;
+          } else {
+            // prefix the hash to prevent anchor scrolling
+            hash = self.scope.location.hash.replace('fndtn-', '');
+          }
+          if (hash != '') {
+            // Check whether the location hash references a tab content div or
+            // another element on the page (inside or outside the tab content div)
+            var hash_element = S(hash);
+            if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) {
+              // Tab content div
+              self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent());
+            } else {
+              // Not the tab content div. If inside the tab content, find the
+              // containing tab and toggle it as active.
+              var hash_tab_container_id = hash_element.closest('.content').attr('id');
+              if (hash_tab_container_id != undefined) {
+                self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash);
+              }
+            }
+          } else {
+            // Reference the default tab hashes which were initialized in the init function
+            for (var ind = 0; ind < self.default_tab_hashes.length; ind++) {
+              self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent());
+            }
+          }
+        }
+       });
+     },
+
+    toggle_active_tab : function (tab, location_hash) {
+      var self = this,
+          S = self.S,
+          tabs = tab.closest('[' + this.attr_name() + ']'),
+          tab_link = tab.find('a'),
+          anchor = tab.children('a').first(),
+          target_hash = '#' + anchor.attr('href').split('#')[1],
+          target = S(target_hash),
+          siblings = tab.siblings(),
+          settings = tabs.data(this.attr_name(true) + '-init'),
+          interpret_keyup_action = function (e) {
+            // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js
+
+            // define current, previous and next (possible) tabs
+
+            var $original = $(this);
+            var $prev = $(this).parents('li').prev().children('[role="tab"]');
+            var $next = $(this).parents('li').next().children('[role="tab"]');
+            var $target;
+
+            // find the direction (prev or next)
+
+            switch (e.keyCode) {
+              case 37:
+                $target = $prev;
+                break;
+              case 39:
+                $target = $next;
+                break;
+              default:
+                $target = false
+                  break;
+            }
+
+            if ($target.length) {
+              $original.attr({
+                'tabindex' : '-1',
+                'aria-selected' : null
+              });
+              $target.attr({
+                'tabindex' : '0',
+                'aria-selected' : true
+              }).focus();
+            }
+
+            // Hide panels
+
+            $('[role="tabpanel"]')
+              .attr('aria-hidden', 'true');
+
+            // Show panel which corresponds to target
+
+            $('#' + $(document.activeElement).attr('href').substring(1))
+              .attr('aria-hidden', null);
+
+          },
+          go_to_hash = function(hash) {
+            // This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it
+            // the user would get continually redirected to the default hash.
+            var default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : 'fndtn-' + self.default_tab_hashes[0].replace('#', '');
+
+            if (hash !== default_hash || window.location.hash) {
+              window.location.hash = hash;
+            }
+          };
+
+      // allow usage of data-tab-content attribute instead of href
+      if (anchor.data('tab-content')) {
+        target_hash = '#' + anchor.data('tab-content').split('#')[1];
+        target = S(target_hash);
+      }
+
+      if (settings.deep_linking) {
+
+        if (settings.scroll_to_content) {
+
+          // retain current hash to scroll to content
+          go_to_hash(location_hash || target_hash);
+
+          if (location_hash == undefined || location_hash == target_hash) {
+            tab.parent()[0].scrollIntoView();
+          } else {
+            S(target_hash)[0].scrollIntoView();
+          }
+        } else {
+          // prefix the hashes so that the browser doesn't scroll down
+          if (location_hash != undefined) {
+            go_to_hash('fndtn-' + location_hash.replace('#', ''));
+          } else {
+            go_to_hash('fndtn-' + target_hash.replace('#', ''));
+          }
+        }
+      }
+
+      // WARNING: The activation and deactivation of the tab content must
+      // occur after the deep linking in order to properly refresh the browser
+      // window (notably in Chrome).
+      // Clean up multiple attr instances to done once
+      tab.addClass(settings.active_class).triggerHandler('opened');
+      tab_link.attr({'aria-selected' : 'true',  tabindex : 0});
+      siblings.removeClass(settings.active_class)
+      siblings.find('a').attr({'aria-selected' : 'false'/*,  tabindex : -1*/});
+      target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true'/*,  tabindex : -1*/});
+      target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex');
+      settings.callback(tab);
+      target.triggerHandler('toggled', [target]);
+      tabs.triggerHandler('toggled', [tab]);
+
+      tab_link.off('keydown').on('keydown', interpret_keyup_action );
+    },
+
+    data_attr : function (str) {
+      if (this.namespace.length > 0) {
+        return this.namespace + '-' + str;
+      }
+
+      return str;
+    },
+
+    off : function () {},
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.tooltip = {
+    name : 'tooltip',
+
+    version : '5.5.3',
+
+    settings : {
+      additional_inheritable_classes : [],
+      tooltip_class : '.tooltip',
+      append_to : 'body',
+      touch_close_text : 'Tap To Close',
+      disable_for_touch : false,
+      hover_delay : 200,
+      fade_in_duration : 150,
+      fade_out_duration : 150,
+      show_on : 'all',
+      tip_template : function (selector, content) {
+        return '<span data-selector="' + selector + '" id="' + selector + '" class="'
+          + Foundation.libs.tooltip.settings.tooltip_class.substring(1)
+          + '" role="tooltip">' + content + '<span class="nub"></span></span>';
+      }
+    },
+
+    cache : {},
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'random_str');
+      this.bindings(method, options);
+    },
+
+    should_show : function (target, tip) {
+      var settings = $.extend({}, this.settings, this.data_options(target));
+
+      if (settings.show_on === 'all') {
+        return true;
+      } else if (this.small() && settings.show_on === 'small') {
+        return true;
+      } else if (this.medium() && settings.show_on === 'medium') {
+        return true;
+      } else if (this.large() && settings.show_on === 'large') {
+        return true;
+      }
+      return false;
+    },
+
+    medium : function () {
+      return matchMedia(Foundation.media_queries['medium']).matches;
+    },
+
+    large : function () {
+      return matchMedia(Foundation.media_queries['large']).matches;
+    },
+
+    events : function (instance) {
+      var self = this,
+          S = self.S;
+
+      self.create(this.S(instance));
+
+      function _startShow(elt, $this, immediate) {
+        if (elt.timer) {
+          return;
+        }
+
+        if (immediate) {
+          elt.timer = null;
+          self.showTip($this);
+        } else {
+          elt.timer = setTimeout(function () {
+            elt.timer = null;
+            self.showTip($this);
+          }.bind(elt), self.settings.hover_delay);
+        }
+      }
+
+      function _startHide(elt, $this) {
+        if (elt.timer) {
+          clearTimeout(elt.timer);
+          elt.timer = null;
+        }
+
+        self.hide($this);
+      }
+
+      $(this.scope)
+        .off('.tooltip')
+        .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',
+          '[' + this.attr_name() + ']', function (e) {
+          var $this = S(this),
+              settings = $.extend({}, self.settings, self.data_options($this)),
+              is_touch = false;
+
+          if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) {
+            return false;
+          }
+
+          if (/mouse/i.test(e.type) && self.ie_touch(e)) {
+            return false;
+          }
+          
+          if ($this.hasClass('open')) {
+            if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+              e.preventDefault();
+            }
+            self.hide($this);
+          } else {
+            if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+              return;
+            } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+              e.preventDefault();
+              S(settings.tooltip_class + '.open').hide();
+              is_touch = true;
+              // close other open tooltips on touch
+              if ($('.open[' + self.attr_name() + ']').length > 0) {
+               var prevOpen = S($('.open[' + self.attr_name() + ']')[0]);
+               self.hide(prevOpen);
+              }
+            }
+
+            if (/enter|over/i.test(e.type)) {
+              _startShow(this, $this);
+
+            } else if (e.type === 'mouseout' || e.type === 'mouseleave') {
+              _startHide(this, $this);
+            } else {
+              _startShow(this, $this, true);
+            }
+          }
+        })
+        .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {
+          if (/mouse/i.test(e.type) && self.ie_touch(e)) {
+            return false;
+          }
+
+          if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {
+            return;
+          } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {
+            self.convert_to_touch($(this));
+          } else {
+            _startHide(this, $(this));
+          }
+        })
+        .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {
+          _startHide(this, S(this));
+        });
+    },
+
+    ie_touch : function (e) {
+      // How do I distinguish between IE11 and Windows Phone 8?????
+      return false;
+    },
+
+    showTip : function ($target) {
+      var $tip = this.getTip($target);
+      if (this.should_show($target, $tip)) {
+        return this.show($target);
+      }
+      return;
+    },
+
+    getTip : function ($target) {
+      var selector = this.selector($target),
+          settings = $.extend({}, this.settings, this.data_options($target)),
+          tip = null;
+
+      if (selector) {
+        tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class);
+      }
+
+      return (typeof tip === 'object') ? tip : false;
+    },
+
+    selector : function ($target) {
+      var dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');
+
+      if (typeof dataSelector != 'string') {
+        dataSelector = this.random_str(6);
+        $target
+          .attr('data-selector', dataSelector)
+          .attr('aria-describedby', dataSelector);
+      }
+
+      return dataSelector;
+    },
+
+    create : function ($target) {
+      var self = this,
+          settings = $.extend({}, this.settings, this.data_options($target)),
+          tip_template = this.settings.tip_template;
+
+      if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) {
+        tip_template = window[settings.tip_template];
+      }
+
+      var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())),
+          classes = this.inheritable_classes($target);
+
+      $tip.addClass(classes).appendTo(settings.append_to);
+
+      if (Modernizr.touch) {
+        $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
+        $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) {
+          self.hide($target);
+        });
+      }
+
+      $target.removeAttr('title').attr('title', '');
+    },
+
+    reposition : function (target, tip, classes) {
+      var width, nub, nubHeight, nubWidth, objPos;
+
+      tip.css('visibility', 'hidden').show();
+
+      width = target.data('width');
+      nub = tip.children('.nub');
+      nubHeight = nub.outerHeight();
+      nubWidth = nub.outerWidth();
+
+      if (this.small()) {
+        tip.css({'width' : '100%'});
+      } else {
+        tip.css({'width' : (width) ? width : 'auto'});
+      }
+
+      objPos = function (obj, top, right, bottom, left, width) {
+        return obj.css({
+          'top' : (top) ? top : 'auto',
+          'bottom' : (bottom) ? bottom : 'auto',
+          'left' : (left) ? left : 'auto',
+          'right' : (right) ? right : 'auto'
+        }).end();
+      };
+      
+      var o_top = target.offset().top;
+      var o_left = target.offset().left;
+      var outerHeight = target.outerHeight();
+
+      objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left);
+
+      if (this.small()) {
+        objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', 12.5, $(this.scope).width());
+        tip.addClass('tip-override');
+        objPos(nub, -nubHeight, 'auto', 'auto', o_left);
+      } else {
+        
+        if (Foundation.rtl) {
+          nub.addClass('rtl');
+          o_left = o_left + target.outerWidth() - tip.outerWidth();
+        }
+
+        objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left);
+        // reset nub from small styles, if they've been applied
+        if (nub.attr('style')) {
+          nub.removeAttr('style');
+        }
+        
+        tip.removeClass('tip-override');
+        
+        var tip_outerHeight = tip.outerHeight();
+        
+        if (classes && classes.indexOf('tip-top') > -1) {
+          if (Foundation.rtl) {
+            nub.addClass('rtl');
+          }
+          objPos(tip, (o_top - tip_outerHeight), 'auto', 'auto', o_left)
+            .removeClass('tip-override');
+        } else if (classes && classes.indexOf('tip-left') > -1) {
+          objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left - tip.outerWidth() - nubHeight))
+            .removeClass('tip-override');
+          nub.removeClass('rtl');
+        } else if (classes && classes.indexOf('tip-right') > -1) {
+          objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left + target.outerWidth() + nubHeight))
+            .removeClass('tip-override');
+          nub.removeClass('rtl');
+        }
+      }
+
+      tip.css('visibility', 'visible').hide();
+    },
+
+    small : function () {
+      return matchMedia(Foundation.media_queries.small).matches &&
+        !matchMedia(Foundation.media_queries.medium).matches;
+    },
+
+    inheritable_classes : function ($target) {
+      var settings = $.extend({}, this.settings, this.data_options($target)),
+          inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes),
+          classes = $target.attr('class'),
+          filtered = classes ? $.map(classes.split(' '), function (el, i) {
+            if ($.inArray(el, inheritables) !== -1) {
+              return el;
+            }
+          }).join(' ') : '';
+
+      return $.trim(filtered);
+    },
+
+    convert_to_touch : function ($target) {
+      var self = this,
+          $tip = self.getTip($target),
+          settings = $.extend({}, self.settings, self.data_options($target));
+
+      if ($tip.find('.tap-to-close').length === 0) {
+        $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
+        $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) {
+          self.hide($target);
+        });
+      }
+
+      $target.data('tooltip-open-event-type', 'touch');
+    },
+
+    show : function ($target) {
+      var $tip = this.getTip($target);
+      if ($target.data('tooltip-open-event-type') == 'touch') {
+        this.convert_to_touch($target);
+      }
+
+      this.reposition($target, $tip, $target.attr('class'));
+      $target.addClass('open');
+      $tip.fadeIn(this.settings.fade_in_duration);
+    },
+
+    hide : function ($target) {
+      var $tip = this.getTip($target);
+
+      $tip.fadeOut(this.settings.fade_out_duration, function () {
+        $tip.find('.tap-to-close').remove();
+        $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');
+        $target.removeClass('open');
+      });
+    },
+
+    off : function () {
+      var self = this;
+      this.S(this.scope).off('.fndtn.tooltip');
+      this.S(this.settings.tooltip_class).each(function (i) {
+        $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text());
+      }).remove();
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.topbar = {
+    name : 'topbar',
+
+    version : '5.5.3',
+
+    settings : {
+      index : 0,
+      start_offset : 0,
+      sticky_class : 'sticky',
+      custom_back_text : true,
+      back_text : 'Back',
+      mobile_show_parent_link : true,
+      is_hover : true,
+      scrolltop : true, // jump to top when sticky nav menu toggle is clicked
+      sticky_on : 'all',
+      dropdown_autoclose: true
+    },
+
+    init : function (section, method, options) {
+      Foundation.inherit(this, 'add_custom_rule register_media throttle');
+      var self = this;
+
+      self.register_media('topbar', 'foundation-mq-topbar');
+
+      this.bindings(method, options);
+
+      self.S('[' + this.attr_name() + ']', this.scope).each(function () {
+        var topbar = $(this),
+            settings = topbar.data(self.attr_name(true) + '-init'),
+            section = self.S('section, .top-bar-section', this);
+        topbar.data('index', 0);
+        var topbarContainer = topbar.parent();
+        if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) {
+          self.settings.sticky_class = settings.sticky_class;
+          self.settings.sticky_topbar = topbar;
+          topbar.data('height', topbarContainer.outerHeight());
+          topbar.data('stickyoffset', topbarContainer.offset().top);
+        } else {
+          topbar.data('height', topbar.outerHeight());
+        }
+
+        if (!settings.assembled) {
+          self.assemble(topbar);
+        }
+
+        if (settings.is_hover) {
+          self.S('.has-dropdown', topbar).addClass('not-click');
+        } else {
+          self.S('.has-dropdown', topbar).removeClass('not-click');
+        }
+
+        // Pad body when sticky (scrolled) or fixed.
+        self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }');
+
+        if (topbarContainer.hasClass('fixed')) {
+          self.S('body').addClass('f-topbar-fixed');
+        }
+      });
+
+    },
+
+    is_sticky : function (topbar, topbarContainer, settings) {
+      var sticky     = topbarContainer.hasClass(settings.sticky_class);
+      var smallMatch = matchMedia(Foundation.media_queries.small).matches;
+      var medMatch   = matchMedia(Foundation.media_queries.medium).matches;
+      var lrgMatch   = matchMedia(Foundation.media_queries.large).matches;
+
+      if (sticky && settings.sticky_on === 'all') {
+        return true;
+      }
+      if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) {
+        if (smallMatch && !medMatch && !lrgMatch) { return true; }
+      }
+      if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) {
+        if (smallMatch && medMatch && !lrgMatch) { return true; }
+      }
+      if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) {
+        if (smallMatch && medMatch && lrgMatch) { return true; }
+      }
+
+       return false;
+    },
+
+    toggle : function (toggleEl) {
+      var self = this,
+          topbar;
+
+      if (toggleEl) {
+        topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']');
+      } else {
+        topbar = self.S('[' + this.attr_name() + ']');
+      }
+
+      var settings = topbar.data(this.attr_name(true) + '-init');
+
+      var section = self.S('section, .top-bar-section', topbar);
+
+      if (self.breakpoint()) {
+        if (!self.rtl) {
+          section.css({left : '0%'});
+          $('>.name', section).css({left : '100%'});
+        } else {
+          section.css({right : '0%'});
+          $('>.name', section).css({right : '100%'});
+        }
+
+        self.S('li.moved', section).removeClass('moved');
+        topbar.data('index', 0);
+
+        topbar
+          .toggleClass('expanded')
+          .css('height', '');
+      }
+
+      if (settings.scrolltop) {
+        if (!topbar.hasClass('expanded')) {
+          if (topbar.hasClass('fixed')) {
+            topbar.parent().addClass('fixed');
+            topbar.removeClass('fixed');
+            self.S('body').addClass('f-topbar-fixed');
+          }
+        } else if (topbar.parent().hasClass('fixed')) {
+          if (settings.scrolltop) {
+            topbar.parent().removeClass('fixed');
+            topbar.addClass('fixed');
+            self.S('body').removeClass('f-topbar-fixed');
+
+            window.scrollTo(0, 0);
+          } else {
+            topbar.parent().removeClass('expanded');
+          }
+        }
+      } else {
+        if (self.is_sticky(topbar, topbar.parent(), settings)) {
+          topbar.parent().addClass('fixed');
+        }
+
+        if (topbar.parent().hasClass('fixed')) {
+          if (!topbar.hasClass('expanded')) {
+            topbar.removeClass('fixed');
+            topbar.parent().removeClass('expanded');
+            self.update_sticky_positioning();
+          } else {
+            topbar.addClass('fixed');
+            topbar.parent().addClass('expanded');
+            self.S('body').addClass('f-topbar-fixed');
+          }
+        }
+      }
+    },
+
+    timer : null,
+
+    events : function (bar) {
+      var self = this,
+          S = this.S;
+
+      S(this.scope)
+        .off('.topbar')
+        .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) {
+          e.preventDefault();
+          self.toggle(this);
+        })
+        .on('click.fndtn.topbar contextmenu.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) {
+          var li = $(this).closest('li'),
+              topbar = li.closest('[' + self.attr_name() + ']'),
+              settings = topbar.data(self.attr_name(true) + '-init');
+
+          if (settings.dropdown_autoclose && settings.is_hover) {
+            var hoverLi = $(this).closest('.hover');
+            hoverLi.removeClass('hover');
+          }
+          if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) {
+            self.toggle();
+          }
+
+        })
+        .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {
+          var li = S(this),
+              target = S(e.target),
+              topbar = li.closest('[' + self.attr_name() + ']'),
+              settings = topbar.data(self.attr_name(true) + '-init');
+
+          if (target.data('revealId')) {
+            self.toggle();
+            return;
+          }
+
+          if (self.breakpoint()) {
+            return;
+          }
+
+          if (settings.is_hover && !Modernizr.touch) {
+            return;
+          }
+
+          e.stopImmediatePropagation();
+
+          if (li.hasClass('hover')) {
+            li
+              .removeClass('hover')
+              .find('li')
+              .removeClass('hover');
+
+            li.parents('li.hover')
+              .removeClass('hover');
+          } else {
+            li.addClass('hover');
+
+            $(li).siblings().removeClass('hover');
+
+            if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {
+              e.preventDefault();
+            }
+          }
+        })
+        .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) {
+          if (self.breakpoint()) {
+
+            e.preventDefault();
+
+            var $this = S(this),
+                topbar = $this.closest('[' + self.attr_name() + ']'),
+                section = topbar.find('section, .top-bar-section'),
+                dropdownHeight = $this.next('.dropdown').outerHeight(),
+                $selectedLi = $this.closest('li');
+
+            topbar.data('index', topbar.data('index') + 1);
+            $selectedLi.addClass('moved');
+
+            if (!self.rtl) {
+              section.css({left : -(100 * topbar.data('index')) + '%'});
+              section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
+            } else {
+              section.css({right : -(100 * topbar.data('index')) + '%'});
+              section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
+            }
+
+            topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));
+          }
+        });
+
+      S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () {
+          self.resize.call(self);
+      }, 50)).trigger('resize.fndtn.topbar').load(function () {
+          // Ensure that the offset is calculated after all of the pages resources have loaded
+          S(this).trigger('resize.fndtn.topbar');
+      });
+
+      S('body').off('.topbar').on('click.fndtn.topbar', function (e) {
+        var parent = S(e.target).closest('li').closest('li.hover');
+
+        if (parent.length > 0) {
+          return;
+        }
+
+        S('[' + self.attr_name() + '] li.hover').removeClass('hover');
+      });
+
+      // Go up a level on Click
+      S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) {
+        e.preventDefault();
+
+        var $this = S(this),
+            topbar = $this.closest('[' + self.attr_name() + ']'),
+            section = topbar.find('section, .top-bar-section'),
+            settings = topbar.data(self.attr_name(true) + '-init'),
+            $movedLi = $this.closest('li.moved'),
+            $previousLevelUl = $movedLi.parent();
+
+        topbar.data('index', topbar.data('index') - 1);
+
+        if (!self.rtl) {
+          section.css({left : -(100 * topbar.data('index')) + '%'});
+          section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
+        } else {
+          section.css({right : -(100 * topbar.data('index')) + '%'});
+          section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
+        }
+
+        if (topbar.data('index') === 0) {
+          topbar.css('height', '');
+        } else {
+          topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height'));
+        }
+
+        setTimeout(function () {
+          $movedLi.removeClass('moved');
+        }, 300);
+      });
+
+      // Show dropdown menus when their items are focused
+      S(this.scope).find('.dropdown a')
+        .focus(function () {
+          $(this).parents('.has-dropdown').addClass('hover');
+        })
+        .blur(function () {
+          $(this).parents('.has-dropdown').removeClass('hover');
+        });
+    },
+
+    resize : function () {
+      var self = this;
+      self.S('[' + this.attr_name() + ']').each(function () {
+        var topbar = self.S(this),
+            settings = topbar.data(self.attr_name(true) + '-init');
+
+        var stickyContainer = topbar.parent('.' + self.settings.sticky_class);
+        var stickyOffset;
+
+        if (!self.breakpoint()) {
+          var doToggle = topbar.hasClass('expanded');
+          topbar
+            .css('height', '')
+            .removeClass('expanded')
+            .find('li')
+            .removeClass('hover');
+
+            if (doToggle) {
+              self.toggle(topbar);
+            }
+        }
+
+        if (self.is_sticky(topbar, stickyContainer, settings)) {
+          if (stickyContainer.hasClass('fixed')) {
+            // Remove the fixed to allow for correct calculation of the offset.
+            stickyContainer.removeClass('fixed');
+
+            stickyOffset = stickyContainer.offset().top;
+            if (self.S(document.body).hasClass('f-topbar-fixed')) {
+              stickyOffset -= topbar.data('height');
+            }
+
+            topbar.data('stickyoffset', stickyOffset);
+            stickyContainer.addClass('fixed');
+          } else {
+            stickyOffset = stickyContainer.offset().top;
+            topbar.data('stickyoffset', stickyOffset);
+          }
+        }
+
+      });
+    },
+
+    breakpoint : function () {
+      return !matchMedia(Foundation.media_queries['topbar']).matches;
+    },
+
+    small : function () {
+      return matchMedia(Foundation.media_queries['small']).matches;
+    },
+
+    medium : function () {
+      return matchMedia(Foundation.media_queries['medium']).matches;
+    },
+
+    large : function () {
+      return matchMedia(Foundation.media_queries['large']).matches;
+    },
+
+    assemble : function (topbar) {
+      var self = this,
+          settings = topbar.data(this.attr_name(true) + '-init'),
+          section = self.S('section, .top-bar-section', topbar);
+
+      // Pull element out of the DOM for manipulation
+      section.detach();
+
+      self.S('.has-dropdown>a', section).each(function () {
+        var $link = self.S(this),
+            $dropdown = $link.siblings('.dropdown'),
+            url = $link.attr('href'),
+            $titleLi;
+
+        if (!$dropdown.find('.title.back').length) {
+
+          if (settings.mobile_show_parent_link == true && url) {
+            $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>');
+          } else {
+            $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>');
+          }
+
+          // Copy link to subnav
+          if (settings.custom_back_text == true) {
+            $('h5>a', $titleLi).html(settings.back_text);
+          } else {
+            $('h5>a', $titleLi).html('&laquo; ' + $link.html());
+          }
+          $dropdown.prepend($titleLi);
+        }
+      });
+
+      // Put element back in the DOM
+      section.appendTo(topbar);
+
+      // check for sticky
+      this.sticky();
+
+      this.assembled(topbar);
+    },
+
+    assembled : function (topbar) {
+      topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true}));
+    },
+
+    height : function (ul) {
+      var total = 0,
+          self = this;
+
+      $('> li', ul).each(function () {
+        total += self.S(this).outerHeight(true);
+      });
+
+      return total;
+    },
+
+    sticky : function () {
+      var self = this;
+
+      this.S(window).on('scroll', function () {
+        self.update_sticky_positioning();
+      });
+    },
+
+    update_sticky_positioning : function () {
+      var klass = '.' + this.settings.sticky_class,
+          $window = this.S(window),
+          self = this;
+
+      if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) {
+        var distance = this.settings.sticky_topbar.data('stickyoffset') + this.settings.start_offset;
+        if (!self.S(klass).hasClass('expanded')) {
+          if ($window.scrollTop() > (distance)) {
+            if (!self.S(klass).hasClass('fixed')) {
+              self.S(klass).addClass('fixed');
+              self.S('body').addClass('f-topbar-fixed');
+            }
+          } else if ($window.scrollTop() <= distance) {
+            if (self.S(klass).hasClass('fixed')) {
+              self.S(klass).removeClass('fixed');
+              self.S('body').removeClass('f-topbar-fixed');
+            }
+          }
+        }
+      }
+    },
+
+    off : function () {
+      this.S(this.scope).off('.fndtn.topbar');
+      this.S(window).off('.fndtn.topbar');
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation.min.js b/js/foundation/js/foundation.min.js
new file mode 100644 (file)
index 0000000..558dcfa
--- /dev/null
@@ -0,0 +1,5 @@
+!function(a,b,c,d){"use strict";function e(a){return("string"==typeof a||a instanceof String)&&(a=a.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g,"")),a}function f(a){this.selector=a,this.query=""}var g=function(b){var c=a("head");c.prepend(a.map(b,function(a){return 0===c.has("."+a).length?'<meta class="'+a+'" />':void 0}))};g(["foundation-mq-small","foundation-mq-small-only","foundation-mq-medium","foundation-mq-medium-only","foundation-mq-large","foundation-mq-large-only","foundation-mq-xlarge","foundation-mq-xlarge-only","foundation-mq-xxlarge","foundation-data-attribute-namespace"]),a(function(){"undefined"!=typeof FastClick&&"undefined"!=typeof c.body&&FastClick.attach(c.body)});var h=function(b,d){if("string"==typeof b){if(d){var e;if(d.jquery){if(e=d[0],!e)return d}else e=d;return a(e.querySelectorAll(b))}return a(c.querySelectorAll(b))}return a(b,d)},i=function(a){var b=[];return a||b.push("data"),this.namespace.length>0&&b.push(this.namespace),b.push(this.name),b.join("-")},j=function(a){for(var b=a.split("-"),c=b.length,d=[];c--;)0!==c?d.push(b[c]):this.namespace.length>0?d.push(this.namespace,b[c]):d.push(b[c]);return d.reverse().join("-")},k=function(b,c){var d=this,e=function(){var e=h(this),f=!e.data(d.attr_name(!0)+"-init");e.data(d.attr_name(!0)+"-init",a.extend({},d.settings,c||b,d.data_options(e))),f&&d.events(this)};return h(this.scope).is("["+this.attr_name()+"]")?e.call(this.scope):h("["+this.attr_name()+"]",this.scope).each(e),"string"==typeof b?this[b].call(this,c):void 0},l=function(a,b){function c(){b(a[0])}function d(){if(this.one("load",c),/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var a=this.attr("src"),b=a.match(/\?/)?"&":"?";b+="random="+(new Date).getTime(),this.attr("src",a+b)}}return a.attr("src")?void(a[0].complete||4===a[0].readyState?c():d.call(a)):void c()};/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+b.matchMedia||(b.matchMedia=function(){var a=b.styleMedia||b.media;if(!a){var d=c.createElement("style"),e=c.getElementsByTagName("script")[0],f=null;d.type="text/css",d.id="matchmediajs-test",e.parentNode.insertBefore(d,e),f="getComputedStyle"in b&&b.getComputedStyle(d,null)||d.currentStyle,a={matchMedium:function(a){var b="@media "+a+"{ #matchmediajs-test { width: 1px; } }";return d.styleSheet?d.styleSheet.cssText=b:d.textContent=b,"1px"===f.width}}}return function(b){return{matches:a.matchMedium(b||"all"),media:b||"all"}}}()),function(a){function c(){d&&(g(c),i&&a.fx.tick())}for(var d,e=0,f=["webkit","moz"],g=b.requestAnimationFrame,h=b.cancelAnimationFrame,i="undefined"!=typeof a.fx;e<f.length&&!g;e++)g=b[f[e]+"RequestAnimationFrame"],h=h||b[f[e]+"CancelAnimationFrame"]||b[f[e]+"CancelRequestAnimationFrame"];g?(b.requestAnimationFrame=g,b.cancelAnimationFrame=h,i&&(a.fx.timer=function(b){b()&&a.timers.push(b)&&!d&&(d=!0,c())},a.fx.stop=function(){d=!1})):(b.requestAnimationFrame=function(a){var c=(new Date).getTime(),d=Math.max(0,16-(c-e)),f=b.setTimeout(function(){a(c+d)},d);return e=c+d,f},b.cancelAnimationFrame=function(a){clearTimeout(a)})}(a),f.prototype.toString=function(){return this.query||(this.query=h(this.selector).css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""))},b.Foundation={name:"Foundation",version:"5.5.3",media_queries:{small:new f(".foundation-mq-small"),"small-only":new f(".foundation-mq-small-only"),medium:new f(".foundation-mq-medium"),"medium-only":new f(".foundation-mq-medium-only"),large:new f(".foundation-mq-large"),"large-only":new f(".foundation-mq-large-only"),xlarge:new f(".foundation-mq-xlarge"),"xlarge-only":new f(".foundation-mq-xlarge-only"),xxlarge:new f(".foundation-mq-xxlarge")},stylesheet:a("<style></style>").appendTo("head")[0].sheet,global:{namespace:d},init:function(a,c,d,e,f){var g=[a,d,e,f],i=[];if(this.rtl=/rtl/i.test(h("html").attr("dir")),this.scope=a||this.scope,this.set_namespace(),c&&"string"==typeof c&&!/reflow/i.test(c))this.libs.hasOwnProperty(c)&&i.push(this.init_lib(c,g));else for(var j in this.libs)i.push(this.init_lib(j,c));return h(b).load(function(){h(b).trigger("resize.fndtn.clearing").trigger("resize.fndtn.dropdown").trigger("resize.fndtn.equalizer").trigger("resize.fndtn.interchange").trigger("resize.fndtn.joyride").trigger("resize.fndtn.magellan").trigger("resize.fndtn.topbar").trigger("resize.fndtn.slider")}),a},init_lib:function(b,c){return this.libs.hasOwnProperty(b)?(this.patch(this.libs[b]),c&&c.hasOwnProperty(b)?("undefined"!=typeof this.libs[b].settings?a.extend(!0,this.libs[b].settings,c[b]):"undefined"!=typeof this.libs[b].defaults&&a.extend(!0,this.libs[b].defaults,c[b]),this.libs[b].init.apply(this.libs[b],[this.scope,c[b]])):(c=c instanceof Array?c:new Array(c),this.libs[b].init.apply(this.libs[b],c))):function(){}},patch:function(a){a.scope=this.scope,a.namespace=this.global.namespace,a.rtl=this.rtl,a.data_options=this.utils.data_options,a.attr_name=i,a.add_namespace=j,a.bindings=k,a.S=this.utils.S},inherit:function(a,b){for(var c=b.split(" "),d=c.length;d--;)this.utils.hasOwnProperty(c[d])&&(a[c[d]]=this.utils[c[d]])},set_namespace:function(){var b=this.global.namespace===d?a(".foundation-data-attribute-namespace").css("font-family"):this.global.namespace;this.global.namespace=b===d||/false/i.test(b)?"":b},libs:{},utils:{S:h,throttle:function(a,b){var c=null;return function(){var d=this,e=arguments;null==c&&(c=setTimeout(function(){a.apply(d,e),c=null},b))}},debounce:function(a,b,c){var d,e;return function(){var f=this,g=arguments,h=function(){d=null,c||(e=a.apply(f,g))},i=c&&!d;return clearTimeout(d),d=setTimeout(h,b),i&&(e=a.apply(f,g)),e}},data_options:function(b,c){function d(a){return!isNaN(a-0)&&null!==a&&""!==a&&a!==!1&&a!==!0}function e(b){return"string"==typeof b?a.trim(b):b}c=c||"options";var f,g,h,i={},j=function(a){var b=Foundation.global.namespace;return b.length>0?a.data(b+"-"+c):a.data(c)},k=j(b);if("object"==typeof k)return k;for(h=(k||":").split(";"),f=h.length;f--;)g=h[f].split(":"),g=[g[0],g.slice(1).join(":")],/true/i.test(g[1])&&(g[1]=!0),/false/i.test(g[1])&&(g[1]=!1),d(g[1])&&(-1===g[1].indexOf(".")?g[1]=parseInt(g[1],10):g[1]=parseFloat(g[1])),2===g.length&&g[0].length>0&&(i[e(g[0])]=e(g[1]));return i},register_media:function(b,c){Foundation.media_queries[b]===d&&(a("head").append('<meta class="'+c+'"/>'),Foundation.media_queries[b]=e(a("."+c).css("font-family")))},add_custom_rule:function(a,b){if(b===d&&Foundation.stylesheet)Foundation.stylesheet.insertRule(a,Foundation.stylesheet.cssRules.length);else{var c=Foundation.media_queries[b];c!==d&&Foundation.stylesheet.insertRule("@media "+Foundation.media_queries[b]+"{ "+a+" }",Foundation.stylesheet.cssRules.length)}},image_loaded:function(a,b){function c(a){for(var b=a.length,c=b-1;c>=0;c--)if(a.attr("height")===d)return!1;return!0}var e=this,f=a.length;(0===f||c(a))&&b(a),a.each(function(){l(e.S(this),function(){f-=1,0===f&&b(a)})})},random_str:function(){return this.fidx||(this.fidx=0),this.prefix=this.prefix||[this.name||"F",(+new Date).toString(36)].join("-"),this.prefix+(this.fidx++).toString(36)},match:function(a){return b.matchMedia(a).matches},is_small_up:function(){return this.match(Foundation.media_queries.small)},is_medium_up:function(){return this.match(Foundation.media_queries.medium)},is_large_up:function(){return this.match(Foundation.media_queries.large)},is_xlarge_up:function(){return this.match(Foundation.media_queries.xlarge)},is_xxlarge_up:function(){return this.match(Foundation.media_queries.xxlarge)},is_small_only:function(){return!(this.is_medium_up()||this.is_large_up()||this.is_xlarge_up()||this.is_xxlarge_up())},is_medium_only:function(){return this.is_medium_up()&&!this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_large_only:function(){return this.is_medium_up()&&this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xxlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&this.is_xxlarge_up()}}},a.fn.foundation=function(){var a=Array.prototype.slice.call(arguments,0);return this.each(function(){return Foundation.init.apply(Foundation,[this].concat(a)),this})}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.abide={name:"abide",version:"5.5.3",settings:{live_validate:!0,validate_on_blur:!0,focus_on_invalid:!0,error_labels:!0,error_class:"error",timeout:1e3,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/},validators:{equalTo:function(a,b,d){var e=c.getElementById(a.getAttribute(this.add_namespace("data-equalto"))).value,f=a.value,g=e===f;return g}}},timer:null,init:function(a,b,c){this.bindings(b,c)},events:function(b){function c(a,b){clearTimeout(d.timer),d.timer=setTimeout(function(){d.validate([a],b)}.bind(a),f.timeout)}var d=this,e=d.S(b).attr("novalidate","novalidate"),f=e.data(this.attr_name(!0)+"-init")||{};this.invalid_attr=this.add_namespace("data-invalid"),e.off(".abide").on("submit.fndtn.abide",function(a){var b=/ajax/i.test(d.S(this).attr(d.attr_name()));return d.validate(d.S(this).find("input, textarea, select").not(":hidden, [data-abide-ignore]").get(),a,b)}).on("validate.fndtn.abide",function(a){"manual"===f.validate_on&&d.validate([a.target],a)}).on("reset",function(b){return d.reset(a(this),b)}).find("input, textarea, select").not(":hidden, [data-abide-ignore]").off(".abide").on("blur.fndtn.abide change.fndtn.abide",function(a){var b=this.getAttribute("id"),d=e.find('[data-equalto="'+b+'"]');f.validate_on_blur&&f.validate_on_blur===!0&&c(this,a),"undefined"!=typeof d.get(0)&&d.val().length&&c(d.get(0),a),"change"===f.validate_on&&c(this,a)}).on("keydown.fndtn.abide",function(a){var b=this.getAttribute("id"),d=e.find('[data-equalto="'+b+'"]');f.live_validate&&f.live_validate===!0&&9!=a.which&&c(this,a),"undefined"!=typeof d.get(0)&&d.val().length&&c(d.get(0),a),"tab"===f.validate_on&&9===a.which?c(this,a):"change"===f.validate_on&&c(this,a)}).on("focus",function(b){navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)&&a("html, body").animate({scrollTop:a(b.target).offset().top},100)})},reset:function(b,c){var d=this;b.removeAttr(d.invalid_attr),a("["+d.invalid_attr+"]",b).removeAttr(d.invalid_attr),a("."+d.settings.error_class,b).not("small").removeClass(d.settings.error_class),a(":input",b).not(":button, :submit, :reset, :hidden, [data-abide-ignore]").val("").removeAttr(d.invalid_attr)},validate:function(a,b,c){for(var d=this.parse_patterns(a),e=d.length,f=this.S(a[0]).closest("form"),g=/submit/.test(b.type),h=0;e>h;h++)if(!d[h]&&(g||c))return this.settings.focus_on_invalid&&a[h].focus(),f.trigger("invalid.fndtn.abide"),this.S(a[h]).closest("form").attr(this.invalid_attr,""),!1;return(g||c)&&f.trigger("valid.fndtn.abide"),f.removeAttr(this.invalid_attr),c?!1:!0},parse_patterns:function(a){for(var b=a.length,c=[];b--;)c.push(this.pattern(a[b]));return this.check_validation_and_apply_styles(c)},pattern:function(a){var b=a.getAttribute("type"),c="string"==typeof a.getAttribute("required"),d=a.getAttribute("pattern")||"";return this.settings.patterns.hasOwnProperty(d)&&d.length>0?[a,this.settings.patterns[d],c]:d.length>0?[a,new RegExp(d),c]:this.settings.patterns.hasOwnProperty(b)?[a,this.settings.patterns[b],c]:(d=/.*/,[a,d,c])},check_validation_and_apply_styles:function(b){var c=b.length,d=[];if(0==c)return d;var e=this.S(b[0][0]).closest("[data-"+this.attr_name(!0)+"]");for(e.data(this.attr_name(!0)+"-init")||{};c--;){var f,g,h=b[c][0],i=b[c][2],j=h.value.trim(),k=this.S(h).parent(),l=h.getAttribute(this.add_namespace("data-abide-validator")),m="radio"===h.type,n="checkbox"===h.type,o=this.S('label[for="'+h.getAttribute("id")+'"]'),p=i?h.value.length>0:!0,q=[];if(h.getAttribute(this.add_namespace("data-equalto"))&&(l="equalTo"),f=k.is("label")?k.parent():k,m&&i)q.push(this.valid_radio(h,i));else if(n&&i)q.push(this.valid_checkbox(h,i));else if(l){for(var r=l.split(" "),s=!0,t=!0,u=0;u<r.length;u++)g=this.settings.validators[r[u]].apply(this,[h,i,f]),q.push(g),t=g&&s,s=g;t?(this.S(h).removeAttr(this.invalid_attr),f.removeClass("error"),o.length>0&&this.settings.error_labels&&o.removeClass(this.settings.error_class).removeAttr("role"),a(h).triggerHandler("valid")):(this.S(h).attr(this.invalid_attr,""),f.addClass("error"),o.length>0&&this.settings.error_labels&&o.addClass(this.settings.error_class).attr("role","alert"),a(h).triggerHandler("invalid"))}else if(b[c][1].test(j)&&p||!i&&h.value.length<1||a(h).attr("disabled")?q.push(!0):q.push(!1),q=[q.every(function(a){return a})],q[0])this.S(h).removeAttr(this.invalid_attr),h.setAttribute("aria-invalid","false"),h.removeAttribute("aria-describedby"),f.removeClass(this.settings.error_class),o.length>0&&this.settings.error_labels&&o.removeClass(this.settings.error_class).removeAttr("role"),a(h).triggerHandler("valid");else{this.S(h).attr(this.invalid_attr,""),h.setAttribute("aria-invalid","true");var v=f.find("small."+this.settings.error_class,"span."+this.settings.error_class),w=v.length>0?v[0].id:"";w.length>0&&h.setAttribute("aria-describedby",w),f.addClass(this.settings.error_class),o.length>0&&this.settings.error_labels&&o.addClass(this.settings.error_class).attr("role","alert"),a(h).triggerHandler("invalid")}d=d.concat(q)}return d},valid_checkbox:function(b,c){var b=this.S(b),d=b.is(":checked")||!c||b.get(0).getAttribute("disabled");return d?(b.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class),a(b).triggerHandler("valid")):(b.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),a(b).triggerHandler("invalid")),d},valid_radio:function(b,c){for(var d=b.getAttribute("name"),e=this.S(b).closest("[data-"+this.attr_name(!0)+"]").find("[name='"+d+"']"),f=e.length,g=!1,h=!1,i=0;f>i;i++)e[i].getAttribute("disabled")?(h=!0,g=!0):e[i].checked?g=!0:h&&(g=!1);for(var i=0;f>i;i++)g?(this.S(e[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class),a(e[i]).triggerHandler("valid")):(this.S(e[i]).attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),a(e[i]).triggerHandler("invalid"));return g},valid_equal:function(a,b,d){var e=c.getElementById(a.getAttribute(this.add_namespace("data-equalto"))).value,f=a.value,g=e===f;return g?(this.S(a).removeAttr(this.invalid_attr),d.removeClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.removeClass(this.settings.error_class)):(this.S(a).attr(this.invalid_attr,""),d.addClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.addClass(this.settings.error_class)),g},valid_oneof:function(a,b,c,d){var a=this.S(a),e=this.S("["+this.add_namespace("data-oneof")+"]"),f=e.filter(":checked").length>0;if(f?a.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class):a.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),!d){var g=this;e.each(function(){g.valid_oneof.call(g,this,null,null,!0)})}return f},reflow:function(a,b){var c=this,d=c.S("["+this.attr_name()+"]").attr("novalidate","novalidate");c.S(d).each(function(a,b){c.events(b)})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.accordion={name:"accordion",version:"5.5.3",settings:{content_class:"content",active_class:"active",multi_expand:!1,toggleable:!0,callback:function(){}},init:function(a,b,c){this.bindings(b,c)},events:function(b){var c=this,d=this.S;c.create(this.S(b)),d(this.scope).off(".fndtn.accordion").on("click.fndtn.accordion","["+this.attr_name()+"] > dd > a, ["+this.attr_name()+"] > li > a",function(b){var e=d(this).closest("["+c.attr_name()+"]"),f=c.attr_name()+"="+e.attr(c.attr_name()),g=e.data(c.attr_name(!0)+"-init")||c.settings,h=d("#"+this.href.split("#")[1]),i=a("> dd, > li",e),j=i.children("."+g.content_class),k=j.filter("."+g.active_class);return b.preventDefault(),e.attr(c.attr_name())&&(j=j.add("["+f+"] dd > ."+g.content_class+", ["+f+"] li > ."+g.content_class),i=i.add("["+f+"] dd, ["+f+"] li")),g.toggleable&&h.is(k)?(h.parent("dd, li").toggleClass(g.active_class,!1),h.toggleClass(g.active_class,!1),d(this).attr("aria-expanded",function(a,b){return"true"===b?"false":"true"}),g.callback(h),h.triggerHandler("toggled",[e]),void e.triggerHandler("toggled",[h])):(g.multi_expand||(j.removeClass(g.active_class),i.removeClass(g.active_class),i.children("a").attr("aria-expanded","false")),h.addClass(g.active_class).parent().addClass(g.active_class),g.callback(h),h.triggerHandler("toggled",[e]),e.triggerHandler("toggled",[h]),void d(this).attr("aria-expanded","true"))})},create:function(b){var c=this,d=b,e=a("> .accordion-navigation",d),f=d.data(c.attr_name(!0)+"-init")||c.settings;e.children("a").attr("aria-expanded","false"),e.has("."+f.content_class+"."+f.active_class).addClass(f.active_class).children("a").attr("aria-expanded","true"),f.multi_expand&&b.attr("aria-multiselectable","true")},toggle:function(a){var a="undefined"!=typeof a?a:{},c="undefined"!=typeof a.selector?a.selector:"",d="undefined"!=typeof a.toggle_state?a.toggle_state:"",e="undefined"!=typeof a.$accordion?a.$accordion:this.S(this.scope).closest("["+this.attr_name()+"]"),f=e.find("> dd"+c+", > li"+c);if(f.length<1)return b.console&&console.error("Selection not found.",c),!1;var g=this.S,h=this.settings.active_class;f.each(function(){var a=g(this),b=a.hasClass(h);(b&&"close"===d||!b&&"open"===d||""===d)&&a.find("> a").trigger("click.fndtn.accordion")})},open:function(a){var a="undefined"!=typeof a?a:{};a.toggle_state="open",this.toggle(a)},close:function(a){var a="undefined"!=typeof a?a:{};a.toggle_state="close",this.toggle(a)},off:function(){},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.alert={name:"alert",version:"5.5.3",settings:{callback:function(){}},init:function(a,b,c){this.bindings(b,c)},events:function(){var b=this,c=this.S;a(this.scope).off(".alert").on("click.fndtn.alert","["+this.attr_name()+"] .close",function(a){var d=c(this).closest("["+b.attr_name()+"]"),e=d.data(b.attr_name(!0)+"-init")||b.settings;a.preventDefault(),Modernizr.csstransitions?(d.addClass("alert-close"),d.on("transitionend webkitTransitionEnd oTransitionEnd",function(a){c(this).trigger("close.fndtn.alert").remove(),e.callback()})):d.fadeOut(300,function(){c(this).trigger("close.fndtn.alert").remove(),e.callback()})})},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.clearing={name:"clearing",version:"5.5.3",settings:{templates:{viewing:'<a href="#" class="clearing-close">&times;</a><div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" /><p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a><a href="#" class="clearing-main-next"><span></span></a></div><img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" /><img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />'},close_selectors:".clearing-close, div.clearing-blackout",open_selectors:"",skip_selector:"",touch_label:"",init:!1,locked:!1},init:function(a,b,c){var d=this;Foundation.inherit(this,"throttle image_loaded"),this.bindings(b,c),d.S(this.scope).is("["+this.attr_name()+"]")?this.assemble(d.S("li",this.scope)):d.S("["+this.attr_name()+"]",this.scope).each(function(){d.assemble(d.S("li",this))})},events:function(d){var e=this,f=e.S,g=a(".scroll-container");g.length>0&&(this.scope=g),f(this.scope).off(".clearing").on("click.fndtn.clearing","ul["+this.attr_name()+"] li "+this.settings.open_selectors,function(a,b,c){var b=b||f(this),c=c||b,d=b.next("li"),g=b.closest("["+e.attr_name()+"]").data(e.attr_name(!0)+"-init"),h=f(a.target);a.preventDefault(),g||(e.init(),g=b.closest("["+e.attr_name()+"]").data(e.attr_name(!0)+"-init")),c.hasClass("visible")&&b[0]===c[0]&&d.length>0&&e.is_open(b)&&(c=d,h=f("img",c)),e.open(h,b,c),e.update_paddles(c)}).on("click.fndtn.clearing",".clearing-main-next",function(a){e.nav(a,"next")}).on("click.fndtn.clearing",".clearing-main-prev",function(a){e.nav(a,"prev")}).on("click.fndtn.clearing",this.settings.close_selectors,function(a){Foundation.libs.clearing.close(a,this)}),a(c).on("keydown.fndtn.clearing",function(a){e.keydown(a)}),f(b).off(".clearing").on("resize.fndtn.clearing",function(){e.resize()}),this.swipe_events(d)},swipe_events:function(a){var b=this,c=b.S;c(this.scope).on("touchstart.fndtn.clearing",".visible-img",function(a){a.touches||(a=a.originalEvent);var b={start_page_x:a.touches[0].pageX,start_page_y:a.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:d};c(this).data("swipe-transition",b),a.stopPropagation()}).on("touchmove.fndtn.clearing",".visible-img",function(a){if(a.touches||(a=a.originalEvent),!(a.touches.length>1||a.scale&&1!==a.scale)){var d=c(this).data("swipe-transition");if("undefined"==typeof d&&(d={}),d.delta_x=a.touches[0].pageX-d.start_page_x,Foundation.rtl&&(d.delta_x=-d.delta_x),"undefined"==typeof d.is_scrolling&&(d.is_scrolling=!!(d.is_scrolling||Math.abs(d.delta_x)<Math.abs(a.touches[0].pageY-d.start_page_y))),!d.is_scrolling&&!d.active){a.preventDefault();var e=d.delta_x<0?"next":"prev";d.active=!0,b.nav(a,e)}}}).on("touchend.fndtn.clearing",".visible-img",function(a){c(this).data("swipe-transition",{}),a.stopPropagation()})},assemble:function(b){var c=b.parent();if(!c.parent().hasClass("carousel")){c.after('<div id="foundationClearingHolder"></div>');var d=c.detach(),e="";if(null!=d[0]){e=d[0].outerHTML;var f=this.S("#foundationClearingHolder"),g=c.data(this.attr_name(!0)+"-init"),h={grid:'<div class="carousel">'+e+"</div>",viewing:g.templates.viewing},i='<div class="clearing-assembled"><div>'+h.viewing+h.grid+"</div></div>",j=this.settings.touch_label;Modernizr.touch&&(i=a(i).find(".clearing-touch-label").html(j).end()),f.after(i).remove()}}},open:function(b,d,e){function f(){setTimeout(function(){this.image_loaded(m,function(){1!==m.outerWidth()||o?g.call(this,m):f.call(this)}.bind(this))}.bind(this),100)}function g(b){var c=a(b);c.css("visibility","visible"),c.trigger("imageVisible"),i.css("overflow","hidden"),j.addClass("clearing-blackout"),k.addClass("clearing-container"),l.show(),this.fix_height(e).caption(h.S(".clearing-caption",l),h.S("img",e)).center_and_label(b,n).shift(d,e,function(){e.closest("li").siblings().removeClass("visible"),e.closest("li").addClass("visible")}),l.trigger("opened.fndtn.clearing")}var h=this,i=a(c.body),j=e.closest(".clearing-assembled"),k=h.S("div",j).first(),l=h.S(".visible-img",k),m=h.S("img",l).not(b),n=h.S(".clearing-touch-label",k),o=!1,p={};a("body").on("touchmove",function(a){a.preventDefault()}),m.error(function(){o=!0}),this.locked()||(l.trigger("open.fndtn.clearing"),p=this.load(b),p.interchange?m.attr("data-interchange",p.interchange).foundation("interchange","reflow"):m.attr("src",p.src).attr("data-interchange",""),m.css("visibility","hidden"),f.call(this))},close:function(b,d){b.preventDefault();var e,f,g=function(a){return/blackout/.test(a.selector)?a:a.closest(".clearing-blackout")}(a(d)),h=a(c.body);return d===b.target&&g&&(h.css("overflow",""),e=a("div",g).first(),f=a(".visible-img",e),f.trigger("close.fndtn.clearing"),this.settings.prev_index=0,a("ul["+this.attr_name()+"]",g).attr("style","").closest(".clearing-blackout").removeClass("clearing-blackout"),e.removeClass("clearing-container"),f.hide(),f.trigger("closed.fndtn.clearing")),a("body").off("touchmove"),!1},is_open:function(a){return a.parent().prop("style").length>0},keydown:function(b){var c=a(".clearing-blackout ul["+this.attr_name()+"]"),d=this.rtl?37:39,e=this.rtl?39:37,f=27;b.which===d&&this.go(c,"next"),b.which===e&&this.go(c,"prev"),b.which===f&&this.S("a.clearing-close").trigger("click.fndtn.clearing")},nav:function(b,c){var d=a("ul["+this.attr_name()+"]",".clearing-blackout");b.preventDefault(),this.go(d,c)},resize:function(){var b=a("img",".clearing-blackout .visible-img"),c=a(".clearing-touch-label",".clearing-blackout");b.length&&(this.center_and_label(b,c),b.trigger("resized.fndtn.clearing"))},fix_height:function(a){var b=a.parent().children(),c=this;return b.each(function(){var a=c.S(this),b=a.find("img");a.height()>b.outerHeight()&&a.addClass("fix-height")}).closest("ul").width(100*b.length+"%"),this},update_paddles:function(a){a=a.closest("li");var b=a.closest(".carousel").siblings(".visible-img");a.next().length>0?this.S(".clearing-main-next",b).removeClass("disabled"):this.S(".clearing-main-next",b).addClass("disabled"),a.prev().length>0?this.S(".clearing-main-prev",b).removeClass("disabled"):this.S(".clearing-main-prev",b).addClass("disabled")},center_and_label:function(a,b){return!this.rtl&&b.length>0?b.css({marginLeft:-(b.outerWidth()/2),marginTop:-(a.outerHeight()/2)-b.outerHeight()-10}):b.css({marginRight:-(b.outerWidth()/2),marginTop:-(a.outerHeight()/2)-b.outerHeight()-10,left:"auto",right:"50%"}),this},load:function(a){var b,c,d;return"A"===a[0].nodeName?(b=a.attr("href"),c=a.data("clearing-interchange")):(d=a.closest("a"),b=d.attr("href"),c=d.data("clearing-interchange")),this.preload(a),{src:b?b:a.attr("src"),interchange:b?c:a.data("clearing-interchange")}},preload:function(a){this.img(a.closest("li").next(),"next").img(a.closest("li").prev(),"prev")},img:function(b,c){if(b.length){var d,e,f,g=a(".clearing-preload-"+c),h=this.S("a",b);h.length?(d=h.attr("href"),e=h.data("clearing-interchange")):(f=this.S("img",b),d=f.attr("src"),e=f.data("clearing-interchange")),e?g.attr("data-interchange",e):(g.attr("src",d),g.attr("data-interchange",""))}return this},caption:function(a,b){var c=b.attr("data-caption");if(c){var d=a.get(0);d.innerHTML=c,a.show()}else a.text("").hide();return this},go:function(a,b){var c=this.S(".visible",a),d=c[b]();this.settings.skip_selector&&0!=d.find(this.settings.skip_selector).length&&(d=d[b]()),d.length&&this.S("img",d).trigger("click.fndtn.clearing",[c,d]).trigger("change.fndtn.clearing")},shift:function(a,b,c){var d,e=b.parent(),f=this.settings.prev_index||b.index(),g=this.direction(e,a,b),h=this.rtl?"right":"left",i=parseInt(e.css("left"),10),j=b.outerWidth(),k={};b.index()===f||/skip/.test(g)?/skip/.test(g)&&(d=b.index()-this.settings.up_count,this.lock(),d>0?(k[h]=-(d*j),e.animate(k,300,this.unlock())):(k[h]=0,e.animate(k,300,this.unlock()))):/left/.test(g)?(this.lock(),k[h]=i+j,e.animate(k,300,this.unlock())):/right/.test(g)&&(this.lock(),k[h]=i-j,e.animate(k,300,this.unlock())),c()},direction:function(a,b,c){var d,e=this.S("li",a),f=e.outerWidth()+e.outerWidth()/4,g=Math.floor(this.S(".clearing-container").outerWidth()/f)-1,h=e.index(c);return this.settings.up_count=g,d=this.adjacent(this.settings.prev_index,h)?h>g&&h>this.settings.prev_index?"right":h>g-1&&h<=this.settings.prev_index?"left":!1:"skip",this.settings.prev_index=h,d},adjacent:function(a,b){for(var c=b+1;c>=b-1;c--)if(c===a)return!0;return!1},lock:function(){this.settings.locked=!0},unlock:function(){this.settings.locked=!1},locked:function(){return this.settings.locked},off:function(){this.S(this.scope).off(".fndtn.clearing"),this.S(b).off(".fndtn.clearing")},reflow:function(){this.init()}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.dropdown={name:"dropdown",version:"5.5.3",settings:{active_class:"open",disabled_class:"disabled",mega_class:"mega",align:"bottom",is_hover:!1,hover_timeout:150,opened:function(){},closed:function(){}},init:function(b,c,d){Foundation.inherit(this,"throttle"),a.extend(!0,this.settings,c,d),this.bindings(c,d)},events:function(d){var e=this,f=e.S;f(this.scope).off(".dropdown").on("click.fndtn.dropdown","["+this.attr_name()+"]",function(b){var c=f(this).data(e.attr_name(!0)+"-init")||e.settings;(!c.is_hover||Modernizr.touch)&&(b.preventDefault(),f(this).parent("[data-reveal-id]").length&&b.stopPropagation(),e.toggle(a(this)))}).on("mouseenter.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(a){var b,c,d=f(this);clearTimeout(e.timeout),d.data(e.data_attr())?(b=f("#"+d.data(e.data_attr())),c=d):(b=d,c=f("["+e.attr_name()+'="'+b.attr("id")+'"]'));var g=c.data(e.attr_name(!0)+"-init")||e.settings;f(a.currentTarget).data(e.data_attr())&&g.is_hover&&e.closeall.call(e),g.is_hover&&e.open.apply(e,[b,c])}).on("mouseleave.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(a){var b,c=f(this);if(c.data(e.data_attr()))b=c.data(e.data_attr(!0)+"-init")||e.settings;else var d=f("["+e.attr_name()+'="'+f(this).attr("id")+'"]'),b=d.data(e.attr_name(!0)+"-init")||e.settings;e.timeout=setTimeout(function(){c.data(e.data_attr())?b.is_hover&&e.close.call(e,f("#"+c.data(e.data_attr()))):b.is_hover&&e.close.call(e,c)}.bind(this),b.hover_timeout)}).on("click.fndtn.dropdown",function(b){var d=f(b.target).closest("["+e.attr_name()+"-content]"),g=d.find("a");return g.length>0&&"false"!==d.attr("aria-autoclose")&&e.close.call(e,f("["+e.attr_name()+"-content]")),b.target!==c&&!a.contains(c.documentElement,b.target)||f(b.target).closest("["+e.attr_name()+"]").length>0?void 0:!f(b.target).data("revealId")&&d.length>0&&(f(b.target).is("["+e.attr_name()+"-content]")||a.contains(d.first()[0],b.target))?void b.stopPropagation():void e.close.call(e,f("["+e.attr_name()+"-content]"))}).on("opened.fndtn.dropdown","["+e.attr_name()+"-content]",function(){e.settings.opened.call(this)}).on("closed.fndtn.dropdown","["+e.attr_name()+"-content]",function(){e.settings.closed.call(this)}),f(b).off(".dropdown").on("resize.fndtn.dropdown",e.throttle(function(){e.resize.call(e)},50)),this.resize()},close:function(b){var c=this;b.each(function(d){var e=a("["+c.attr_name()+"="+b[d].id+"]")||a("aria-controls="+b[d].id+"]");e.attr("aria-expanded","false"),c.S(this).hasClass(c.settings.active_class)&&(c.S(this).css(Foundation.rtl?"right":"left","-99999px").attr("aria-hidden","true").removeClass(c.settings.active_class).prev("["+c.attr_name()+"]").removeClass(c.settings.active_class).removeData("target"),c.S(this).trigger("closed.fndtn.dropdown",[b]))}),b.removeClass("f-open-"+this.attr_name(!0))},closeall:function(){var b=this;a.each(b.S(".f-open-"+this.attr_name(!0)),function(){b.close.call(b,b.S(this))})},open:function(a,b){this.css(a.addClass(this.settings.active_class),b),a.prev("["+this.attr_name()+"]").addClass(this.settings.active_class),a.data("target",b.get(0)).trigger("opened.fndtn.dropdown",[a,b]),a.attr("aria-hidden","false"),b.attr("aria-expanded","true"),a.focus(),a.addClass("f-open-"+this.attr_name(!0))},data_attr:function(){return this.namespace.length>0?this.namespace+"-"+this.name:this.name},toggle:function(a){if(!a.hasClass(this.settings.disabled_class)){var b=this.S("#"+a.data(this.data_attr()));0!==b.length&&(this.close.call(this,this.S("["+this.attr_name()+"-content]").not(b)),b.hasClass(this.settings.active_class)?(this.close.call(this,b),b.data("target")!==a.get(0)&&this.open.call(this,b,a)):this.open.call(this,b,a))}},resize:function(){var b=this.S("["+this.attr_name()+"-content].open"),c=a(b.data("target"));b.length&&c.length&&this.css(b,c)},css:function(a,b){var c=Math.max((b.width()-a.width())/2,8),d=b.data(this.attr_name(!0)+"-init")||this.settings,e=a.parent().css("overflow-y")||a.parent().css("overflow");if(this.clear_idx(),this.small()){var f=this.dirs.bottom.call(a,b,d);a.attr("style","").removeClass("drop-left drop-right drop-top").css({position:"absolute",width:"95%","max-width":"none",top:f.top}),a.css(Foundation.rtl?"right":"left",c)}else if("visible"!==e){var g=b[0].offsetTop+b[0].offsetHeight;a.attr("style","").css({position:"absolute",top:g}),a.css(Foundation.rtl?"right":"left",c)}else this.style(a,b,d);return a},style:function(b,c,d){var e=a.extend({position:"absolute"},this.dirs[d.align].call(b,c,d));b.attr("style","").css(e)},dirs:{_base:function(a,d){var e=this.offsetParent(),f=e.offset(),g=a.offset();g.top-=f.top,g.left-=f.left,g.missRight=!1,g.missTop=!1,g.missLeft=!1,g.leftRightFlag=!1;var h,i=b.innerWidth;h=c.getElementsByClassName("row")[0]?c.getElementsByClassName("row")[0].clientWidth:i;var j=(i-h)/2,k=h;if(!this.hasClass("mega")&&!d.ignore_repositioning){var l=this.outerWidth(),m=a.offset().left;a.offset().top<=this.outerHeight()&&(g.missTop=!0,k=i-j,g.leftRightFlag=!0),m+l>m+j&&m-j>l&&(g.missRight=!0,g.missLeft=!1),0>=m-l&&(g.missLeft=!0,g.missRight=!1)}return g},top:function(a,b){var c=Foundation.libs.dropdown,d=c.dirs._base.call(this,a,b);return this.addClass("drop-top"),1==d.missTop&&(d.top=d.top+a.outerHeight()+this.outerHeight(),
+this.removeClass("drop-top")),1==d.missRight&&(d.left=d.left-this.outerWidth()+a.outerWidth()),(a.outerWidth()<this.outerWidth()||c.small()||this.hasClass(b.mega_menu))&&c.adjust_pip(this,a,b,d),Foundation.rtl?{left:d.left-this.outerWidth()+a.outerWidth(),top:d.top-this.outerHeight()}:{left:d.left,top:d.top-this.outerHeight()}},bottom:function(a,b){var c=Foundation.libs.dropdown,d=c.dirs._base.call(this,a,b);return 1==d.missRight&&(d.left=d.left-this.outerWidth()+a.outerWidth()),(a.outerWidth()<this.outerWidth()||c.small()||this.hasClass(b.mega_menu))&&c.adjust_pip(this,a,b,d),c.rtl?{left:d.left-this.outerWidth()+a.outerWidth(),top:d.top+a.outerHeight()}:{left:d.left,top:d.top+a.outerHeight()}},left:function(a,b){var c=Foundation.libs.dropdown.dirs._base.call(this,a,b);return this.addClass("drop-left"),1==c.missLeft&&(c.left=c.left+this.outerWidth(),c.top=c.top+a.outerHeight(),this.removeClass("drop-left")),{left:c.left-this.outerWidth(),top:c.top}},right:function(a,b){var c=Foundation.libs.dropdown.dirs._base.call(this,a,b);this.addClass("drop-right"),1==c.missRight?(c.left=c.left-this.outerWidth(),c.top=c.top+a.outerHeight(),this.removeClass("drop-right")):c.triggeredRight=!0;var d=Foundation.libs.dropdown;return(a.outerWidth()<this.outerWidth()||d.small()||this.hasClass(b.mega_menu))&&d.adjust_pip(this,a,b,c),{left:c.left+a.outerWidth(),top:c.top}}},adjust_pip:function(a,b,c,d){var e=Foundation.stylesheet,f=8;a.hasClass(c.mega_class)?f=d.left+b.outerWidth()/2-8:this.small()&&(f+=d.left-8),this.rule_idx=e.cssRules.length;var g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left: "+f+"px;",j="left: "+(f-1)+"px;";1==d.missRight&&(f=a.outerWidth()-23,g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left: "+f+"px;",j="left: "+(f-1)+"px;"),1==d.triggeredRight&&(g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left:-12px;",j="left:-14px;"),e.insertRule?(e.insertRule([g,"{",i,"}"].join(" "),this.rule_idx),e.insertRule([h,"{",j,"}"].join(" "),this.rule_idx+1)):(e.addRule(g,i,this.rule_idx),e.addRule(h,j,this.rule_idx+1))},clear_idx:function(){var a=Foundation.stylesheet;"undefined"!=typeof this.rule_idx&&(a.deleteRule(this.rule_idx),a.deleteRule(this.rule_idx),delete this.rule_idx)},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},off:function(){this.S(this.scope).off(".fndtn.dropdown"),this.S("html, body").off(".fndtn.dropdown"),this.S(b).off(".fndtn.dropdown"),this.S("[data-dropdown-content]").off(".fndtn.dropdown")},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.equalizer={name:"equalizer",version:"5.5.3",settings:{use_tallest:!0,before_height_change:a.noop,after_height_change:a.noop,equalize_on_stack:!1,act_on_hidden_el:!1},init:function(a,b,c){Foundation.inherit(this,"image_loaded"),this.bindings(b,c),this.reflow()},events:function(){this.S(b).off(".equalizer").on("resize.fndtn.equalizer",function(a){this.reflow()}.bind(this))},equalize:function(b){var c,d,e=!1,f=b.data("equalizer"),g=b.data(this.attr_name(!0)+"-init")||this.settings;if(c=g.act_on_hidden_el?f?b.find("["+this.attr_name()+'-watch="'+f+'"]'):b.find("["+this.attr_name()+"-watch]"):f?b.find("["+this.attr_name()+'-watch="'+f+'"]:visible'):b.find("["+this.attr_name()+"-watch]:visible"),0!==c.length&&(g.before_height_change(),b.trigger("before-height-change.fndth.equalizer"),c.height("inherit"),g.equalize_on_stack!==!1||(d=c.first().offset().top,c.each(function(){return a(this).offset().top!==d?(e=!0,!1):void 0}),!e))){var h=c.map(function(){return a(this).outerHeight(!1)}).get();if(g.use_tallest){var i=Math.max.apply(null,h);c.css("height",i)}else{var j=Math.min.apply(null,h);c.css("height",j)}g.after_height_change(),b.trigger("after-height-change.fndtn.equalizer")}},reflow:function(){var b=this;this.S("["+this.attr_name()+"]",this.scope).each(function(){var c=a(this),d=c.data("equalizer-mq"),e=!0;d&&(d="is_"+d.replace(/-/g,"_"),Foundation.utils.hasOwnProperty(d)&&(e=!1)),b.image_loaded(b.S("img",this),function(){if(e||Foundation.utils[d]())b.equalize(c);else{var a=c.find("["+b.attr_name()+"-watch]:visible");a.css("height","auto")}})})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.interchange={name:"interchange",version:"5.5.3",cache:{},images_loaded:!1,nodes_loaded:!1,settings:{load_attr:"interchange",named_queries:{"default":"only screen",small:Foundation.media_queries.small,"small-only":Foundation.media_queries["small-only"],medium:Foundation.media_queries.medium,"medium-only":Foundation.media_queries["medium-only"],large:Foundation.media_queries.large,"large-only":Foundation.media_queries["large-only"],xlarge:Foundation.media_queries.xlarge,"xlarge-only":Foundation.media_queries["xlarge-only"],xxlarge:Foundation.media_queries.xxlarge,landscape:"only screen and (orientation: landscape)",portrait:"only screen and (orientation: portrait)",retina:"only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx)"},directives:{replace:function(b,c,d){if(null!==b&&/IMG/.test(b[0].nodeName)){var e=a.each(b,function(){this.src=c});if(new RegExp(c,"i").test(e))return;return b.attr("src",c),d(b[0].src)}var f=b.data(this.data_attr+"-last-path"),g=this;if(f!=c)return/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(c)?(a(b).css("background-image","url("+c+")"),b.data("interchange-last-path",c),d(c)):a.get(c,function(a){b.html(a),b.data(g.data_attr+"-last-path",c),d()})}}},init:function(b,c,d){Foundation.inherit(this,"throttle random_str"),this.data_attr=this.set_data_attr(),a.extend(!0,this.settings,c,d),this.bindings(c,d),this.reflow()},get_media_hash:function(){var a="";for(var b in this.settings.named_queries)a+=matchMedia(this.settings.named_queries[b]).matches.toString();return a},events:function(){var c,d=this;return a(b).off(".interchange").on("resize.fndtn.interchange",d.throttle(function(){var a=d.get_media_hash();a!==c&&d.resize(),c=a},50)),this},resize:function(){var b=this.cache;if(!this.images_loaded||!this.nodes_loaded)return void setTimeout(a.proxy(this.resize,this),50);for(var c in b)if(b.hasOwnProperty(c)){var d=this.results(c,b[c]);d&&this.settings.directives[d.scenario[1]].call(this,d.el,d.scenario[0],function(a){if(arguments[0]instanceof Array)var b=arguments[0];else var b=Array.prototype.slice.call(arguments,0);return function(){a.el.trigger(a.scenario[1],b)}}(d))}},results:function(a,b){var c=b.length;if(c>0)for(var d=this.S("["+this.add_namespace("data-uuid")+'="'+a+'"]');c--;){var e,f=b[c][2];if(e=this.settings.named_queries.hasOwnProperty(f)?matchMedia(this.settings.named_queries[f]):matchMedia(f),e.matches)return{el:d,scenario:b[c]}}return!1},load:function(a,b){return("undefined"==typeof this["cached_"+a]||b)&&this["update_"+a](),this["cached_"+a]},update_images:function(){var a=this.S("img["+this.data_attr+"]"),b=a.length,c=b,d=0,e=this.data_attr;for(this.cache={},this.cached_images=[],this.images_loaded=0===b;c--;){if(d++,a[c]){var f=a[c].getAttribute(e)||"";f.length>0&&this.cached_images.push(a[c])}d===b&&(this.images_loaded=!0,this.enhance("images"))}return this},update_nodes:function(){var a=this.S("["+this.data_attr+"]").not("img"),b=a.length,c=b,d=0,e=this.data_attr;for(this.cached_nodes=[],this.nodes_loaded=0===b;c--;){d++;var f=a[c].getAttribute(e)||"";f.length>0&&this.cached_nodes.push(a[c]),d===b&&(this.nodes_loaded=!0,this.enhance("nodes"))}return this},enhance:function(c){for(var d=this["cached_"+c].length;d--;)this.object(a(this["cached_"+c][d]));return a(b).trigger("resize.fndtn.interchange")},convert_directive:function(a){var b=this.trim(a);return b.length>0?b:"replace"},parse_scenario:function(a){var b=a[0].match(/(.+),\s*(\w+)\s*$/),c=a[1].match(/(.*)\)/);if(b)var d=b[1],e=b[2];else var f=a[0].split(/,\s*$/),d=f[0],e="";return[this.trim(d),this.convert_directive(e),this.trim(c[1])]},object:function(a){var b=this.parse_data_attr(a),c=[],d=b.length;if(d>0)for(;d--;){var e=b[d].split(/,\s?\(/);if(e.length>1){var f=this.parse_scenario(e);c.push(f)}}return this.store(a,c)},store:function(a,b){var c=this.random_str(),d=a.data(this.add_namespace("uuid",!0));return this.cache[d]?this.cache[d]:(a.attr(this.add_namespace("data-uuid"),c),this.cache[c]=b)},trim:function(b){return"string"==typeof b?a.trim(b):b},set_data_attr:function(a){return a?this.namespace.length>0?this.namespace+"-"+this.settings.load_attr:this.settings.load_attr:this.namespace.length>0?"data-"+this.namespace+"-"+this.settings.load_attr:"data-"+this.settings.load_attr},parse_data_attr:function(a){for(var b=a.attr(this.attr_name()).split(/\[(.*?)\]/),c=b.length,d=[];c--;)b[c].replace(/[\W\d]+/,"").length>4&&d.push(b[c]);return d},reflow:function(){this.load("images",!0),this.load("nodes",!0)}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.joyride={name:"joyride",version:"5.5.3",defaults:{expose:!1,modal:!0,keyboard:!0,tip_location:"bottom",nub_position:"auto",scroll_speed:1500,scroll_animation:"linear",timer:0,start_timer_on_click:!0,start_offset:0,next_button:!0,prev_button:!0,tip_animation:"fade",pause_after:[],exposed:[],tip_animation_fade_speed:300,cookie_monster:!1,cookie_name:"joyride",cookie_domain:!1,cookie_expires:365,tip_container:"body",abort_on_close:!0,tip_location_patterns:{top:["bottom"],bottom:[],left:["right","top","bottom"],right:["left","top","bottom"]},post_ride_callback:function(){},post_step_callback:function(){},pre_step_callback:function(){},pre_ride_callback:function(){},post_expose_callback:function(){},template:{link:'<a href="#close" class="joyride-close-tip">&times;</a>',timer:'<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',tip:'<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',wrapper:'<div class="joyride-content-wrapper"></div>',button:'<a href="#" class="small button joyride-next-tip"></a>',prev_button:'<a href="#" class="small button joyride-prev-tip"></a>',modal:'<div class="joyride-modal-bg"></div>',expose:'<div class="joyride-expose-wrapper"></div>',expose_cover:'<div class="joyride-expose-cover"></div>'},expose_add_class:""},init:function(b,c,d){Foundation.inherit(this,"throttle random_str"),this.settings=this.settings||a.extend({},this.defaults,d||c),this.bindings(c,d)},go_next:function(){this.settings.$li.next().length<1?this.end():this.settings.timer>0?(clearTimeout(this.settings.automate),this.hide(),this.show(),this.startTimer()):(this.hide(),this.show())},go_prev:function(){this.settings.$li.prev().length<1||(this.settings.timer>0?(clearTimeout(this.settings.automate),this.hide(),this.show(null,!0),this.startTimer()):(this.hide(),this.show(null,!0)))},events:function(){var c=this;a(this.scope).off(".joyride").on("click.fndtn.joyride",".joyride-next-tip, .joyride-modal-bg",function(a){a.preventDefault(),this.go_next()}.bind(this)).on("click.fndtn.joyride",".joyride-prev-tip",function(a){a.preventDefault(),this.go_prev()}.bind(this)).on("click.fndtn.joyride",".joyride-close-tip",function(a){a.preventDefault(),this.end(this.settings.abort_on_close)}.bind(this)).on("keyup.fndtn.joyride",function(a){if(this.settings.keyboard&&this.settings.riding)switch(a.which){case 39:a.preventDefault(),this.go_next();break;case 37:a.preventDefault(),this.go_prev();break;case 27:a.preventDefault(),this.end(this.settings.abort_on_close)}}.bind(this)),a(b).off(".joyride").on("resize.fndtn.joyride",c.throttle(function(){if(a("["+c.attr_name()+"]").length>0&&c.settings.$next_tip&&c.settings.riding){if(c.settings.exposed.length>0){var b=a(c.settings.exposed);b.each(function(){var b=a(this);c.un_expose(b),c.expose(b)})}c.is_phone()?c.pos_phone():c.pos_default(!1)}},100))},start:function(){var b=this,c=a("["+this.attr_name()+"]",this.scope),d=["timer","scrollSpeed","startOffset","tipAnimationFadeSpeed","cookieExpires"],e=d.length;!c.length>0||(this.settings.init||this.events(),this.settings=c.data(this.attr_name(!0)+"-init"),this.settings.$content_el=c,this.settings.$body=a(this.settings.tip_container),this.settings.body_offset=a(this.settings.tip_container).position(),this.settings.$tip_content=this.settings.$content_el.find("> li"),this.settings.paused=!1,this.settings.attempts=0,this.settings.riding=!0,"function"!=typeof a.cookie&&(this.settings.cookie_monster=!1),(!this.settings.cookie_monster||this.settings.cookie_monster&&!a.cookie(this.settings.cookie_name))&&(this.settings.$tip_content.each(function(c){var f=a(this);this.settings=a.extend({},b.defaults,b.data_options(f));for(var g=e;g--;)b.settings[d[g]]=parseInt(b.settings[d[g]],10);b.create({$li:f,index:c})}),!this.settings.start_timer_on_click&&this.settings.timer>0?(this.show("init"),this.startTimer()):this.show("init")))},resume:function(){this.set_li(),this.show()},tip_template:function(b){var c,d;return b.tip_class=b.tip_class||"",c=a(this.settings.template.tip).addClass(b.tip_class),d=a.trim(a(b.li).html())+this.prev_button_text(b.prev_button_text,b.index)+this.button_text(b.button_text)+this.settings.template.link+this.timer_instance(b.index),c.append(a(this.settings.template.wrapper)),c.first().attr(this.add_namespace("data-index"),b.index),a(".joyride-content-wrapper",c).append(d),c[0]},timer_instance:function(b){var c;return c=0===b&&this.settings.start_timer_on_click&&this.settings.timer>0||0===this.settings.timer?"":a(this.settings.template.timer)[0].outerHTML},button_text:function(b){return this.settings.tip_settings.next_button?(b=a.trim(b)||"Next",b=a(this.settings.template.button).append(b)[0].outerHTML):b="",b},prev_button_text:function(b,c){return this.settings.tip_settings.prev_button?(b=a.trim(b)||"Previous",b=0==c?a(this.settings.template.prev_button).append(b).addClass("disabled")[0].outerHTML:a(this.settings.template.prev_button).append(b)[0].outerHTML):b="",b},create:function(b){this.settings.tip_settings=a.extend({},this.settings,this.data_options(b.$li));var c=b.$li.attr(this.add_namespace("data-button"))||b.$li.attr(this.add_namespace("data-text")),d=b.$li.attr(this.add_namespace("data-button-prev"))||b.$li.attr(this.add_namespace("data-prev-text")),e=b.$li.attr("class"),f=a(this.tip_template({tip_class:e,index:b.index,button_text:c,prev_button_text:d,li:b.$li}));a(this.settings.tip_container).append(f)},show:function(b,c){var e=null;if(this.settings.$li===d||-1===a.inArray(this.settings.$li.index(),this.settings.pause_after))if(this.settings.paused?this.settings.paused=!1:this.set_li(b,c),this.settings.attempts=0,this.settings.$li.length&&this.settings.$target.length>0){if(b&&(this.settings.pre_ride_callback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.show_modal()),this.settings.pre_step_callback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.settings.expose&&this.expose(),this.settings.tip_settings=a.extend({},this.settings,this.data_options(this.settings.$li)),this.settings.timer=parseInt(this.settings.timer,10),this.settings.tip_settings.tip_location_pattern=this.settings.tip_location_patterns[this.settings.tip_settings.tip_location],!/body/i.test(this.settings.$target.selector)&&!this.settings.expose){var f=a(".joyride-modal-bg");/pop/i.test(this.settings.tipAnimation)?f.hide():f.fadeOut(this.settings.tipAnimationFadeSpeed),this.scroll_to()}this.is_phone()?this.pos_phone(!0):this.pos_default(!0),e=this.settings.$next_tip.find(".joyride-timer-indicator"),/pop/i.test(this.settings.tip_animation)?(e.width(0),this.settings.timer>0?(this.settings.$next_tip.show(),setTimeout(function(){e.animate({width:e.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tip_animation_fade_speed)):this.settings.$next_tip.show()):/fade/i.test(this.settings.tip_animation)&&(e.width(0),this.settings.timer>0?(this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed).show(),setTimeout(function(){e.animate({width:e.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tip_animation_fade_speed)):this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed)),this.settings.$current_tip=this.settings.$next_tip}else this.settings.$li&&this.settings.$target.length<1?this.show(b,c):this.end();else this.settings.paused=!0},is_phone:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},hide:function(){this.settings.modal&&this.settings.expose&&this.un_expose(),this.settings.modal||a(".joyride-modal-bg").hide(),this.settings.$current_tip.css("visibility","hidden"),setTimeout(a.proxy(function(){this.hide(),this.css("visibility","visible")},this.settings.$current_tip),0),this.settings.post_step_callback(this.settings.$li.index(),this.settings.$current_tip)},set_li:function(a,b){a?(this.settings.$li=this.settings.$tip_content.eq(this.settings.start_offset),this.set_next_tip(),this.settings.$current_tip=this.settings.$next_tip):(b?this.settings.$li=this.settings.$li.prev():this.settings.$li=this.settings.$li.next(),this.set_next_tip()),this.set_target()},set_next_tip:function(){this.settings.$next_tip=a(".joyride-tip-guide").eq(this.settings.$li.index()),this.settings.$next_tip.data("closed","")},set_target:function(){var b=this.settings.$li.attr(this.add_namespace("data-class")),d=this.settings.$li.attr(this.add_namespace("data-id")),e=function(){return d?a(c.getElementById(d)):b?a("."+b).first():a("body")};this.settings.$target=e()},scroll_to:function(){var c,d;c=a(b).height()/2,d=Math.ceil(this.settings.$target.offset().top-c+this.settings.$next_tip.outerHeight()),0!=d&&a("html, body").stop().animate({scrollTop:d},this.settings.scroll_speed,"swing")},paused:function(){return-1===a.inArray(this.settings.$li.index()+1,this.settings.pause_after)},restart:function(){this.hide(),this.settings.$li=d,this.show("init")},pos_default:function(a){var b=this.settings.$next_tip.find(".joyride-nub"),c=Math.ceil(b.outerWidth()/2),d=Math.ceil(b.outerHeight()/2),e=a||!1;if(e&&(this.settings.$next_tip.css("visibility","hidden"),this.settings.$next_tip.show()),/body/i.test(this.settings.$target.selector))this.settings.$li.length&&this.pos_modal(b);else{var f=this.settings.tip_settings.tipAdjustmentY?parseInt(this.settings.tip_settings.tipAdjustmentY):0,g=this.settings.tip_settings.tipAdjustmentX?parseInt(this.settings.tip_settings.tipAdjustmentX):0;this.bottom()?(this.rtl?this.settings.$next_tip.css({top:this.settings.$target.offset().top+d+this.settings.$target.outerHeight()+f,left:this.settings.$target.offset().left+this.settings.$target.outerWidth()-this.settings.$next_tip.outerWidth()+g}):this.settings.$next_tip.css({top:this.settings.$target.offset().top+d+this.settings.$target.outerHeight()+f,left:this.settings.$target.offset().left+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"top")):this.top()?(this.rtl?this.settings.$next_tip.css({top:this.settings.$target.offset().top-this.settings.$next_tip.outerHeight()-d+f,left:this.settings.$target.offset().left+this.settings.$target.outerWidth()-this.settings.$next_tip.outerWidth()}):this.settings.$next_tip.css({top:this.settings.$target.offset().top-this.settings.$next_tip.outerHeight()-d+f,left:this.settings.$target.offset().left+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"bottom")):this.right()?(this.settings.$next_tip.css({top:this.settings.$target.offset().top+f,left:this.settings.$target.outerWidth()+this.settings.$target.offset().left+c+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"left")):this.left()&&(this.settings.$next_tip.css({top:this.settings.$target.offset().top+f,left:this.settings.$target.offset().left-this.settings.$next_tip.outerWidth()-c+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"right")),!this.visible(this.corners(this.settings.$next_tip))&&this.settings.attempts<this.settings.tip_settings.tip_location_pattern.length&&(b.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),this.settings.tip_settings.tip_location=this.settings.tip_settings.tip_location_pattern[this.settings.attempts],this.settings.attempts++,this.pos_default())}e&&(this.settings.$next_tip.hide(),this.settings.$next_tip.css("visibility","visible"))},pos_phone:function(b){var c=this.settings.$next_tip.outerHeight(),d=(this.settings.$next_tip.offset(),this.settings.$target.outerHeight()),e=a(".joyride-nub",this.settings.$next_tip),f=Math.ceil(e.outerHeight()/2),g=b||!1;e.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),g&&(this.settings.$next_tip.css("visibility","hidden"),this.settings.$next_tip.show()),/body/i.test(this.settings.$target.selector)?this.settings.$li.length&&this.pos_modal(e):this.top()?(this.settings.$next_tip.offset({top:this.settings.$target.offset().top-c-f}),e.addClass("bottom")):(this.settings.$next_tip.offset({top:this.settings.$target.offset().top+d+f}),e.addClass("top")),g&&(this.settings.$next_tip.hide(),this.settings.$next_tip.css("visibility","visible"))},pos_modal:function(a){this.center(),a.hide(),this.show_modal()},show_modal:function(){if(!this.settings.$next_tip.data("closed")){var b=a(".joyride-modal-bg");if(b.length<1){var b=a(this.settings.template.modal);b.appendTo("body")}/pop/i.test(this.settings.tip_animation)?b.show():b.fadeIn(this.settings.tip_animation_fade_speed)}},expose:function(){var c,d,e,f,g,h="expose-"+this.random_str(6);if(arguments.length>0&&arguments[0]instanceof a)e=arguments[0];else{if(!this.settings.$target||/body/i.test(this.settings.$target.selector))return!1;e=this.settings.$target}return e.length<1?(b.console&&console.error("element not valid",e),!1):(c=a(this.settings.template.expose),this.settings.$body.append(c),c.css({top:e.offset().top,left:e.offset().left,width:e.outerWidth(!0),height:e.outerHeight(!0)}),d=a(this.settings.template.expose_cover),f={zIndex:e.css("z-index"),position:e.css("position")},g=null==e.attr("class")?"":e.attr("class"),e.css("z-index",parseInt(c.css("z-index"))+1),"static"==f.position&&e.css("position","relative"),e.data("expose-css",f),e.data("orig-class",g),e.attr("class",g+" "+this.settings.expose_add_class),d.css({top:e.offset().top,left:e.offset().left,width:e.outerWidth(!0),height:e.outerHeight(!0)}),this.settings.modal&&this.show_modal(),this.settings.$body.append(d),c.addClass(h),d.addClass(h),e.data("expose",h),this.settings.post_expose_callback(this.settings.$li.index(),this.settings.$next_tip,e),void this.add_exposed(e))},un_expose:function(){var c,d,e,f,g,h=!1;if(arguments.length>0&&arguments[0]instanceof a)d=arguments[0];else{if(!this.settings.$target||/body/i.test(this.settings.$target.selector))return!1;d=this.settings.$target}return d.length<1?(b.console&&console.error("element not valid",d),!1):(c=d.data("expose"),e=a("."+c),arguments.length>1&&(h=arguments[1]),h===!0?a(".joyride-expose-wrapper,.joyride-expose-cover").remove():e.remove(),f=d.data("expose-css"),"auto"==f.zIndex?d.css("z-index",""):d.css("z-index",f.zIndex),f.position!=d.css("position")&&("static"==f.position?d.css("position",""):d.css("position",f.position)),g=d.data("orig-class"),d.attr("class",g),d.removeData("orig-classes"),d.removeData("expose"),d.removeData("expose-z-index"),void this.remove_exposed(d))},add_exposed:function(b){this.settings.exposed=this.settings.exposed||[],b instanceof a||"object"==typeof b?this.settings.exposed.push(b[0]):"string"==typeof b&&this.settings.exposed.push(b)},remove_exposed:function(b){var c,d;for(b instanceof a?c=b[0]:"string"==typeof b&&(c=b),this.settings.exposed=this.settings.exposed||[],d=this.settings.exposed.length;d--;)if(this.settings.exposed[d]==c)return void this.settings.exposed.splice(d,1)},center:function(){var c=a(b);return this.settings.$next_tip.css({top:(c.height()-this.settings.$next_tip.outerHeight())/2+c.scrollTop(),left:(c.width()-this.settings.$next_tip.outerWidth())/2+c.scrollLeft()}),!0},bottom:function(){return/bottom/i.test(this.settings.tip_settings.tip_location)},top:function(){return/top/i.test(this.settings.tip_settings.tip_location)},right:function(){return/right/i.test(this.settings.tip_settings.tip_location)},left:function(){return/left/i.test(this.settings.tip_settings.tip_location)},corners:function(c){if(0===c.length)return[!1,!1,!1,!1];var d=a(b),e=d.height()/2,f=Math.ceil(this.settings.$target.offset().top-e+this.settings.$next_tip.outerHeight()),g=d.width()+d.scrollLeft(),h=d.height()+f,i=d.height()+d.scrollTop(),j=d.scrollTop();return j>f&&(j=0>f?0:f),h>i&&(i=h),[c.offset().top<j,g<c.offset().left+c.outerWidth(),i<c.offset().top+c.outerHeight(),d.scrollLeft()>c.offset().left]},visible:function(a){for(var b=a.length;b--;)if(a[b])return!1;return!0},nub_position:function(a,b,c){"auto"===b?a.addClass(c):a.addClass(b)},startTimer:function(){this.settings.$li.length?this.settings.automate=setTimeout(function(){this.hide(),this.show(),this.startTimer()}.bind(this),this.settings.timer):clearTimeout(this.settings.automate)},end:function(b){this.settings.cookie_monster&&a.cookie(this.settings.cookie_name,"ridden",{expires:this.settings.cookie_expires,domain:this.settings.cookie_domain}),this.settings.timer>0&&clearTimeout(this.settings.automate),this.settings.modal&&this.settings.expose&&this.un_expose(),a(this.scope).off("keyup.joyride"),this.settings.$next_tip.data("closed",!0),this.settings.riding=!1,a(".joyride-modal-bg").hide(),this.settings.$current_tip.hide(),("undefined"==typeof b||b===!1)&&(this.settings.post_step_callback(this.settings.$li.index(),this.settings.$current_tip),this.settings.post_ride_callback(this.settings.$li.index(),this.settings.$current_tip)),a(".joyride-tip-guide").remove()},off:function(){a(this.scope).off(".joyride"),a(b).off(".joyride"),a(".joyride-close-tip, .joyride-next-tip, .joyride-modal-bg").off(".joyride"),a(".joyride-tip-guide, .joyride-modal-bg").remove(),clearTimeout(this.settings.automate)},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs["magellan-expedition"]={name:"magellan-expedition",version:"5.5.3",settings:{active_class:"active",threshold:0,destination_threshold:20,throttle_delay:30,fixed_top:0,offset_by_height:!0,duration:700,easing:"swing"},init:function(a,b,c){Foundation.inherit(this,"throttle"),this.bindings(b,c)},events:function(){var b=this,c=b.S,d=b.settings;b.set_expedition_position(),c(b.scope).off(".magellan").on("click.fndtn.magellan","["+b.add_namespace("data-magellan-arrival")+"] a[href*=#]",function(c){var d=this.hostname===location.hostname||!this.hostname,e=b.filterPathname(location.pathname)===b.filterPathname(this.pathname),f=this.hash.replace(/(:|\.|\/)/g,"\\$1"),g=this;if(d&&e&&f){c.preventDefault();var h=a(this).closest("["+b.attr_name()+"]"),i=h.data("magellan-expedition-init"),j=this.hash.split("#").join(""),k=a('a[name="'+j+'"]');0===k.length&&(k=a("#"+j));var l=k.offset().top-i.destination_threshold+1;i.offset_by_height&&(l-=h.outerHeight()),a("html, body").stop().animate({scrollTop:l},i.duration,i.easing,function(){history.pushState?history.pushState(null,null,g.pathname+g.search+"#"+j):location.hash=g.pathname+g.search+"#"+j})}}).on("scroll.fndtn.magellan",b.throttle(this.check_for_arrivals.bind(this),d.throttle_delay))},check_for_arrivals:function(){var a=this;a.update_arrivals(),a.update_expedition_positions()},set_expedition_position:function(){var b=this;a("["+this.attr_name()+"=fixed]",b.scope).each(function(c,d){var e,f,g=a(this),h=g.data("magellan-expedition-init"),i=g.attr("styles");g.attr("style",""),e=g.offset().top+h.threshold,f=parseInt(g.data("magellan-fixed-top")),isNaN(f)||(b.settings.fixed_top=f),g.data(b.data_attr("magellan-top-offset"),e),g.attr("style",i)})},update_expedition_positions:function(){var c=this,d=a(b).scrollTop();a("["+this.attr_name()+"=fixed]",c.scope).each(function(){var b=a(this),e=b.data("magellan-expedition-init"),f=b.attr("style"),g=b.data("magellan-top-offset");if(d+c.settings.fixed_top>=g){var h=b.prev("["+c.add_namespace("data-magellan-expedition-clone")+"]");0===h.length&&(h=b.clone(),h.removeAttr(c.attr_name()),h.attr(c.add_namespace("data-magellan-expedition-clone"),""),b.before(h)),b.css({position:"fixed",top:e.fixed_top}).addClass("fixed")}else b.prev("["+c.add_namespace("data-magellan-expedition-clone")+"]").remove(),b.attr("style",f).css("position","").css("top","").removeClass("fixed")})},update_arrivals:function(){var c=this,d=a(b).scrollTop();a("["+this.attr_name()+"]",c.scope).each(function(){var b=a(this),e=b.data(c.attr_name(!0)+"-init"),f=c.offsets(b,d),g=b.find("["+c.add_namespace("data-magellan-arrival")+"]"),h=!1;f.each(function(a,d){if(d.viewport_offset>=d.top_offset){var f=b.find("["+c.add_namespace("data-magellan-arrival")+"]");return f.not(d.arrival).removeClass(e.active_class),d.arrival.addClass(e.active_class),h=!0,!0}}),h||g.removeClass(e.active_class)})},offsets:function(b,c){var d=this,e=b.data(d.attr_name(!0)+"-init"),f=c;return b.find("["+d.add_namespace("data-magellan-arrival")+"]").map(function(c,g){var h=a(this).data(d.data_attr("magellan-arrival")),i=a("["+d.add_namespace("data-magellan-destination")+"="+h+"]");if(i.length>0){var j=i.offset().top-e.destination_threshold;return e.offset_by_height&&(j-=b.outerHeight()),j=Math.floor(j),{destination:i,arrival:a(this),top_offset:j,viewport_offset:f}}}).sort(function(a,b){return a.top_offset<b.top_offset?-1:a.top_offset>b.top_offset?1:0})},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},off:function(){this.S(this.scope).off(".magellan"),this.S(b).off(".magellan")},filterPathname:function(a){return a=a||"",a.replace(/^\//,"").replace(/(?:index|default).[a-zA-Z]{3,4}$/,"").replace(/\/$/,"")},reflow:function(){var b=this;a("["+b.add_namespace("data-magellan-expedition-clone")+"]",b.scope).remove()}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.offcanvas={name:"offcanvas",version:"5.5.3",settings:{open_method:"move",close_on_click:!1},init:function(a,b,c){this.bindings(b,c)},events:function(){var b=this,c=b.S,d="",e="",f="",g="",h="";"move"===this.settings.open_method?(d="move-",e="right",f="left",g="top",h="bottom"):"overlap_single"===this.settings.open_method?(d="offcanvas-overlap-",e="right",f="left",g="top",h="bottom"):"overlap"===this.settings.open_method&&(d="offcanvas-overlap"),c(this.scope).off(".offcanvas").on("click.fndtn.offcanvas",".left-off-canvas-toggle",function(f){b.click_toggle_class(f,d+e),"overlap"!==b.settings.open_method&&c(".left-submenu").removeClass(d+e),a(".left-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".left-off-canvas-menu a",function(f){var g=b.get_settings(f),h=c(this).parent();!g.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(f.preventDefault(),c(this).siblings(".left-submenu").toggleClass(d+e)):h.hasClass("back")&&(f.preventDefault(),h.parent().removeClass(d+e)):(b.hide.call(b,d+e,b.get_wrapper(f)),h.parent().removeClass(d+e)),a(".left-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".right-off-canvas-toggle",function(e){b.click_toggle_class(e,d+f),"overlap"!==b.settings.open_method&&c(".right-submenu").removeClass(d+f),a(".right-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".right-off-canvas-menu a",function(e){var g=b.get_settings(e),h=c(this).parent();!g.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".right-submenu").toggleClass(d+f)):h.hasClass("back")&&(e.preventDefault(),h.parent().removeClass(d+f)):(b.hide.call(b,d+f,b.get_wrapper(e)),h.parent().removeClass(d+f)),a(".right-off-canvas-toggle").attr("aria-expanded","true");
+}).on("click.fndtn.offcanvas",".top-off-canvas-toggle",function(e){b.click_toggle_class(e,d+h),"overlap"!==b.settings.open_method&&c(".top-submenu").removeClass(d+h),a(".top-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".top-off-canvas-menu a",function(e){var f=b.get_settings(e),g=c(this).parent();!f.close_on_click||g.hasClass("has-submenu")||g.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".top-submenu").toggleClass(d+h)):g.hasClass("back")&&(e.preventDefault(),g.parent().removeClass(d+h)):(b.hide.call(b,d+h,b.get_wrapper(e)),g.parent().removeClass(d+h)),a(".top-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".bottom-off-canvas-toggle",function(e){b.click_toggle_class(e,d+g),"overlap"!==b.settings.open_method&&c(".bottom-submenu").removeClass(d+g),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".bottom-off-canvas-menu a",function(e){var f=b.get_settings(e),h=c(this).parent();!f.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".bottom-submenu").toggleClass(d+g)):h.hasClass("back")&&(e.preventDefault(),h.parent().removeClass(d+g)):(b.hide.call(b,d+g,b.get_wrapper(e)),h.parent().removeClass(d+g)),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(g){b.click_remove_class(g,d+f),c(".right-submenu").removeClass(d+f),e&&(b.click_remove_class(g,d+e),c(".left-submenu").removeClass(d+f)),a(".right-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(c){b.click_remove_class(c,d+f),a(".left-off-canvas-toggle").attr("aria-expanded","false"),e&&(b.click_remove_class(c,d+e),a(".right-off-canvas-toggle").attr("aria-expanded","false"))}).on("click.fndtn.offcanvas",".exit-off-canvas",function(e){b.click_remove_class(e,d+g),c(".bottom-submenu").removeClass(d+g),h&&(b.click_remove_class(e,d+h),c(".top-submenu").removeClass(d+g)),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(c){b.click_remove_class(c,d+g),a(".top-off-canvas-toggle").attr("aria-expanded","false"),h&&(b.click_remove_class(c,d+h),a(".bottom-off-canvas-toggle").attr("aria-expanded","false"))})},toggle:function(a,b){b=b||this.get_wrapper(),b.is("."+a)?this.hide(a,b):this.show(a,b)},show:function(a,b){b=b||this.get_wrapper(),b.trigger("open.fndtn.offcanvas"),b.addClass(a)},hide:function(a,b){b=b||this.get_wrapper(),b.trigger("close.fndtn.offcanvas"),b.removeClass(a)},click_toggle_class:function(a,b){a.preventDefault();var c=this.get_wrapper(a);this.toggle(b,c)},click_remove_class:function(a,b){a.preventDefault();var c=this.get_wrapper(a);this.hide(b,c)},get_settings:function(a){var b=this.S(a.target).closest("["+this.attr_name()+"]");return b.data(this.attr_name(!0)+"-init")||this.settings},get_wrapper:function(a){var b=this.S(a?a.target:this.scope).closest(".off-canvas-wrap");return 0===b.length&&(b=this.S(".off-canvas-wrap")),b},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";var e=function(){},f=function(e,f){if(e.hasClass(f.slides_container_class))return this;var j,k,l,m,n,o,p=this,q=e,r=0,s=!1;p.slides=function(){return q.children(f.slide_selector)},p.slides().first().addClass(f.active_slide_class),p.update_slide_number=function(b){f.slide_number&&(k.find("span:first").text(parseInt(b)+1),k.find("span:last").text(p.slides().length)),f.bullets&&(l.children().removeClass(f.bullets_active_class),a(l.children().get(b)).addClass(f.bullets_active_class))},p.update_active_link=function(b){var c=a('[data-orbit-link="'+p.slides().eq(b).attr("data-orbit-slide")+'"]');c.siblings().removeClass(f.bullets_active_class),c.addClass(f.bullets_active_class)},p.build_markup=function(){q.wrap('<div class="'+f.container_class+'"></div>'),j=q.parent(),q.addClass(f.slides_container_class),f.stack_on_small&&j.addClass(f.stack_on_small_class),f.navigation_arrows&&(j.append(a('<a href="#"><span></span></a>').addClass(f.prev_class)),j.append(a('<a href="#"><span></span></a>').addClass(f.next_class))),f.timer&&(m=a("<div>").addClass(f.timer_container_class),m.append("<span>"),m.append(a("<div>").addClass(f.timer_progress_class)),m.addClass(f.timer_paused_class),j.append(m)),f.slide_number&&(k=a("<div>").addClass(f.slide_number_class),k.append("<span></span> "+f.slide_number_text+" <span></span>"),j.append(k)),f.bullets&&(l=a("<ol>").addClass(f.bullets_container_class),j.append(l),l.wrap('<div class="orbit-bullets-container"></div>'),p.slides().each(function(b,c){var d=a("<li>").attr("data-orbit-slide",b).on("click",p.link_bullet);l.append(d)}))},p._goto=function(b,c){if(b===r)return!1;"object"==typeof o&&o.restart();var d=p.slides(),e="next";if(s=!0,r>b&&(e="prev"),b>=d.length){if(!f.circular)return!1;b=0}else if(0>b){if(!f.circular)return!1;b=d.length-1}var g=a(d.get(r)),h=a(d.get(b));g.css("zIndex",2),g.removeClass(f.active_slide_class),h.css("zIndex",4).addClass(f.active_slide_class),q.trigger("before-slide-change.fndtn.orbit"),f.before_slide_change(),p.update_active_link(b);var i=function(){var a=function(){r=b,s=!1,c===!0&&(o=p.create_timer(),o.start()),p.update_slide_number(r),q.trigger("after-slide-change.fndtn.orbit",[{slide_number:r,total_slides:d.length}]),f.after_slide_change(r,d.length)};q.outerHeight()!=h.outerHeight()&&f.variable_height?q.animate({height:h.outerHeight()},250,"linear",a):a()};if(1===d.length)return i(),!1;var j=function(){"next"===e&&n.next(g,h,i),"prev"===e&&n.prev(g,h,i)};h.outerHeight()>q.outerHeight()&&f.variable_height?q.animate({height:h.outerHeight()},250,"linear",j):j()},p.next=function(a){a.stopImmediatePropagation(),a.preventDefault(),p._goto(r+1)},p.prev=function(a){a.stopImmediatePropagation(),a.preventDefault(),p._goto(r-1)},p.link_custom=function(b){b.preventDefault();var c=a(this).attr("data-orbit-link");if("string"==typeof c&&""!=(c=a.trim(c))){var d=j.find("[data-orbit-slide="+c+"]");-1!=d.index()&&p._goto(d.index())}},p.link_bullet=function(b){var c=a(this).attr("data-orbit-slide");if("string"==typeof c&&""!=(c=a.trim(c)))if(isNaN(parseInt(c))){var d=j.find("[data-orbit-slide="+c+"]");-1!=d.index()&&p._goto(d.index()+1)}else p._goto(parseInt(c))},p.timer_callback=function(){p._goto(r+1,!0)},p.compute_dimensions=function(){var b=a(p.slides().get(r)),c=b.outerHeight();f.variable_height||p.slides().each(function(){a(this).outerHeight()>c&&(c=a(this).outerHeight())}),q.height(c)},p.create_timer=function(){var a=new g(j.find("."+f.timer_container_class),f,p.timer_callback);return a},p.stop_timer=function(){"object"==typeof o&&o.stop()},p.toggle_timer=function(){var a=j.find("."+f.timer_container_class);a.hasClass(f.timer_paused_class)?("undefined"==typeof o&&(o=p.create_timer()),o.start()):"object"==typeof o&&o.stop()},p.init=function(){p.build_markup(),f.timer&&(o=p.create_timer(),Foundation.utils.image_loaded(this.slides().children("img"),o.start)),n=new i(f,q),"slide"===f.animation&&(n=new h(f,q)),j.on("click","."+f.next_class,p.next),j.on("click","."+f.prev_class,p.prev),f.next_on_click&&j.on("click","."+f.slides_container_class+" [data-orbit-slide]",p.link_bullet),j.on("click",p.toggle_timer),f.swipe&&j.on("touchstart.fndtn.orbit",function(a){a.touches||(a=a.originalEvent);var b={start_page_x:a.touches[0].pageX,start_page_y:a.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:d};j.data("swipe-transition",b),a.stopPropagation()}).on("touchmove.fndtn.orbit",function(a){if(a.touches||(a=a.originalEvent),!(a.touches.length>1||a.scale&&1!==a.scale)){var b=j.data("swipe-transition");if("undefined"==typeof b&&(b={}),b.delta_x=a.touches[0].pageX-b.start_page_x,"undefined"==typeof b.is_scrolling&&(b.is_scrolling=!!(b.is_scrolling||Math.abs(b.delta_x)<Math.abs(a.touches[0].pageY-b.start_page_y))),!b.is_scrolling&&!b.active){a.preventDefault();var c=b.delta_x<0?r+1:r-1;b.active=!0,p._goto(c)}}}).on("touchend.fndtn.orbit",function(a){j.data("swipe-transition",{}),a.stopPropagation()}),j.on("mouseenter.fndtn.orbit",function(a){f.timer&&f.pause_on_hover&&p.stop_timer()}).on("mouseleave.fndtn.orbit",function(a){f.timer&&f.resume_on_mouseout&&o.start()}),a(c).on("click","[data-orbit-link]",p.link_custom),a(b).on("load resize",p.compute_dimensions),Foundation.utils.image_loaded(this.slides().children("img"),p.compute_dimensions),Foundation.utils.image_loaded(this.slides().children("img"),function(){j.prev("."+f.preloader_class).css("display","none"),p.update_slide_number(0),p.update_active_link(0),q.trigger("ready.fndtn.orbit")})},p.init()},g=function(a,b,c){var d,e,f=this,g=b.timer_speed,h=a.find("."+b.timer_progress_class),i=-1;this.update_progress=function(a){var b=h.clone();b.attr("style",""),b.css("width",a+"%"),h.replaceWith(b),h=b},this.restart=function(){clearTimeout(e),a.addClass(b.timer_paused_class),i=-1,f.update_progress(0)},this.start=function(){return a.hasClass(b.timer_paused_class)?(i=-1===i?g:i,a.removeClass(b.timer_paused_class),d=(new Date).getTime(),h.animate({width:"100%"},i,"linear"),e=setTimeout(function(){f.restart(),c()},i),void a.trigger("timer-started.fndtn.orbit")):!0},this.stop=function(){if(a.hasClass(b.timer_paused_class))return!0;clearTimeout(e),a.addClass(b.timer_paused_class);var c=(new Date).getTime();i-=c-d;var h=100-i/g*100;f.update_progress(h),a.trigger("timer-stopped.fndtn.orbit")}},h=function(b,c){var d=b.animation_speed,e=1===a("html[dir=rtl]").length,f=e?"marginRight":"marginLeft",g={};g[f]="0%",this.next=function(a,b,c){a.animate({marginLeft:"-100%"},d),b.animate(g,d,function(){a.css(f,"100%"),c()})},this.prev=function(a,b,c){a.animate({marginLeft:"100%"},d),b.css(f,"-100%"),b.animate(g,d,function(){a.css(f,"100%"),c()})}},i=function(b,c){var d=b.animation_speed;1===a("html[dir=rtl]").length;this.next=function(a,b,c){b.css({margin:"0%",opacity:"0.01"}),b.animate({opacity:"1"},d,"linear",function(){a.css("margin","100%"),c()})},this.prev=function(a,b,c){b.css({margin:"0%",opacity:"0.01"}),b.animate({opacity:"1"},d,"linear",function(){a.css("margin","100%"),c()})}};Foundation.libs=Foundation.libs||{},Foundation.libs.orbit={name:"orbit",version:"5.5.3",settings:{animation:"slide",timer_speed:1e4,pause_on_hover:!0,resume_on_mouseout:!1,next_on_click:!0,animation_speed:500,stack_on_small:!1,navigation_arrows:!0,slide_number:!0,slide_number_text:"of",container_class:"orbit-container",stack_on_small_class:"orbit-stack-on-small",next_class:"orbit-next",prev_class:"orbit-prev",timer_container_class:"orbit-timer",timer_paused_class:"paused",timer_progress_class:"orbit-progress",slides_container_class:"orbit-slides-container",preloader_class:"preloader",slide_selector:"*",bullets_container_class:"orbit-bullets",bullets_active_class:"active",slide_number_class:"orbit-slide-number",caption_class:"orbit-caption",active_slide_class:"active",orbit_transition_class:"orbit-transitioning",bullets:!0,circular:!0,timer:!0,variable_height:!1,swipe:!0,before_slide_change:e,after_slide_change:e},init:function(a,b,c){this.bindings(b,c)},events:function(a){var b=new f(this.S(a),this.S(a).data("orbit-init"));this.S(a).data(this.name+"-instance",b)},reflow:function(){var a=this;if(a.S(a.scope).is("[data-orbit]")){var b=a.S(a.scope),c=b.data(a.name+"-instance");c.compute_dimensions()}else a.S("[data-orbit]",a.scope).each(function(b,c){var d=a.S(c),e=(a.data_options(d),d.data(a.name+"-instance"));e.compute_dimensions()})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";function e(a){var b=/fade/i.test(a),c=/pop/i.test(a);return{animate:b||c,pop:c,fade:b}}var f=[];Foundation.libs.reveal={name:"reveal",version:"5.5.3",locked:!1,settings:{animation:"fadeAndPop",animation_speed:250,close_on_background_click:!0,close_on_esc:!0,dismiss_modal_class:"close-reveal-modal",multiple_opened:!1,bg_class:"reveal-modal-bg",root_element:"body",open:function(){},opened:function(){},close:function(){},closed:function(){},on_ajax_error:a.noop,bg:a(".reveal-modal-bg"),css:{open:{opacity:0,visibility:"visible",display:"block"},close:{opacity:1,visibility:"hidden",display:"none"}}},init:function(b,c,d){a.extend(!0,this.settings,c,d),this.bindings(c,d)},events:function(a){var b=this,d=b.S;return d(this.scope).off(".reveal").on("click.fndtn.reveal","["+this.add_namespace("data-reveal-id")+"]:not([disabled])",function(a){if(a.preventDefault(),!b.locked){var c=d(this),e=c.data(b.data_attr("reveal-ajax")),f=c.data(b.data_attr("reveal-replace-content"));if(b.locked=!0,"undefined"==typeof e)b.open.call(b,c);else{var g=e===!0?c.attr("href"):e;b.open.call(b,c,{url:g},{replaceContentSel:f})}}}),d(c).on("click.fndtn.reveal",this.close_targets(),function(a){if(a.preventDefault(),!b.locked){var c=d("["+b.attr_name()+"].open").data(b.attr_name(!0)+"-init")||b.settings,e=d(a.target)[0]===d("."+c.bg_class)[0];if(e){if(!c.close_on_background_click)return;a.stopPropagation()}b.locked=!0,b.close.call(b,e?d("["+b.attr_name()+"].open:not(.toback)"):d(this).closest("["+b.attr_name()+"]"))}}),d("["+b.attr_name()+"]",this.scope).length>0?d(this.scope).on("open.fndtn.reveal",this.settings.open).on("opened.fndtn.reveal",this.settings.opened).on("opened.fndtn.reveal",this.open_video).on("close.fndtn.reveal",this.settings.close).on("closed.fndtn.reveal",this.settings.closed).on("closed.fndtn.reveal",this.close_video):d(this.scope).on("open.fndtn.reveal","["+b.attr_name()+"]",this.settings.open).on("opened.fndtn.reveal","["+b.attr_name()+"]",this.settings.opened).on("opened.fndtn.reveal","["+b.attr_name()+"]",this.open_video).on("close.fndtn.reveal","["+b.attr_name()+"]",this.settings.close).on("closed.fndtn.reveal","["+b.attr_name()+"]",this.settings.closed).on("closed.fndtn.reveal","["+b.attr_name()+"]",this.close_video),!0},key_up_on:function(a){var b=this;return b.S("body").off("keyup.fndtn.reveal").on("keyup.fndtn.reveal",function(a){var c=b.S("["+b.attr_name()+"].open"),d=c.data(b.attr_name(!0)+"-init")||b.settings;d&&27===a.which&&d.close_on_esc&&!b.locked&&b.close.call(b,c)}),!0},key_up_off:function(a){return this.S("body").off("keyup.fndtn.reveal"),!0},open:function(c,e){var g,h=this;c?"undefined"!=typeof c.selector?g=h.S("#"+c.data(h.data_attr("reveal-id"))).first():(g=h.S(this.scope),e=c):g=h.S(this.scope);var i=g.data(h.attr_name(!0)+"-init");if(i=i||this.settings,g.hasClass("open")&&c!==d&&c.attr("data-reveal-id")==g.attr("id"))return h.close(g);if(!g.hasClass("open")){var j=h.S("["+h.attr_name()+"].open");"undefined"==typeof g.data("css-top")&&g.data("css-top",parseInt(g.css("top"),10)).data("offset",this.cache_offset(g)),g.attr("tabindex","0").attr("aria-hidden","false"),this.key_up_on(g),g.on("open.fndtn.reveal",function(a){"fndtn.reveal"!==a.namespace}),g.on("open.fndtn.reveal").trigger("open.fndtn.reveal"),j.length<1&&this.toggle_bg(g,!0),"string"==typeof e&&(e={url:e});var k=function(){j.length>0&&(i.multiple_opened?h.to_back(j):h.hide(j,i.css.close)),i.multiple_opened&&f.push(g),h.show(g,i.css.open)};if("undefined"!=typeof e&&e.url){var l="undefined"!=typeof e.success?e.success:null;a.extend(e,{success:function(b,c,d){if(a.isFunction(l)){var e=l(b,c,d);"string"==typeof e&&(b=e)}"undefined"!=typeof options&&"undefined"!=typeof options.replaceContentSel?g.find(options.replaceContentSel).html(b):g.html(b),h.S(g).foundation("section","reflow"),h.S(g).children().foundation(),k()}}),i.on_ajax_error!==a.noop&&a.extend(e,{error:i.on_ajax_error}),a.ajax(e)}else k()}h.S(b).trigger("resize")},close:function(b){var b=b&&b.length?b:this.S(this.scope),c=this.S("["+this.attr_name()+"].open"),d=b.data(this.attr_name(!0)+"-init")||this.settings,e=this;if(c.length>0)if(b.removeAttr("tabindex","0").attr("aria-hidden","true"),this.locked=!0,this.key_up_off(b),b.trigger("close.fndtn.reveal"),(d.multiple_opened&&1===c.length||!d.multiple_opened||b.length>1)&&(e.toggle_bg(b,!1),e.to_front(b)),d.multiple_opened){var g=b.is(":not(.toback)");e.hide(b,d.css.close,d),g?f.pop():f=a.grep(f,function(a){var c=a[0]===b[0];return c&&e.to_front(b),!c}),f.length>0&&e.to_front(f[f.length-1])}else e.hide(c,d.css.close,d)},close_targets:function(){var a="."+this.settings.dismiss_modal_class;return this.settings.close_on_background_click?a+", ."+this.settings.bg_class:a},toggle_bg:function(b,c){0===this.S("."+this.settings.bg_class).length&&(this.settings.bg=a("<div />",{"class":this.settings.bg_class}).appendTo("body").hide());var e=this.settings.bg.filter(":visible").length>0;c!=e&&((c==d?e:!c)?this.hide(this.settings.bg):this.show(this.settings.bg))},show:function(c,d){if(d){var f=c.data(this.attr_name(!0)+"-init")||this.settings,g=f.root_element,h=this;if(0===c.parent(g).length){var i=c.wrap('<div style="display: none;" />').parent();c.on("closed.fndtn.reveal.wrapped",function(){c.detach().appendTo(i),c.unwrap().unbind("closed.fndtn.reveal.wrapped")}),c.detach().appendTo(g)}var j=e(f.animation);if(j.animate||(this.locked=!1),j.pop){d.top=a(b).scrollTop()-c.data("offset")+"px";var k={top:a(b).scrollTop()+c.data("css-top")+"px",opacity:1};return setTimeout(function(){return c.css(d).animate(k,f.animation_speed,"linear",function(){h.locked=!1,c.trigger("opened.fndtn.reveal")}).addClass("open")},f.animation_speed/2)}if(d.top=a(b).scrollTop()+c.data("css-top")+"px",j.fade){var k={opacity:1};return setTimeout(function(){return c.css(d).animate(k,f.animation_speed,"linear",function(){h.locked=!1,c.trigger("opened.fndtn.reveal")}).addClass("open")},f.animation_speed/2)}return c.css(d).show().css({opacity:1}).addClass("open").trigger("opened.fndtn.reveal")}var f=this.settings;return e(f.animation).fade?c.fadeIn(f.animation_speed/2):(this.locked=!1,c.show())},to_back:function(a){a.addClass("toback")},to_front:function(a){a.removeClass("toback")},hide:function(c,d){if(d){var f=c.data(this.attr_name(!0)+"-init"),g=this;f=f||this.settings;var h=e(f.animation);if(h.animate||(this.locked=!1),h.pop){var i={top:-a(b).scrollTop()-c.data("offset")+"px",opacity:0};return setTimeout(function(){return c.animate(i,f.animation_speed,"linear",function(){g.locked=!1,c.css(d).trigger("closed.fndtn.reveal")}).removeClass("open")},f.animation_speed/2)}if(h.fade){var i={opacity:0};return setTimeout(function(){return c.animate(i,f.animation_speed,"linear",function(){g.locked=!1,c.css(d).trigger("closed.fndtn.reveal")}).removeClass("open")},f.animation_speed/2)}return c.hide().css(d).removeClass("open").trigger("closed.fndtn.reveal")}var f=this.settings;return e(f.animation).fade?c.fadeOut(f.animation_speed/2):c.hide()},close_video:function(b){var c=a(".flex-video",b.target),d=a("iframe",c);d.length>0&&(d.attr("data-src",d[0].src),d.attr("src",d.attr("src")),c.hide())},open_video:function(b){var c=a(".flex-video",b.target),e=c.find("iframe");if(e.length>0){var f=e.attr("data-src");if("string"==typeof f)e[0].src=e.attr("data-src");else{var g=e[0].src;e[0].src=d,e[0].src=g}c.show()}},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},cache_offset:function(a){var b=a.show().height()+parseInt(a.css("top"),10)+a.scrollY;return a.hide(),b},off:function(){a(this.scope).off(".fndtn.reveal")},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.slider={name:"slider",version:"5.5.3",settings:{start:0,end:100,step:1,precision:2,initial:null,display_selector:"",vertical:!1,trigger_input_change:!1,on_change:function(){}},cache:{},init:function(a,b,c){Foundation.inherit(this,"throttle"),this.bindings(b,c),this.reflow()},events:function(){var c=this;a(this.scope).off(".slider").on("mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider","["+c.attr_name()+"]:not(.disabled, [disabled]) .range-slider-handle",function(b){c.cache.active||(b.preventDefault(),c.set_active_slider(a(b.target)))}).on("mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider",function(d){if(c.cache.active)if(d.preventDefault(),a.data(c.cache.active[0],"settings").vertical){var e=0;d.pageY||(e=b.scrollY),c.calculate_position(c.cache.active,c.get_cursor_position(d,"y")+e)}else c.calculate_position(c.cache.active,c.get_cursor_position(d,"x"))}).on("mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider",function(d){if(!c.cache.active){var e="slider"===a(d.target).attr("role")?a(d.target):a(d.target).closest(".range-slider").find("[role='slider']");if(e.length&&!e.parent().hasClass("disabled")&&!e.parent().attr("disabled"))if(c.set_active_slider(e),a.data(c.cache.active[0],"settings").vertical){var f=0;d.pageY||(f=b.scrollY),c.calculate_position(c.cache.active,c.get_cursor_position(d,"y")+f)}else c.calculate_position(c.cache.active,c.get_cursor_position(d,"x"))}c.remove_active_slider()}).on("change.fndtn.slider",function(a){c.settings.on_change()}),c.S(b).on("resize.fndtn.slider",c.throttle(function(a){c.reflow()},300)),this.S("["+this.attr_name()+"]").each(function(){var b=a(this),d=b.children(".range-slider-handle")[0],e=c.initialize_settings(d);""!=e.display_selector&&a(e.display_selector).each(function(){a(this).attr("value")&&a(this).off("change").on("change",function(){b.foundation("slider","set_value",a(this).val())})})})},get_cursor_position:function(a,b){var c,d="page"+b.toUpperCase(),e="client"+b.toUpperCase();return"undefined"!=typeof a[d]?c=a[d]:"undefined"!=typeof a.originalEvent[e]?c=a.originalEvent[e]:a.originalEvent.touches&&a.originalEvent.touches[0]&&"undefined"!=typeof a.originalEvent.touches[0][e]?c=a.originalEvent.touches[0][e]:a.currentPoint&&"undefined"!=typeof a.currentPoint[b]&&(c=a.currentPoint[b]),c},set_active_slider:function(a){this.cache.active=a},remove_active_slider:function(){this.cache.active=null},calculate_position:function(b,c){var d=this,e=a.data(b[0],"settings"),f=(a.data(b[0],"handle_l"),a.data(b[0],"handle_o"),a.data(b[0],"bar_l")),g=a.data(b[0],"bar_o");requestAnimationFrame(function(){var a;a=Foundation.rtl&&!e.vertical?d.limit_to((g+f-c)/f,0,1):d.limit_to((c-g)/f,0,1),a=e.vertical?1-a:a;var h=d.normalized_value(a,e.start,e.end,e.step,e.precision);d.set_ui(b,h)})},set_ui:function(b,c){var d=a.data(b[0],"settings"),e=a.data(b[0],"handle_l"),f=a.data(b[0],"bar_l"),g=this.normalized_percentage(c,d.start,d.end),h=g*(f-e)-1,i=100*g,j=b.parent(),k=b.parent().children("input[type=hidden]");Foundation.rtl&&!d.vertical&&(h=-h),h=d.vertical?-h+f-e+1:h,this.set_translate(b,h,d.vertical),d.vertical?b.siblings(".range-slider-active-segment").css("height",i+"%"):b.siblings(".range-slider-active-segment").css("width",i+"%"),j.attr(this.attr_name(),c).trigger("change.fndtn.slider"),k.val(c),d.trigger_input_change&&k.trigger("change.fndtn.slider"),b[0].hasAttribute("aria-valuemin")||b.attr({"aria-valuemin":d.start,"aria-valuemax":d.end}),b.attr("aria-valuenow",c),""!=d.display_selector&&a(d.display_selector).each(function(){this.hasAttribute("value")?a(this).val(c):a(this).text(c)})},normalized_percentage:function(a,b,c){return Math.min(1,(a-b)/(c-b))},normalized_value:function(a,b,c,d,e){var f=c-b,g=a*f,h=(g-g%d)/d,i=g%d,j=i>=.5*d?d:0;return(h*d+j+b).toFixed(e)},set_translate:function(b,c,d){d?a(b).css("-webkit-transform","translateY("+c+"px)").css("-moz-transform","translateY("+c+"px)").css("-ms-transform","translateY("+c+"px)").css("-o-transform","translateY("+c+"px)").css("transform","translateY("+c+"px)"):a(b).css("-webkit-transform","translateX("+c+"px)").css("-moz-transform","translateX("+c+"px)").css("-ms-transform","translateX("+c+"px)").css("-o-transform","translateX("+c+"px)").css("transform","translateX("+c+"px)")},limit_to:function(a,b,c){return Math.min(Math.max(a,b),c)},initialize_settings:function(b){var c,d=a.extend({},this.settings,this.data_options(a(b).parent()));return null===d.precision&&(c=(""+d.step).match(/\.([\d]*)/),d.precision=c&&c[1]?c[1].length:0),d.vertical?(a.data(b,"bar_o",a(b).parent().offset().top),a.data(b,"bar_l",a(b).parent().outerHeight()),a.data(b,"handle_o",a(b).offset().top),a.data(b,"handle_l",a(b).outerHeight())):(a.data(b,"bar_o",a(b).parent().offset().left),a.data(b,"bar_l",a(b).parent().outerWidth()),a.data(b,"handle_o",a(b).offset().left),a.data(b,"handle_l",a(b).outerWidth())),a.data(b,"bar",a(b).parent()),a.data(b,"settings",d)},set_initial_position:function(b){var c=a.data(b.children(".range-slider-handle")[0],"settings"),d="number"!=typeof c.initial||isNaN(c.initial)?Math.floor(.5*(c.end-c.start)/c.step)*c.step+c.start:c.initial,e=b.children(".range-slider-handle");this.set_ui(e,d)},set_value:function(b){var c=this;a("["+c.attr_name()+"]",this.scope).each(function(){a(this).attr(c.attr_name(),b)}),a(this.scope).attr(c.attr_name())&&a(this.scope).attr(c.attr_name(),b),c.reflow()},reflow:function(){var b=this;b.S("["+this.attr_name()+"]").each(function(){var c=a(this).children(".range-slider-handle")[0],d=a(this).attr(b.attr_name());b.initialize_settings(c),d?b.set_ui(a(c),parseFloat(d)):b.set_initial_position(a(this))})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.tab={name:"tab",version:"5.5.3",settings:{active_class:"active",callback:function(){},deep_linking:!1,scroll_to_content:!0,is_hover:!1},default_tab_hashes:[],init:function(a,b,c){var d=this,e=this.S;e("["+this.attr_name()+"] > .active > a",this.scope).each(function(){d.default_tab_hashes.push(this.hash)}),this.bindings(b,c),this.handle_location_hash_change()},events:function(){var a=this,c=this.S,d=function(b,d){var e=c(d).closest("["+a.attr_name()+"]").data(a.attr_name(!0)+"-init");if(!e.is_hover||Modernizr.touch){var f=b.keyCode||b.which;9!==f&&(b.preventDefault(),b.stopPropagation()),a.toggle_active_tab(c(d).parent())}};c(this.scope).off(".tab").on("keydown.fndtn.tab","["+this.attr_name()+"] > * > a",function(a){var b=a.keyCode||a.which;if(13===b||32===b){var c=this;d(a,c)}}).on("click.fndtn.tab","["+this.attr_name()+"] > * > a",function(a){var b=this;d(a,b)}).on("mouseenter.fndtn.tab","["+this.attr_name()+"] > * > a",function(b){var d=c(this).closest("["+a.attr_name()+"]").data(a.attr_name(!0)+"-init");d.is_hover&&a.toggle_active_tab(c(this).parent())}),c(b).on("hashchange.fndtn.tab",function(b){b.preventDefault(),a.handle_location_hash_change()})},handle_location_hash_change:function(){var b=this,c=this.S;c("["+this.attr_name()+"]",this.scope).each(function(){var e=c(this).data(b.attr_name(!0)+"-init");if(e.deep_linking){var f;if(f=e.scroll_to_content?b.scope.location.hash:b.scope.location.hash.replace("fndtn-",""),""!=f){var g=c(f);if(g.hasClass("content")&&g.parent().hasClass("tabs-content"))b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href="+f+"]").parent());else{var h=g.closest(".content").attr("id");h!=d&&b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href=#"+h+"]").parent(),f)}}else for(var i=0;i<b.default_tab_hashes.length;i++)b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href="+b.default_tab_hashes[i]+"]").parent())}})},toggle_active_tab:function(e,f){var g=this,h=g.S,i=e.closest("["+this.attr_name()+"]"),j=e.find("a"),k=e.children("a").first(),l="#"+k.attr("href").split("#")[1],m=h(l),n=e.siblings(),o=i.data(this.attr_name(!0)+"-init"),p=function(b){var d,e=a(this),f=a(this).parents("li").prev().children('[role="tab"]'),g=a(this).parents("li").next().children('[role="tab"]');switch(b.keyCode){case 37:d=f;break;case 39:d=g;break;default:d=!1}d.length&&(e.attr({tabindex:"-1","aria-selected":null}),d.attr({tabindex:"0","aria-selected":!0}).focus()),a('[role="tabpanel"]').attr("aria-hidden","true"),a("#"+a(c.activeElement).attr("href").substring(1)).attr("aria-hidden",null)},q=function(a){var c=o.scroll_to_content?g.default_tab_hashes[0]:"fndtn-"+g.default_tab_hashes[0].replace("#","");(a!==c||b.location.hash)&&(b.location.hash=a)};k.data("tab-content")&&(l="#"+k.data("tab-content").split("#")[1],m=h(l)),o.deep_linking&&(o.scroll_to_content?(q(f||l),f==d||f==l?e.parent()[0].scrollIntoView():h(l)[0].scrollIntoView()):q(f!=d?"fndtn-"+f.replace("#",""):"fndtn-"+l.replace("#",""))),e.addClass(o.active_class).triggerHandler("opened"),j.attr({"aria-selected":"true",tabindex:0}),n.removeClass(o.active_class),n.find("a").attr({"aria-selected":"false"}),m.siblings().removeClass(o.active_class).attr({"aria-hidden":"true"}),m.addClass(o.active_class).attr("aria-hidden","false").removeAttr("tabindex"),o.callback(e),m.triggerHandler("toggled",[m]),i.triggerHandler("toggled",[e]),j.off("keydown").on("keydown",p)},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},off:function(){},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.tooltip={name:"tooltip",version:"5.5.3",settings:{additional_inheritable_classes:[],tooltip_class:".tooltip",append_to:"body",touch_close_text:"Tap To Close",disable_for_touch:!1,hover_delay:200,fade_in_duration:150,fade_out_duration:150,show_on:"all",tip_template:function(a,b){return'<span data-selector="'+a+'" id="'+a+'" class="'+Foundation.libs.tooltip.settings.tooltip_class.substring(1)+'" role="tooltip">'+b+'<span class="nub"></span></span>'}},cache:{},init:function(a,b,c){Foundation.inherit(this,"random_str"),this.bindings(b,c)},should_show:function(b,c){var d=a.extend({},this.settings,this.data_options(b));return"all"===d.show_on?!0:this.small()&&"small"===d.show_on?!0:this.medium()&&"medium"===d.show_on?!0:this.large()&&"large"===d.show_on?!0:!1},medium:function(){return matchMedia(Foundation.media_queries.medium).matches},large:function(){return matchMedia(Foundation.media_queries.large).matches},events:function(b){function c(a,b,c){a.timer||(c?(a.timer=null,e.showTip(b)):a.timer=setTimeout(function(){a.timer=null,e.showTip(b)}.bind(a),e.settings.hover_delay))}function d(a,b){a.timer&&(clearTimeout(a.timer),a.timer=null),e.hide(b)}var e=this,f=e.S;e.create(this.S(b)),a(this.scope).off(".tooltip").on("mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"]",function(b){var g=f(this),h=a.extend({},e.settings,e.data_options(g)),i=!1;if(Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&f(b.target).is("a"))return!1;if(/mouse/i.test(b.type)&&e.ie_touch(b))return!1;if(g.hasClass("open"))Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&b.preventDefault(),e.hide(g);else{if(h.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type))return;if(!h.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&(b.preventDefault(),f(h.tooltip_class+".open").hide(),i=!0,a(".open["+e.attr_name()+"]").length>0)){var j=f(a(".open["+e.attr_name()+"]")[0]);e.hide(j)}/enter|over/i.test(b.type)?c(this,g):"mouseout"===b.type||"mouseleave"===b.type?d(this,g):c(this,g,!0)}}).on("mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"].open",function(b){return/mouse/i.test(b.type)&&e.ie_touch(b)?!1:void(("touch"!=a(this).data("tooltip-open-event-type")||"mouseleave"!=b.type)&&("mouse"==a(this).data("tooltip-open-event-type")&&/MSPointerDown|touchstart/i.test(b.type)?e.convert_to_touch(a(this)):d(this,a(this))))}).on("DOMNodeRemoved DOMAttrModified","["+this.attr_name()+"]:not(a)",function(a){d(this,f(this))})},ie_touch:function(a){return!1},showTip:function(a){var b=this.getTip(a);return this.should_show(a,b)?this.show(a):void 0},getTip:function(b){var c=this.selector(b),d=a.extend({},this.settings,this.data_options(b)),e=null;return c&&(e=this.S('span[data-selector="'+c+'"]'+d.tooltip_class)),"object"==typeof e?e:!1},selector:function(a){var b=a.attr(this.attr_name())||a.attr("data-selector");return"string"!=typeof b&&(b=this.random_str(6),a.attr("data-selector",b).attr("aria-describedby",b)),b},create:function(c){var d=this,e=a.extend({},this.settings,this.data_options(c)),f=this.settings.tip_template;"string"==typeof e.tip_template&&b.hasOwnProperty(e.tip_template)&&(f=b[e.tip_template]);
+var g=a(f(this.selector(c),a("<div></div>").html(c.attr("title")).html())),h=this.inheritable_classes(c);g.addClass(h).appendTo(e.append_to),Modernizr.touch&&(g.append('<span class="tap-to-close">'+e.touch_close_text+"</span>"),g.on("touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip",function(a){d.hide(c)})),c.removeAttr("title").attr("title","")},reposition:function(b,c,d){var e,f,g,h,i;c.css("visibility","hidden").show(),e=b.data("width"),f=c.children(".nub"),g=f.outerHeight(),h=f.outerWidth(),this.small()?c.css({width:"100%"}):c.css({width:e?e:"auto"}),i=function(a,b,c,d,e,f){return a.css({top:b?b:"auto",bottom:d?d:"auto",left:e?e:"auto",right:c?c:"auto"}).end()};var j=b.offset().top,k=b.offset().left,l=b.outerHeight();if(i(c,j+l+10,"auto","auto",k),this.small())i(c,j+l+10,"auto","auto",12.5,a(this.scope).width()),c.addClass("tip-override"),i(f,-g,"auto","auto",k);else{Foundation.rtl&&(f.addClass("rtl"),k=k+b.outerWidth()-c.outerWidth()),i(c,j+l+10,"auto","auto",k),f.attr("style")&&f.removeAttr("style"),c.removeClass("tip-override");var m=c.outerHeight();d&&d.indexOf("tip-top")>-1?(Foundation.rtl&&f.addClass("rtl"),i(c,j-m,"auto","auto",k).removeClass("tip-override")):d&&d.indexOf("tip-left")>-1?(i(c,j+l/2-m/2,"auto","auto",k-c.outerWidth()-g).removeClass("tip-override"),f.removeClass("rtl")):d&&d.indexOf("tip-right")>-1&&(i(c,j+l/2-m/2,"auto","auto",k+b.outerWidth()+g).removeClass("tip-override"),f.removeClass("rtl"))}c.css("visibility","visible").hide()},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},inheritable_classes:function(b){var c=a.extend({},this.settings,this.data_options(b)),d=["tip-top","tip-left","tip-bottom","tip-right","radius","round"].concat(c.additional_inheritable_classes),e=b.attr("class"),f=e?a.map(e.split(" "),function(b,c){return-1!==a.inArray(b,d)?b:void 0}).join(" "):"";return a.trim(f)},convert_to_touch:function(b){var c=this,d=c.getTip(b),e=a.extend({},c.settings,c.data_options(b));0===d.find(".tap-to-close").length&&(d.append('<span class="tap-to-close">'+e.touch_close_text+"</span>"),d.on("click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose",function(a){c.hide(b)})),b.data("tooltip-open-event-type","touch")},show:function(a){var b=this.getTip(a);"touch"==a.data("tooltip-open-event-type")&&this.convert_to_touch(a),this.reposition(a,b,a.attr("class")),a.addClass("open"),b.fadeIn(this.settings.fade_in_duration)},hide:function(a){var b=this.getTip(a);b.fadeOut(this.settings.fade_out_duration,function(){b.find(".tap-to-close").remove(),b.off("click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose"),a.removeClass("open")})},off:function(){var b=this;this.S(this.scope).off(".fndtn.tooltip"),this.S(this.settings.tooltip_class).each(function(c){a("["+b.attr_name()+"]").eq(c).attr("title",a(this).text())}).remove()},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.topbar={name:"topbar",version:"5.5.3",settings:{index:0,start_offset:0,sticky_class:"sticky",custom_back_text:!0,back_text:"Back",mobile_show_parent_link:!0,is_hover:!0,scrolltop:!0,sticky_on:"all",dropdown_autoclose:!0},init:function(b,c,d){Foundation.inherit(this,"add_custom_rule register_media throttle");var e=this;e.register_media("topbar","foundation-mq-topbar"),this.bindings(c,d),e.S("["+this.attr_name()+"]",this.scope).each(function(){var b=a(this),c=b.data(e.attr_name(!0)+"-init");e.S("section, .top-bar-section",this);b.data("index",0);var d=b.parent();d.hasClass("fixed")||e.is_sticky(b,d,c)?(e.settings.sticky_class=c.sticky_class,e.settings.sticky_topbar=b,b.data("height",d.outerHeight()),b.data("stickyoffset",d.offset().top)):b.data("height",b.outerHeight()),c.assembled||e.assemble(b),c.is_hover?e.S(".has-dropdown",b).addClass("not-click"):e.S(".has-dropdown",b).removeClass("not-click"),e.add_custom_rule(".f-topbar-fixed { padding-top: "+b.data("height")+"px }"),d.hasClass("fixed")&&e.S("body").addClass("f-topbar-fixed")})},is_sticky:function(a,b,c){var d=b.hasClass(c.sticky_class),e=matchMedia(Foundation.media_queries.small).matches,f=matchMedia(Foundation.media_queries.medium).matches,g=matchMedia(Foundation.media_queries.large).matches;return d&&"all"===c.sticky_on?!0:d&&this.small()&&-1!==c.sticky_on.indexOf("small")&&e&&!f&&!g?!0:d&&this.medium()&&-1!==c.sticky_on.indexOf("medium")&&e&&f&&!g?!0:d&&this.large()&&-1!==c.sticky_on.indexOf("large")&&e&&f&&g?!0:!1},toggle:function(c){var d,e=this;d=c?e.S(c).closest("["+this.attr_name()+"]"):e.S("["+this.attr_name()+"]");var f=d.data(this.attr_name(!0)+"-init"),g=e.S("section, .top-bar-section",d);e.breakpoint()&&(e.rtl?(g.css({right:"0%"}),a(">.name",g).css({right:"100%"})):(g.css({left:"0%"}),a(">.name",g).css({left:"100%"})),e.S("li.moved",g).removeClass("moved"),d.data("index",0),d.toggleClass("expanded").css("height","")),f.scrolltop?d.hasClass("expanded")?d.parent().hasClass("fixed")&&(f.scrolltop?(d.parent().removeClass("fixed"),d.addClass("fixed"),e.S("body").removeClass("f-topbar-fixed"),b.scrollTo(0,0)):d.parent().removeClass("expanded")):d.hasClass("fixed")&&(d.parent().addClass("fixed"),d.removeClass("fixed"),e.S("body").addClass("f-topbar-fixed")):(e.is_sticky(d,d.parent(),f)&&d.parent().addClass("fixed"),d.parent().hasClass("fixed")&&(d.hasClass("expanded")?(d.addClass("fixed"),d.parent().addClass("expanded"),e.S("body").addClass("f-topbar-fixed")):(d.removeClass("fixed"),d.parent().removeClass("expanded"),e.update_sticky_positioning())))},timer:null,events:function(c){var d=this,e=this.S;e(this.scope).off(".topbar").on("click.fndtn.topbar","["+this.attr_name()+"] .toggle-topbar",function(a){a.preventDefault(),d.toggle(this)}).on("click.fndtn.topbar contextmenu.fndtn.topbar",'.top-bar .top-bar-section li a[href^="#"],['+this.attr_name()+'] .top-bar-section li a[href^="#"]',function(b){var c=a(this).closest("li"),e=c.closest("["+d.attr_name()+"]"),f=e.data(d.attr_name(!0)+"-init");if(f.dropdown_autoclose&&f.is_hover){var g=a(this).closest(".hover");g.removeClass("hover")}!d.breakpoint()||c.hasClass("back")||c.hasClass("has-dropdown")||d.toggle()}).on("click.fndtn.topbar","["+this.attr_name()+"] li.has-dropdown",function(b){var c=e(this),f=e(b.target),g=c.closest("["+d.attr_name()+"]"),h=g.data(d.attr_name(!0)+"-init");return f.data("revealId")?void d.toggle():void(d.breakpoint()||(!h.is_hover||Modernizr.touch)&&(b.stopImmediatePropagation(),c.hasClass("hover")?(c.removeClass("hover").find("li").removeClass("hover"),c.parents("li.hover").removeClass("hover")):(c.addClass("hover"),a(c).siblings().removeClass("hover"),"A"===f[0].nodeName&&f.parent().hasClass("has-dropdown")&&b.preventDefault())))}).on("click.fndtn.topbar","["+this.attr_name()+"] .has-dropdown>a",function(a){if(d.breakpoint()){a.preventDefault();var b=e(this),c=b.closest("["+d.attr_name()+"]"),f=c.find("section, .top-bar-section"),g=(b.next(".dropdown").outerHeight(),b.closest("li"));c.data("index",c.data("index")+1),g.addClass("moved"),d.rtl?(f.css({right:-(100*c.data("index"))+"%"}),f.find(">.name").css({right:100*c.data("index")+"%"})):(f.css({left:-(100*c.data("index"))+"%"}),f.find(">.name").css({left:100*c.data("index")+"%"})),c.css("height",b.siblings("ul").outerHeight(!0)+c.data("height"))}}),e(b).off(".topbar").on("resize.fndtn.topbar",d.throttle(function(){d.resize.call(d)},50)).trigger("resize.fndtn.topbar").load(function(){e(this).trigger("resize.fndtn.topbar")}),e("body").off(".topbar").on("click.fndtn.topbar",function(a){var b=e(a.target).closest("li").closest("li.hover");b.length>0||e("["+d.attr_name()+"] li.hover").removeClass("hover")}),e(this.scope).on("click.fndtn.topbar","["+this.attr_name()+"] .has-dropdown .back",function(a){a.preventDefault();var b=e(this),c=b.closest("["+d.attr_name()+"]"),f=c.find("section, .top-bar-section"),g=(c.data(d.attr_name(!0)+"-init"),b.closest("li.moved")),h=g.parent();c.data("index",c.data("index")-1),d.rtl?(f.css({right:-(100*c.data("index"))+"%"}),f.find(">.name").css({right:100*c.data("index")+"%"})):(f.css({left:-(100*c.data("index"))+"%"}),f.find(">.name").css({left:100*c.data("index")+"%"})),0===c.data("index")?c.css("height",""):c.css("height",h.outerHeight(!0)+c.data("height")),setTimeout(function(){g.removeClass("moved")},300)}),e(this.scope).find(".dropdown a").focus(function(){a(this).parents(".has-dropdown").addClass("hover")}).blur(function(){a(this).parents(".has-dropdown").removeClass("hover")})},resize:function(){var a=this;a.S("["+this.attr_name()+"]").each(function(){var b,d=a.S(this),e=d.data(a.attr_name(!0)+"-init"),f=d.parent("."+a.settings.sticky_class);if(!a.breakpoint()){var g=d.hasClass("expanded");d.css("height","").removeClass("expanded").find("li").removeClass("hover"),g&&a.toggle(d)}a.is_sticky(d,f,e)&&(f.hasClass("fixed")?(f.removeClass("fixed"),b=f.offset().top,a.S(c.body).hasClass("f-topbar-fixed")&&(b-=d.data("height")),d.data("stickyoffset",b),f.addClass("fixed")):(b=f.offset().top,d.data("stickyoffset",b)))})},breakpoint:function(){return!matchMedia(Foundation.media_queries.topbar).matches},small:function(){return matchMedia(Foundation.media_queries.small).matches},medium:function(){return matchMedia(Foundation.media_queries.medium).matches},large:function(){return matchMedia(Foundation.media_queries.large).matches},assemble:function(b){var c=this,d=b.data(this.attr_name(!0)+"-init"),e=c.S("section, .top-bar-section",b);e.detach(),c.S(".has-dropdown>a",e).each(function(){var b,e=c.S(this),f=e.siblings(".dropdown"),g=e.attr("href");f.find(".title.back").length||(b=a(1==d.mobile_show_parent_link&&g?'<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="'+g+'">'+e.html()+"</a></li>":'<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>'),1==d.custom_back_text?a("h5>a",b).html(d.back_text):a("h5>a",b).html("&laquo; "+e.html()),f.prepend(b))}),e.appendTo(b),this.sticky(),this.assembled(b)},assembled:function(b){b.data(this.attr_name(!0),a.extend({},b.data(this.attr_name(!0)),{assembled:!0}))},height:function(b){var c=0,d=this;return a("> li",b).each(function(){c+=d.S(this).outerHeight(!0)}),c},sticky:function(){var a=this;this.S(b).on("scroll",function(){a.update_sticky_positioning()})},update_sticky_positioning:function(){var a="."+this.settings.sticky_class,c=this.S(b),d=this;if(d.settings.sticky_topbar&&d.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(),this.settings)){var e=this.settings.sticky_topbar.data("stickyoffset")+this.settings.start_offset;d.S(a).hasClass("expanded")||(c.scrollTop()>e?d.S(a).hasClass("fixed")||(d.S(a).addClass("fixed"),d.S("body").addClass("f-topbar-fixed")):c.scrollTop()<=e&&d.S(a).hasClass("fixed")&&(d.S(a).removeClass("fixed"),d.S("body").removeClass("f-topbar-fixed")))}},off:function(){this.S(this.scope).off(".fndtn.topbar"),this.S(b).off(".fndtn.topbar")},reflow:function(){}}}(jQuery,window,window.document);
\ No newline at end of file
diff --git a/js/foundation/js/foundation/foundation.abide.js b/js/foundation/js/foundation/foundation.abide.js
new file mode 100644 (file)
index 0000000..82ea787
--- /dev/null
@@ -0,0 +1,426 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.abide = {
+    name : 'abide',
+
+    version : '5.5.3',
+
+    settings : {
+      live_validate : true, // validate the form as you go
+      validate_on_blur : true, // validate whenever you focus/blur on an input field
+      // validate_on: 'tab', // tab (when user tabs between fields), change (input changes), manual (call custom events)
+
+      focus_on_invalid : true, // automatically bring the focus to an invalid input field
+      error_labels : true, // labels with a for="inputId" will receive an `error` class
+      error_class : 'error', // labels with a for="inputId" will receive an `error` class
+      // the amount of time Abide will take before it validates the form (in ms).
+      // smaller time will result in faster validation
+      timeout : 1000,
+      patterns : {
+        alpha : /^[a-zA-Z]+$/,
+        alpha_numeric : /^[a-zA-Z0-9]+$/,
+        integer : /^[-+]?\d+$/,
+        number : /^[-+]?\d*(?:[\.\,]\d+)?$/,
+
+        // amex, visa, diners
+        card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
+        cvv : /^([0-9]){3,4}$/,
+
+        // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
+        email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
+
+        // http://blogs.lse.ac.uk/lti/2008/04/23/a-regular-expression-to-match-any-url/
+        url: /^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/,
+        // abc.de
+        domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
+
+        datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
+        // YYYY-MM-DD
+        date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
+        // HH:MM:SS
+        time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
+        dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
+        // MM/DD/YYYY
+        month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
+        // DD/MM/YYYY
+        day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
+
+        // #FFF or #FFFFFF
+        color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
+      },
+      validators : {
+        equalTo : function (el, required, parent) {
+          var from  = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
+              to    = el.value,
+              valid = (from === to);
+
+          return valid;
+        }
+      }
+    },
+
+    timer : null,
+
+    init : function (scope, method, options) {
+      this.bindings(method, options);
+    },
+
+    events : function (scope) {
+      var self = this,
+          form = self.S(scope).attr('novalidate', 'novalidate'),
+          settings = form.data(this.attr_name(true) + '-init') || {};
+
+      this.invalid_attr = this.add_namespace('data-invalid');
+
+      function validate(originalSelf, e) {
+        clearTimeout(self.timer);
+        self.timer = setTimeout(function () {
+          self.validate([originalSelf], e);
+        }.bind(originalSelf), settings.timeout);
+      }
+
+      form
+        .off('.abide')
+        .on('submit.fndtn.abide', function (e) {
+          var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));
+          return self.validate(self.S(this).find('input, textarea, select').not(":hidden, [data-abide-ignore]").get(), e, is_ajax);
+        })
+        .on('validate.fndtn.abide', function (e) {
+          if (settings.validate_on === 'manual') {
+            self.validate([e.target], e);
+          }
+        })
+        .on('reset', function (e) {
+          return self.reset($(this), e);
+        })
+        .find('input, textarea, select').not(":hidden, [data-abide-ignore]")
+          .off('.abide')
+          .on('blur.fndtn.abide change.fndtn.abide', function (e) {
+              var id = this.getAttribute('id'),
+                  eqTo = form.find('[data-equalto="'+ id +'"]');
+            // old settings fallback
+            // will be deprecated with F6 release
+            if (settings.validate_on_blur && settings.validate_on_blur === true) {
+              validate(this, e);
+            }
+            // checks if there is an equalTo equivalent related by id
+            if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
+              validate(eqTo.get(0),e);
+            }
+            // new settings combining validate options into one setting
+            if (settings.validate_on === 'change') {
+              validate(this, e);
+            }
+          })
+          .on('keydown.fndtn.abide', function (e) {
+            var id = this.getAttribute('id'),
+                eqTo = form.find('[data-equalto="'+ id +'"]');
+            // old settings fallback
+            // will be deprecated with F6 release
+            if (settings.live_validate && settings.live_validate === true && e.which != 9) {
+              validate(this, e);
+            }
+            // checks if there is an equalTo equivalent related by id
+            if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
+              validate(eqTo.get(0),e);
+            }
+            // new settings combining validate options into one setting
+            if (settings.validate_on === 'tab' && e.which === 9) {
+              validate(this, e);
+            }
+            else if (settings.validate_on === 'change') {
+              validate(this, e);
+            }
+          })
+          .on('focus', function (e) {
+            if (navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)) {
+              $('html, body').animate({
+                  scrollTop: $(e.target).offset().top
+              }, 100);
+            }
+          });
+    },
+
+    reset : function (form, e) {
+      var self = this;
+      form.removeAttr(self.invalid_attr);
+
+      $('[' + self.invalid_attr + ']', form).removeAttr(self.invalid_attr);
+      $('.' + self.settings.error_class, form).not('small').removeClass(self.settings.error_class);
+      $(':input', form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr(self.invalid_attr);
+    },
+
+    validate : function (els, e, is_ajax) {
+      var validations = this.parse_patterns(els),
+          validation_count = validations.length,
+          form = this.S(els[0]).closest('form'),
+          submit_event = /submit/.test(e.type);
+
+      // Has to count up to make sure the focus gets applied to the top error
+      for (var i = 0; i < validation_count; i++) {
+        if (!validations[i] && (submit_event || is_ajax)) {
+          if (this.settings.focus_on_invalid) {
+            els[i].focus();
+          }
+          form.trigger('invalid.fndtn.abide');
+          this.S(els[i]).closest('form').attr(this.invalid_attr, '');
+          return false;
+        }
+      }
+
+      if (submit_event || is_ajax) {
+        form.trigger('valid.fndtn.abide');
+      }
+
+      form.removeAttr(this.invalid_attr);
+
+      if (is_ajax) {
+        return false;
+      }
+
+      return true;
+    },
+
+    parse_patterns : function (els) {
+      var i = els.length,
+          el_patterns = [];
+
+      while (i--) {
+        el_patterns.push(this.pattern(els[i]));
+      }
+
+      return this.check_validation_and_apply_styles(el_patterns);
+    },
+
+    pattern : function (el) {
+      var type = el.getAttribute('type'),
+          required = typeof el.getAttribute('required') === 'string';
+
+      var pattern = el.getAttribute('pattern') || '';
+
+      if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {
+        return [el, this.settings.patterns[pattern], required];
+      } else if (pattern.length > 0) {
+        return [el, new RegExp(pattern), required];
+      }
+
+      if (this.settings.patterns.hasOwnProperty(type)) {
+        return [el, this.settings.patterns[type], required];
+      }
+
+      pattern = /.*/;
+
+      return [el, pattern, required];
+    },
+
+    // TODO: Break this up into smaller methods, getting hard to read.
+    check_validation_and_apply_styles : function (el_patterns) {
+      var i = el_patterns.length,
+          validations = [];
+      if (i == 0) {
+        return validations;
+      }
+      var form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
+          settings = form.data(this.attr_name(true) + '-init') || {};
+      while (i--) {
+        var el = el_patterns[i][0],
+            required = el_patterns[i][2],
+            value = el.value.trim(),
+            direct_parent = this.S(el).parent(),
+            validator = el.getAttribute(this.add_namespace('data-abide-validator')),
+            is_radio = el.type === 'radio',
+            is_checkbox = el.type === 'checkbox',
+            label = this.S('label[for="' + el.getAttribute('id') + '"]'),
+            valid_length = (required) ? (el.value.length > 0) : true,
+            el_validations = [];
+
+        var parent, valid;
+
+        // support old way to do equalTo validations
+        if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' }
+
+        if (!direct_parent.is('label')) {
+          parent = direct_parent;
+        } else {
+          parent = direct_parent.parent();
+        }
+
+        if (is_radio && required) {
+          el_validations.push(this.valid_radio(el, required));
+        } else if (is_checkbox && required) {
+          el_validations.push(this.valid_checkbox(el, required));
+
+        } else if (validator) {
+          // Validate using each of the specified (space-delimited) validators.
+          var validators = validator.split(' ');
+          var last_valid = true, all_valid = true;
+          for (var iv = 0; iv < validators.length; iv++) {
+              valid = this.settings.validators[validators[iv]].apply(this, [el, required, parent])
+              el_validations.push(valid);
+              all_valid = valid && last_valid;
+              last_valid = valid;
+          }
+          if (all_valid) {
+              this.S(el).removeAttr(this.invalid_attr);
+              parent.removeClass('error');
+              if (label.length > 0 && this.settings.error_labels) {
+                label.removeClass(this.settings.error_class).removeAttr('role');
+              }
+              $(el).triggerHandler('valid');
+          } else {
+              this.S(el).attr(this.invalid_attr, '');
+              parent.addClass('error');
+              if (label.length > 0 && this.settings.error_labels) {
+                label.addClass(this.settings.error_class).attr('role', 'alert');
+              }
+              $(el).triggerHandler('invalid');
+          }
+        } else {
+
+          if (el_patterns[i][1].test(value) && valid_length ||
+            !required && el.value.length < 1 || $(el).attr('disabled')) {
+            el_validations.push(true);
+          } else {
+            el_validations.push(false);
+          }
+
+          el_validations = [el_validations.every(function (valid) {return valid;})];
+          if (el_validations[0]) {
+            this.S(el).removeAttr(this.invalid_attr);
+            el.setAttribute('aria-invalid', 'false');
+            el.removeAttribute('aria-describedby');
+            parent.removeClass(this.settings.error_class);
+            if (label.length > 0 && this.settings.error_labels) {
+              label.removeClass(this.settings.error_class).removeAttr('role');
+            }
+            $(el).triggerHandler('valid');
+          } else {
+            this.S(el).attr(this.invalid_attr, '');
+            el.setAttribute('aria-invalid', 'true');
+
+            // Try to find the error associated with the input
+            var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class);
+            var errorID = errorElem.length > 0 ? errorElem[0].id : '';
+            if (errorID.length > 0) {
+              el.setAttribute('aria-describedby', errorID);
+            }
+
+            // el.setAttribute('aria-describedby', $(el).find('.error')[0].id);
+            parent.addClass(this.settings.error_class);
+            if (label.length > 0 && this.settings.error_labels) {
+              label.addClass(this.settings.error_class).attr('role', 'alert');
+            }
+            $(el).triggerHandler('invalid');
+          }
+        }
+        validations = validations.concat(el_validations);
+      }
+
+      return validations;
+    },
+
+    valid_checkbox : function (el, required) {
+      var el = this.S(el),
+          valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled'));
+
+      if (valid) {
+        el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+        $(el).triggerHandler('valid');
+      } else {
+        el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+        $(el).triggerHandler('invalid');
+      }
+
+      return valid;
+    },
+
+    valid_radio : function (el, required) {
+      var name = el.getAttribute('name'),
+          group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"),
+          count = group.length,
+          valid = false,
+          disabled = false;
+
+      // Has to count up to make sure the focus gets applied to the top error
+      for (var i=0; i < count; i++) {
+        if( group[i].getAttribute('disabled') ){
+          disabled=true;
+          valid=true;
+        } else {
+          if (group[i].checked){
+            valid = true;
+          } else {
+            if( disabled ){
+              valid = false;
+            }
+          }
+        }
+      }
+
+      // Has to count up to make sure the focus gets applied to the top error
+      for (var i = 0; i < count; i++) {
+        if (valid) {
+          this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+          $(group[i]).triggerHandler('valid');
+        } else {
+          this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+          $(group[i]).triggerHandler('invalid');
+        }
+      }
+
+      return valid;
+    },
+
+    valid_equal : function (el, required, parent) {
+      var from  = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
+          to    = el.value,
+          valid = (from === to);
+
+      if (valid) {
+        this.S(el).removeAttr(this.invalid_attr);
+        parent.removeClass(this.settings.error_class);
+        if (label.length > 0 && settings.error_labels) {
+          label.removeClass(this.settings.error_class);
+        }
+      } else {
+        this.S(el).attr(this.invalid_attr, '');
+        parent.addClass(this.settings.error_class);
+        if (label.length > 0 && settings.error_labels) {
+          label.addClass(this.settings.error_class);
+        }
+      }
+
+      return valid;
+    },
+
+    valid_oneof : function (el, required, parent, doNotValidateOthers) {
+      var el = this.S(el),
+        others = this.S('[' + this.add_namespace('data-oneof') + ']'),
+        valid = others.filter(':checked').length > 0;
+
+      if (valid) {
+        el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+      } else {
+        el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+      }
+
+      if (!doNotValidateOthers) {
+        var _this = this;
+        others.each(function () {
+          _this.valid_oneof.call(_this, this, null, null, true);
+        });
+      }
+
+      return valid;
+    },
+
+    reflow : function(scope, options) {
+      var self = this,
+          form = self.S('[' + this.attr_name() + ']').attr('novalidate', 'novalidate');
+          self.S(form).each(function (idx, el) {
+            self.events(el);
+          });
+    }
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.accordion.js b/js/foundation/js/foundation/foundation.accordion.js
new file mode 100644 (file)
index 0000000..be329ae
--- /dev/null
@@ -0,0 +1,125 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.accordion = {
+    name : 'accordion',
+
+    version : '5.5.3',
+
+    settings : {
+      content_class : 'content',
+      active_class : 'active',
+      multi_expand : false,
+      toggleable : true,
+      callback : function () {}
+    },
+
+    init : function (scope, method, options) {
+      this.bindings(method, options);
+    },
+
+    events : function (instance) {
+      var self = this;
+      var S = this.S;
+      self.create(this.S(instance));
+
+      S(this.scope)
+      .off('.fndtn.accordion')
+      .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a, [' + this.attr_name() + '] > li > a', function (e) {
+        var accordion = S(this).closest('[' + self.attr_name() + ']'),
+            groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()),
+            settings = accordion.data(self.attr_name(true) + '-init') || self.settings,
+            target = S('#' + this.href.split('#')[1]),
+            aunts = $('> dd, > li', accordion),
+            siblings = aunts.children('.' + settings.content_class),
+            active_content = siblings.filter('.' + settings.active_class);
+
+        e.preventDefault();
+
+        if (accordion.attr(self.attr_name())) {
+          siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class + ', [' + groupSelector + '] li > ' + '.' + settings.content_class);
+          aunts = aunts.add('[' + groupSelector + '] dd, [' + groupSelector + '] li');
+        }
+
+        if (settings.toggleable && target.is(active_content)) {
+          target.parent('dd, li').toggleClass(settings.active_class, false);
+          target.toggleClass(settings.active_class, false);
+          S(this).attr('aria-expanded', function(i, attr){
+              return attr === 'true' ? 'false' : 'true';
+          });
+          settings.callback(target);
+          target.triggerHandler('toggled', [accordion]);
+          accordion.triggerHandler('toggled', [target]);
+          return;
+        }
+
+        if (!settings.multi_expand) {
+          siblings.removeClass(settings.active_class);
+          aunts.removeClass(settings.active_class);
+          aunts.children('a').attr('aria-expanded','false');
+        }
+
+        target.addClass(settings.active_class).parent().addClass(settings.active_class);
+        settings.callback(target);
+        target.triggerHandler('toggled', [accordion]);
+        accordion.triggerHandler('toggled', [target]);
+        S(this).attr('aria-expanded','true');
+      });
+    },
+
+    create: function($instance) {
+      var self = this,
+          accordion = $instance,
+          aunts = $('> .accordion-navigation', accordion),
+          settings = accordion.data(self.attr_name(true) + '-init') || self.settings;
+
+      aunts.children('a').attr('aria-expanded','false');
+      aunts.has('.' + settings.content_class + '.' + settings.active_class).addClass(settings.active_class).children('a').attr('aria-expanded','true');
+
+      if (settings.multi_expand) {
+        $instance.attr('aria-multiselectable','true');
+      }
+    },
+       
+       toggle : function(options) {
+               var options = typeof options !== 'undefined' ? options : {};
+               var selector = typeof options.selector !== 'undefined' ? options.selector : '';
+               var toggle_state = typeof options.toggle_state !== 'undefined' ? options.toggle_state : '';
+               var $accordion = typeof options.$accordion !== 'undefined' ? options.$accordion : this.S(this.scope).closest('[' + this.attr_name() + ']');
+  
+               var $items = $accordion.find('> dd' + selector + ', > li' + selector);
+               if ( $items.length < 1 ) {
+                       if ( window.console ) {
+                               console.error('Selection not found.', selector);
+                       }
+                       return false;
+               }
+  
+               var S = this.S;
+               var active_class = this.settings.active_class;
+               $items.each(function() {
+                       var $item = S(this);
+                       var is_active = $item.hasClass(active_class);
+                       if ( ( is_active && toggle_state === 'close' ) || ( !is_active && toggle_state === 'open' ) || toggle_state === '' ) {
+                               $item.find('> a').trigger('click.fndtn.accordion');
+                       }
+               });
+       },
+  
+       open : function(options) {
+               var options = typeof options !== 'undefined' ? options : {};
+               options.toggle_state = 'open';
+               this.toggle(options);
+       },
+  
+       close : function(options) {
+               var options = typeof options !== 'undefined' ? options : {};
+               options.toggle_state = 'close';
+               this.toggle(options);
+       },      
+
+    off : function () {},
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.alert.js b/js/foundation/js/foundation/foundation.alert.js
new file mode 100644 (file)
index 0000000..0ab934c
--- /dev/null
@@ -0,0 +1,43 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.alert = {
+    name : 'alert',
+
+    version : '5.5.3',
+
+    settings : {
+      callback : function () {}
+    },
+
+    init : function (scope, method, options) {
+      this.bindings(method, options);
+    },
+
+    events : function () {
+      var self = this,
+          S = this.S;
+
+      $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) {
+        var alertBox = S(this).closest('[' + self.attr_name() + ']'),
+            settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;
+
+        e.preventDefault();
+        if (Modernizr.csstransitions) {
+          alertBox.addClass('alert-close');
+          alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) {
+            S(this).trigger('close.fndtn.alert').remove();
+            settings.callback();
+          });
+        } else {
+          alertBox.fadeOut(300, function () {
+            S(this).trigger('close.fndtn.alert').remove();
+            settings.callback();
+          });
+        }
+      });
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.clearing.js b/js/foundation/js/foundation/foundation.clearing.js
new file mode 100644 (file)
index 0000000..f63ff91
--- /dev/null
@@ -0,0 +1,586 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.clearing = {
+    name : 'clearing',
+
+    version : '5.5.3',
+
+    settings : {
+      templates : {
+        viewing : '<a href="#" class="clearing-close">&times;</a>' +
+          '<div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
+          '<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' +
+          '<a href="#" class="clearing-main-next"><span></span></a></div>' +
+          '<img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
+          '<img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />'
+      },
+
+      // comma delimited list of selectors that, on click, will close clearing,
+      // add 'div.clearing-blackout, div.visible-img' to close on background click
+      close_selectors : '.clearing-close, div.clearing-blackout',
+
+      // Default to the entire li element.
+      open_selectors : '',
+
+      // Image will be skipped in carousel.
+      skip_selector : '',
+
+      touch_label : '',
+
+      // event initializer and locks
+      init : false,
+      locked : false
+    },
+
+    init : function (scope, method, options) {
+      var self = this;
+      Foundation.inherit(this, 'throttle image_loaded');
+
+      this.bindings(method, options);
+
+      if (self.S(this.scope).is('[' + this.attr_name() + ']')) {
+        this.assemble(self.S('li', this.scope));
+      } else {
+        self.S('[' + this.attr_name() + ']', this.scope).each(function () {
+          self.assemble(self.S('li', this));
+        });
+      }
+    },
+
+    events : function (scope) {
+      var self = this,
+          S = self.S,
+          $scroll_container = $('.scroll-container');
+
+      if ($scroll_container.length > 0) {
+        this.scope = $scroll_container;
+      }
+
+      S(this.scope)
+        .off('.clearing')
+        .on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors,
+          function (e, current, target) {
+            var current = current || S(this),
+                target = target || current,
+                next = current.next('li'),
+                settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'),
+                image = S(e.target);
+
+            e.preventDefault();
+
+            if (!settings) {
+              self.init();
+              settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+            }
+
+            // if clearing is open and the current image is
+            // clicked, go to the next image in sequence
+            if (target.hasClass('visible') &&
+              current[0] === target[0] &&
+              next.length > 0 && self.is_open(current)) {
+              target = next;
+              image = S('img', target);
+            }
+
+            // set current and target to the clicked li if not otherwise defined.
+            self.open(image, current, target);
+            self.update_paddles(target);
+          })
+
+        .on('click.fndtn.clearing', '.clearing-main-next',
+          function (e) { self.nav(e, 'next') })
+        .on('click.fndtn.clearing', '.clearing-main-prev',
+          function (e) { self.nav(e, 'prev') })
+        .on('click.fndtn.clearing', this.settings.close_selectors,
+          function (e) { Foundation.libs.clearing.close(e, this) });
+
+      $(document).on('keydown.fndtn.clearing',
+          function (e) { self.keydown(e) });
+
+      S(window).off('.clearing').on('resize.fndtn.clearing',
+        function () { self.resize() });
+
+      this.swipe_events(scope);
+    },
+
+    swipe_events : function (scope) {
+      var self = this,
+      S = self.S;
+
+      S(this.scope)
+        .on('touchstart.fndtn.clearing', '.visible-img', function (e) {
+          if (!e.touches) { e = e.originalEvent; }
+          var data = {
+                start_page_x : e.touches[0].pageX,
+                start_page_y : e.touches[0].pageY,
+                start_time : (new Date()).getTime(),
+                delta_x : 0,
+                is_scrolling : undefined
+              };
+
+          S(this).data('swipe-transition', data);
+          e.stopPropagation();
+        })
+        .on('touchmove.fndtn.clearing', '.visible-img', function (e) {
+          if (!e.touches) {
+            e = e.originalEvent;
+          }
+          // Ignore pinch/zoom events
+          if (e.touches.length > 1 || e.scale && e.scale !== 1) {
+            return;
+          }
+
+          var data = S(this).data('swipe-transition');
+
+          if (typeof data === 'undefined') {
+            data = {};
+          }
+
+          data.delta_x = e.touches[0].pageX - data.start_page_x;
+
+          if (Foundation.rtl) {
+            data.delta_x = -data.delta_x;
+          }
+
+          if (typeof data.is_scrolling === 'undefined') {
+            data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
+          }
+
+          if (!data.is_scrolling && !data.active) {
+            e.preventDefault();
+            var direction = (data.delta_x < 0) ? 'next' : 'prev';
+            data.active = true;
+            self.nav(e, direction);
+          }
+        })
+        .on('touchend.fndtn.clearing', '.visible-img', function (e) {
+          S(this).data('swipe-transition', {});
+          e.stopPropagation();
+        });
+    },
+
+    assemble : function ($li) {
+      var $el = $li.parent();
+
+      if ($el.parent().hasClass('carousel')) {
+        return;
+      }
+
+      $el.after('<div id="foundationClearingHolder"></div>');
+
+      var grid = $el.detach(),
+          grid_outerHTML = '';
+
+      if (grid[0] == null) {
+        return;
+      } else {
+        grid_outerHTML = grid[0].outerHTML;
+      }
+
+      var holder = this.S('#foundationClearingHolder'),
+          settings = $el.data(this.attr_name(true) + '-init'),
+          data = {
+            grid : '<div class="carousel">' + grid_outerHTML + '</div>',
+            viewing : settings.templates.viewing
+          },
+          wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
+            data.grid + '</div></div>',
+          touch_label = this.settings.touch_label;
+
+      if (Modernizr.touch) {
+        wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end();
+      }
+
+      holder.after(wrapper).remove();
+    },
+
+    open : function ($image, current, target) {
+      var self = this,
+          body = $(document.body),
+          root = target.closest('.clearing-assembled'),
+          container = self.S('div', root).first(),
+          visible_image = self.S('.visible-img', container),
+          image = self.S('img', visible_image).not($image),
+          label = self.S('.clearing-touch-label', container),
+          error = false,
+          loaded = {};
+
+      // Event to disable scrolling on touch devices when Clearing is activated
+      $('body').on('touchmove', function (e) {
+        e.preventDefault();
+      });
+
+      image.error(function () {
+        error = true;
+      });
+
+      function startLoad() {
+        setTimeout(function () {
+          this.image_loaded(image, function () {
+            if (image.outerWidth() === 1 && !error) {
+              startLoad.call(this);
+            } else {
+              cb.call(this, image);
+            }
+          }.bind(this));
+        }.bind(this), 100);
+      }
+
+      function cb (image) {
+        var $image = $(image);
+        $image.css('visibility', 'visible');
+        $image.trigger('imageVisible');
+        // toggle the gallery
+        body.css('overflow', 'hidden');
+        root.addClass('clearing-blackout');
+        container.addClass('clearing-container');
+        visible_image.show();
+        this.fix_height(target)
+          .caption(self.S('.clearing-caption', visible_image), self.S('img', target))
+          .center_and_label(image, label)
+          .shift(current, target, function () {
+            target.closest('li').siblings().removeClass('visible');
+            target.closest('li').addClass('visible');
+          });
+        visible_image.trigger('opened.fndtn.clearing')
+      }
+
+      if (!this.locked()) {
+        visible_image.trigger('open.fndtn.clearing');
+        // set the image to the selected thumbnail
+        loaded = this.load($image);
+        if (loaded.interchange) {
+          image
+            .attr('data-interchange', loaded.interchange)
+            .foundation('interchange', 'reflow');
+        } else {
+          image
+            .attr('src', loaded.src)
+            .attr('data-interchange', '');
+        }
+        image.css('visibility', 'hidden');
+
+        startLoad.call(this);
+      }
+    },
+
+    close : function (e, el) {
+      e.preventDefault();
+
+      var root = (function (target) {
+            if (/blackout/.test(target.selector)) {
+              return target;
+            } else {
+              return target.closest('.clearing-blackout');
+            }
+          }($(el))),
+          body = $(document.body), container, visible_image;
+
+      if (el === e.target && root) {
+        body.css('overflow', '');
+        container = $('div', root).first();
+        visible_image = $('.visible-img', container);
+        visible_image.trigger('close.fndtn.clearing');
+        this.settings.prev_index = 0;
+        $('ul[' + this.attr_name() + ']', root)
+          .attr('style', '').closest('.clearing-blackout')
+          .removeClass('clearing-blackout');
+        container.removeClass('clearing-container');
+        visible_image.hide();
+        visible_image.trigger('closed.fndtn.clearing');
+      }
+
+      // Event to re-enable scrolling on touch devices
+      $('body').off('touchmove');
+
+      return false;
+    },
+
+    is_open : function (current) {
+      return current.parent().prop('style').length > 0;
+    },
+
+    keydown : function (e) {
+      var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'),
+          NEXT_KEY = this.rtl ? 37 : 39,
+          PREV_KEY = this.rtl ? 39 : 37,
+          ESC_KEY = 27;
+
+      if (e.which === NEXT_KEY) {
+        this.go(clearing, 'next');
+      }
+      if (e.which === PREV_KEY) {
+        this.go(clearing, 'prev');
+      }
+      if (e.which === ESC_KEY) {
+        this.S('a.clearing-close').trigger('click.fndtn.clearing');
+      }
+    },
+
+    nav : function (e, direction) {
+      var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout');
+
+      e.preventDefault();
+      this.go(clearing, direction);
+    },
+
+    resize : function () {
+      var image = $('img', '.clearing-blackout .visible-img'),
+          label = $('.clearing-touch-label', '.clearing-blackout');
+
+      if (image.length) {
+        this.center_and_label(image, label);
+        image.trigger('resized.fndtn.clearing')
+      }
+    },
+
+    // visual adjustments
+    fix_height : function (target) {
+      var lis = target.parent().children(),
+          self = this;
+
+      lis.each(function () {
+        var li = self.S(this),
+            image = li.find('img');
+
+        if (li.height() > image.outerHeight()) {
+          li.addClass('fix-height');
+        }
+      })
+      .closest('ul')
+      .width(lis.length * 100 + '%');
+
+      return this;
+    },
+
+    update_paddles : function (target) {
+      target = target.closest('li');
+      var visible_image = target
+        .closest('.carousel')
+        .siblings('.visible-img');
+
+      if (target.next().length > 0) {
+        this.S('.clearing-main-next', visible_image).removeClass('disabled');
+      } else {
+        this.S('.clearing-main-next', visible_image).addClass('disabled');
+      }
+
+      if (target.prev().length > 0) {
+        this.S('.clearing-main-prev', visible_image).removeClass('disabled');
+      } else {
+        this.S('.clearing-main-prev', visible_image).addClass('disabled');
+      }
+    },
+
+    center_and_label : function (target, label) {
+      if (!this.rtl && label.length > 0) {
+        label.css({
+          marginLeft : -(label.outerWidth() / 2),
+          marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10
+        });
+      } else {
+        label.css({
+          marginRight : -(label.outerWidth() / 2),
+          marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10,
+          left: 'auto',
+          right: '50%'
+        });
+      }
+      return this;
+    },
+
+    // image loading and preloading
+
+    load : function ($image) {
+      var href,
+          interchange,
+          closest_a;
+
+      if ($image[0].nodeName === 'A') {
+        href = $image.attr('href');
+        interchange = $image.data('clearing-interchange');
+      } else {
+        closest_a = $image.closest('a');
+        href = closest_a.attr('href');
+        interchange = closest_a.data('clearing-interchange');
+      }
+
+      this.preload($image);
+
+      return {
+        'src': href ? href : $image.attr('src'),
+        'interchange': href ? interchange : $image.data('clearing-interchange')
+      }
+    },
+
+    preload : function ($image) {
+      this
+        .img($image.closest('li').next(), 'next')
+        .img($image.closest('li').prev(), 'prev');
+    },
+
+    img : function (img, sibling_type) {
+      if (img.length) {
+        var preload_img = $('.clearing-preload-' + sibling_type),
+            new_a = this.S('a', img),
+            src,
+            interchange,
+            image;
+
+        if (new_a.length) {
+          src = new_a.attr('href');
+          interchange = new_a.data('clearing-interchange');
+        } else {
+          image = this.S('img', img);
+          src = image.attr('src');
+          interchange = image.data('clearing-interchange');
+        }
+
+        if (interchange) {
+          preload_img.attr('data-interchange', interchange);
+        } else {
+          preload_img.attr('src', src);
+          preload_img.attr('data-interchange', '');
+        }
+      }
+      return this;
+    },
+
+    // image caption
+
+    caption : function (container, $image) {
+      var caption = $image.attr('data-caption');
+
+      if (caption) {
+       var containerPlain = container.get(0);
+       containerPlain.innerHTML = caption;
+        container.show();
+      } else {
+        container
+          .text('')
+          .hide();
+      }
+      return this;
+    },
+
+    // directional methods
+
+    go : function ($ul, direction) {
+      var current = this.S('.visible', $ul),
+          target = current[direction]();
+
+      // Check for skip selector.
+      if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) {
+        target = target[direction]();
+      }
+
+      if (target.length) {
+        this.S('img', target)
+          .trigger('click.fndtn.clearing', [current, target])
+          .trigger('change.fndtn.clearing');
+      }
+    },
+
+    shift : function (current, target, callback) {
+      var clearing = target.parent(),
+          old_index = this.settings.prev_index || target.index(),
+          direction = this.direction(clearing, current, target),
+          dir = this.rtl ? 'right' : 'left',
+          left = parseInt(clearing.css('left'), 10),
+          width = target.outerWidth(),
+          skip_shift;
+
+      var dir_obj = {};
+
+      // we use jQuery animate instead of CSS transitions because we
+      // need a callback to unlock the next animation
+      // needs support for RTL **
+      if (target.index() !== old_index && !/skip/.test(direction)) {
+        if (/left/.test(direction)) {
+          this.lock();
+          dir_obj[dir] = left + width;
+          clearing.animate(dir_obj, 300, this.unlock());
+        } else if (/right/.test(direction)) {
+          this.lock();
+          dir_obj[dir] = left - width;
+          clearing.animate(dir_obj, 300, this.unlock());
+        }
+      } else if (/skip/.test(direction)) {
+        // the target image is not adjacent to the current image, so
+        // do we scroll right or not
+        skip_shift = target.index() - this.settings.up_count;
+        this.lock();
+
+        if (skip_shift > 0) {
+          dir_obj[dir] = -(skip_shift * width);
+          clearing.animate(dir_obj, 300, this.unlock());
+        } else {
+          dir_obj[dir] = 0;
+          clearing.animate(dir_obj, 300, this.unlock());
+        }
+      }
+
+      callback();
+    },
+
+    direction : function ($el, current, target) {
+      var lis = this.S('li', $el),
+          li_width = lis.outerWidth() + (lis.outerWidth() / 4),
+          up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1,
+          target_index = lis.index(target),
+          response;
+
+      this.settings.up_count = up_count;
+
+      if (this.adjacent(this.settings.prev_index, target_index)) {
+        if ((target_index > up_count) && target_index > this.settings.prev_index) {
+          response = 'right';
+        } else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) {
+          response = 'left';
+        } else {
+          response = false;
+        }
+      } else {
+        response = 'skip';
+      }
+
+      this.settings.prev_index = target_index;
+
+      return response;
+    },
+
+    adjacent : function (current_index, target_index) {
+      for (var i = target_index + 1; i >= target_index - 1; i--) {
+        if (i === current_index) {
+          return true;
+        }
+      }
+      return false;
+    },
+
+    // lock management
+
+    lock : function () {
+      this.settings.locked = true;
+    },
+
+    unlock : function () {
+      this.settings.locked = false;
+    },
+
+    locked : function () {
+      return this.settings.locked;
+    },
+
+    off : function () {
+      this.S(this.scope).off('.fndtn.clearing');
+      this.S(window).off('.fndtn.clearing');
+    },
+
+    reflow : function () {
+      this.init();
+    }
+  };
+
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.dropdown.js b/js/foundation/js/foundation/foundation.dropdown.js
new file mode 100644 (file)
index 0000000..5db3dea
--- /dev/null
@@ -0,0 +1,468 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.dropdown = {
+    name : 'dropdown',
+
+    version : '5.5.3',
+
+    settings : {
+      active_class : 'open',
+      disabled_class : 'disabled',
+      mega_class : 'mega',
+      align : 'bottom',
+      is_hover : false,
+      hover_timeout : 150,
+      opened : function () {},
+      closed : function () {}
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle');
+
+      $.extend(true, this.settings, method, options);
+      this.bindings(method, options);
+    },
+
+    events : function (scope) {
+      var self = this,
+          S = self.S;
+
+      S(this.scope)
+        .off('.dropdown')
+        .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
+          var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
+          if (!settings.is_hover || Modernizr.touch) {
+            e.preventDefault();
+            if (S(this).parent('[data-reveal-id]').length) {
+              e.stopPropagation();
+            }
+            self.toggle($(this));
+          }
+        })
+        .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+          var $this = S(this),
+              dropdown,
+              target;
+
+          clearTimeout(self.timeout);
+
+          if ($this.data(self.data_attr())) {
+            dropdown = S('#' + $this.data(self.data_attr()));
+            target = $this;
+          } else {
+            dropdown = $this;
+            target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]');
+          }
+
+          var settings = target.data(self.attr_name(true) + '-init') || self.settings;
+
+          if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {
+            self.closeall.call(self);
+          }
+
+          if (settings.is_hover) {
+            self.open.apply(self, [dropdown, target]);
+          }
+        })
+        .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+          var $this = S(this);
+          var settings;
+
+          if ($this.data(self.data_attr())) {
+              settings = $this.data(self.data_attr(true) + '-init') || self.settings;
+          } else {
+              var target   = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
+                  settings = target.data(self.attr_name(true) + '-init') || self.settings;
+          }
+
+          self.timeout = setTimeout(function () {
+            if ($this.data(self.data_attr())) {
+              if (settings.is_hover) {
+                self.close.call(self, S('#' + $this.data(self.data_attr())));
+              }
+            } else {
+              if (settings.is_hover) {
+                self.close.call(self, $this);
+              }
+            }
+          }.bind(this), settings.hover_timeout);
+        })
+        .on('click.fndtn.dropdown', function (e) {
+          var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
+          var links  = parent.find('a');
+
+          if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {
+              self.close.call(self, S('[' + self.attr_name() + '-content]'));
+          }
+
+          if (e.target !== document && !$.contains(document.documentElement, e.target)) {
+            return;
+          }
+
+          if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {
+            return;
+          }
+
+          if (!(S(e.target).data('revealId')) &&
+            (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
+              $.contains(parent.first()[0], e.target)))) {
+            e.stopPropagation();
+            return;
+          }
+
+          self.close.call(self, S('[' + self.attr_name() + '-content]'));
+        })
+        .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+          self.settings.opened.call(this);
+        })
+        .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+          self.settings.closed.call(this);
+        });
+
+      S(window)
+        .off('.dropdown')
+        .on('resize.fndtn.dropdown', self.throttle(function () {
+          self.resize.call(self);
+        }, 50));
+
+      this.resize();
+    },
+
+    close : function (dropdown) {
+      var self = this;
+      dropdown.each(function (idx) {
+        var original_target = $('[' + self.attr_name() + '=' + dropdown[idx].id + ']') || $('aria-controls=' + dropdown[idx].id + ']');
+        original_target.attr('aria-expanded', 'false');
+        if (self.S(this).hasClass(self.settings.active_class)) {
+          self.S(this)
+            .css(Foundation.rtl ? 'right' : 'left', '-99999px')
+            .attr('aria-hidden', 'true')
+            .removeClass(self.settings.active_class)
+            .prev('[' + self.attr_name() + ']')
+            .removeClass(self.settings.active_class)
+            .removeData('target');
+
+          self.S(this).trigger('closed.fndtn.dropdown', [dropdown]);
+        }
+      });
+      dropdown.removeClass('f-open-' + this.attr_name(true));
+    },
+
+    closeall : function () {
+      var self = this;
+      $.each(self.S('.f-open-' + this.attr_name(true)), function () {
+        self.close.call(self, self.S(this));
+      });
+    },
+
+    open : function (dropdown, target) {
+      this
+        .css(dropdown
+        .addClass(this.settings.active_class), target);
+      dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
+      dropdown.data('target', target.get(0)).trigger('opened.fndtn.dropdown', [dropdown, target]);
+      dropdown.attr('aria-hidden', 'false');
+      target.attr('aria-expanded', 'true');
+      dropdown.focus();
+      dropdown.addClass('f-open-' + this.attr_name(true));
+    },
+
+    data_attr : function () {
+      if (this.namespace.length > 0) {
+        return this.namespace + '-' + this.name;
+      }
+
+      return this.name;
+    },
+
+    toggle : function (target) {
+      if (target.hasClass(this.settings.disabled_class)) {
+        return;
+      }
+      var dropdown = this.S('#' + target.data(this.data_attr()));
+      if (dropdown.length === 0) {
+        // No dropdown found, not continuing
+        return;
+      }
+
+      this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));
+
+      if (dropdown.hasClass(this.settings.active_class)) {
+        this.close.call(this, dropdown);
+        if (dropdown.data('target') !== target.get(0)) {
+          this.open.call(this, dropdown, target);
+        }
+      } else {
+        this.open.call(this, dropdown, target);
+      }
+    },
+
+    resize : function () {
+      var dropdown = this.S('[' + this.attr_name() + '-content].open');
+      var target = $(dropdown.data("target"));
+
+      if (dropdown.length && target.length) {
+        this.css(dropdown, target);
+      }
+    },
+
+    css : function (dropdown, target) {
+      var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),
+          settings = target.data(this.attr_name(true) + '-init') || this.settings,
+          parentOverflow = dropdown.parent().css('overflow-y') || dropdown.parent().css('overflow');
+
+      this.clear_idx();
+
+
+
+      if (this.small()) {
+        var p = this.dirs.bottom.call(dropdown, target, settings);
+
+        dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
+          position : 'absolute',
+          width : '95%',
+          'max-width' : 'none',
+          top : p.top
+        });
+
+        dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
+      }
+      // detect if dropdown is in an overflow container
+      else if (parentOverflow !== 'visible') {
+        var offset = target[0].offsetTop + target[0].offsetHeight;
+
+        dropdown.attr('style', '').css({
+          position : 'absolute',
+          top : offset
+        });
+
+        dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
+      }
+      else {
+
+        this.style(dropdown, target, settings);
+      }
+
+      return dropdown;
+    },
+
+    style : function (dropdown, target, settings) {
+      var css = $.extend({position : 'absolute'},
+        this.dirs[settings.align].call(dropdown, target, settings));
+
+      dropdown.attr('style', '').css(css);
+    },
+
+    // return CSS property object
+    // `this` is the dropdown
+    dirs : {
+      // Calculate target offset
+      _base : function (t, s) {
+        var o_p = this.offsetParent(),
+            o = o_p.offset(),
+            p = t.offset();
+
+        p.top -= o.top;
+        p.left -= o.left;
+
+        //set some flags on the p object to pass along
+        p.missRight = false;
+        p.missTop = false;
+        p.missLeft = false;
+        p.leftRightFlag = false;
+
+        //lets see if the panel will be off the screen
+        //get the actual width of the page and store it
+        var actualBodyWidth;
+        var windowWidth = window.innerWidth;
+        
+        if (document.getElementsByClassName('row')[0]) {
+          actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
+        } else {
+          actualBodyWidth = windowWidth;
+        }
+
+        var actualMarginWidth = (windowWidth - actualBodyWidth) / 2;
+        var actualBoundary = actualBodyWidth;
+
+        if (!this.hasClass('mega') && !s.ignore_repositioning) {
+          var outerWidth = this.outerWidth();
+          var o_left = t.offset().left;
+                 
+          //miss top
+          if (t.offset().top <= this.outerHeight()) {
+            p.missTop = true;
+            actualBoundary = windowWidth - actualMarginWidth;
+            p.leftRightFlag = true;
+          }
+
+          //miss right
+          if (o_left + outerWidth > o_left + actualMarginWidth && o_left - actualMarginWidth > outerWidth) {
+            p.missRight = true;
+            p.missLeft = false;
+          }
+
+          //miss left
+          if (o_left - outerWidth <= 0) {
+            p.missLeft = true;
+            p.missRight = false;
+          }
+        }
+
+        return p;
+      },
+
+      top : function (t, s) {
+        var self = Foundation.libs.dropdown,
+            p = self.dirs._base.call(this, t, s);
+
+        this.addClass('drop-top');
+
+        if (p.missTop == true) {
+          p.top = p.top + t.outerHeight() + this.outerHeight();
+          this.removeClass('drop-top');
+        }
+
+        if (p.missRight == true) {
+          p.left = p.left - this.outerWidth() + t.outerWidth();
+        }
+
+        if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+          self.adjust_pip(this, t, s, p);
+        }
+
+        if (Foundation.rtl) {
+          return {left : p.left - this.outerWidth() + t.outerWidth(),
+            top : p.top - this.outerHeight()};
+        }
+
+        return {left : p.left, top : p.top - this.outerHeight()};
+      },
+
+      bottom : function (t, s) {
+        var self = Foundation.libs.dropdown,
+            p = self.dirs._base.call(this, t, s);
+
+        if (p.missRight == true) {
+          p.left = p.left - this.outerWidth() + t.outerWidth();
+        }
+
+        if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+          self.adjust_pip(this, t, s, p);
+        }
+
+        if (self.rtl) {
+          return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};
+        }
+
+        return {left : p.left, top : p.top + t.outerHeight()};
+      },
+
+      left : function (t, s) {
+        var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
+
+        this.addClass('drop-left');
+
+        if (p.missLeft == true) {
+          p.left =  p.left + this.outerWidth();
+          p.top = p.top + t.outerHeight();
+          this.removeClass('drop-left');
+        }
+
+        return {left : p.left - this.outerWidth(), top : p.top};
+      },
+
+      right : function (t, s) {
+        var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
+
+        this.addClass('drop-right');
+
+        if (p.missRight == true) {
+          p.left = p.left - this.outerWidth();
+          p.top = p.top + t.outerHeight();
+          this.removeClass('drop-right');
+        } else {
+          p.triggeredRight = true;
+        }
+
+        var self = Foundation.libs.dropdown;
+
+        if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+          self.adjust_pip(this, t, s, p);
+        }
+
+        return {left : p.left + t.outerWidth(), top : p.top};
+      }
+    },
+
+    // Insert rule to style psuedo elements
+    adjust_pip : function (dropdown, target, settings, position) {
+      var sheet = Foundation.stylesheet,
+          pip_offset_base = 8;
+
+      if (dropdown.hasClass(settings.mega_class)) {
+        pip_offset_base = position.left + (target.outerWidth() / 2) - 8;
+      } else if (this.small()) {
+        pip_offset_base += position.left - 8;
+      }
+
+      this.rule_idx = sheet.cssRules.length;
+
+      //default
+      var sel_before = '.f-dropdown.open:before',
+          sel_after  = '.f-dropdown.open:after',
+          css_before = 'left: ' + pip_offset_base + 'px;',
+          css_after  = 'left: ' + (pip_offset_base - 1) + 'px;';
+
+      if (position.missRight == true) {
+        pip_offset_base = dropdown.outerWidth() - 23;
+        sel_before = '.f-dropdown.open:before',
+        sel_after  = '.f-dropdown.open:after',
+        css_before = 'left: ' + pip_offset_base + 'px;',
+        css_after  = 'left: ' + (pip_offset_base - 1) + 'px;';
+      }
+
+      //just a case where right is fired, but its not missing right
+      if (position.triggeredRight == true) {
+        sel_before = '.f-dropdown.open:before',
+        sel_after  = '.f-dropdown.open:after',
+        css_before = 'left:-12px;',
+        css_after  = 'left:-14px;';
+      }
+
+      if (sheet.insertRule) {
+        sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
+        sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
+      } else {
+        sheet.addRule(sel_before, css_before, this.rule_idx);
+        sheet.addRule(sel_after, css_after, this.rule_idx + 1);
+      }
+    },
+
+    // Remove old dropdown rule index
+    clear_idx : function () {
+      var sheet = Foundation.stylesheet;
+
+      if (typeof this.rule_idx !== 'undefined') {
+        sheet.deleteRule(this.rule_idx);
+        sheet.deleteRule(this.rule_idx);
+        delete this.rule_idx;
+      }
+    },
+
+    small : function () {
+      return matchMedia(Foundation.media_queries.small).matches &&
+        !matchMedia(Foundation.media_queries.medium).matches;
+    },
+
+    off : function () {
+      this.S(this.scope).off('.fndtn.dropdown');
+      this.S('html, body').off('.fndtn.dropdown');
+      this.S(window).off('.fndtn.dropdown');
+      this.S('[data-dropdown-content]').off('.fndtn.dropdown');
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.equalizer.js b/js/foundation/js/foundation/foundation.equalizer.js
new file mode 100644 (file)
index 0000000..a61a330
--- /dev/null
@@ -0,0 +1,104 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.equalizer = {
+    name : 'equalizer',
+
+    version : '5.5.3',
+
+    settings : {
+      use_tallest : true,
+      before_height_change : $.noop,
+      after_height_change : $.noop,
+      equalize_on_stack : false,
+      act_on_hidden_el: false
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'image_loaded');
+      this.bindings(method, options);
+      this.reflow();
+    },
+
+    events : function () {
+      this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
+        this.reflow();
+      }.bind(this));
+    },
+
+    equalize : function (equalizer) {
+      var isStacked = false,
+          group = equalizer.data('equalizer'),
+          settings = equalizer.data(this.attr_name(true)+'-init') || this.settings,
+          vals,
+          firstTopOffset;
+
+      if (settings.act_on_hidden_el) {
+        vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]');
+      }
+      else {
+        vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible');
+      }
+      
+      if (vals.length === 0) {
+        return;
+      }
+
+      settings.before_height_change();
+      equalizer.trigger('before-height-change.fndth.equalizer');
+      vals.height('inherit');
+
+      if (settings.equalize_on_stack === false) {
+        firstTopOffset = vals.first().offset().top;
+        vals.each(function () {
+          if ($(this).offset().top !== firstTopOffset) {
+            isStacked = true;
+            return false;
+          }
+        });
+        if (isStacked) {
+          return;
+        }
+      }
+
+      var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
+
+      if (settings.use_tallest) {
+        var max = Math.max.apply(null, heights);
+        vals.css('height', max);
+      } else {
+        var min = Math.min.apply(null, heights);
+        vals.css('height', min);
+      }
+
+      settings.after_height_change();
+      equalizer.trigger('after-height-change.fndtn.equalizer');
+    },
+
+    reflow : function () {
+      var self = this;
+
+      this.S('[' + this.attr_name() + ']', this.scope).each(function () {
+        var $eq_target = $(this),
+            media_query = $eq_target.data('equalizer-mq'),
+            ignore_media_query = true;
+
+        if (media_query) {
+          media_query = 'is_' + media_query.replace(/-/g, '_');
+          if (Foundation.utils.hasOwnProperty(media_query)) {
+            ignore_media_query = false;
+          }
+        }
+
+        self.image_loaded(self.S('img', this), function () {
+          if (ignore_media_query || Foundation.utils[media_query]()) {
+            self.equalize($eq_target)
+          } else {
+            var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible');
+            vals.css('height', 'auto');
+          }
+        });
+      });
+    }
+  };
+})(jQuery, window, window.document);
diff --git a/js/foundation/js/foundation/foundation.interchange.js b/js/foundation/js/foundation/foundation.interchange.js
new file mode 100644 (file)
index 0000000..1096fad
--- /dev/null
@@ -0,0 +1,360 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.interchange = {
+    name : 'interchange',
+
+    version : '5.5.3',
+
+    cache : {},
+
+    images_loaded : false,
+    nodes_loaded : false,
+
+    settings : {
+      load_attr : 'interchange',
+
+      named_queries : {
+        'default'     : 'only screen',
+        'small'       : Foundation.media_queries['small'],
+        'small-only'  : Foundation.media_queries['small-only'],
+        'medium'      : Foundation.media_queries['medium'],
+        'medium-only' : Foundation.media_queries['medium-only'],
+        'large'       : Foundation.media_queries['large'],
+        'large-only'  : Foundation.media_queries['large-only'],
+        'xlarge'      : Foundation.media_queries['xlarge'],
+        'xlarge-only' : Foundation.media_queries['xlarge-only'],
+        'xxlarge'     : Foundation.media_queries['xxlarge'],
+        'landscape'   : 'only screen and (orientation: landscape)',
+        'portrait'    : 'only screen and (orientation: portrait)',
+        'retina'      : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
+          'only screen and (min--moz-device-pixel-ratio: 2),' +
+          'only screen and (-o-min-device-pixel-ratio: 2/1),' +
+          'only screen and (min-device-pixel-ratio: 2),' +
+          'only screen and (min-resolution: 192dpi),' +
+          'only screen and (min-resolution: 2dppx)'
+      },
+
+      directives : {
+        replace : function (el, path, trigger) {
+          // The trigger argument, if called within the directive, fires
+          // an event named after the directive on the element, passing
+          // any parameters along to the event that you pass to trigger.
+          //
+          // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
+          //
+          // This allows you to bind a callback like so:
+          // $('#interchangeContainer').on('replace', function (e, a, b, c) {
+          //   console.log($(this).html(), a, b, c);
+          // });
+
+          if (el !== null && /IMG/.test(el[0].nodeName)) {
+            var orig_path = $.each(el, function(){this.src = path;});
+            // var orig_path = el[0].src;
+
+            if (new RegExp(path, 'i').test(orig_path)) {
+              return;
+            }
+
+            el.attr("src", path);
+
+            return trigger(el[0].src);
+          }
+          var last_path = el.data(this.data_attr + '-last-path'),
+              self = this;
+
+          if (last_path == path) {
+            return;
+          }
+
+          if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
+            $(el).css('background-image', 'url(' + path + ')');
+            el.data('interchange-last-path', path);
+            return trigger(path);
+          }
+
+          return $.get(path, function (response) {
+            el.html(response);
+            el.data(self.data_attr + '-last-path', path);
+            trigger();
+          });
+
+        }
+      }
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle random_str');
+
+      this.data_attr = this.set_data_attr();
+      $.extend(true, this.settings, method, options);
+      this.bindings(method, options);
+      this.reflow();
+    },
+
+    get_media_hash : function () {
+        var mediaHash = '';
+        for (var queryName in this.settings.named_queries ) {
+            mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
+        }
+        return mediaHash;
+    },
+
+    events : function () {
+      var self = this, prevMediaHash;
+
+      $(window)
+        .off('.interchange')
+        .on('resize.fndtn.interchange', self.throttle(function () {
+            var currMediaHash = self.get_media_hash();
+            if (currMediaHash !== prevMediaHash) {
+                self.resize();
+            }
+            prevMediaHash = currMediaHash;
+        }, 50));
+
+      return this;
+    },
+
+    resize : function () {
+      var cache = this.cache;
+
+      if (!this.images_loaded || !this.nodes_loaded) {
+        setTimeout($.proxy(this.resize, this), 50);
+        return;
+      }
+
+      for (var uuid in cache) {
+        if (cache.hasOwnProperty(uuid)) {
+          var passed = this.results(uuid, cache[uuid]);
+          if (passed) {
+            this.settings.directives[passed
+              .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) {
+                if (arguments[0] instanceof Array) {
+                  var args = arguments[0];
+                } else {
+                  var args = Array.prototype.slice.call(arguments, 0);
+                }
+
+                return function() {
+                  passed.el.trigger(passed.scenario[1], args);
+                }
+              }(passed)));
+          }
+        }
+      }
+
+    },
+
+    results : function (uuid, scenarios) {
+      var count = scenarios.length;
+
+      if (count > 0) {
+        var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
+
+        while (count--) {
+          var mq, rule = scenarios[count][2];
+          if (this.settings.named_queries.hasOwnProperty(rule)) {
+            mq = matchMedia(this.settings.named_queries[rule]);
+          } else {
+            mq = matchMedia(rule);
+          }
+          if (mq.matches) {
+            return {el : el, scenario : scenarios[count]};
+          }
+        }
+      }
+
+      return false;
+    },
+
+    load : function (type, force_update) {
+      if (typeof this['cached_' + type] === 'undefined' || force_update) {
+        this['update_' + type]();
+      }
+
+      return this['cached_' + type];
+    },
+
+    update_images : function () {
+      var images = this.S('img[' + this.data_attr + ']'),
+          count = images.length,
+          i = count,
+          loaded_count = 0,
+          data_attr = this.data_attr;
+
+      this.cache = {};
+      this.cached_images = [];
+      this.images_loaded = (count === 0);
+
+      while (i--) {
+        loaded_count++;
+        if (images[i]) {
+          var str = images[i].getAttribute(data_attr) || '';
+
+          if (str.length > 0) {
+            this.cached_images.push(images[i]);
+          }
+        }
+
+        if (loaded_count === count) {
+          this.images_loaded = true;
+          this.enhance('images');
+        }
+      }
+
+      return this;
+    },
+
+    update_nodes : function () {
+      var nodes = this.S('[' + this.data_attr + ']').not('img'),
+          count = nodes.length,
+          i = count,
+          loaded_count = 0,
+          data_attr = this.data_attr;
+
+      this.cached_nodes = [];
+      this.nodes_loaded = (count === 0);
+
+      while (i--) {
+        loaded_count++;
+        var str = nodes[i].getAttribute(data_attr) || '';
+
+        if (str.length > 0) {
+          this.cached_nodes.push(nodes[i]);
+        }
+
+        if (loaded_count === count) {
+          this.nodes_loaded = true;
+          this.enhance('nodes');
+        }
+      }
+
+      return this;
+    },
+
+    enhance : function (type) {
+      var i = this['cached_' + type].length;
+
+      while (i--) {
+        this.object($(this['cached_' + type][i]));
+      }
+
+      return $(window).trigger('resize.fndtn.interchange');
+    },
+
+    convert_directive : function (directive) {
+
+      var trimmed = this.trim(directive);
+
+      if (trimmed.length > 0) {
+        return trimmed;
+      }
+
+      return 'replace';
+    },
+
+    parse_scenario : function (scenario) {
+      // This logic had to be made more complex since some users were using commas in the url path
+      // So we cannot simply just split on a comma
+
+      var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/),
+      // getting the mq has gotten a bit complicated since we started accounting for several use cases
+      // of URLs. For now we'll continue to match these scenarios, but we may consider having these scenarios
+      // as nested objects or arrays in F6.
+      // regex: match everything before close parenthesis for mq
+      media_query         = scenario[1].match(/(.*)\)/);
+
+      if (directive_match) {
+        var path  = directive_match[1],
+        directive = directive_match[2];
+
+      } else {
+        var cached_split = scenario[0].split(/,\s*$/),
+        path             = cached_split[0],
+        directive        = '';
+      }
+
+      return [this.trim(path), this.convert_directive(directive), this.trim(media_query[1])];
+    },
+
+    object : function (el) {
+      var raw_arr = this.parse_data_attr(el),
+          scenarios = [],
+          i = raw_arr.length;
+
+      if (i > 0) {
+        while (i--) {
+          // split array between comma delimited content and mq
+          // regex: comma, optional space, open parenthesis
+          var scenario = raw_arr[i].split(/,\s?\(/);
+
+          if (scenario.length > 1) {
+            var params = this.parse_scenario(scenario);
+            scenarios.push(params);
+          }
+        }
+      }
+
+      return this.store(el, scenarios);
+    },
+
+    store : function (el, scenarios) {
+      var uuid = this.random_str(),
+          current_uuid = el.data(this.add_namespace('uuid', true));
+
+      if (this.cache[current_uuid]) {
+        return this.cache[current_uuid];
+      }
+
+      el.attr(this.add_namespace('data-uuid'), uuid);
+      return this.cache[uuid] = scenarios;
+    },
+
+    trim : function (str) {
+
+      if (typeof str === 'string') {
+        return $.trim(str);
+      }
+
+      return str;
+    },
+
+    set_data_attr : function (init) {
+      if (init) {
+        if (this.namespace.length > 0) {
+          return this.namespace + '-' + this.settings.load_attr;
+        }
+
+        return this.settings.load_attr;
+      }
+
+      if (this.namespace.length > 0) {
+        return 'data-' + this.namespace + '-' + this.settings.load_attr;
+      }
+
+      return 'data-' + this.settings.load_attr;
+    },
+
+    parse_data_attr : function (el) {
+      var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
+          i = raw.length,
+          output = [];
+
+      while (i--) {
+        if (raw[i].replace(/[\W\d]+/, '').length > 4) {
+          output.push(raw[i]);
+        }
+      }
+
+      return output;
+    },
+
+    reflow : function () {
+      this.load('images', true);
+      this.load('nodes', true);
+    }
+
+  };
+
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.joyride.js b/js/foundation/js/foundation/foundation.joyride.js
new file mode 100644 (file)
index 0000000..f251119
--- /dev/null
@@ -0,0 +1,935 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  var Modernizr = Modernizr || false;
+
+  Foundation.libs.joyride = {
+    name : 'joyride',
+
+    version : '5.5.3',
+
+    defaults : {
+      expose                   : false,     // turn on or off the expose feature
+      modal                    : true,      // Whether to cover page with modal during the tour
+      keyboard                 : true,      // enable left, right and esc keystrokes
+      tip_location             : 'bottom',  // 'top', 'bottom', 'left' or 'right' in relation to parent
+      nub_position             : 'auto',    // override on a per tooltip bases
+      scroll_speed             : 1500,      // Page scrolling speed in milliseconds, 0 = no scroll animation
+      scroll_animation         : 'linear',  // supports 'swing' and 'linear', extend with jQuery UI.
+      timer                    : 0,         // 0 = no timer , all other numbers = timer in milliseconds
+      start_timer_on_click     : true,      // true or false - true requires clicking the first button start the timer
+      start_offset             : 0,         // the index of the tooltip you want to start on (index of the li)
+      next_button              : true,      // true or false to control whether a next button is used
+      prev_button              : true,      // true or false to control whether a prev button is used
+      tip_animation            : 'fade',    // 'pop' or 'fade' in each tip
+      pause_after              : [],        // array of indexes where to pause the tour after
+      exposed                  : [],        // array of expose elements
+      tip_animation_fade_speed : 300,       // when tipAnimation = 'fade' this is speed in milliseconds for the transition
+      cookie_monster           : false,     // true or false to control whether cookies are used
+      cookie_name              : 'joyride', // Name the cookie you'll use
+      cookie_domain            : false,     // Will this cookie be attached to a domain, ie. '.notableapp.com'
+      cookie_expires           : 365,       // set when you would like the cookie to expire.
+      tip_container            : 'body',    // Where will the tip be attached
+      abort_on_close           : true,      // When true, the close event will not fire any callback
+      tip_location_patterns    : {
+        top : ['bottom'],
+        bottom : [], // bottom should not need to be repositioned
+        left : ['right', 'top', 'bottom'],
+        right : ['left', 'top', 'bottom']
+      },
+      post_ride_callback     : function () {},    // A method to call once the tour closes (canceled or complete)
+      post_step_callback     : function () {},    // A method to call after each step
+      pre_step_callback      : function () {},    // A method to call before each step
+      pre_ride_callback      : function () {},    // A method to call before the tour starts (passed index, tip, and cloned exposed element)
+      post_expose_callback   : function () {},    // A method to call after an element has been exposed
+      template : { // HTML segments for tip layout
+        link          : '<a href="#close" class="joyride-close-tip">&times;</a>',
+        timer         : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
+        tip           : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
+        wrapper       : '<div class="joyride-content-wrapper"></div>',
+        button        : '<a href="#" class="small button joyride-next-tip"></a>',
+        prev_button   : '<a href="#" class="small button joyride-prev-tip"></a>',
+        modal         : '<div class="joyride-modal-bg"></div>',
+        expose        : '<div class="joyride-expose-wrapper"></div>',
+        expose_cover  : '<div class="joyride-expose-cover"></div>'
+      },
+      expose_add_class : '' // One or more space-separated class names to be added to exposed element
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle random_str');
+
+      this.settings = this.settings || $.extend({}, this.defaults, (options || method));
+
+      this.bindings(method, options)
+    },
+
+    go_next : function () {
+      if (this.settings.$li.next().length < 1) {
+        this.end();
+      } else if (this.settings.timer > 0) {
+        clearTimeout(this.settings.automate);
+        this.hide();
+        this.show();
+        this.startTimer();
+      } else {
+        this.hide();
+        this.show();
+      }
+    },
+
+    go_prev : function () {
+      if (this.settings.$li.prev().length < 1) {
+        // Do nothing if there are no prev element
+      } else if (this.settings.timer > 0) {
+        clearTimeout(this.settings.automate);
+        this.hide();
+        this.show(null, true);
+        this.startTimer();
+      } else {
+        this.hide();
+        this.show(null, true);
+      }
+    },
+
+    events : function () {
+      var self = this;
+
+      $(this.scope)
+        .off('.joyride')
+        .on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
+          e.preventDefault();
+          this.go_next()
+        }.bind(this))
+        .on('click.fndtn.joyride', '.joyride-prev-tip', function (e) {
+          e.preventDefault();
+          this.go_prev();
+        }.bind(this))
+
+        .on('click.fndtn.joyride', '.joyride-close-tip', function (e) {
+          e.preventDefault();
+          this.end(this.settings.abort_on_close);
+        }.bind(this))
+
+        .on('keyup.fndtn.joyride', function (e) {
+          // Don't do anything if keystrokes are disabled
+          // or if the joyride is not being shown
+          if (!this.settings.keyboard || !this.settings.riding) {
+            return;
+          }
+
+          switch (e.which) {
+            case 39: // right arrow
+              e.preventDefault();
+              this.go_next();
+              break;
+            case 37: // left arrow
+              e.preventDefault();
+              this.go_prev();
+              break;
+            case 27: // escape
+              e.preventDefault();
+              this.end(this.settings.abort_on_close);
+          }
+        }.bind(this));
+
+      $(window)
+        .off('.joyride')
+        .on('resize.fndtn.joyride', self.throttle(function () {
+          if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) {
+            if (self.settings.exposed.length > 0) {
+              var $els = $(self.settings.exposed);
+
+              $els.each(function () {
+                var $this = $(this);
+                self.un_expose($this);
+                self.expose($this);
+              });
+            }
+
+            if (self.is_phone()) {
+              self.pos_phone();
+            } else {
+              self.pos_default(false);
+            }
+          }
+        }, 100));
+    },
+
+    start : function () {
+      var self = this,
+          $this = $('[' + this.attr_name() + ']', this.scope),
+          integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
+          int_settings_count = integer_settings.length;
+
+      if (!$this.length > 0) {
+        return;
+      }
+
+      if (!this.settings.init) {
+        this.events();
+      }
+
+      this.settings = $this.data(this.attr_name(true) + '-init');
+
+      // non configureable settings
+      this.settings.$content_el = $this;
+      this.settings.$body = $(this.settings.tip_container);
+      this.settings.body_offset = $(this.settings.tip_container).position();
+      this.settings.$tip_content = this.settings.$content_el.find('> li');
+      this.settings.paused = false;
+      this.settings.attempts = 0;
+      this.settings.riding = true;
+
+      // can we create cookies?
+      if (typeof $.cookie !== 'function') {
+        this.settings.cookie_monster = false;
+      }
+
+      // generate the tips and insert into dom.
+      if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) {
+        this.settings.$tip_content.each(function (index) {
+          var $this = $(this);
+          this.settings = $.extend({}, self.defaults, self.data_options($this));
+
+          // Make sure that settings parsed from data_options are integers where necessary
+          var i = int_settings_count;
+          while (i--) {
+            self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);
+          }
+          self.create({$li : $this, index : index});
+        });
+
+        // show first tip
+        if (!this.settings.start_timer_on_click && this.settings.timer > 0) {
+          this.show('init');
+          this.startTimer();
+        } else {
+          this.show('init');
+        }
+
+      }
+    },
+
+    resume : function () {
+      this.set_li();
+      this.show();
+    },
+
+    tip_template : function (opts) {
+      var $blank, content;
+
+      opts.tip_class = opts.tip_class || '';
+
+      $blank = $(this.settings.template.tip).addClass(opts.tip_class);
+      content = $.trim($(opts.li).html()) +
+        this.prev_button_text(opts.prev_button_text, opts.index) +
+        this.button_text(opts.button_text) +
+        this.settings.template.link +
+        this.timer_instance(opts.index);
+
+      $blank.append($(this.settings.template.wrapper));
+      $blank.first().attr(this.add_namespace('data-index'), opts.index);
+      $('.joyride-content-wrapper', $blank).append(content);
+
+      return $blank[0];
+    },
+
+    timer_instance : function (index) {
+      var txt;
+
+      if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) {
+        txt = '';
+      } else {
+        txt = $(this.settings.template.timer)[0].outerHTML;
+      }
+      return txt;
+    },
+
+    button_text : function (txt) {
+      if (this.settings.tip_settings.next_button) {
+        txt = $.trim(txt) || 'Next';
+        txt = $(this.settings.template.button).append(txt)[0].outerHTML;
+      } else {
+        txt = '';
+      }
+      return txt;
+    },
+
+    prev_button_text : function (txt, idx) {
+      if (this.settings.tip_settings.prev_button) {
+        txt = $.trim(txt) || 'Previous';
+
+        // Add the disabled class to the button if it's the first element
+        if (idx == 0) {
+          txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML;
+        } else {
+          txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML;
+        }
+      } else {
+        txt = '';
+      }
+      return txt;
+    },
+
+    create : function (opts) {
+      this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li));
+      var buttonText = opts.$li.attr(this.add_namespace('data-button')) || opts.$li.attr(this.add_namespace('data-text')),
+          prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev')) || opts.$li.attr(this.add_namespace('data-prev-text')),
+        tipClass = opts.$li.attr('class'),
+        $tip_content = $(this.tip_template({
+          tip_class : tipClass,
+          index : opts.index,
+          button_text : buttonText,
+          prev_button_text : prevButtonText,
+          li : opts.$li
+        }));
+
+      $(this.settings.tip_container).append($tip_content);
+    },
+
+    show : function (init, is_prev) {
+      var $timer = null;
+
+      // are we paused?
+      if (this.settings.$li === undefined || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) {
+
+        // don't go to the next li if the tour was paused
+        if (this.settings.paused) {
+          this.settings.paused = false;
+        } else {
+          this.set_li(init, is_prev);
+        }
+
+        this.settings.attempts = 0;
+
+        if (this.settings.$li.length && this.settings.$target.length > 0) {
+          if (init) { //run when we first start
+            this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip);
+            if (this.settings.modal) {
+              this.show_modal();
+            }
+          }
+
+          this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip);
+
+          if (this.settings.modal && this.settings.expose) {
+            this.expose();
+          }
+
+          this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li));
+
+          this.settings.timer = parseInt(this.settings.timer, 10);
+
+          this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location];
+
+          // scroll and hide bg if not modal and not expose
+          if (!/body/i.test(this.settings.$target.selector) && !this.settings.expose) {
+            var joyridemodalbg = $('.joyride-modal-bg');
+            if (/pop/i.test(this.settings.tipAnimation)) {
+                joyridemodalbg.hide();
+            } else {
+                joyridemodalbg.fadeOut(this.settings.tipAnimationFadeSpeed);
+            }
+            this.scroll_to();
+          }
+
+          if (this.is_phone()) {
+            this.pos_phone(true);
+          } else {
+            this.pos_default(true);
+          }
+
+          $timer = this.settings.$next_tip.find('.joyride-timer-indicator');
+
+          if (/pop/i.test(this.settings.tip_animation)) {
+
+            $timer.width(0);
+
+            if (this.settings.timer > 0) {
+
+              this.settings.$next_tip.show();
+
+              setTimeout(function () {
+                $timer.animate({
+                  width : $timer.parent().width()
+                }, this.settings.timer, 'linear');
+              }.bind(this), this.settings.tip_animation_fade_speed);
+
+            } else {
+              this.settings.$next_tip.show();
+
+            }
+
+          } else if (/fade/i.test(this.settings.tip_animation)) {
+
+            $timer.width(0);
+
+            if (this.settings.timer > 0) {
+
+              this.settings.$next_tip
+                .fadeIn(this.settings.tip_animation_fade_speed)
+                .show();
+
+              setTimeout(function () {
+                $timer.animate({
+                  width : $timer.parent().width()
+                }, this.settings.timer, 'linear');
+              }.bind(this), this.settings.tip_animation_fade_speed);
+
+            } else {
+              this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed);
+            }
+          }
+
+          this.settings.$current_tip = this.settings.$next_tip;
+
+        // skip non-existant targets
+        } else if (this.settings.$li && this.settings.$target.length < 1) {
+
+          this.show(init, is_prev);
+
+        } else {
+
+          this.end();
+
+        }
+      } else {
+
+        this.settings.paused = true;
+
+      }
+
+    },
+
+    is_phone : function () {
+      return matchMedia(Foundation.media_queries.small).matches &&
+        !matchMedia(Foundation.media_queries.medium).matches;
+    },
+
+    hide : function () {
+      if (this.settings.modal && this.settings.expose) {
+        this.un_expose();
+      }
+
+      if (!this.settings.modal) {
+        $('.joyride-modal-bg').hide();
+      }
+
+      // Prevent scroll bouncing...wait to remove from layout
+      this.settings.$current_tip.css('visibility', 'hidden');
+      setTimeout($.proxy(function () {
+        this.hide();
+        this.css('visibility', 'visible');
+      }, this.settings.$current_tip), 0);
+      this.settings.post_step_callback(this.settings.$li.index(),
+        this.settings.$current_tip);
+    },
+
+    set_li : function (init, is_prev) {
+      if (init) {
+        this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset);
+        this.set_next_tip();
+        this.settings.$current_tip = this.settings.$next_tip;
+      } else {
+        if (is_prev) {
+          this.settings.$li = this.settings.$li.prev();
+        } else {
+          this.settings.$li = this.settings.$li.next();
+        }
+        this.set_next_tip();
+      }
+
+      this.set_target();
+    },
+
+    set_next_tip : function () {
+      this.settings.$next_tip = $('.joyride-tip-guide').eq(this.settings.$li.index());
+      this.settings.$next_tip.data('closed', '');
+    },
+
+    set_target : function () {
+      var cl = this.settings.$li.attr(this.add_namespace('data-class')),
+          id = this.settings.$li.attr(this.add_namespace('data-id')),
+          $sel = function () {
+            if (id) {
+              return $(document.getElementById(id));
+            } else if (cl) {
+              return $('.' + cl).first();
+            } else {
+              return $('body');
+            }
+          };
+
+      this.settings.$target = $sel();
+    },
+
+    scroll_to : function () {
+      var window_half, tipOffset;
+
+      window_half = $(window).height() / 2;
+      tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight());
+
+      if (tipOffset != 0) {
+        $('html, body').stop().animate({
+          scrollTop : tipOffset
+        }, this.settings.scroll_speed, 'swing');
+      }
+    },
+
+    paused : function () {
+      return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1);
+    },
+
+    restart : function () {
+      this.hide();
+      this.settings.$li = undefined;
+      this.show('init');
+    },
+
+    pos_default : function (init) {
+      var $nub = this.settings.$next_tip.find('.joyride-nub'),
+          nub_width = Math.ceil($nub.outerWidth() / 2),
+          nub_height = Math.ceil($nub.outerHeight() / 2),
+          toggle = init || false;
+
+      // tip must not be "display: none" to calculate position
+      if (toggle) {
+        this.settings.$next_tip.css('visibility', 'hidden');
+        this.settings.$next_tip.show();
+      }
+
+      if (!/body/i.test(this.settings.$target.selector)) {
+        var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0,
+            leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0;
+
+        if (this.bottom()) {
+          if (this.rtl) {
+            this.settings.$next_tip.css({
+              top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
+              left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment});
+          } else {
+            this.settings.$next_tip.css({
+              top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
+              left : this.settings.$target.offset().left + leftAdjustment});
+          }
+
+          this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');
+
+        } else if (this.top()) {
+          if (this.rtl) {
+            this.settings.$next_tip.css({
+              top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
+              left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
+          } else {
+            this.settings.$next_tip.css({
+              top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
+              left : this.settings.$target.offset().left + leftAdjustment});
+          }
+
+          this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');
+
+        } else if (this.right()) {
+
+          this.settings.$next_tip.css({
+            top : this.settings.$target.offset().top + topAdjustment,
+            left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)});
+
+          this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');
+
+        } else if (this.left()) {
+
+          this.settings.$next_tip.css({
+            top : this.settings.$target.offset().top + topAdjustment,
+            left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)});
+
+          this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');
+
+        }
+
+        if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {
+
+          $nub.removeClass('bottom')
+            .removeClass('top')
+            .removeClass('right')
+            .removeClass('left');
+
+          this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];
+
+          this.settings.attempts++;
+
+          this.pos_default();
+
+        }
+
+      } else if (this.settings.$li.length) {
+
+        this.pos_modal($nub);
+
+      }
+
+      if (toggle) {
+        this.settings.$next_tip.hide();
+        this.settings.$next_tip.css('visibility', 'visible');
+      }
+
+    },
+
+    pos_phone : function (init) {
+      var tip_height = this.settings.$next_tip.outerHeight(),
+          tip_offset = this.settings.$next_tip.offset(),
+          target_height = this.settings.$target.outerHeight(),
+          $nub = $('.joyride-nub', this.settings.$next_tip),
+          nub_height = Math.ceil($nub.outerHeight() / 2),
+          toggle = init || false;
+
+      $nub.removeClass('bottom')
+        .removeClass('top')
+        .removeClass('right')
+        .removeClass('left');
+
+      if (toggle) {
+        this.settings.$next_tip.css('visibility', 'hidden');
+        this.settings.$next_tip.show();
+      }
+
+      if (!/body/i.test(this.settings.$target.selector)) {
+
+        if (this.top()) {
+
+            this.settings.$next_tip.offset({top : this.settings.$target.offset().top - tip_height - nub_height});
+            $nub.addClass('bottom');
+
+        } else {
+
+          this.settings.$next_tip.offset({top : this.settings.$target.offset().top + target_height + nub_height});
+          $nub.addClass('top');
+
+        }
+
+      } else if (this.settings.$li.length) {
+        this.pos_modal($nub);
+      }
+
+      if (toggle) {
+        this.settings.$next_tip.hide();
+        this.settings.$next_tip.css('visibility', 'visible');
+      }
+    },
+
+    pos_modal : function ($nub) {
+      this.center();
+      $nub.hide();
+
+      this.show_modal();
+    },
+
+    show_modal : function () {
+      if (!this.settings.$next_tip.data('closed')) {
+        var joyridemodalbg =  $('.joyride-modal-bg');
+        if (joyridemodalbg.length < 1) {
+          var joyridemodalbg = $(this.settings.template.modal);
+          joyridemodalbg.appendTo('body');
+        }
+
+        if (/pop/i.test(this.settings.tip_animation)) {
+            joyridemodalbg.show();
+        } else {
+            joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed);
+        }
+      }
+    },
+
+    expose : function () {
+      var expose,
+          exposeCover,
+          el,
+          origCSS,
+          origClasses,
+          randId = 'expose-' + this.random_str(6);
+
+      if (arguments.length > 0 && arguments[0] instanceof $) {
+        el = arguments[0];
+      } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
+        el = this.settings.$target;
+      } else {
+        return false;
+      }
+
+      if (el.length < 1) {
+        if (window.console) {
+          console.error('element not valid', el);
+        }
+        return false;
+      }
+
+      expose = $(this.settings.template.expose);
+      this.settings.$body.append(expose);
+      expose.css({
+        top : el.offset().top,
+        left : el.offset().left,
+        width : el.outerWidth(true),
+        height : el.outerHeight(true)
+      });
+
+      exposeCover = $(this.settings.template.expose_cover);
+
+      origCSS = {
+        zIndex : el.css('z-index'),
+        position : el.css('position')
+      };
+
+      origClasses = el.attr('class') == null ? '' : el.attr('class');
+
+      el.css('z-index', parseInt(expose.css('z-index')) + 1);
+
+      if (origCSS.position == 'static') {
+        el.css('position', 'relative');
+      }
+
+      el.data('expose-css', origCSS);
+      el.data('orig-class', origClasses);
+      el.attr('class', origClasses + ' ' + this.settings.expose_add_class);
+
+      exposeCover.css({
+        top : el.offset().top,
+        left : el.offset().left,
+        width : el.outerWidth(true),
+        height : el.outerHeight(true)
+      });
+
+      if (this.settings.modal) {
+        this.show_modal();
+      }
+
+      this.settings.$body.append(exposeCover);
+      expose.addClass(randId);
+      exposeCover.addClass(randId);
+      el.data('expose', randId);
+      this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el);
+      this.add_exposed(el);
+    },
+
+    un_expose : function () {
+      var exposeId,
+          el,
+          expose,
+          origCSS,
+          origClasses,
+          clearAll = false;
+
+      if (arguments.length > 0 && arguments[0] instanceof $) {
+        el = arguments[0];
+      } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
+        el = this.settings.$target;
+      } else {
+        return false;
+      }
+
+      if (el.length < 1) {
+        if (window.console) {
+          console.error('element not valid', el);
+        }
+        return false;
+      }
+
+      exposeId = el.data('expose');
+      expose = $('.' + exposeId);
+
+      if (arguments.length > 1) {
+        clearAll = arguments[1];
+      }
+
+      if (clearAll === true) {
+        $('.joyride-expose-wrapper,.joyride-expose-cover').remove();
+      } else {
+        expose.remove();
+      }
+
+      origCSS = el.data('expose-css');
+
+      if (origCSS.zIndex == 'auto') {
+        el.css('z-index', '');
+      } else {
+        el.css('z-index', origCSS.zIndex);
+      }
+
+      if (origCSS.position != el.css('position')) {
+        if (origCSS.position == 'static') {// this is default, no need to set it.
+          el.css('position', '');
+        } else {
+          el.css('position', origCSS.position);
+        }
+      }
+
+      origClasses = el.data('orig-class');
+      el.attr('class', origClasses);
+      el.removeData('orig-classes');
+
+      el.removeData('expose');
+      el.removeData('expose-z-index');
+      this.remove_exposed(el);
+    },
+
+    add_exposed : function (el) {
+      this.settings.exposed = this.settings.exposed || [];
+      if (el instanceof $ || typeof el === 'object') {
+        this.settings.exposed.push(el[0]);
+      } else if (typeof el == 'string') {
+        this.settings.exposed.push(el);
+      }
+    },
+
+    remove_exposed : function (el) {
+      var search, i;
+      if (el instanceof $) {
+        search = el[0]
+      } else if (typeof el == 'string') {
+        search = el;
+      }
+
+      this.settings.exposed = this.settings.exposed || [];
+      i = this.settings.exposed.length;
+
+      while (i--) {
+        if (this.settings.exposed[i] == search) {
+          this.settings.exposed.splice(i, 1);
+          return;
+        }
+      }
+    },
+
+    center : function () {
+      var $w = $(window);
+
+      this.settings.$next_tip.css({
+        top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),
+        left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())
+      });
+
+      return true;
+    },
+
+    bottom : function () {
+      return /bottom/i.test(this.settings.tip_settings.tip_location);
+    },
+
+    top : function () {
+      return /top/i.test(this.settings.tip_settings.tip_location);
+    },
+
+    right : function () {
+      return /right/i.test(this.settings.tip_settings.tip_location);
+    },
+
+    left : function () {
+      return /left/i.test(this.settings.tip_settings.tip_location);
+    },
+
+    corners : function (el) {
+      if (el.length === 0) {
+         return [false, false, false, false];   
+      }
+      
+      var w = $(window),
+          window_half = w.height() / 2,
+          //using this to calculate since scroll may not have finished yet.
+          tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()),
+          right = w.width() + w.scrollLeft(),
+          offsetBottom =  w.height() + tipOffset,
+          bottom = w.height() + w.scrollTop(),
+          top = w.scrollTop();
+
+      if (tipOffset < top) {
+        if (tipOffset < 0) {
+          top = 0;
+        } else {
+          top = tipOffset;
+        }
+      }
+
+      if (offsetBottom > bottom) {
+        bottom = offsetBottom;
+      }
+
+      return [
+        el.offset().top < top,
+        right < el.offset().left + el.outerWidth(),
+        bottom < el.offset().top + el.outerHeight(),
+        w.scrollLeft() > el.offset().left
+      ];
+    },
+
+    visible : function (hidden_corners) {
+      var i = hidden_corners.length;
+
+      while (i--) {
+        if (hidden_corners[i]) {
+          return false;
+        }
+      }
+
+      return true;
+    },
+
+    nub_position : function (nub, pos, def) {
+      if (pos === 'auto') {
+        nub.addClass(def);
+      } else {
+        nub.addClass(pos);
+      }
+    },
+
+    startTimer : function () {
+      if (this.settings.$li.length) {
+        this.settings.automate = setTimeout(function () {
+          this.hide();
+          this.show();
+          this.startTimer();
+        }.bind(this), this.settings.timer);
+      } else {
+        clearTimeout(this.settings.automate);
+      }
+    },
+
+    end : function (abort) {
+      if (this.settings.cookie_monster) {
+        $.cookie(this.settings.cookie_name, 'ridden', {expires : this.settings.cookie_expires, domain : this.settings.cookie_domain});
+      }
+
+      if (this.settings.timer > 0) {
+        clearTimeout(this.settings.automate);
+      }
+
+      if (this.settings.modal && this.settings.expose) {
+        this.un_expose();
+      }
+
+      // Unplug keystrokes listener
+      $(this.scope).off('keyup.joyride')
+
+      this.settings.$next_tip.data('closed', true);
+      this.settings.riding = false;
+
+      $('.joyride-modal-bg').hide();
+      this.settings.$current_tip.hide();
+
+      if (typeof abort === 'undefined' || abort === false) {
+        this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip);
+        this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip);
+      }
+
+      $('.joyride-tip-guide').remove();
+    },
+
+    off : function () {
+      $(this.scope).off('.joyride');
+      $(window).off('.joyride');
+      $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
+      $('.joyride-tip-guide, .joyride-modal-bg').remove();
+      clearTimeout(this.settings.automate);
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.js b/js/foundation/js/foundation/foundation.js
new file mode 100644 (file)
index 0000000..c5a359d
--- /dev/null
@@ -0,0 +1,732 @@
+/*
+ * Foundation Responsive Library
+ * http://foundation.zurb.com
+ * Copyright 2015, ZURB
+ * Free to use under the MIT license.
+ * http://www.opensource.org/licenses/mit-license.php
+*/
+
+(function ($, window, document, undefined) {
+  'use strict';
+
+  var header_helpers = function (class_array) {
+    var head = $('head');
+    head.prepend($.map(class_array, function (class_name) {
+      if (head.has('.' + class_name).length === 0) {
+        return '<meta class="' + class_name + '" />';
+      }
+    }));
+  };
+
+  header_helpers([
+    'foundation-mq-small',
+    'foundation-mq-small-only',
+    'foundation-mq-medium',
+    'foundation-mq-medium-only',
+    'foundation-mq-large',
+    'foundation-mq-large-only',
+    'foundation-mq-xlarge',
+    'foundation-mq-xlarge-only',
+    'foundation-mq-xxlarge',
+    'foundation-data-attribute-namespace']);
+
+  // Enable FastClick if present
+
+  $(function () {
+    if (typeof FastClick !== 'undefined') {
+      // Don't attach to body if undefined
+      if (typeof document.body !== 'undefined') {
+        FastClick.attach(document.body);
+      }
+    }
+  });
+
+  // private Fast Selector wrapper,
+  // returns jQuery object. Only use where
+  // getElementById is not available.
+  var S = function (selector, context) {
+    if (typeof selector === 'string') {
+      if (context) {
+        var cont;
+        if (context.jquery) {
+          cont = context[0];
+          if (!cont) {
+            return context;
+          }
+        } else {
+          cont = context;
+        }
+        return $(cont.querySelectorAll(selector));
+      }
+
+      return $(document.querySelectorAll(selector));
+    }
+
+    return $(selector, context);
+  };
+
+  // Namespace functions.
+
+  var attr_name = function (init) {
+    var arr = [];
+    if (!init) {
+      arr.push('data');
+    }
+    if (this.namespace.length > 0) {
+      arr.push(this.namespace);
+    }
+    arr.push(this.name);
+
+    return arr.join('-');
+  };
+
+  var add_namespace = function (str) {
+    var parts = str.split('-'),
+        i = parts.length,
+        arr = [];
+
+    while (i--) {
+      if (i !== 0) {
+        arr.push(parts[i]);
+      } else {
+        if (this.namespace.length > 0) {
+          arr.push(this.namespace, parts[i]);
+        } else {
+          arr.push(parts[i]);
+        }
+      }
+    }
+
+    return arr.reverse().join('-');
+  };
+
+  // Event binding and data-options updating.
+
+  var bindings = function (method, options) {
+    var self = this,
+        bind = function(){
+          var $this = S(this),
+              should_bind_events = !$this.data(self.attr_name(true) + '-init');
+          $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this)));
+
+          if (should_bind_events) {
+            self.events(this);
+          }
+        };
+
+    if (S(this.scope).is('[' + this.attr_name() +']')) {
+      bind.call(this.scope);
+    } else {
+      S('[' + this.attr_name() +']', this.scope).each(bind);
+    }
+    // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.
+    if (typeof method === 'string') {
+      return this[method].call(this, options);
+    }
+
+  };
+
+  var single_image_loaded = function (image, callback) {
+    function loaded () {
+      callback(image[0]);
+    }
+
+    function bindLoad () {
+      this.one('load', loaded);
+
+      if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
+        var src = this.attr( 'src' ),
+            param = src.match( /\?/ ) ? '&' : '?';
+
+        param += 'random=' + (new Date()).getTime();
+        this.attr('src', src + param);
+      }
+    }
+
+    if (!image.attr('src')) {
+      loaded();
+      return;
+    }
+
+    if (image[0].complete || image[0].readyState === 4) {
+      loaded();
+    } else {
+      bindLoad.call(image);
+    }
+  };
+
+  /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+
+  window.matchMedia || (window.matchMedia = function() {
+      "use strict";
+
+      // For browsers that support matchMedium api such as IE 9 and webkit
+      var styleMedia = (window.styleMedia || window.media);
+
+      // For those that don't support matchMedium
+      if (!styleMedia) {
+          var style       = document.createElement('style'),
+              script      = document.getElementsByTagName('script')[0],
+              info        = null;
+
+          style.type  = 'text/css';
+          style.id    = 'matchmediajs-test';
+
+          script.parentNode.insertBefore(style, script);
+
+          // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
+          info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;
+
+          styleMedia = {
+              matchMedium: function(media) {
+                  var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';
+
+                  // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
+                  if (style.styleSheet) {
+                      style.styleSheet.cssText = text;
+                  } else {
+                      style.textContent = text;
+                  }
+
+                  // Test if media query is true or false
+                  return info.width === '1px';
+              }
+          };
+      }
+
+      return function(media) {
+          return {
+              matches: styleMedia.matchMedium(media || 'all'),
+              media: media || 'all'
+          };
+      };
+  }());
+
+  /*
+   * jquery.requestAnimationFrame
+   * https://github.com/gnarf37/jquery-requestAnimationFrame
+   * Requires jQuery 1.8+
+   *
+   * Copyright (c) 2012 Corey Frang
+   * Licensed under the MIT license.
+   */
+
+  (function(jQuery) {
+
+
+  // requestAnimationFrame polyfill adapted from Erik Möller
+  // fixes from Paul Irish and Tino Zijdel
+  // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+  // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
+
+  var animating,
+      lastTime = 0,
+      vendors = ['webkit', 'moz'],
+      requestAnimationFrame = window.requestAnimationFrame,
+      cancelAnimationFrame = window.cancelAnimationFrame,
+      jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;
+
+  for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
+    requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ];
+    cancelAnimationFrame = cancelAnimationFrame ||
+      window[ vendors[lastTime] + 'CancelAnimationFrame' ] ||
+      window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ];
+  }
+
+  function raf() {
+    if (animating) {
+      requestAnimationFrame(raf);
+
+      if (jqueryFxAvailable) {
+        jQuery.fx.tick();
+      }
+    }
+  }
+
+  if (requestAnimationFrame) {
+    // use rAF
+    window.requestAnimationFrame = requestAnimationFrame;
+    window.cancelAnimationFrame = cancelAnimationFrame;
+
+    if (jqueryFxAvailable) {
+      jQuery.fx.timer = function (timer) {
+        if (timer() && jQuery.timers.push(timer) && !animating) {
+          animating = true;
+          raf();
+        }
+      };
+
+      jQuery.fx.stop = function () {
+        animating = false;
+      };
+    }
+  } else {
+    // polyfill
+    window.requestAnimationFrame = function (callback) {
+      var currTime = new Date().getTime(),
+        timeToCall = Math.max(0, 16 - (currTime - lastTime)),
+        id = window.setTimeout(function () {
+          callback(currTime + timeToCall);
+        }, timeToCall);
+      lastTime = currTime + timeToCall;
+      return id;
+    };
+
+    window.cancelAnimationFrame = function (id) {
+      clearTimeout(id);
+    };
+
+  }
+
+  }( $ ));
+
+  function removeQuotes (string) {
+    if (typeof string === 'string' || string instanceof String) {
+      string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
+    }
+
+    return string;
+  }
+
+  function MediaQuery(selector) {
+    this.selector = selector;
+    this.query = '';
+  }
+
+  MediaQuery.prototype.toString = function () {
+    return this.query || (this.query = S(this.selector).css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''));
+  };
+
+  window.Foundation = {
+    name : 'Foundation',
+
+    version : '5.5.3',
+
+    media_queries : {
+      'small'       : new MediaQuery('.foundation-mq-small'),
+      'small-only'  : new MediaQuery('.foundation-mq-small-only'),
+      'medium'      : new MediaQuery('.foundation-mq-medium'),
+      'medium-only' : new MediaQuery('.foundation-mq-medium-only'),
+      'large'       : new MediaQuery('.foundation-mq-large'),
+      'large-only'  : new MediaQuery('.foundation-mq-large-only'),
+      'xlarge'      : new MediaQuery('.foundation-mq-xlarge'),
+      'xlarge-only' : new MediaQuery('.foundation-mq-xlarge-only'),
+      'xxlarge'     : new MediaQuery('.foundation-mq-xxlarge')
+    },
+
+    stylesheet : $('<style></style>').appendTo('head')[0].sheet,
+
+    global : {
+      namespace : undefined
+    },
+
+    init : function (scope, libraries, method, options, response) {
+      var args = [scope, method, options, response],
+          responses = [];
+
+      // check RTL
+      this.rtl = /rtl/i.test(S('html').attr('dir'));
+
+      // set foundation global scope
+      this.scope = scope || this.scope;
+
+      this.set_namespace();
+
+      if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
+        if (this.libs.hasOwnProperty(libraries)) {
+          responses.push(this.init_lib(libraries, args));
+        }
+      } else {
+        for (var lib in this.libs) {
+          responses.push(this.init_lib(lib, libraries));
+        }
+      }
+
+      S(window).load(function () {
+        S(window)
+          .trigger('resize.fndtn.clearing')
+          .trigger('resize.fndtn.dropdown')
+          .trigger('resize.fndtn.equalizer')
+          .trigger('resize.fndtn.interchange')
+          .trigger('resize.fndtn.joyride')
+          .trigger('resize.fndtn.magellan')
+          .trigger('resize.fndtn.topbar')
+          .trigger('resize.fndtn.slider');
+      });
+
+      return scope;
+    },
+
+    init_lib : function (lib, args) {
+      if (this.libs.hasOwnProperty(lib)) {
+        this.patch(this.libs[lib]);
+
+        if (args && args.hasOwnProperty(lib)) {
+            if (typeof this.libs[lib].settings !== 'undefined') {
+              $.extend(true, this.libs[lib].settings, args[lib]);
+            } else if (typeof this.libs[lib].defaults !== 'undefined') {
+              $.extend(true, this.libs[lib].defaults, args[lib]);
+            }
+          return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
+        }
+
+        args = args instanceof Array ? args : new Array(args);
+        return this.libs[lib].init.apply(this.libs[lib], args);
+      }
+
+      return function () {};
+    },
+
+    patch : function (lib) {
+      lib.scope = this.scope;
+      lib.namespace = this.global.namespace;
+      lib.rtl = this.rtl;
+      lib['data_options'] = this.utils.data_options;
+      lib['attr_name'] = attr_name;
+      lib['add_namespace'] = add_namespace;
+      lib['bindings'] = bindings;
+      lib['S'] = this.utils.S;
+    },
+
+    inherit : function (scope, methods) {
+      var methods_arr = methods.split(' '),
+          i = methods_arr.length;
+
+      while (i--) {
+        if (this.utils.hasOwnProperty(methods_arr[i])) {
+          scope[methods_arr[i]] = this.utils[methods_arr[i]];
+        }
+      }
+    },
+
+    set_namespace : function () {
+
+      // Description:
+      //    Don't bother reading the namespace out of the meta tag
+      //    if the namespace has been set globally in javascript
+      //
+      // Example:
+      //    Foundation.global.namespace = 'my-namespace';
+      // or make it an empty string:
+      //    Foundation.global.namespace = '';
+      //
+      //
+
+      // If the namespace has not been set (is undefined), try to read it out of the meta element.
+      // Otherwise use the globally defined namespace, even if it's empty ('')
+      var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
+
+      // Finally, if the namsepace is either undefined or false, set it to an empty string.
+      // Otherwise use the namespace value.
+      this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
+    },
+
+    libs : {},
+
+    // methods that can be inherited in libraries
+    utils : {
+
+      // Description:
+      //    Fast Selector wrapper returns jQuery object. Only use where getElementById
+      //    is not available.
+      //
+      // Arguments:
+      //    Selector (String): CSS selector describing the element(s) to be
+      //    returned as a jQuery object.
+      //
+      //    Scope (String): CSS selector describing the area to be searched. Default
+      //    is document.
+      //
+      // Returns:
+      //    Element (jQuery Object): jQuery object containing elements matching the
+      //    selector within the scope.
+      S : S,
+
+      // Description:
+      //    Executes a function a max of once every n milliseconds
+      //
+      // Arguments:
+      //    Func (Function): Function to be throttled.
+      //
+      //    Delay (Integer): Function execution threshold in milliseconds.
+      //
+      // Returns:
+      //    Lazy_function (Function): Function with throttling applied.
+      throttle : function (func, delay) {
+        var timer = null;
+
+        return function () {
+          var context = this, args = arguments;
+
+          if (timer == null) {
+            timer = setTimeout(function () {
+              func.apply(context, args);
+              timer = null;
+            }, delay);
+          }
+        };
+      },
+
+      // Description:
+      //    Executes a function when it stops being invoked for n seconds
+      //    Modified version of _.debounce() http://underscorejs.org
+      //
+      // Arguments:
+      //    Func (Function): Function to be debounced.
+      //
+      //    Delay (Integer): Function execution threshold in milliseconds.
+      //
+      //    Immediate (Bool): Whether the function should be called at the beginning
+      //    of the delay instead of the end. Default is false.
+      //
+      // Returns:
+      //    Lazy_function (Function): Function with debouncing applied.
+      debounce : function (func, delay, immediate) {
+        var timeout, result;
+        return function () {
+          var context = this, args = arguments;
+          var later = function () {
+            timeout = null;
+            if (!immediate) {
+              result = func.apply(context, args);
+            }
+          };
+          var callNow = immediate && !timeout;
+          clearTimeout(timeout);
+          timeout = setTimeout(later, delay);
+          if (callNow) {
+            result = func.apply(context, args);
+          }
+          return result;
+        };
+      },
+
+      // Description:
+      //    Parses data-options attribute
+      //
+      // Arguments:
+      //    El (jQuery Object): Element to be parsed.
+      //
+      // Returns:
+      //    Options (Javascript Object): Contents of the element's data-options
+      //    attribute.
+      data_options : function (el, data_attr_name) {
+        data_attr_name = data_attr_name || 'options';
+        var opts = {}, ii, p, opts_arr,
+            data_options = function (el) {
+              var namespace = Foundation.global.namespace;
+
+              if (namespace.length > 0) {
+                return el.data(namespace + '-' + data_attr_name);
+              }
+
+              return el.data(data_attr_name);
+            };
+
+        var cached_options = data_options(el);
+
+        if (typeof cached_options === 'object') {
+          return cached_options;
+        }
+
+        opts_arr = (cached_options || ':').split(';');
+        ii = opts_arr.length;
+
+        function isNumber (o) {
+          return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true;
+        }
+
+        function trim (str) {
+          if (typeof str === 'string') {
+            return $.trim(str);
+          }
+          return str;
+        }
+
+        while (ii--) {
+          p = opts_arr[ii].split(':');
+          p = [p[0], p.slice(1).join(':')];
+
+          if (/true/i.test(p[1])) {
+            p[1] = true;
+          }
+          if (/false/i.test(p[1])) {
+            p[1] = false;
+          }
+          if (isNumber(p[1])) {
+            if (p[1].indexOf('.') === -1) {
+              p[1] = parseInt(p[1], 10);
+            } else {
+              p[1] = parseFloat(p[1]);
+            }
+          }
+
+          if (p.length === 2 && p[0].length > 0) {
+            opts[trim(p[0])] = trim(p[1]);
+          }
+        }
+
+        return opts;
+      },
+
+      // Description:
+      //    Adds JS-recognizable media queries
+      //
+      // Arguments:
+      //    Media (String): Key string for the media query to be stored as in
+      //    Foundation.media_queries
+      //
+      //    Class (String): Class name for the generated <meta> tag
+      register_media : function (media, media_class) {
+        if (Foundation.media_queries[media] === undefined) {
+          $('head').append('<meta class="' + media_class + '"/>');
+          Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
+        }
+      },
+
+      // Description:
+      //    Add custom CSS within a JS-defined media query
+      //
+      // Arguments:
+      //    Rule (String): CSS rule to be appended to the document.
+      //
+      //    Media (String): Optional media query string for the CSS rule to be
+      //    nested under.
+      add_custom_rule : function (rule, media) {
+        if (media === undefined && Foundation.stylesheet) {
+          Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
+        } else {
+          var query = Foundation.media_queries[media];
+
+          if (query !== undefined) {
+            Foundation.stylesheet.insertRule('@media ' +
+              Foundation.media_queries[media] + '{ ' + rule + ' }', Foundation.stylesheet.cssRules.length);
+          }
+        }
+      },
+
+      // Description:
+      //    Performs a callback function when an image is fully loaded
+      //
+      // Arguments:
+      //    Image (jQuery Object): Image(s) to check if loaded.
+      //
+      //    Callback (Function): Function to execute when image is fully loaded.
+      image_loaded : function (images, callback) {
+        var self = this,
+            unloaded = images.length;
+
+        function pictures_has_height(images) {
+          var pictures_number = images.length;
+
+          for (var i = pictures_number - 1; i >= 0; i--) {
+            if(images.attr('height') === undefined) {
+              return false;
+            };
+          };
+
+          return true;
+        }
+
+        if (unloaded === 0 || pictures_has_height(images)) {
+          callback(images);
+        }
+
+        images.each(function () {
+          single_image_loaded(self.S(this), function () {
+            unloaded -= 1;
+            if (unloaded === 0) {
+              callback(images);
+            }
+          });
+        });
+      },
+
+      // Description:
+      //    Returns a random, alphanumeric string
+      //
+      // Arguments:
+      //    Length (Integer): Length of string to be generated. Defaults to random
+      //    integer.
+      //
+      // Returns:
+      //    Rand (String): Pseudo-random, alphanumeric string.
+      random_str : function () {
+        if (!this.fidx) {
+          this.fidx = 0;
+        }
+        this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');
+
+        return this.prefix + (this.fidx++).toString(36);
+      },
+
+      // Description:
+      //    Helper for window.matchMedia
+      //
+      // Arguments:
+      //    mq (String): Media query
+      //
+      // Returns:
+      //    (Boolean): Whether the media query passes or not
+      match : function (mq) {
+        return window.matchMedia(mq).matches;
+      },
+
+      // Description:
+      //    Helpers for checking Foundation default media queries with JS
+      //
+      // Returns:
+      //    (Boolean): Whether the media query passes or not
+
+      is_small_up : function () {
+        return this.match(Foundation.media_queries.small);
+      },
+
+      is_medium_up : function () {
+        return this.match(Foundation.media_queries.medium);
+      },
+
+      is_large_up : function () {
+        return this.match(Foundation.media_queries.large);
+      },
+
+      is_xlarge_up : function () {
+        return this.match(Foundation.media_queries.xlarge);
+      },
+
+      is_xxlarge_up : function () {
+        return this.match(Foundation.media_queries.xxlarge);
+      },
+
+      is_small_only : function () {
+        return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+      },
+
+      is_medium_only : function () {
+        return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+      },
+
+      is_large_only : function () {
+        return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+      },
+
+      is_xlarge_only : function () {
+        return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();
+      },
+
+      is_xxlarge_only : function () {
+        return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();
+      }
+    }
+  };
+
+  $.fn.foundation = function () {
+    var args = Array.prototype.slice.call(arguments, 0);
+
+    return this.each(function () {
+      Foundation.init.apply(Foundation, [this].concat(args));
+      return this;
+    });
+  };
+
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.magellan.js b/js/foundation/js/foundation/foundation.magellan.js
new file mode 100644 (file)
index 0000000..aac36a7
--- /dev/null
@@ -0,0 +1,214 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs['magellan-expedition'] = {
+    name : 'magellan-expedition',
+
+    version : '5.5.3',
+
+    settings : {
+      active_class : 'active',
+      threshold : 0, // pixels from the top of the expedition for it to become fixes
+      destination_threshold : 20, // pixels from the top of destination for it to be considered active
+      throttle_delay : 30, // calculation throttling to increase framerate
+      fixed_top : 0, // top distance in pixels assigend to the fixed element on scroll
+      offset_by_height : true,  // whether to offset the destination by the expedition height. Usually you want this to be true, unless your expedition is on the side.
+      duration : 700, // animation duration time
+      easing : 'swing' // animation easing
+    },
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle');
+      this.bindings(method, options);
+    },
+
+    events : function () {
+      var self = this,
+          S = self.S,
+          settings = self.settings;
+
+      // initialize expedition offset
+      self.set_expedition_position();
+
+      S(self.scope)
+        .off('.magellan')
+        .on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href*=#]', function (e) {
+          var sameHost = ((this.hostname === location.hostname) || !this.hostname),
+              samePath = self.filterPathname(location.pathname) === self.filterPathname(this.pathname),
+              testHash = this.hash.replace(/(:|\.|\/)/g, '\\$1'),
+              anchor = this;
+
+          if (sameHost && samePath && testHash) {
+            e.preventDefault();
+            var expedition = $(this).closest('[' + self.attr_name() + ']'),
+                settings = expedition.data('magellan-expedition-init'),
+                hash = this.hash.split('#').join(''),
+                target = $('a[name="' + hash + '"]');
+
+            if (target.length === 0) {
+              target = $('#' + hash);
+
+            }
+
+            // Account for expedition height if fixed position
+            var scroll_top = target.offset().top - settings.destination_threshold + 1;
+            if (settings.offset_by_height) {
+              scroll_top = scroll_top - expedition.outerHeight();
+            }
+            $('html, body').stop().animate({
+              'scrollTop' : scroll_top
+            }, settings.duration, settings.easing, function () {
+              if (history.pushState) {
+                history.pushState(null, null, anchor.pathname + anchor.search + '#' + hash);
+              } else {
+                location.hash = anchor.pathname + anchor.search + '#' + hash;
+              }
+            });
+          }
+        })
+        .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay));
+    },
+
+    check_for_arrivals : function () {
+      var self = this;
+      self.update_arrivals();
+      self.update_expedition_positions();
+    },
+
+    set_expedition_position : function () {
+      var self = this;
+      $('[' + this.attr_name() + '=fixed]', self.scope).each(function (idx, el) {
+        var expedition = $(this),
+            settings = expedition.data('magellan-expedition-init'),
+            styles = expedition.attr('styles'), // save styles
+            top_offset, fixed_top;
+
+        expedition.attr('style', '');
+        top_offset = expedition.offset().top + settings.threshold;
+
+        //set fixed-top by attribute
+        fixed_top = parseInt(expedition.data('magellan-fixed-top'));
+        if (!isNaN(fixed_top)) {
+          self.settings.fixed_top = fixed_top;
+        }
+
+        expedition.data(self.data_attr('magellan-top-offset'), top_offset);
+        expedition.attr('style', styles);
+      });
+    },
+
+    update_expedition_positions : function () {
+      var self = this,
+          window_top_offset = $(window).scrollTop();
+
+      $('[' + this.attr_name() + '=fixed]', self.scope).each(function () {
+        var expedition = $(this),
+            settings = expedition.data('magellan-expedition-init'),
+            styles = expedition.attr('style'), // save styles
+            top_offset = expedition.data('magellan-top-offset');
+
+        //scroll to the top distance
+        if (window_top_offset + self.settings.fixed_top >= top_offset) {
+          // Placeholder allows height calculations to be consistent even when
+          // appearing to switch between fixed/non-fixed placement
+          var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']');
+          if (placeholder.length === 0) {
+            placeholder = expedition.clone();
+            placeholder.removeAttr(self.attr_name());
+            placeholder.attr(self.add_namespace('data-magellan-expedition-clone'), '');
+            expedition.before(placeholder);
+          }
+          expedition.css({position :'fixed', top : settings.fixed_top}).addClass('fixed');
+        } else {
+          expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove();
+          expedition.attr('style', styles).css('position', '').css('top', '').removeClass('fixed');
+        }
+      });
+    },
+
+    update_arrivals : function () {
+      var self = this,
+          window_top_offset = $(window).scrollTop();
+
+      $('[' + this.attr_name() + ']', self.scope).each(function () {
+        var expedition = $(this),
+            settings = expedition.data(self.attr_name(true) + '-init'),
+            offsets = self.offsets(expedition, window_top_offset),
+            arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'),
+            active_item = false;
+        offsets.each(function (idx, item) {
+          if (item.viewport_offset >= item.top_offset) {
+            var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']');
+            arrivals.not(item.arrival).removeClass(settings.active_class);
+            item.arrival.addClass(settings.active_class);
+            active_item = true;
+            return true;
+          }
+        });
+
+        if (!active_item) {
+          arrivals.removeClass(settings.active_class);
+        }
+      });
+    },
+
+    offsets : function (expedition, window_offset) {
+      var self = this,
+          settings = expedition.data(self.attr_name(true) + '-init'),
+          viewport_offset = window_offset;
+
+      return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function (idx, el) {
+        var name = $(this).data(self.data_attr('magellan-arrival')),
+            dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']');
+        if (dest.length > 0) {
+          var top_offset = dest.offset().top - settings.destination_threshold;
+          if (settings.offset_by_height) {
+            top_offset = top_offset - expedition.outerHeight();
+          }
+          top_offset = Math.floor(top_offset);
+          return {
+            destination : dest,
+            arrival : $(this),
+            top_offset : top_offset,
+            viewport_offset : viewport_offset
+          }
+        }
+      }).sort(function (a, b) {
+        if (a.top_offset < b.top_offset) {
+          return -1;
+        }
+        if (a.top_offset > b.top_offset) {
+          return 1;
+        }
+        return 0;
+      });
+    },
+
+    data_attr : function (str) {
+      if (this.namespace.length > 0) {
+        return this.namespace + '-' + str;
+      }
+
+      return str;
+    },
+
+    off : function () {
+      this.S(this.scope).off('.magellan');
+      this.S(window).off('.magellan');
+    },
+
+    filterPathname : function (pathname) {
+      pathname = pathname || '';
+      return pathname
+          .replace(/^\//,'')
+          .replace(/(?:index|default).[a-zA-Z]{3,4}$/,'')
+          .replace(/\/$/,'');
+    },
+
+    reflow : function () {
+      var self = this;
+      // remove placeholder expeditions used for height calculation purposes
+      $('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove();
+    }
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.offcanvas.js b/js/foundation/js/foundation/foundation.offcanvas.js
new file mode 100644 (file)
index 0000000..685e9a0
--- /dev/null
@@ -0,0 +1,225 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.offcanvas = {
+    name : 'offcanvas',
+
+    version : '5.5.3',
+
+    settings : {
+      open_method : 'move',
+      close_on_click : false
+    },
+
+    init : function (scope, method, options) {
+      this.bindings(method, options);
+    },
+
+    events : function () {
+      var self = this,
+          S = self.S,
+          move_class = '',
+          right_postfix = '',
+          left_postfix = '',
+          top_postfix = '',
+          bottom_postfix = '';
+
+      if (this.settings.open_method === 'move') {
+        move_class = 'move-';
+        right_postfix = 'right';
+        left_postfix = 'left';
+        top_postfix = 'top';
+        bottom_postfix = 'bottom';
+      } else if (this.settings.open_method === 'overlap_single') {
+        move_class = 'offcanvas-overlap-';
+        right_postfix = 'right';
+        left_postfix = 'left';
+        top_postfix = 'top';
+        bottom_postfix = 'bottom';
+      } else if (this.settings.open_method === 'overlap') {
+        move_class = 'offcanvas-overlap';
+      }
+
+      S(this.scope).off('.offcanvas')
+        .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {
+          self.click_toggle_class(e, move_class + right_postfix);
+          if (self.settings.open_method !== 'overlap') {
+            S('.left-submenu').removeClass(move_class + right_postfix);
+          }
+          $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {
+          var settings = self.get_settings(e);
+          var parent = S(this).parent();
+
+          if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+            self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));
+            parent.parent().removeClass(move_class + right_postfix);
+          } else if (S(this).parent().hasClass('has-submenu')) {
+            e.preventDefault();
+            S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix);
+          } else if (parent.hasClass('back')) {
+            e.preventDefault();
+            parent.parent().removeClass(move_class + right_postfix);
+          }
+          $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        //end of left canvas
+        .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {
+          self.click_toggle_class(e, move_class + left_postfix);
+          if (self.settings.open_method !== 'overlap') {
+            S('.right-submenu').removeClass(move_class + left_postfix);
+          }
+          $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {
+          var settings = self.get_settings(e);
+          var parent = S(this).parent();
+
+          if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+            self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));
+            parent.parent().removeClass(move_class + left_postfix);
+          } else if (S(this).parent().hasClass('has-submenu')) {
+            e.preventDefault();
+            S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix);
+          } else if (parent.hasClass('back')) {
+            e.preventDefault();
+            parent.parent().removeClass(move_class + left_postfix);
+          }
+          $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        //end of right canvas
+        .on('click.fndtn.offcanvas', '.top-off-canvas-toggle', function (e) {
+          self.click_toggle_class(e, move_class + bottom_postfix);
+          if (self.settings.open_method !== 'overlap') {
+            S('.top-submenu').removeClass(move_class + bottom_postfix);
+          }
+          $('.top-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.top-off-canvas-menu a', function (e) {
+          var settings = self.get_settings(e);
+          var parent = S(this).parent();
+
+          if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+            self.hide.call(self, move_class + bottom_postfix, self.get_wrapper(e));
+            parent.parent().removeClass(move_class + bottom_postfix);
+          } else if (S(this).parent().hasClass('has-submenu')) {
+            e.preventDefault();
+            S(this).siblings('.top-submenu').toggleClass(move_class + bottom_postfix);
+          } else if (parent.hasClass('back')) {
+            e.preventDefault();
+            parent.parent().removeClass(move_class + bottom_postfix);
+          }
+          $('.top-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        //end of top canvas
+        .on('click.fndtn.offcanvas', '.bottom-off-canvas-toggle', function (e) {
+          self.click_toggle_class(e, move_class + top_postfix);
+          if (self.settings.open_method !== 'overlap') {
+            S('.bottom-submenu').removeClass(move_class + top_postfix);
+          }
+          $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.bottom-off-canvas-menu a', function (e) {
+          var settings = self.get_settings(e);
+          var parent = S(this).parent();
+
+          if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+            self.hide.call(self, move_class + top_postfix, self.get_wrapper(e));
+            parent.parent().removeClass(move_class + top_postfix);
+          } else if (S(this).parent().hasClass('has-submenu')) {
+            e.preventDefault();
+            S(this).siblings('.bottom-submenu').toggleClass(move_class + top_postfix);
+          } else if (parent.hasClass('back')) {
+            e.preventDefault();
+            parent.parent().removeClass(move_class + top_postfix);
+          }
+          $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        //end of bottom
+        .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+          self.click_remove_class(e, move_class + left_postfix);
+          S('.right-submenu').removeClass(move_class + left_postfix);
+          if (right_postfix) {
+            self.click_remove_class(e, move_class + right_postfix);
+            S('.left-submenu').removeClass(move_class + left_postfix);
+          }
+          $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+          self.click_remove_class(e, move_class + left_postfix);
+          $('.left-off-canvas-toggle').attr('aria-expanded', 'false');
+          if (right_postfix) {
+            self.click_remove_class(e, move_class + right_postfix);
+            $('.right-off-canvas-toggle').attr('aria-expanded', 'false');
+          }
+        })
+        .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+          self.click_remove_class(e, move_class + top_postfix);
+          S('.bottom-submenu').removeClass(move_class + top_postfix);
+          if (bottom_postfix) {
+            self.click_remove_class(e, move_class + bottom_postfix);
+            S('.top-submenu').removeClass(move_class + top_postfix);
+          }
+          $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+        })
+        .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+          self.click_remove_class(e, move_class + top_postfix);
+          $('.top-off-canvas-toggle').attr('aria-expanded', 'false');
+          if (bottom_postfix) {
+            self.click_remove_class(e, move_class + bottom_postfix);
+            $('.bottom-off-canvas-toggle').attr('aria-expanded', 'false');
+          }
+        });
+    },
+
+    toggle : function (class_name, $off_canvas) {
+      $off_canvas = $off_canvas || this.get_wrapper();
+      if ($off_canvas.is('.' + class_name)) {
+        this.hide(class_name, $off_canvas);
+      } else {
+        this.show(class_name, $off_canvas);
+      }
+    },
+
+    show : function (class_name, $off_canvas) {
+      $off_canvas = $off_canvas || this.get_wrapper();
+      $off_canvas.trigger('open.fndtn.offcanvas');
+      $off_canvas.addClass(class_name);
+    },
+
+    hide : function (class_name, $off_canvas) {
+      $off_canvas = $off_canvas || this.get_wrapper();
+      $off_canvas.trigger('close.fndtn.offcanvas');
+      $off_canvas.removeClass(class_name);
+    },
+
+    click_toggle_class : function (e, class_name) {
+      e.preventDefault();
+      var $off_canvas = this.get_wrapper(e);
+      this.toggle(class_name, $off_canvas);
+    },
+
+    click_remove_class : function (e, class_name) {
+      e.preventDefault();
+      var $off_canvas = this.get_wrapper(e);
+      this.hide(class_name, $off_canvas);
+    },
+
+    get_settings : function (e) {
+      var offcanvas  = this.S(e.target).closest('[' + this.attr_name() + ']');
+      return offcanvas.data(this.attr_name(true) + '-init') || this.settings;
+    },
+
+    get_wrapper : function (e) {
+      var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap');
+
+      if ($off_canvas.length === 0) {
+        $off_canvas = this.S('.off-canvas-wrap');
+      }
+      return $off_canvas;
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.orbit.js b/js/foundation/js/foundation/foundation.orbit.js
new file mode 100644 (file)
index 0000000..d88bb46
--- /dev/null
@@ -0,0 +1,476 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  var noop = function () {};
+
+  var Orbit = function (el, settings) {
+    // Don't reinitialize plugin
+    if (el.hasClass(settings.slides_container_class)) {
+      return this;
+    }
+
+    var self = this,
+        container,
+        slides_container = el,
+        number_container,
+        bullets_container,
+        timer_container,
+        idx = 0,
+        animate,
+        timer,
+        locked = false,
+        adjust_height_after = false;
+
+    self.slides = function () {
+      return slides_container.children(settings.slide_selector);
+    };
+
+    self.slides().first().addClass(settings.active_slide_class);
+
+    self.update_slide_number = function (index) {
+      if (settings.slide_number) {
+        number_container.find('span:first').text(parseInt(index) + 1);
+        number_container.find('span:last').text(self.slides().length);
+      }
+      if (settings.bullets) {
+        bullets_container.children().removeClass(settings.bullets_active_class);
+        $(bullets_container.children().get(index)).addClass(settings.bullets_active_class);
+      }
+    };
+
+    self.update_active_link = function (index) {
+      var link = $('[data-orbit-link="' + self.slides().eq(index).attr('data-orbit-slide') + '"]');
+      link.siblings().removeClass(settings.bullets_active_class);
+      link.addClass(settings.bullets_active_class);
+    };
+
+    self.build_markup = function () {
+      slides_container.wrap('<div class="' + settings.container_class + '"></div>');
+      container = slides_container.parent();
+      slides_container.addClass(settings.slides_container_class);
+
+      if (settings.stack_on_small) {
+        container.addClass(settings.stack_on_small_class);
+      }
+
+      if (settings.navigation_arrows) {
+        container.append($('<a href="#"><span></span></a>').addClass(settings.prev_class));
+        container.append($('<a href="#"><span></span></a>').addClass(settings.next_class));
+      }
+
+      if (settings.timer) {
+        timer_container = $('<div>').addClass(settings.timer_container_class);
+        timer_container.append('<span>');
+        timer_container.append($('<div>').addClass(settings.timer_progress_class));
+        timer_container.addClass(settings.timer_paused_class);
+        container.append(timer_container);
+      }
+
+      if (settings.slide_number) {
+        number_container = $('<div>').addClass(settings.slide_number_class);
+        number_container.append('<span></span> ' + settings.slide_number_text + ' <span></span>');
+        container.append(number_container);
+      }
+
+      if (settings.bullets) {
+        bullets_container = $('<ol>').addClass(settings.bullets_container_class);
+        container.append(bullets_container);
+        bullets_container.wrap('<div class="orbit-bullets-container"></div>');
+        self.slides().each(function (idx, el) {
+          var bullet = $('<li>').attr('data-orbit-slide', idx).on('click', self.link_bullet);;
+          bullets_container.append(bullet);
+        });
+      }
+
+    };
+
+    self._goto = function (next_idx, start_timer) {
+      // if (locked) {return false;}
+      if (next_idx === idx) {return false;}
+      if (typeof timer === 'object') {timer.restart();}
+      var slides = self.slides();
+
+      var dir = 'next';
+      locked = true;
+      if (next_idx < idx) {dir = 'prev';}
+      if (next_idx >= slides.length) {
+        if (!settings.circular) {
+          return false;
+        }
+        next_idx = 0;
+      } else if (next_idx < 0) {
+        if (!settings.circular) {
+          return false;
+        }
+        next_idx = slides.length - 1;
+      }
+
+      var current = $(slides.get(idx));
+      var next = $(slides.get(next_idx));
+
+      current.css('zIndex', 2);
+      current.removeClass(settings.active_slide_class);
+      next.css('zIndex', 4).addClass(settings.active_slide_class);
+
+      slides_container.trigger('before-slide-change.fndtn.orbit');
+      settings.before_slide_change();
+      self.update_active_link(next_idx);
+
+      var callback = function () {
+        var unlock = function () {
+          idx = next_idx;
+          locked = false;
+          if (start_timer === true) {timer = self.create_timer(); timer.start();}
+          self.update_slide_number(idx);
+          slides_container.trigger('after-slide-change.fndtn.orbit', [{slide_number : idx, total_slides : slides.length}]);
+          settings.after_slide_change(idx, slides.length);
+        };
+        if (slides_container.outerHeight() != next.outerHeight() && settings.variable_height) {
+          slides_container.animate({'height': next.outerHeight()}, 250, 'linear', unlock);
+        } else {
+          unlock();
+        }
+      };
+
+      if (slides.length === 1) {callback(); return false;}
+
+      var start_animation = function () {
+        if (dir === 'next') {animate.next(current, next, callback);}
+        if (dir === 'prev') {animate.prev(current, next, callback);}
+      };
+
+      if (next.outerHeight() > slides_container.outerHeight() && settings.variable_height) {
+        slides_container.animate({'height': next.outerHeight()}, 250, 'linear', start_animation);
+      } else {
+        start_animation();
+      }
+    };
+
+    self.next = function (e) {
+      e.stopImmediatePropagation();
+      e.preventDefault();
+      self._goto(idx + 1);
+    };
+
+    self.prev = function (e) {
+      e.stopImmediatePropagation();
+      e.preventDefault();
+      self._goto(idx - 1);
+    };
+
+    self.link_custom = function (e) {
+      e.preventDefault();
+      var link = $(this).attr('data-orbit-link');
+      if ((typeof link === 'string') && (link = $.trim(link)) != '') {
+        var slide = container.find('[data-orbit-slide=' + link + ']');
+        if (slide.index() != -1) {self._goto(slide.index());}
+      }
+    };
+
+    self.link_bullet = function (e) {
+      var index = $(this).attr('data-orbit-slide');
+      if ((typeof index === 'string') && (index = $.trim(index)) != '') {
+        if (isNaN(parseInt(index))) {
+          var slide = container.find('[data-orbit-slide=' + index + ']');
+          if (slide.index() != -1) {self._goto(slide.index() + 1);}
+        } else {
+          self._goto(parseInt(index));
+        }
+      }
+
+    }
+
+    self.timer_callback = function () {
+      self._goto(idx + 1, true);
+    }
+
+    self.compute_dimensions = function () {
+      var current = $(self.slides().get(idx));
+      var h = current.outerHeight();
+      if (!settings.variable_height) {
+        self.slides().each(function(){
+          if ($(this).outerHeight() > h) { h = $(this).outerHeight(); }
+        });
+      }
+      slides_container.height(h);
+    };
+
+    self.create_timer = function () {
+      var t = new Timer(
+        container.find('.' + settings.timer_container_class),
+        settings,
+        self.timer_callback
+      );
+      return t;
+    };
+
+    self.stop_timer = function () {
+      if (typeof timer === 'object') {
+        timer.stop();
+      }
+    };
+
+    self.toggle_timer = function () {
+      var t = container.find('.' + settings.timer_container_class);
+      if (t.hasClass(settings.timer_paused_class)) {
+        if (typeof timer === 'undefined') {timer = self.create_timer();}
+        timer.start();
+      } else {
+        if (typeof timer === 'object') {timer.stop();}
+      }
+    };
+
+    self.init = function () {
+      self.build_markup();
+      if (settings.timer) {
+        timer = self.create_timer();
+        Foundation.utils.image_loaded(this.slides().children('img'), timer.start);
+      }
+      animate = new FadeAnimation(settings, slides_container);
+      if (settings.animation === 'slide') {
+        animate = new SlideAnimation(settings, slides_container);
+      }
+
+      container.on('click', '.' + settings.next_class, self.next);
+      container.on('click', '.' + settings.prev_class, self.prev);
+
+      if (settings.next_on_click) {
+        container.on('click', '.' + settings.slides_container_class + ' [data-orbit-slide]', self.link_bullet);
+      }
+
+      container.on('click', self.toggle_timer);
+      if (settings.swipe) {
+        container.on('touchstart.fndtn.orbit', function (e) {
+          if (!e.touches) {e = e.originalEvent;}
+          var data = {
+            start_page_x : e.touches[0].pageX,
+            start_page_y : e.touches[0].pageY,
+            start_time : (new Date()).getTime(),
+            delta_x : 0,
+            is_scrolling : undefined
+          };
+          container.data('swipe-transition', data);
+          e.stopPropagation();
+        })
+        .on('touchmove.fndtn.orbit', function (e) {
+          if (!e.touches) {
+            e = e.originalEvent;
+          }
+          // Ignore pinch/zoom events
+          if (e.touches.length > 1 || e.scale && e.scale !== 1) {
+            return;
+          }
+
+          var data = container.data('swipe-transition');
+          if (typeof data === 'undefined') {data = {};}
+
+          data.delta_x = e.touches[0].pageX - data.start_page_x;
+
+          if ( typeof data.is_scrolling === 'undefined') {
+            data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
+          }
+
+          if (!data.is_scrolling && !data.active) {
+            e.preventDefault();
+            var direction = (data.delta_x < 0) ? (idx + 1) : (idx - 1);
+            data.active = true;
+            self._goto(direction);
+          }
+        })
+        .on('touchend.fndtn.orbit', function (e) {
+          container.data('swipe-transition', {});
+          e.stopPropagation();
+        })
+      }
+      container.on('mouseenter.fndtn.orbit', function (e) {
+        if (settings.timer && settings.pause_on_hover) {
+          self.stop_timer();
+        }
+      })
+      .on('mouseleave.fndtn.orbit', function (e) {
+        if (settings.timer && settings.resume_on_mouseout) {
+          timer.start();
+        }
+      });
+
+      $(document).on('click', '[data-orbit-link]', self.link_custom);
+      $(window).on('load resize', self.compute_dimensions);
+      Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions);
+      Foundation.utils.image_loaded(this.slides().children('img'), function () {
+        container.prev('.' + settings.preloader_class).css('display', 'none');
+        self.update_slide_number(0);
+        self.update_active_link(0);
+        slides_container.trigger('ready.fndtn.orbit');
+      });
+    };
+
+    self.init();
+  };
+
+  var Timer = function (el, settings, callback) {
+    var self = this,
+        duration = settings.timer_speed,
+        progress = el.find('.' + settings.timer_progress_class),
+        start,
+        timeout,
+        left = -1;
+
+    this.update_progress = function (w) {
+      var new_progress = progress.clone();
+      new_progress.attr('style', '');
+      new_progress.css('width', w + '%');
+      progress.replaceWith(new_progress);
+      progress = new_progress;
+    };
+
+    this.restart = function () {
+      clearTimeout(timeout);
+      el.addClass(settings.timer_paused_class);
+      left = -1;
+      self.update_progress(0);
+    };
+
+    this.start = function () {
+      if (!el.hasClass(settings.timer_paused_class)) {return true;}
+      left = (left === -1) ? duration : left;
+      el.removeClass(settings.timer_paused_class);
+      start = new Date().getTime();
+      progress.animate({'width' : '100%'}, left, 'linear');
+      timeout = setTimeout(function () {
+        self.restart();
+        callback();
+      }, left);
+      el.trigger('timer-started.fndtn.orbit')
+    };
+
+    this.stop = function () {
+      if (el.hasClass(settings.timer_paused_class)) {return true;}
+      clearTimeout(timeout);
+      el.addClass(settings.timer_paused_class);
+      var end = new Date().getTime();
+      left = left - (end - start);
+      var w = 100 - ((left / duration) * 100);
+      self.update_progress(w);
+      el.trigger('timer-stopped.fndtn.orbit');
+    };
+  };
+
+  var SlideAnimation = function (settings, container) {
+    var duration = settings.animation_speed;
+    var is_rtl = ($('html[dir=rtl]').length === 1);
+    var margin = is_rtl ? 'marginRight' : 'marginLeft';
+    var animMargin = {};
+    animMargin[margin] = '0%';
+
+    this.next = function (current, next, callback) {
+      current.animate({marginLeft : '-100%'}, duration);
+      next.animate(animMargin, duration, function () {
+        current.css(margin, '100%');
+        callback();
+      });
+    };
+
+    this.prev = function (current, prev, callback) {
+      current.animate({marginLeft : '100%'}, duration);
+      prev.css(margin, '-100%');
+      prev.animate(animMargin, duration, function () {
+        current.css(margin, '100%');
+        callback();
+      });
+    };
+  };
+
+  var FadeAnimation = function (settings, container) {
+    var duration = settings.animation_speed;
+    var is_rtl = ($('html[dir=rtl]').length === 1);
+    var margin = is_rtl ? 'marginRight' : 'marginLeft';
+
+    this.next = function (current, next, callback) {
+      next.css({'margin' : '0%', 'opacity' : '0.01'});
+      next.animate({'opacity' :'1'}, duration, 'linear', function () {
+        current.css('margin', '100%');
+        callback();
+      });
+    };
+
+    this.prev = function (current, prev, callback) {
+      prev.css({'margin' : '0%', 'opacity' : '0.01'});
+      prev.animate({'opacity' : '1'}, duration, 'linear', function () {
+        current.css('margin', '100%');
+        callback();
+      });
+    };
+  };
+
+  Foundation.libs = Foundation.libs || {};
+
+  Foundation.libs.orbit = {
+    name : 'orbit',
+
+    version : '5.5.3',
+
+    settings : {
+      animation : 'slide',
+      timer_speed : 10000,
+      pause_on_hover : true,
+      resume_on_mouseout : false,
+      next_on_click : true,
+      animation_speed : 500,
+      stack_on_small : false,
+      navigation_arrows : true,
+      slide_number : true,
+      slide_number_text : 'of',
+      container_class : 'orbit-container',
+      stack_on_small_class : 'orbit-stack-on-small',
+      next_class : 'orbit-next',
+      prev_class : 'orbit-prev',
+      timer_container_class : 'orbit-timer',
+      timer_paused_class : 'paused',
+      timer_progress_class : 'orbit-progress',
+      slides_container_class : 'orbit-slides-container',
+      preloader_class : 'preloader',
+      slide_selector : '*',
+      bullets_container_class : 'orbit-bullets',
+      bullets_active_class : 'active',
+      slide_number_class : 'orbit-slide-number',
+      caption_class : 'orbit-caption',
+      active_slide_class : 'active',
+      orbit_transition_class : 'orbit-transitioning',
+      bullets : true,
+      circular : true,
+      timer : true,
+      variable_height : false,
+      swipe : true,
+      before_slide_change : noop,
+      after_slide_change : noop
+    },
+
+    init : function (scope, method, options) {
+      var self = this;
+      this.bindings(method, options);
+    },
+
+    events : function (instance) {
+      var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init'));
+      this.S(instance).data(this.name + '-instance', orbit_instance);
+    },
+
+    reflow : function () {
+      var self = this;
+
+      if (self.S(self.scope).is('[data-orbit]')) {
+        var $el = self.S(self.scope);
+        var instance = $el.data(self.name + '-instance');
+        instance.compute_dimensions();
+      } else {
+        self.S('[data-orbit]', self.scope).each(function (idx, el) {
+          var $el = self.S(el);
+          var opts = self.data_options($el);
+          var instance = $el.data(self.name + '-instance');
+          instance.compute_dimensions();
+        });
+      }
+    }
+  };
+
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.reveal.js b/js/foundation/js/foundation/foundation.reveal.js
new file mode 100644 (file)
index 0000000..08ad413
--- /dev/null
@@ -0,0 +1,522 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  var openModals = [];
+
+  Foundation.libs.reveal = {
+    name : 'reveal',
+
+    version : '5.5.3',
+
+    locked : false,
+
+    settings : {
+      animation : 'fadeAndPop',
+      animation_speed : 250,
+      close_on_background_click : true,
+      close_on_esc : true,
+      dismiss_modal_class : 'close-reveal-modal',
+      multiple_opened : false,
+      bg_class : 'reveal-modal-bg',
+      root_element : 'body',
+      open : function(){},
+      opened : function(){},
+      close : function(){},
+      closed : function(){},
+      on_ajax_error: $.noop,
+      bg : $('.reveal-modal-bg'),
+      css : {
+        open : {
+          'opacity' : 0,
+          'visibility' : 'visible',
+          'display' : 'block'
+        },
+        close : {
+          'opacity' : 1,
+          'visibility' : 'hidden',
+          'display' : 'none'
+        }
+      }
+    },
+
+    init : function (scope, method, options) {
+      $.extend(true, this.settings, method, options);
+      this.bindings(method, options);
+    },
+
+    events : function (scope) {
+      var self = this,
+          S = self.S;
+
+      S(this.scope)
+        .off('.reveal')
+        .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {
+          e.preventDefault();
+
+          if (!self.locked) {
+            var element = S(this),
+                ajax = element.data(self.data_attr('reveal-ajax')),
+                replaceContentSel = element.data(self.data_attr('reveal-replace-content'));
+
+            self.locked = true;
+
+            if (typeof ajax === 'undefined') {
+              self.open.call(self, element);
+            } else {
+              var url = ajax === true ? element.attr('href') : ajax;
+              self.open.call(self, element, {url : url}, { replaceContentSel : replaceContentSel });
+            }
+          }
+        });
+
+      S(document)
+        .on('click.fndtn.reveal', this.close_targets(), function (e) {
+          e.preventDefault();
+          if (!self.locked) {
+            var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,
+                bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];
+
+            if (bg_clicked) {
+              if (settings.close_on_background_click) {
+                e.stopPropagation();
+              } else {
+                return;
+              }
+            }
+
+            self.locked = true;
+            self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open:not(.toback)') : S(this).closest('[' + self.attr_name() + ']'));
+          }
+        });
+
+      if (S('[' + self.attr_name() + ']', this.scope).length > 0) {
+        S(this.scope)
+          // .off('.reveal')
+          .on('open.fndtn.reveal', this.settings.open)
+          .on('opened.fndtn.reveal', this.settings.opened)
+          .on('opened.fndtn.reveal', this.open_video)
+          .on('close.fndtn.reveal', this.settings.close)
+          .on('closed.fndtn.reveal', this.settings.closed)
+          .on('closed.fndtn.reveal', this.close_video);
+      } else {
+        S(this.scope)
+          // .off('.reveal')
+          .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)
+          .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)
+          .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)
+          .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)
+          .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)
+          .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);
+      }
+
+      return true;
+    },
+
+    // PATCH #3: turning on key up capture only when a reveal window is open
+    key_up_on : function (scope) {
+      var self = this;
+
+      // PATCH #1: fixing multiple keyup event trigger from single key press
+      self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {
+        var open_modal = self.S('[' + self.attr_name() + '].open'),
+            settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;
+        // PATCH #2: making sure that the close event can be called only while unlocked,
+        //           so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.
+        if ( settings && event.which === 27  && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key
+          self.close.call(self, open_modal);
+        }
+      });
+
+      return true;
+    },
+
+    // PATCH #3: turning on key up capture only when a reveal window is open
+    key_up_off : function (scope) {
+      this.S('body').off('keyup.fndtn.reveal');
+      return true;
+    },
+
+    open : function (target, ajax_settings) {
+      var self = this,
+          modal;
+
+      if (target) {
+        if (typeof target.selector !== 'undefined') {
+          // Find the named node; only use the first one found, since the rest of the code assumes there's only one node
+          modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();
+        } else {
+          modal = self.S(this.scope);
+
+          ajax_settings = target;
+        }
+      } else {
+        modal = self.S(this.scope);
+      }
+
+      var settings = modal.data(self.attr_name(true) + '-init');
+      settings = settings || this.settings;
+
+
+      if (modal.hasClass('open') && target !== undefined && target.attr('data-reveal-id') == modal.attr('id')) {
+        return self.close(modal);
+      }
+
+      if (!modal.hasClass('open')) {
+        var open_modal = self.S('[' + self.attr_name() + '].open');
+
+        if (typeof modal.data('css-top') === 'undefined') {
+          modal.data('css-top', parseInt(modal.css('top'), 10))
+            .data('offset', this.cache_offset(modal));
+        }
+
+        modal.attr('tabindex','0').attr('aria-hidden','false');
+
+        this.key_up_on(modal);    // PATCH #3: turning on key up capture only when a reveal window is open
+
+        // Prevent namespace event from triggering twice
+        modal.on('open.fndtn.reveal', function(e) {
+          if (e.namespace !== 'fndtn.reveal') return;
+        });
+
+        modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal');
+
+        if (open_modal.length < 1) {
+          this.toggle_bg(modal, true);
+        }
+
+        if (typeof ajax_settings === 'string') {
+          ajax_settings = {
+            url : ajax_settings
+          };
+        }
+
+        var openModal = function() {
+          if(open_modal.length > 0) {
+            if(settings.multiple_opened) {
+              self.to_back(open_modal);
+            } else {
+              self.hide(open_modal, settings.css.close);
+            }
+          }
+
+          // bl: add the open_modal that isn't already in the background to the openModals array
+          if(settings.multiple_opened) {
+            openModals.push(modal);
+          }
+
+          self.show(modal, settings.css.open);
+        };
+
+        if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {
+          openModal();
+        } else {
+          var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;
+          $.extend(ajax_settings, {
+            success : function (data, textStatus, jqXHR) {
+              if ( $.isFunction(old_success) ) {
+                var result = old_success(data, textStatus, jqXHR);
+                if (typeof result == 'string') {
+                  data = result;
+                }
+              }
+
+              if (typeof options !== 'undefined' && typeof options.replaceContentSel !== 'undefined') {
+                modal.find(options.replaceContentSel).html(data);
+              } else {
+                modal.html(data);
+              }
+
+              self.S(modal).foundation('section', 'reflow');
+              self.S(modal).children().foundation();
+
+              openModal();
+            }
+          });
+
+          // check for if user initalized with error callback
+          if (settings.on_ajax_error !== $.noop) {
+            $.extend(ajax_settings, {
+              error : settings.on_ajax_error
+            });
+          }
+
+          $.ajax(ajax_settings);
+        }
+      }
+      self.S(window).trigger('resize');
+    },
+
+    close : function (modal) {
+      var modal = modal && modal.length ? modal : this.S(this.scope),
+          open_modals = this.S('[' + this.attr_name() + '].open'),
+          settings = modal.data(this.attr_name(true) + '-init') || this.settings,
+          self = this;
+
+      if (open_modals.length > 0) {
+
+        modal.removeAttr('tabindex','0').attr('aria-hidden','true');
+
+        this.locked = true;
+        this.key_up_off(modal);   // PATCH #3: turning on key up capture only when a reveal window is open
+
+        modal.trigger('close.fndtn.reveal');
+
+        if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) {
+          self.toggle_bg(modal, false);
+          self.to_front(modal);
+        }
+
+        if (settings.multiple_opened) {
+          var isCurrent = modal.is(':not(.toback)');
+          self.hide(modal, settings.css.close, settings);
+          if(isCurrent) {
+            // remove the last modal since it is now closed
+            openModals.pop();
+          } else {
+            // if this isn't the current modal, then find it in the array and remove it
+            openModals = $.grep(openModals, function(elt) {
+              var isThis = elt[0]===modal[0];
+              if(isThis) {
+                // since it's not currently in the front, put it in the front now that it is hidden
+                // so that if it's re-opened, it won't be .toback
+                self.to_front(modal);
+              }
+              return !isThis;
+            });
+          }
+          // finally, show the next modal in the stack, if there is one
+          if(openModals.length>0) {
+            self.to_front(openModals[openModals.length - 1]);
+          }
+        } else {
+          self.hide(open_modals, settings.css.close, settings);
+        }
+      }
+    },
+
+    close_targets : function () {
+      var base = '.' + this.settings.dismiss_modal_class;
+
+      if (this.settings.close_on_background_click) {
+        return base + ', .' + this.settings.bg_class;
+      }
+
+      return base;
+    },
+
+    toggle_bg : function (modal, state) {
+      if (this.S('.' + this.settings.bg_class).length === 0) {
+        this.settings.bg = $('<div />', {'class': this.settings.bg_class})
+          .appendTo('body').hide();
+      }
+
+      var visible = this.settings.bg.filter(':visible').length > 0;
+      if ( state != visible ) {
+        if ( state == undefined ? visible : !state ) {
+          this.hide(this.settings.bg);
+        } else {
+          this.show(this.settings.bg);
+        }
+      }
+    },
+
+    show : function (el, css) {
+      // is modal
+      if (css) {
+        var settings = el.data(this.attr_name(true) + '-init') || this.settings,
+            root_element = settings.root_element,
+            context = this;
+
+        if (el.parent(root_element).length === 0) {
+          var placeholder = el.wrap('<div style="display: none;" />').parent();
+
+          el.on('closed.fndtn.reveal.wrapped', function () {
+            el.detach().appendTo(placeholder);
+            el.unwrap().unbind('closed.fndtn.reveal.wrapped');
+          });
+
+          el.detach().appendTo(root_element);
+        }
+
+        var animData = getAnimationData(settings.animation);
+        if (!animData.animate) {
+          this.locked = false;
+        }
+        if (animData.pop) {
+          css.top = $(window).scrollTop() - el.data('offset') + 'px';
+          var end_css = {
+            top: $(window).scrollTop() + el.data('css-top') + 'px',
+            opacity: 1
+          };
+
+          return setTimeout(function () {
+            return el
+              .css(css)
+              .animate(end_css, settings.animation_speed, 'linear', function () {
+                context.locked = false;
+                el.trigger('opened.fndtn.reveal');
+              })
+              .addClass('open');
+          }, settings.animation_speed / 2);
+        }
+
+        css.top = $(window).scrollTop() + el.data('css-top') + 'px';
+
+        if (animData.fade) {
+          var end_css = {opacity: 1};
+
+          return setTimeout(function () {
+            return el
+              .css(css)
+              .animate(end_css, settings.animation_speed, 'linear', function () {
+                context.locked = false;
+                el.trigger('opened.fndtn.reveal');
+              })
+              .addClass('open');
+          }, settings.animation_speed / 2);
+        }
+
+        return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened.fndtn.reveal');
+      }
+
+      var settings = this.settings;
+
+      // should we animate the background?
+      if (getAnimationData(settings.animation).fade) {
+        return el.fadeIn(settings.animation_speed / 2);
+      }
+
+      this.locked = false;
+
+      return el.show();
+    },
+
+    to_back : function(el) {
+      el.addClass('toback');
+    },
+
+    to_front : function(el) {
+      el.removeClass('toback');
+    },
+
+    hide : function (el, css) {
+      // is modal
+      if (css) {
+        var settings = el.data(this.attr_name(true) + '-init'),
+            context = this;
+        settings = settings || this.settings;
+
+        var animData = getAnimationData(settings.animation);
+        if (!animData.animate) {
+          this.locked = false;
+        }
+        if (animData.pop) {
+          var end_css = {
+            top: - $(window).scrollTop() - el.data('offset') + 'px',
+            opacity: 0
+          };
+
+          return setTimeout(function () {
+            return el
+              .animate(end_css, settings.animation_speed, 'linear', function () {
+                context.locked = false;
+                el.css(css).trigger('closed.fndtn.reveal');
+              })
+              .removeClass('open');
+          }, settings.animation_speed / 2);
+        }
+
+        if (animData.fade) {
+          var end_css = {opacity : 0};
+
+          return setTimeout(function () {
+            return el
+              .animate(end_css, settings.animation_speed, 'linear', function () {
+                context.locked = false;
+                el.css(css).trigger('closed.fndtn.reveal');
+              })
+              .removeClass('open');
+          }, settings.animation_speed / 2);
+        }
+
+        return el.hide().css(css).removeClass('open').trigger('closed.fndtn.reveal');
+      }
+
+      var settings = this.settings;
+
+      // should we animate the background?
+      if (getAnimationData(settings.animation).fade) {
+        return el.fadeOut(settings.animation_speed / 2);
+      }
+
+      return el.hide();
+    },
+
+    close_video : function (e) {
+      var video = $('.flex-video', e.target),
+          iframe = $('iframe', video);
+
+      if (iframe.length > 0) {
+        iframe.attr('data-src', iframe[0].src);
+        iframe.attr('src', iframe.attr('src'));
+        video.hide();
+      }
+    },
+
+    open_video : function (e) {
+      var video = $('.flex-video', e.target),
+          iframe = video.find('iframe');
+
+      if (iframe.length > 0) {
+        var data_src = iframe.attr('data-src');
+        if (typeof data_src === 'string') {
+          iframe[0].src = iframe.attr('data-src');
+        } else {
+          var src = iframe[0].src;
+          iframe[0].src = undefined;
+          iframe[0].src = src;
+        }
+        video.show();
+      }
+    },
+
+    data_attr : function (str) {
+      if (this.namespace.length > 0) {
+        return this.namespace + '-' + str;
+      }
+
+      return str;
+    },
+
+    cache_offset : function (modal) {
+      var offset = modal.show().height() + parseInt(modal.css('top'), 10) + modal.scrollY;
+
+      modal.hide();
+
+      return offset;
+    },
+
+    off : function () {
+      $(this.scope).off('.fndtn.reveal');
+    },
+
+    reflow : function () {}
+  };
+
+  /*
+   * getAnimationData('popAndFade') // {animate: true,  pop: true,  fade: true}
+   * getAnimationData('fade')       // {animate: true,  pop: false, fade: true}
+   * getAnimationData('pop')        // {animate: true,  pop: true,  fade: false}
+   * getAnimationData('foo')        // {animate: false, pop: false, fade: false}
+   * getAnimationData(null)         // {animate: false, pop: false, fade: false}
+   */
+  function getAnimationData(str) {
+    var fade = /fade/i.test(str);
+    var pop = /pop/i.test(str);
+    return {
+      animate : fade || pop,
+      pop : pop,
+      fade : fade
+    };
+  }
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.slider.js b/js/foundation/js/foundation/foundation.slider.js
new file mode 100644 (file)
index 0000000..0d71d56
--- /dev/null
@@ -0,0 +1,296 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.slider = {
+    name : 'slider',
+
+    version : '5.5.3',
+
+    settings : {
+      start : 0,
+      end : 100,
+      step : 1,
+      precision : 2,
+      initial : null,
+      display_selector : '',
+      vertical : false,
+      trigger_input_change : false,
+      on_change : function () {}
+    },
+
+    cache : {},
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'throttle');
+      this.bindings(method, options);
+      this.reflow();
+    },
+
+    events : function () {
+      var self = this;
+      $(this.scope)
+        .off('.slider')
+        .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider',
+        '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) {
+          if (!self.cache.active) {
+            e.preventDefault();
+            self.set_active_slider($(e.target));
+          }
+        })
+        .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) {
+          if (!!self.cache.active) {
+            e.preventDefault();
+            if ($.data(self.cache.active[0], 'settings').vertical) {
+              var scroll_offset = 0;
+              if (!e.pageY) {
+                scroll_offset = window.scrollY;
+              }
+              self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
+            } else {
+              self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
+            }
+          }
+        })
+        .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) {
+          if(!self.cache.active) {
+            // if the user has just clicked into the slider without starting to drag the handle
+            var slider = $(e.target).attr('role') === 'slider' ? $(e.target) : $(e.target).closest('.range-slider').find("[role='slider']");
+
+            if (slider.length && (!slider.parent().hasClass('disabled') && !slider.parent().attr('disabled'))) {
+              self.set_active_slider(slider);
+              if ($.data(self.cache.active[0], 'settings').vertical) {
+                var scroll_offset = 0;
+                if (!e.pageY) {
+                  scroll_offset = window.scrollY;
+                }
+                self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
+              } else {
+                self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
+              }
+            }
+          }
+          self.remove_active_slider();
+        })
+        .on('change.fndtn.slider', function (e) {
+          self.settings.on_change();
+        });
+
+      self.S(window)
+        .on('resize.fndtn.slider', self.throttle(function (e) {
+          self.reflow();
+        }, 300));
+
+      // update slider value as users change input value
+      this.S('[' + this.attr_name() + ']').each(function () {
+        var slider = $(this),
+            handle = slider.children('.range-slider-handle')[0],
+            settings = self.initialize_settings(handle);
+
+        if (settings.display_selector != '') {
+          $(settings.display_selector).each(function(){
+            if ($(this).attr('value')) {
+              $(this).off('change').on('change', function () {
+                slider.foundation("slider", "set_value", $(this).val());
+              });
+            }
+          });
+        }
+      });
+    },
+
+    get_cursor_position : function (e, xy) {
+      var pageXY = 'page' + xy.toUpperCase(),
+          clientXY = 'client' + xy.toUpperCase(),
+          position;
+
+      if (typeof e[pageXY] !== 'undefined') {
+        position = e[pageXY];
+      } else if (typeof e.originalEvent[clientXY] !== 'undefined') {
+        position = e.originalEvent[clientXY];
+      } else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') {
+        position = e.originalEvent.touches[0][clientXY];
+      } else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') {
+        position = e.currentPoint[xy];
+      }
+
+      return position;
+    },
+
+    set_active_slider : function ($handle) {
+      this.cache.active = $handle;
+    },
+
+    remove_active_slider : function () {
+      this.cache.active = null;
+    },
+
+    calculate_position : function ($handle, cursor_x) {
+      var self = this,
+          settings = $.data($handle[0], 'settings'),
+          handle_l = $.data($handle[0], 'handle_l'),
+          handle_o = $.data($handle[0], 'handle_o'),
+          bar_l = $.data($handle[0], 'bar_l'),
+          bar_o = $.data($handle[0], 'bar_o');
+
+      requestAnimationFrame(function () {
+        var pct;
+
+        if (Foundation.rtl && !settings.vertical) {
+          pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1);
+        } else {
+          pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1);
+        }
+
+        pct = settings.vertical ? 1 - pct : pct;
+
+        var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision);
+
+        self.set_ui($handle, norm);
+      });
+    },
+
+    set_ui : function ($handle, value) {
+      var settings = $.data($handle[0], 'settings'),
+          handle_l = $.data($handle[0], 'handle_l'),
+          bar_l = $.data($handle[0], 'bar_l'),
+          norm_pct = this.normalized_percentage(value, settings.start, settings.end),
+          handle_offset = norm_pct * (bar_l - handle_l) - 1,
+          progress_bar_length = norm_pct * 100,
+          $handle_parent = $handle.parent(),
+          $hidden_inputs = $handle.parent().children('input[type=hidden]');
+
+      if (Foundation.rtl && !settings.vertical) {
+        handle_offset = -handle_offset;
+      }
+
+      handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset;
+      this.set_translate($handle, handle_offset, settings.vertical);
+
+      if (settings.vertical) {
+        $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%');
+      } else {
+        $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%');
+      }
+
+      $handle_parent.attr(this.attr_name(), value).trigger('change.fndtn.slider');
+
+      $hidden_inputs.val(value);
+      if (settings.trigger_input_change) {
+          $hidden_inputs.trigger('change.fndtn.slider');
+      }
+
+      if (!$handle[0].hasAttribute('aria-valuemin')) {
+        $handle.attr({
+          'aria-valuemin' : settings.start,
+          'aria-valuemax' : settings.end
+        });
+      }
+      $handle.attr('aria-valuenow', value);
+
+      if (settings.display_selector != '') {
+        $(settings.display_selector).each(function () {
+          if (this.hasAttribute('value')) {
+            $(this).val(value);
+          } else {
+            $(this).text(value);
+          }
+        });
+      }
+
+    },
+
+    normalized_percentage : function (val, start, end) {
+      return Math.min(1, (val - start) / (end - start));
+    },
+
+    normalized_value : function (val, start, end, step, precision) {
+      var range = end - start,
+          point = val * range,
+          mod = (point - (point % step)) / step,
+          rem = point % step,
+          round = ( rem >= step * 0.5 ? step : 0);
+      return ((mod * step + round) + start).toFixed(precision);
+    },
+
+    set_translate : function (ele, offset, vertical) {
+      if (vertical) {
+        $(ele)
+          .css('-webkit-transform', 'translateY(' + offset + 'px)')
+          .css('-moz-transform', 'translateY(' + offset + 'px)')
+          .css('-ms-transform', 'translateY(' + offset + 'px)')
+          .css('-o-transform', 'translateY(' + offset + 'px)')
+          .css('transform', 'translateY(' + offset + 'px)');
+      } else {
+        $(ele)
+          .css('-webkit-transform', 'translateX(' + offset + 'px)')
+          .css('-moz-transform', 'translateX(' + offset + 'px)')
+          .css('-ms-transform', 'translateX(' + offset + 'px)')
+          .css('-o-transform', 'translateX(' + offset + 'px)')
+          .css('transform', 'translateX(' + offset + 'px)');
+      }
+    },
+
+    limit_to : function (val, min, max) {
+      return Math.min(Math.max(val, min), max);
+    },
+
+    initialize_settings : function (handle) {
+      var settings = $.extend({}, this.settings, this.data_options($(handle).parent())),
+          decimal_places_match_result;
+
+      if (settings.precision === null) {
+        decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/);
+        settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0;
+      }
+
+      if (settings.vertical) {
+        $.data(handle, 'bar_o', $(handle).parent().offset().top);
+        $.data(handle, 'bar_l', $(handle).parent().outerHeight());
+        $.data(handle, 'handle_o', $(handle).offset().top);
+        $.data(handle, 'handle_l', $(handle).outerHeight());
+      } else {
+        $.data(handle, 'bar_o', $(handle).parent().offset().left);
+        $.data(handle, 'bar_l', $(handle).parent().outerWidth());
+        $.data(handle, 'handle_o', $(handle).offset().left);
+        $.data(handle, 'handle_l', $(handle).outerWidth());
+      }
+
+      $.data(handle, 'bar', $(handle).parent());
+      return $.data(handle, 'settings', settings);
+    },
+
+    set_initial_position : function ($ele) {
+      var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'),
+          initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start),
+          $handle = $ele.children('.range-slider-handle');
+      this.set_ui($handle, initial);
+    },
+
+    set_value : function (value) {
+      var self = this;
+      $('[' + self.attr_name() + ']', this.scope).each(function () {
+        $(this).attr(self.attr_name(), value);
+      });
+      if (!!$(this.scope).attr(self.attr_name())) {
+        $(this.scope).attr(self.attr_name(), value);
+      }
+      self.reflow();
+    },
+
+    reflow : function () {
+      var self = this;
+      self.S('[' + this.attr_name() + ']').each(function () {
+        var handle = $(this).children('.range-slider-handle')[0],
+            val = $(this).attr(self.attr_name());
+        self.initialize_settings(handle);
+
+        if (val) {
+          self.set_ui($(handle), parseFloat(val));
+        } else {
+          self.set_initial_position($(this));
+        }
+      });
+    }
+  };
+
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.tab.js b/js/foundation/js/foundation/foundation.tab.js
new file mode 100644 (file)
index 0000000..4b375c1
--- /dev/null
@@ -0,0 +1,247 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.tab = {
+    name : 'tab',
+
+    version : '5.5.3',
+
+    settings : {
+      active_class : 'active',
+      callback : function () {},
+      deep_linking : false,
+      scroll_to_content : true,
+      is_hover : false
+    },
+
+    default_tab_hashes : [],
+
+    init : function (scope, method, options) {
+      var self = this,
+          S = this.S;
+
+         // Store the default active tabs which will be referenced when the
+         // location hash is absent, as in the case of navigating the tabs and
+         // returning to the first viewing via the browser Back button.
+         S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {
+           self.default_tab_hashes.push(this.hash);
+         });
+
+      this.bindings(method, options);
+      this.handle_location_hash_change();
+    },
+
+    events : function () {
+      var self = this,
+          S = this.S;
+
+      var usual_tab_behavior =  function (e, target) {
+        var settings = S(target).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+        if (!settings.is_hover || Modernizr.touch) {
+          // if user did not pressed tab key, prevent default action
+          var keyCode = e.keyCode || e.which;
+          if (keyCode !== 9) { 
+            e.preventDefault();
+            e.stopPropagation();
+          }
+          self.toggle_active_tab(S(target).parent());
+          
+        }
+      };
+
+      S(this.scope)
+        .off('.tab')
+        // Key event: focus/tab key
+        .on('keydown.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
+          var keyCode = e.keyCode || e.which;
+          // if user pressed tab key
+          if (keyCode === 13 || keyCode === 32) { // enter or space
+            var el = this;
+            usual_tab_behavior(e, el);
+          } 
+        })
+        // Click event: tab title
+        .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
+          var el = this;
+          usual_tab_behavior(e, el);
+        })
+        // Hover event: tab title
+        .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {
+          var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+          if (settings.is_hover) {
+            self.toggle_active_tab(S(this).parent());
+          }
+        });
+
+      // Location hash change event
+      S(window).on('hashchange.fndtn.tab', function (e) {
+        e.preventDefault();
+        self.handle_location_hash_change();
+      });
+    },
+
+    handle_location_hash_change : function () {
+
+      var self = this,
+          S = this.S;
+
+      S('[' + this.attr_name() + ']', this.scope).each(function () {
+        var settings = S(this).data(self.attr_name(true) + '-init');
+        if (settings.deep_linking) {
+          // Match the location hash to a label
+          var hash;
+          if (settings.scroll_to_content) {
+            hash = self.scope.location.hash;
+          } else {
+            // prefix the hash to prevent anchor scrolling
+            hash = self.scope.location.hash.replace('fndtn-', '');
+          }
+          if (hash != '') {
+            // Check whether the location hash references a tab content div or
+            // another element on the page (inside or outside the tab content div)
+            var hash_element = S(hash);
+            if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) {
+              // Tab content div
+              self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent());
+            } else {
+              // Not the tab content div. If inside the tab content, find the
+              // containing tab and toggle it as active.
+              var hash_tab_container_id = hash_element.closest('.content').attr('id');
+              if (hash_tab_container_id != undefined) {
+                self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash);
+              }
+            }
+          } else {
+            // Reference the default tab hashes which were initialized in the init function
+            for (var ind = 0; ind < self.default_tab_hashes.length; ind++) {
+              self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent());
+            }
+          }
+        }
+       });
+     },
+
+    toggle_active_tab : function (tab, location_hash) {
+      var self = this,
+          S = self.S,
+          tabs = tab.closest('[' + this.attr_name() + ']'),
+          tab_link = tab.find('a'),
+          anchor = tab.children('a').first(),
+          target_hash = '#' + anchor.attr('href').split('#')[1],
+          target = S(target_hash),
+          siblings = tab.siblings(),
+          settings = tabs.data(this.attr_name(true) + '-init'),
+          interpret_keyup_action = function (e) {
+            // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js
+
+            // define current, previous and next (possible) tabs
+
+            var $original = $(this);
+            var $prev = $(this).parents('li').prev().children('[role="tab"]');
+            var $next = $(this).parents('li').next().children('[role="tab"]');
+            var $target;
+
+            // find the direction (prev or next)
+
+            switch (e.keyCode) {
+              case 37:
+                $target = $prev;
+                break;
+              case 39:
+                $target = $next;
+                break;
+              default:
+                $target = false
+                  break;
+            }
+
+            if ($target.length) {
+              $original.attr({
+                'tabindex' : '-1',
+                'aria-selected' : null
+              });
+              $target.attr({
+                'tabindex' : '0',
+                'aria-selected' : true
+              }).focus();
+            }
+
+            // Hide panels
+
+            $('[role="tabpanel"]')
+              .attr('aria-hidden', 'true');
+
+            // Show panel which corresponds to target
+
+            $('#' + $(document.activeElement).attr('href').substring(1))
+              .attr('aria-hidden', null);
+
+          },
+          go_to_hash = function(hash) {
+            // This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it
+            // the user would get continually redirected to the default hash.
+            var default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : 'fndtn-' + self.default_tab_hashes[0].replace('#', '');
+
+            if (hash !== default_hash || window.location.hash) {
+              window.location.hash = hash;
+            }
+          };
+
+      // allow usage of data-tab-content attribute instead of href
+      if (anchor.data('tab-content')) {
+        target_hash = '#' + anchor.data('tab-content').split('#')[1];
+        target = S(target_hash);
+      }
+
+      if (settings.deep_linking) {
+
+        if (settings.scroll_to_content) {
+
+          // retain current hash to scroll to content
+          go_to_hash(location_hash || target_hash);
+
+          if (location_hash == undefined || location_hash == target_hash) {
+            tab.parent()[0].scrollIntoView();
+          } else {
+            S(target_hash)[0].scrollIntoView();
+          }
+        } else {
+          // prefix the hashes so that the browser doesn't scroll down
+          if (location_hash != undefined) {
+            go_to_hash('fndtn-' + location_hash.replace('#', ''));
+          } else {
+            go_to_hash('fndtn-' + target_hash.replace('#', ''));
+          }
+        }
+      }
+
+      // WARNING: The activation and deactivation of the tab content must
+      // occur after the deep linking in order to properly refresh the browser
+      // window (notably in Chrome).
+      // Clean up multiple attr instances to done once
+      tab.addClass(settings.active_class).triggerHandler('opened');
+      tab_link.attr({'aria-selected' : 'true',  tabindex : 0});
+      siblings.removeClass(settings.active_class)
+      siblings.find('a').attr({'aria-selected' : 'false'/*,  tabindex : -1*/});
+      target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true'/*,  tabindex : -1*/});
+      target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex');
+      settings.callback(tab);
+      target.triggerHandler('toggled', [target]);
+      tabs.triggerHandler('toggled', [tab]);
+
+      tab_link.off('keydown').on('keydown', interpret_keyup_action );
+    },
+
+    data_attr : function (str) {
+      if (this.namespace.length > 0) {
+        return this.namespace + '-' + str;
+      }
+
+      return str;
+    },
+
+    off : function () {},
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.tooltip.js b/js/foundation/js/foundation/foundation.tooltip.js
new file mode 100644 (file)
index 0000000..0690e25
--- /dev/null
@@ -0,0 +1,348 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.tooltip = {
+    name : 'tooltip',
+
+    version : '5.5.3',
+
+    settings : {
+      additional_inheritable_classes : [],
+      tooltip_class : '.tooltip',
+      append_to : 'body',
+      touch_close_text : 'Tap To Close',
+      disable_for_touch : false,
+      hover_delay : 200,
+      fade_in_duration : 150,
+      fade_out_duration : 150,
+      show_on : 'all',
+      tip_template : function (selector, content) {
+        return '<span data-selector="' + selector + '" id="' + selector + '" class="'
+          + Foundation.libs.tooltip.settings.tooltip_class.substring(1)
+          + '" role="tooltip">' + content + '<span class="nub"></span></span>';
+      }
+    },
+
+    cache : {},
+
+    init : function (scope, method, options) {
+      Foundation.inherit(this, 'random_str');
+      this.bindings(method, options);
+    },
+
+    should_show : function (target, tip) {
+      var settings = $.extend({}, this.settings, this.data_options(target));
+
+      if (settings.show_on === 'all') {
+        return true;
+      } else if (this.small() && settings.show_on === 'small') {
+        return true;
+      } else if (this.medium() && settings.show_on === 'medium') {
+        return true;
+      } else if (this.large() && settings.show_on === 'large') {
+        return true;
+      }
+      return false;
+    },
+
+    medium : function () {
+      return matchMedia(Foundation.media_queries['medium']).matches;
+    },
+
+    large : function () {
+      return matchMedia(Foundation.media_queries['large']).matches;
+    },
+
+    events : function (instance) {
+      var self = this,
+          S = self.S;
+
+      self.create(this.S(instance));
+
+      function _startShow(elt, $this, immediate) {
+        if (elt.timer) {
+          return;
+        }
+
+        if (immediate) {
+          elt.timer = null;
+          self.showTip($this);
+        } else {
+          elt.timer = setTimeout(function () {
+            elt.timer = null;
+            self.showTip($this);
+          }.bind(elt), self.settings.hover_delay);
+        }
+      }
+
+      function _startHide(elt, $this) {
+        if (elt.timer) {
+          clearTimeout(elt.timer);
+          elt.timer = null;
+        }
+
+        self.hide($this);
+      }
+
+      $(this.scope)
+        .off('.tooltip')
+        .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',
+          '[' + this.attr_name() + ']', function (e) {
+          var $this = S(this),
+              settings = $.extend({}, self.settings, self.data_options($this)),
+              is_touch = false;
+
+          if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) {
+            return false;
+          }
+
+          if (/mouse/i.test(e.type) && self.ie_touch(e)) {
+            return false;
+          }
+          
+          if ($this.hasClass('open')) {
+            if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+              e.preventDefault();
+            }
+            self.hide($this);
+          } else {
+            if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+              return;
+            } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+              e.preventDefault();
+              S(settings.tooltip_class + '.open').hide();
+              is_touch = true;
+              // close other open tooltips on touch
+              if ($('.open[' + self.attr_name() + ']').length > 0) {
+               var prevOpen = S($('.open[' + self.attr_name() + ']')[0]);
+               self.hide(prevOpen);
+              }
+            }
+
+            if (/enter|over/i.test(e.type)) {
+              _startShow(this, $this);
+
+            } else if (e.type === 'mouseout' || e.type === 'mouseleave') {
+              _startHide(this, $this);
+            } else {
+              _startShow(this, $this, true);
+            }
+          }
+        })
+        .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {
+          if (/mouse/i.test(e.type) && self.ie_touch(e)) {
+            return false;
+          }
+
+          if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {
+            return;
+          } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {
+            self.convert_to_touch($(this));
+          } else {
+            _startHide(this, $(this));
+          }
+        })
+        .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {
+          _startHide(this, S(this));
+        });
+    },
+
+    ie_touch : function (e) {
+      // How do I distinguish between IE11 and Windows Phone 8?????
+      return false;
+    },
+
+    showTip : function ($target) {
+      var $tip = this.getTip($target);
+      if (this.should_show($target, $tip)) {
+        return this.show($target);
+      }
+      return;
+    },
+
+    getTip : function ($target) {
+      var selector = this.selector($target),
+          settings = $.extend({}, this.settings, this.data_options($target)),
+          tip = null;
+
+      if (selector) {
+        tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class);
+      }
+
+      return (typeof tip === 'object') ? tip : false;
+    },
+
+    selector : function ($target) {
+      var dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');
+
+      if (typeof dataSelector != 'string') {
+        dataSelector = this.random_str(6);
+        $target
+          .attr('data-selector', dataSelector)
+          .attr('aria-describedby', dataSelector);
+      }
+
+      return dataSelector;
+    },
+
+    create : function ($target) {
+      var self = this,
+          settings = $.extend({}, this.settings, this.data_options($target)),
+          tip_template = this.settings.tip_template;
+
+      if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) {
+        tip_template = window[settings.tip_template];
+      }
+
+      var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())),
+          classes = this.inheritable_classes($target);
+
+      $tip.addClass(classes).appendTo(settings.append_to);
+
+      if (Modernizr.touch) {
+        $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
+        $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) {
+          self.hide($target);
+        });
+      }
+
+      $target.removeAttr('title').attr('title', '');
+    },
+
+    reposition : function (target, tip, classes) {
+      var width, nub, nubHeight, nubWidth, objPos;
+
+      tip.css('visibility', 'hidden').show();
+
+      width = target.data('width');
+      nub = tip.children('.nub');
+      nubHeight = nub.outerHeight();
+      nubWidth = nub.outerWidth();
+
+      if (this.small()) {
+        tip.css({'width' : '100%'});
+      } else {
+        tip.css({'width' : (width) ? width : 'auto'});
+      }
+
+      objPos = function (obj, top, right, bottom, left, width) {
+        return obj.css({
+          'top' : (top) ? top : 'auto',
+          'bottom' : (bottom) ? bottom : 'auto',
+          'left' : (left) ? left : 'auto',
+          'right' : (right) ? right : 'auto'
+        }).end();
+      };
+      
+      var o_top = target.offset().top;
+      var o_left = target.offset().left;
+      var outerHeight = target.outerHeight();
+
+      objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left);
+
+      if (this.small()) {
+        objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', 12.5, $(this.scope).width());
+        tip.addClass('tip-override');
+        objPos(nub, -nubHeight, 'auto', 'auto', o_left);
+      } else {
+        
+        if (Foundation.rtl) {
+          nub.addClass('rtl');
+          o_left = o_left + target.outerWidth() - tip.outerWidth();
+        }
+
+        objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left);
+        // reset nub from small styles, if they've been applied
+        if (nub.attr('style')) {
+          nub.removeAttr('style');
+        }
+        
+        tip.removeClass('tip-override');
+        
+        var tip_outerHeight = tip.outerHeight();
+        
+        if (classes && classes.indexOf('tip-top') > -1) {
+          if (Foundation.rtl) {
+            nub.addClass('rtl');
+          }
+          objPos(tip, (o_top - tip_outerHeight), 'auto', 'auto', o_left)
+            .removeClass('tip-override');
+        } else if (classes && classes.indexOf('tip-left') > -1) {
+          objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left - tip.outerWidth() - nubHeight))
+            .removeClass('tip-override');
+          nub.removeClass('rtl');
+        } else if (classes && classes.indexOf('tip-right') > -1) {
+          objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left + target.outerWidth() + nubHeight))
+            .removeClass('tip-override');
+          nub.removeClass('rtl');
+        }
+      }
+
+      tip.css('visibility', 'visible').hide();
+    },
+
+    small : function () {
+      return matchMedia(Foundation.media_queries.small).matches &&
+        !matchMedia(Foundation.media_queries.medium).matches;
+    },
+
+    inheritable_classes : function ($target) {
+      var settings = $.extend({}, this.settings, this.data_options($target)),
+          inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes),
+          classes = $target.attr('class'),
+          filtered = classes ? $.map(classes.split(' '), function (el, i) {
+            if ($.inArray(el, inheritables) !== -1) {
+              return el;
+            }
+          }).join(' ') : '';
+
+      return $.trim(filtered);
+    },
+
+    convert_to_touch : function ($target) {
+      var self = this,
+          $tip = self.getTip($target),
+          settings = $.extend({}, self.settings, self.data_options($target));
+
+      if ($tip.find('.tap-to-close').length === 0) {
+        $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
+        $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) {
+          self.hide($target);
+        });
+      }
+
+      $target.data('tooltip-open-event-type', 'touch');
+    },
+
+    show : function ($target) {
+      var $tip = this.getTip($target);
+      if ($target.data('tooltip-open-event-type') == 'touch') {
+        this.convert_to_touch($target);
+      }
+
+      this.reposition($target, $tip, $target.attr('class'));
+      $target.addClass('open');
+      $tip.fadeIn(this.settings.fade_in_duration);
+    },
+
+    hide : function ($target) {
+      var $tip = this.getTip($target);
+
+      $tip.fadeOut(this.settings.fade_out_duration, function () {
+        $tip.find('.tap-to-close').remove();
+        $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');
+        $target.removeClass('open');
+      });
+    },
+
+    off : function () {
+      var self = this;
+      this.S(this.scope).off('.fndtn.tooltip');
+      this.S(this.settings.tooltip_class).each(function (i) {
+        $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text());
+      }).remove();
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/foundation/foundation.topbar.js b/js/foundation/js/foundation/foundation.topbar.js
new file mode 100644 (file)
index 0000000..23b7c7f
--- /dev/null
@@ -0,0 +1,458 @@
+;(function ($, window, document, undefined) {
+  'use strict';
+
+  Foundation.libs.topbar = {
+    name : 'topbar',
+
+    version : '5.5.3',
+
+    settings : {
+      index : 0,
+      start_offset : 0,
+      sticky_class : 'sticky',
+      custom_back_text : true,
+      back_text : 'Back',
+      mobile_show_parent_link : true,
+      is_hover : true,
+      scrolltop : true, // jump to top when sticky nav menu toggle is clicked
+      sticky_on : 'all',
+      dropdown_autoclose: true
+    },
+
+    init : function (section, method, options) {
+      Foundation.inherit(this, 'add_custom_rule register_media throttle');
+      var self = this;
+
+      self.register_media('topbar', 'foundation-mq-topbar');
+
+      this.bindings(method, options);
+
+      self.S('[' + this.attr_name() + ']', this.scope).each(function () {
+        var topbar = $(this),
+            settings = topbar.data(self.attr_name(true) + '-init'),
+            section = self.S('section, .top-bar-section', this);
+        topbar.data('index', 0);
+        var topbarContainer = topbar.parent();
+        if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) {
+          self.settings.sticky_class = settings.sticky_class;
+          self.settings.sticky_topbar = topbar;
+          topbar.data('height', topbarContainer.outerHeight());
+          topbar.data('stickyoffset', topbarContainer.offset().top);
+        } else {
+          topbar.data('height', topbar.outerHeight());
+        }
+
+        if (!settings.assembled) {
+          self.assemble(topbar);
+        }
+
+        if (settings.is_hover) {
+          self.S('.has-dropdown', topbar).addClass('not-click');
+        } else {
+          self.S('.has-dropdown', topbar).removeClass('not-click');
+        }
+
+        // Pad body when sticky (scrolled) or fixed.
+        self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }');
+
+        if (topbarContainer.hasClass('fixed')) {
+          self.S('body').addClass('f-topbar-fixed');
+        }
+      });
+
+    },
+
+    is_sticky : function (topbar, topbarContainer, settings) {
+      var sticky     = topbarContainer.hasClass(settings.sticky_class);
+      var smallMatch = matchMedia(Foundation.media_queries.small).matches;
+      var medMatch   = matchMedia(Foundation.media_queries.medium).matches;
+      var lrgMatch   = matchMedia(Foundation.media_queries.large).matches;
+
+      if (sticky && settings.sticky_on === 'all') {
+        return true;
+      }
+      if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) {
+        if (smallMatch && !medMatch && !lrgMatch) { return true; }
+      }
+      if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) {
+        if (smallMatch && medMatch && !lrgMatch) { return true; }
+      }
+      if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) {
+        if (smallMatch && medMatch && lrgMatch) { return true; }
+      }
+
+       return false;
+    },
+
+    toggle : function (toggleEl) {
+      var self = this,
+          topbar;
+
+      if (toggleEl) {
+        topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']');
+      } else {
+        topbar = self.S('[' + this.attr_name() + ']');
+      }
+
+      var settings = topbar.data(this.attr_name(true) + '-init');
+
+      var section = self.S('section, .top-bar-section', topbar);
+
+      if (self.breakpoint()) {
+        if (!self.rtl) {
+          section.css({left : '0%'});
+          $('>.name', section).css({left : '100%'});
+        } else {
+          section.css({right : '0%'});
+          $('>.name', section).css({right : '100%'});
+        }
+
+        self.S('li.moved', section).removeClass('moved');
+        topbar.data('index', 0);
+
+        topbar
+          .toggleClass('expanded')
+          .css('height', '');
+      }
+
+      if (settings.scrolltop) {
+        if (!topbar.hasClass('expanded')) {
+          if (topbar.hasClass('fixed')) {
+            topbar.parent().addClass('fixed');
+            topbar.removeClass('fixed');
+            self.S('body').addClass('f-topbar-fixed');
+          }
+        } else if (topbar.parent().hasClass('fixed')) {
+          if (settings.scrolltop) {
+            topbar.parent().removeClass('fixed');
+            topbar.addClass('fixed');
+            self.S('body').removeClass('f-topbar-fixed');
+
+            window.scrollTo(0, 0);
+          } else {
+            topbar.parent().removeClass('expanded');
+          }
+        }
+      } else {
+        if (self.is_sticky(topbar, topbar.parent(), settings)) {
+          topbar.parent().addClass('fixed');
+        }
+
+        if (topbar.parent().hasClass('fixed')) {
+          if (!topbar.hasClass('expanded')) {
+            topbar.removeClass('fixed');
+            topbar.parent().removeClass('expanded');
+            self.update_sticky_positioning();
+          } else {
+            topbar.addClass('fixed');
+            topbar.parent().addClass('expanded');
+            self.S('body').addClass('f-topbar-fixed');
+          }
+        }
+      }
+    },
+
+    timer : null,
+
+    events : function (bar) {
+      var self = this,
+          S = this.S;
+
+      S(this.scope)
+        .off('.topbar')
+        .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) {
+          e.preventDefault();
+          self.toggle(this);
+        })
+        .on('click.fndtn.topbar contextmenu.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) {
+          var li = $(this).closest('li'),
+              topbar = li.closest('[' + self.attr_name() + ']'),
+              settings = topbar.data(self.attr_name(true) + '-init');
+
+          if (settings.dropdown_autoclose && settings.is_hover) {
+            var hoverLi = $(this).closest('.hover');
+            hoverLi.removeClass('hover');
+          }
+          if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) {
+            self.toggle();
+          }
+
+        })
+        .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {
+          var li = S(this),
+              target = S(e.target),
+              topbar = li.closest('[' + self.attr_name() + ']'),
+              settings = topbar.data(self.attr_name(true) + '-init');
+
+          if (target.data('revealId')) {
+            self.toggle();
+            return;
+          }
+
+          if (self.breakpoint()) {
+            return;
+          }
+
+          if (settings.is_hover && !Modernizr.touch) {
+            return;
+          }
+
+          e.stopImmediatePropagation();
+
+          if (li.hasClass('hover')) {
+            li
+              .removeClass('hover')
+              .find('li')
+              .removeClass('hover');
+
+            li.parents('li.hover')
+              .removeClass('hover');
+          } else {
+            li.addClass('hover');
+
+            $(li).siblings().removeClass('hover');
+
+            if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {
+              e.preventDefault();
+            }
+          }
+        })
+        .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) {
+          if (self.breakpoint()) {
+
+            e.preventDefault();
+
+            var $this = S(this),
+                topbar = $this.closest('[' + self.attr_name() + ']'),
+                section = topbar.find('section, .top-bar-section'),
+                dropdownHeight = $this.next('.dropdown').outerHeight(),
+                $selectedLi = $this.closest('li');
+
+            topbar.data('index', topbar.data('index') + 1);
+            $selectedLi.addClass('moved');
+
+            if (!self.rtl) {
+              section.css({left : -(100 * topbar.data('index')) + '%'});
+              section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
+            } else {
+              section.css({right : -(100 * topbar.data('index')) + '%'});
+              section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
+            }
+
+            topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));
+          }
+        });
+
+      S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () {
+          self.resize.call(self);
+      }, 50)).trigger('resize.fndtn.topbar').load(function () {
+          // Ensure that the offset is calculated after all of the pages resources have loaded
+          S(this).trigger('resize.fndtn.topbar');
+      });
+
+      S('body').off('.topbar').on('click.fndtn.topbar', function (e) {
+        var parent = S(e.target).closest('li').closest('li.hover');
+
+        if (parent.length > 0) {
+          return;
+        }
+
+        S('[' + self.attr_name() + '] li.hover').removeClass('hover');
+      });
+
+      // Go up a level on Click
+      S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) {
+        e.preventDefault();
+
+        var $this = S(this),
+            topbar = $this.closest('[' + self.attr_name() + ']'),
+            section = topbar.find('section, .top-bar-section'),
+            settings = topbar.data(self.attr_name(true) + '-init'),
+            $movedLi = $this.closest('li.moved'),
+            $previousLevelUl = $movedLi.parent();
+
+        topbar.data('index', topbar.data('index') - 1);
+
+        if (!self.rtl) {
+          section.css({left : -(100 * topbar.data('index')) + '%'});
+          section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
+        } else {
+          section.css({right : -(100 * topbar.data('index')) + '%'});
+          section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
+        }
+
+        if (topbar.data('index') === 0) {
+          topbar.css('height', '');
+        } else {
+          topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height'));
+        }
+
+        setTimeout(function () {
+          $movedLi.removeClass('moved');
+        }, 300);
+      });
+
+      // Show dropdown menus when their items are focused
+      S(this.scope).find('.dropdown a')
+        .focus(function () {
+          $(this).parents('.has-dropdown').addClass('hover');
+        })
+        .blur(function () {
+          $(this).parents('.has-dropdown').removeClass('hover');
+        });
+    },
+
+    resize : function () {
+      var self = this;
+      self.S('[' + this.attr_name() + ']').each(function () {
+        var topbar = self.S(this),
+            settings = topbar.data(self.attr_name(true) + '-init');
+
+        var stickyContainer = topbar.parent('.' + self.settings.sticky_class);
+        var stickyOffset;
+
+        if (!self.breakpoint()) {
+          var doToggle = topbar.hasClass('expanded');
+          topbar
+            .css('height', '')
+            .removeClass('expanded')
+            .find('li')
+            .removeClass('hover');
+
+            if (doToggle) {
+              self.toggle(topbar);
+            }
+        }
+
+        if (self.is_sticky(topbar, stickyContainer, settings)) {
+          if (stickyContainer.hasClass('fixed')) {
+            // Remove the fixed to allow for correct calculation of the offset.
+            stickyContainer.removeClass('fixed');
+
+            stickyOffset = stickyContainer.offset().top;
+            if (self.S(document.body).hasClass('f-topbar-fixed')) {
+              stickyOffset -= topbar.data('height');
+            }
+
+            topbar.data('stickyoffset', stickyOffset);
+            stickyContainer.addClass('fixed');
+          } else {
+            stickyOffset = stickyContainer.offset().top;
+            topbar.data('stickyoffset', stickyOffset);
+          }
+        }
+
+      });
+    },
+
+    breakpoint : function () {
+      return !matchMedia(Foundation.media_queries['topbar']).matches;
+    },
+
+    small : function () {
+      return matchMedia(Foundation.media_queries['small']).matches;
+    },
+
+    medium : function () {
+      return matchMedia(Foundation.media_queries['medium']).matches;
+    },
+
+    large : function () {
+      return matchMedia(Foundation.media_queries['large']).matches;
+    },
+
+    assemble : function (topbar) {
+      var self = this,
+          settings = topbar.data(this.attr_name(true) + '-init'),
+          section = self.S('section, .top-bar-section', topbar);
+
+      // Pull element out of the DOM for manipulation
+      section.detach();
+
+      self.S('.has-dropdown>a', section).each(function () {
+        var $link = self.S(this),
+            $dropdown = $link.siblings('.dropdown'),
+            url = $link.attr('href'),
+            $titleLi;
+
+        if (!$dropdown.find('.title.back').length) {
+
+          if (settings.mobile_show_parent_link == true && url) {
+            $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>');
+          } else {
+            $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>');
+          }
+
+          // Copy link to subnav
+          if (settings.custom_back_text == true) {
+            $('h5>a', $titleLi).html(settings.back_text);
+          } else {
+            $('h5>a', $titleLi).html('&laquo; ' + $link.html());
+          }
+          $dropdown.prepend($titleLi);
+        }
+      });
+
+      // Put element back in the DOM
+      section.appendTo(topbar);
+
+      // check for sticky
+      this.sticky();
+
+      this.assembled(topbar);
+    },
+
+    assembled : function (topbar) {
+      topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true}));
+    },
+
+    height : function (ul) {
+      var total = 0,
+          self = this;
+
+      $('> li', ul).each(function () {
+        total += self.S(this).outerHeight(true);
+      });
+
+      return total;
+    },
+
+    sticky : function () {
+      var self = this;
+
+      this.S(window).on('scroll', function () {
+        self.update_sticky_positioning();
+      });
+    },
+
+    update_sticky_positioning : function () {
+      var klass = '.' + this.settings.sticky_class,
+          $window = this.S(window),
+          self = this;
+
+      if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) {
+        var distance = this.settings.sticky_topbar.data('stickyoffset') + this.settings.start_offset;
+        if (!self.S(klass).hasClass('expanded')) {
+          if ($window.scrollTop() > (distance)) {
+            if (!self.S(klass).hasClass('fixed')) {
+              self.S(klass).addClass('fixed');
+              self.S('body').addClass('f-topbar-fixed');
+            }
+          } else if ($window.scrollTop() <= distance) {
+            if (self.S(klass).hasClass('fixed')) {
+              self.S(klass).removeClass('fixed');
+              self.S('body').removeClass('f-topbar-fixed');
+            }
+          }
+        }
+      }
+    },
+
+    off : function () {
+      this.S(this.scope).off('.fndtn.topbar');
+      this.S(window).off('.fndtn.topbar');
+    },
+
+    reflow : function () {}
+  };
+}(jQuery, window, window.document));
diff --git a/js/foundation/js/vendor/fastclick.js b/js/foundation/js/vendor/fastclick.js
new file mode 100644 (file)
index 0000000..add0130
--- /dev/null
@@ -0,0 +1,8 @@
+!function(){"use strict";/**
+        * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.
+        *
+        * @codingstandard ftlabs-jsv2
+        * @copyright The Financial Times Limited [All Rights Reserved]
+        * @license MIT License (see LICENSE.txt)
+        */
+function a(b,d){function e(a,b){return function(){return a.apply(b,arguments)}}var f;if(d=d||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=d.touchBoundary||10,this.layer=b,this.tapDelay=d.tapDelay||200,this.tapTimeout=d.tapTimeout||700,!a.notNeeded(b)){for(var g=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],h=this,i=0,j=g.length;j>i;i++)h[g[i]]=e(h[g[i]],h);c&&(b.addEventListener("mouseover",this.onMouse,!0),b.addEventListener("mousedown",this.onMouse,!0),b.addEventListener("mouseup",this.onMouse,!0)),b.addEventListener("click",this.onClick,!0),b.addEventListener("touchstart",this.onTouchStart,!1),b.addEventListener("touchmove",this.onTouchMove,!1),b.addEventListener("touchend",this.onTouchEnd,!1),b.addEventListener("touchcancel",this.onTouchCancel,!1),Event.prototype.stopImmediatePropagation||(b.removeEventListener=function(a,c,d){var e=Node.prototype.removeEventListener;"click"===a?e.call(b,a,c.hijacked||c,d):e.call(b,a,c,d)},b.addEventListener=function(a,c,d){var e=Node.prototype.addEventListener;"click"===a?e.call(b,a,c.hijacked||(c.hijacked=function(a){a.propagationStopped||c(a)}),d):e.call(b,a,c,d)}),"function"==typeof b.onclick&&(f=b.onclick,b.addEventListener("click",function(a){f(a)},!1),b.onclick=null)}}var b=navigator.userAgent.indexOf("Windows Phone")>=0,c=navigator.userAgent.indexOf("Android")>0&&!b,d=/iP(ad|hone|od)/.test(navigator.userAgent)&&!b,e=d&&/OS 4_\d(_\d)?/.test(navigator.userAgent),f=d&&/OS [6-7]_\d/.test(navigator.userAgent),g=navigator.userAgent.indexOf("BB10")>0;a.prototype.needsClick=function(a){switch(a.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(a.disabled)return!0;break;case"input":if(d&&"file"===a.type||a.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(a.className)},a.prototype.needsFocus=function(a){switch(a.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!c;case"input":switch(a.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!a.disabled&&!a.readOnly;default:return/\bneedsfocus\b/.test(a.className)}},a.prototype.sendClick=function(a,b){var c,d;document.activeElement&&document.activeElement!==a&&document.activeElement.blur(),d=b.changedTouches[0],c=document.createEvent("MouseEvents"),c.initMouseEvent(this.determineEventType(a),!0,!0,window,1,d.screenX,d.screenY,d.clientX,d.clientY,!1,!1,!1,!1,0,null),c.forwardedTouchEvent=!0,a.dispatchEvent(c)},a.prototype.determineEventType=function(a){return c&&"select"===a.tagName.toLowerCase()?"mousedown":"click"},a.prototype.focus=function(a){var b;d&&a.setSelectionRange&&0!==a.type.indexOf("date")&&"time"!==a.type&&"month"!==a.type?(b=a.value.length,a.setSelectionRange(b,b)):a.focus()},a.prototype.updateScrollParent=function(a){var b,c;if(b=a.fastClickScrollParent,!b||!b.contains(a)){c=a;do{if(c.scrollHeight>c.offsetHeight){b=c,a.fastClickScrollParent=c;break}c=c.parentElement}while(c)}b&&(b.fastClickLastScrollTop=b.scrollTop)},a.prototype.getTargetElementFromEventTarget=function(a){return a.nodeType===Node.TEXT_NODE?a.parentNode:a},a.prototype.onTouchStart=function(a){var b,c,f;if(a.targetTouches.length>1)return!0;if(b=this.getTargetElementFromEventTarget(a.target),c=a.targetTouches[0],d){if(f=window.getSelection(),f.rangeCount&&!f.isCollapsed)return!0;if(!e){if(c.identifier&&c.identifier===this.lastTouchIdentifier)return a.preventDefault(),!1;this.lastTouchIdentifier=c.identifier,this.updateScrollParent(b)}}return this.trackingClick=!0,this.trackingClickStart=a.timeStamp,this.targetElement=b,this.touchStartX=c.pageX,this.touchStartY=c.pageY,a.timeStamp-this.lastClickTime<this.tapDelay&&a.preventDefault(),!0},a.prototype.touchHasMoved=function(a){var b=a.changedTouches[0],c=this.touchBoundary;return Math.abs(b.pageX-this.touchStartX)>c||Math.abs(b.pageY-this.touchStartY)>c?!0:!1},a.prototype.onTouchMove=function(a){return this.trackingClick?((this.targetElement!==this.getTargetElementFromEventTarget(a.target)||this.touchHasMoved(a))&&(this.trackingClick=!1,this.targetElement=null),!0):!0},a.prototype.findControl=function(a){return void 0!==a.control?a.control:a.htmlFor?document.getElementById(a.htmlFor):a.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},a.prototype.onTouchEnd=function(a){var b,g,h,i,j,k=this.targetElement;if(!this.trackingClick)return!0;if(a.timeStamp-this.lastClickTime<this.tapDelay)return this.cancelNextClick=!0,!0;if(a.timeStamp-this.trackingClickStart>this.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=a.timeStamp,g=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,f&&(j=a.changedTouches[0],k=document.elementFromPoint(j.pageX-window.pageXOffset,j.pageY-window.pageYOffset)||k,k.fastClickScrollParent=this.targetElement.fastClickScrollParent),h=k.tagName.toLowerCase(),"label"===h){if(b=this.findControl(k)){if(this.focus(k),c)return!1;k=b}}else if(this.needsFocus(k))return a.timeStamp-g>100||d&&window.top!==window&&"input"===h?(this.targetElement=null,!1):(this.focus(k),this.sendClick(k,a),d&&"select"===h||(this.targetElement=null,a.preventDefault()),!1);return d&&!e&&(i=k.fastClickScrollParent,i&&i.fastClickLastScrollTop!==i.scrollTop)?!0:(this.needsClick(k)||(a.preventDefault(),this.sendClick(k,a)),!1)},a.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},a.prototype.onMouse=function(a){return this.targetElement?a.forwardedTouchEvent?!0:a.cancelable&&(!this.needsClick(this.targetElement)||this.cancelNextClick)?(a.stopImmediatePropagation?a.stopImmediatePropagation():a.propagationStopped=!0,a.stopPropagation(),a.preventDefault(),!1):!0:!0},a.prototype.onClick=function(a){var b;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===a.target.type&&0===a.detail?!0:(b=this.onMouse(a),b||(this.targetElement=null),b)},a.prototype.destroy=function(){var a=this.layer;c&&(a.removeEventListener("mouseover",this.onMouse,!0),a.removeEventListener("mousedown",this.onMouse,!0),a.removeEventListener("mouseup",this.onMouse,!0)),a.removeEventListener("click",this.onClick,!0),a.removeEventListener("touchstart",this.onTouchStart,!1),a.removeEventListener("touchmove",this.onTouchMove,!1),a.removeEventListener("touchend",this.onTouchEnd,!1),a.removeEventListener("touchcancel",this.onTouchCancel,!1)},a.notNeeded=function(a){var b,d,e,f;if("undefined"==typeof window.ontouchstart)return!0;if(d=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!c)return!0;if(b=document.querySelector("meta[name=viewport]")){if(-1!==b.content.indexOf("user-scalable=no"))return!0;if(d>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(g&&(e=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),e[1]>=10&&e[2]>=3&&(b=document.querySelector("meta[name=viewport]")))){if(-1!==b.content.indexOf("user-scalable=no"))return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===a.style.msTouchAction||"manipulation"===a.style.touchAction?!0:(f=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],f>=27&&(b=document.querySelector("meta[name=viewport]"),b&&(-1!==b.content.indexOf("user-scalable=no")||document.documentElement.scrollWidth<=window.outerWidth))?!0:"none"===a.style.touchAction||"manipulation"===a.style.touchAction?!0:!1)},a.attach=function(b,c){return new a(b,c)},"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return a}):"undefined"!=typeof module&&module.exports?(module.exports=a.attach,module.exports.FastClick=a):window.FastClick=a}();
\ No newline at end of file
diff --git a/js/foundation/js/vendor/jquery.cookie.js b/js/foundation/js/vendor/jquery.cookie.js
new file mode 100644 (file)
index 0000000..5be813a
--- /dev/null
@@ -0,0 +1,8 @@
+/*!
+ * jQuery Cookie Plugin v1.4.1
+ * https://github.com/carhartl/jquery-cookie
+ *
+ * Copyright 2013 Klaus Hartl
+ * Released under the MIT license
+ */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
\ No newline at end of file
diff --git a/js/foundation/js/vendor/jquery.js b/js/foundation/js/vendor/jquery.js
new file mode 100644 (file)
index 0000000..34b90c8
--- /dev/null
@@ -0,0 +1,26 @@
+/*!
+ * jQuery JavaScript Library v2.1.4
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-04-28T16:01Z
+ */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){function c(a){var b="length"in a&&a.length,c=_.type(a);return"function"===c||_.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}function d(a,b,c){if(_.isFunction(b))return _.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return _.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(ha.test(b))return _.filter(b,a,c);b=_.filter(b,a)}return _.grep(a,function(a){return U.call(b,a)>=0!==c})}function e(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function f(a){var b=oa[a]={};return _.each(a.match(na)||[],function(a,c){b[c]=!0}),b}function g(){Z.removeEventListener("DOMContentLoaded",g,!1),a.removeEventListener("load",g,!1),_.ready()}function h(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=_.expando+h.uid++}function i(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(ua,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:ta.test(c)?_.parseJSON(c):c}catch(e){}sa.set(a,b,c)}else c=void 0;return c}function j(){return!0}function k(){return!1}function l(){try{return Z.activeElement}catch(a){}}function m(a,b){return _.nodeName(a,"table")&&_.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function n(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function o(a){var b=Ka.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function p(a,b){for(var c=0,d=a.length;d>c;c++)ra.set(a[c],"globalEval",!b||ra.get(b[c],"globalEval"))}function q(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(ra.hasData(a)&&(f=ra.access(a),g=ra.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)_.event.add(b,e,j[e][c])}sa.hasData(a)&&(h=sa.access(a),i=_.extend({},h),sa.set(b,i))}}function r(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&_.nodeName(a,b)?_.merge([a],c):c}function s(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ya.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function t(b,c){var d,e=_(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:_.css(e[0],"display");return e.detach(),f}function u(a){var b=Z,c=Oa[a];return c||(c=t(a,b),"none"!==c&&c||(Na=(Na||_("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=Na[0].contentDocument,b.write(),b.close(),c=t(a,b),Na.detach()),Oa[a]=c),c}function v(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||_.contains(a.ownerDocument,a)||(g=_.style(a,b)),Qa.test(g)&&Pa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function w(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}function x(a,b){if(b in a)return b;for(var c=b[0].toUpperCase()+b.slice(1),d=b,e=Xa.length;e--;)if(b=Xa[e]+c,b in a)return b;return d}function y(a,b,c){var d=Ta.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function z(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=_.css(a,c+wa[f],!0,e)),d?("content"===c&&(g-=_.css(a,"padding"+wa[f],!0,e)),"margin"!==c&&(g-=_.css(a,"border"+wa[f]+"Width",!0,e))):(g+=_.css(a,"padding"+wa[f],!0,e),"padding"!==c&&(g+=_.css(a,"border"+wa[f]+"Width",!0,e)));return g}function A(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g="border-box"===_.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=v(a,b,f),(0>e||null==e)&&(e=a.style[b]),Qa.test(e))return e;d=g&&(Y.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+z(a,b,c||(g?"border":"content"),d,f)+"px"}function B(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=ra.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&xa(d)&&(f[g]=ra.access(d,"olddisplay",u(d.nodeName)))):(e=xa(d),"none"===c&&e||ra.set(d,"olddisplay",e?c:_.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function C(a,b,c,d,e){return new C.prototype.init(a,b,c,d,e)}function D(){return setTimeout(function(){Ya=void 0}),Ya=_.now()}function E(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=wa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function F(a,b,c){for(var d,e=(cb[b]||[]).concat(cb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function G(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},n=a.style,o=a.nodeType&&xa(a),p=ra.get(a,"fxshow");c.queue||(h=_._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,_.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[n.overflow,n.overflowX,n.overflowY],j=_.css(a,"display"),k="none"===j?ra.get(a,"olddisplay")||u(a.nodeName):j,"inline"===k&&"none"===_.css(a,"float")&&(n.display="inline-block")),c.overflow&&(n.overflow="hidden",l.always(function(){n.overflow=c.overflow[0],n.overflowX=c.overflow[1],n.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],$a.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(o?"hide":"show")){if("show"!==e||!p||void 0===p[d])continue;o=!0}m[d]=p&&p[d]||_.style(a,d)}else j=void 0;if(_.isEmptyObject(m))"inline"===("none"===j?u(a.nodeName):j)&&(n.display=j);else{p?"hidden"in p&&(o=p.hidden):p=ra.access(a,"fxshow",{}),f&&(p.hidden=!o),o?_(a).show():l.done(function(){_(a).hide()}),l.done(function(){var b;ra.remove(a,"fxshow");for(b in m)_.style(a,b,m[b])});for(d in m)g=F(o?p[d]:0,d,l),d in p||(p[d]=g.start,o&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function H(a,b){var c,d,e,f,g;for(c in a)if(d=_.camelCase(c),e=b[d],f=a[c],_.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=_.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function I(a,b,c){var d,e,f=0,g=bb.length,h=_.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||D(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:_.extend({},b),opts:_.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Ya||D(),duration:c.duration,tweens:[],createTween:function(b,c){var d=_.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(H(k,j.opts.specialEasing);g>f;f++)if(d=bb[f].call(j,a,k,j.opts))return d;return _.map(k,F,j),_.isFunction(j.opts.start)&&j.opts.start.call(a,j),_.fx.timer(_.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function J(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(na)||[];if(_.isFunction(c))for(;d=f[e++];)"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function K(a,b,c,d){function e(h){var i;return f[h]=!0,_.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||g||f[j]?g?!(i=j):void 0:(b.dataTypes.unshift(j),e(j),!1)}),i}var f={},g=a===tb;return e(b.dataTypes[0])||!f["*"]&&e("*")}function L(a,b){var c,d,e=_.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&_.extend(!0,a,d),a}function M(a,b,c){for(var d,e,f,g,h=a.contents,i=a.dataTypes;"*"===i[0];)i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function N(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];for(f=k.shift();f;)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}function O(a,b,c,d){var e;if(_.isArray(b))_.each(b,function(b,e){c||yb.test(a)?d(a,e):O(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==_.type(b))d(a,b);else for(e in b)O(a+"["+e+"]",b[e],c,d)}function P(a){return _.isWindow(a)?a:9===a.nodeType&&a.defaultView}var Q=[],R=Q.slice,S=Q.concat,T=Q.push,U=Q.indexOf,V={},W=V.toString,X=V.hasOwnProperty,Y={},Z=a.document,$="2.1.4",_=function(a,b){return new _.fn.init(a,b)},aa=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ba=/^-ms-/,ca=/-([\da-z])/gi,da=function(a,b){return b.toUpperCase()};_.fn=_.prototype={jquery:$,constructor:_,selector:"",length:0,toArray:function(){return R.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:R.call(this)},pushStack:function(a){var b=_.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return _.each(this,a,b)},map:function(a){return this.pushStack(_.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(R.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:T,sort:Q.sort,splice:Q.splice},_.extend=_.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||_.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(_.isPlainObject(d)||(e=_.isArray(d)))?(e?(e=!1,f=c&&_.isArray(c)?c:[]):f=c&&_.isPlainObject(c)?c:{},g[b]=_.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},_.extend({expando:"jQuery"+($+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===_.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!_.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==_.type(a)||a.nodeType||_.isWindow(a)?!1:a.constructor&&!X.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?V[W.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=_.trim(a),a&&(1===a.indexOf("use strict")?(b=Z.createElement("script"),b.text=a,Z.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(ba,"ms-").replace(ca,da)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,d){var e,f=0,g=a.length,h=c(a);if(d){if(h)for(;g>f&&(e=b.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=b.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=b.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=b.call(a[f],f,a[f]),e===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(aa,"")},makeArray:function(a,b){var d=b||[];return null!=a&&(c(Object(a))?_.merge(d,"string"==typeof a?[a]:a):T.call(d,a)),d},inArray:function(a,b,c){return null==b?-1:U.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,d){var e,f=0,g=a.length,h=c(a),i=[];if(h)for(;g>f;f++)e=b(a[f],f,d),null!=e&&i.push(e);else for(f in a)e=b(a[f],f,d),null!=e&&i.push(e);return S.apply([],i)},guid:1,proxy:function(a,b){var c,d,e;return"string"==typeof b&&(c=a[b],b=a,a=c),_.isFunction(a)?(d=R.call(arguments,2),e=function(){return a.apply(b||this,d.concat(R.call(arguments)))},e.guid=a.guid=a.guid||_.guid++,e):void 0},now:Date.now,support:Y}),_.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){V["[object "+b+"]"]=b.toLowerCase()});var ea=/*!
+ * Sizzle CSS Selector Engine v2.2.0-pre
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-12-16
+ */
+function(a){function b(a,b,c,d){var e,f,g,h,i,j,l,n,o,p;if((b?b.ownerDocument||b:O)!==G&&F(b),b=b||G,c=c||[],h=b.nodeType,"string"!=typeof a||!a||1!==h&&9!==h&&11!==h)return c;if(!d&&I){if(11!==h&&(e=sa.exec(a)))if(g=e[1]){if(9===h){if(f=b.getElementById(g),!f||!f.parentNode)return c;if(f.id===g)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(g))&&M(b,f)&&f.id===g)return c.push(f),c}else{if(e[2])return $.apply(c,b.getElementsByTagName(a)),c;if((g=e[3])&&v.getElementsByClassName)return $.apply(c,b.getElementsByClassName(g)),c}if(v.qsa&&(!J||!J.test(a))){if(n=l=N,o=b,p=1!==h&&a,1===h&&"object"!==b.nodeName.toLowerCase()){for(j=z(a),(l=b.getAttribute("id"))?n=l.replace(ua,"\\$&"):b.setAttribute("id",n),n="[id='"+n+"'] ",i=j.length;i--;)j[i]=n+m(j[i]);o=ta.test(a)&&k(b.parentNode)||b,p=j.join(",")}if(p)try{return $.apply(c,o.querySelectorAll(p)),c}catch(q){}finally{l||b.removeAttribute("id")}}}return B(a.replace(ia,"$1"),b,c,d)}function c(){function a(c,d){return b.push(c+" ")>w.cacheLength&&delete a[b.shift()],a[c+" "]=d}var b=[];return a}function d(a){return a[N]=!0,a}function e(a){var b=G.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function f(a,b){for(var c=a.split("|"),d=a.length;d--;)w.attrHandle[c[d]]=b}function g(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||V)-(~a.sourceIndex||V);if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function h(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function i(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function j(a){return d(function(b){return b=+b,d(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function k(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}function l(){}function m(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function n(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=Q++;return b.first?function(b,c,f){for(;b=b[d];)if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[P,f];if(g){for(;b=b[d];)if((1===b.nodeType||e)&&a(b,c,g))return!0}else for(;b=b[d];)if(1===b.nodeType||e){if(i=b[N]||(b[N]={}),(h=i[d])&&h[0]===P&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function o(a){return a.length>1?function(b,c,d){for(var e=a.length;e--;)if(!a[e](b,c,d))return!1;return!0}:a[0]}function p(a,c,d){for(var e=0,f=c.length;f>e;e++)b(a,c[e],d);return d}function q(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function r(a,b,c,e,f,g){return e&&!e[N]&&(e=r(e)),f&&!f[N]&&(f=r(f,g)),d(function(d,g,h,i){var j,k,l,m=[],n=[],o=g.length,r=d||p(b||"*",h.nodeType?[h]:h,[]),s=!a||!d&&b?r:q(r,m,a,h,i),t=c?f||(d?a:o||e)?[]:g:s;if(c&&c(s,t,h,i),e)for(j=q(t,n),e(j,[],h,i),k=j.length;k--;)(l=j[k])&&(t[n[k]]=!(s[n[k]]=l));if(d){if(f||a){if(f){for(j=[],k=t.length;k--;)(l=t[k])&&j.push(s[k]=l);f(null,t=[],j,i)}for(k=t.length;k--;)(l=t[k])&&(j=f?aa(d,l):m[k])>-1&&(d[j]=!(g[j]=l))}}else t=q(t===g?t.splice(o,t.length):t),f?f(null,g,t,i):$.apply(g,t)})}function s(a){for(var b,c,d,e=a.length,f=w.relative[a[0].type],g=f||w.relative[" "],h=f?1:0,i=n(function(a){return a===b},g,!0),j=n(function(a){return aa(b,a)>-1},g,!0),k=[function(a,c,d){var e=!f&&(d||c!==C)||((b=c).nodeType?i(a,c,d):j(a,c,d));return b=null,e}];e>h;h++)if(c=w.relative[a[h].type])k=[n(o(k),c)];else{if(c=w.filter[a[h].type].apply(null,a[h].matches),c[N]){for(d=++h;e>d&&!w.relative[a[d].type];d++);return r(h>1&&o(k),h>1&&m(a.slice(0,h-1).concat({value:" "===a[h-2].type?"*":""})).replace(ia,"$1"),c,d>h&&s(a.slice(h,d)),e>d&&s(a=a.slice(d)),e>d&&m(a))}k.push(c)}return o(k)}function t(a,c){var e=c.length>0,f=a.length>0,g=function(d,g,h,i,j){var k,l,m,n=0,o="0",p=d&&[],r=[],s=C,t=d||f&&w.find.TAG("*",j),u=P+=null==s?1:Math.random()||.1,v=t.length;for(j&&(C=g!==G&&g);o!==v&&null!=(k=t[o]);o++){if(f&&k){for(l=0;m=a[l++];)if(m(k,g,h)){i.push(k);break}j&&(P=u)}e&&((k=!m&&k)&&n--,d&&p.push(k))}if(n+=o,e&&o!==n){for(l=0;m=c[l++];)m(p,r,g,h);if(d){if(n>0)for(;o--;)p[o]||r[o]||(r[o]=Y.call(i));r=q(r)}$.apply(i,r),j&&!d&&r.length>0&&n+c.length>1&&b.uniqueSort(i)}return j&&(P=u,C=s),p};return e?d(g):g}var u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N="sizzle"+1*new Date,O=a.document,P=0,Q=0,R=c(),S=c(),T=c(),U=function(a,b){return a===b&&(E=!0),0},V=1<<31,W={}.hasOwnProperty,X=[],Y=X.pop,Z=X.push,$=X.push,_=X.slice,aa=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},ba="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ca="[\\x20\\t\\r\\n\\f]",da="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ea=da.replace("w","w#"),fa="\\["+ca+"*("+da+")(?:"+ca+"*([*^$|!~]?=)"+ca+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ea+"))|)"+ca+"*\\]",ga=":("+da+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+fa+")*)|.*)\\)|)",ha=new RegExp(ca+"+","g"),ia=new RegExp("^"+ca+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ca+"+$","g"),ja=new RegExp("^"+ca+"*,"+ca+"*"),ka=new RegExp("^"+ca+"*([>+~]|"+ca+")"+ca+"*"),la=new RegExp("="+ca+"*([^\\]'\"]*?)"+ca+"*\\]","g"),ma=new RegExp(ga),na=new RegExp("^"+ea+"$"),oa={ID:new RegExp("^#("+da+")"),CLASS:new RegExp("^\\.("+da+")"),TAG:new RegExp("^("+da.replace("w","w*")+")"),ATTR:new RegExp("^"+fa),PSEUDO:new RegExp("^"+ga),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ca+"*(even|odd|(([+-]|)(\\d*)n|)"+ca+"*(?:([+-]|)"+ca+"*(\\d+)|))"+ca+"*\\)|)","i"),bool:new RegExp("^(?:"+ba+")$","i"),needsContext:new RegExp("^"+ca+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ca+"*((?:-\\d)?\\d*)"+ca+"*\\)|)(?=[^-]|$)","i")},pa=/^(?:input|select|textarea|button)$/i,qa=/^h\d$/i,ra=/^[^{]+\{\s*\[native \w/,sa=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ta=/[+~]/,ua=/'|\\/g,va=new RegExp("\\\\([\\da-f]{1,6}"+ca+"?|("+ca+")|.)","ig"),wa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},xa=function(){F()};try{$.apply(X=_.call(O.childNodes),O.childNodes),X[O.childNodes.length].nodeType}catch(ya){$={apply:X.length?function(a,b){Z.apply(a,_.call(b))}:function(a,b){for(var c=a.length,d=0;a[c++]=b[d++];);a.length=c-1}}}v=b.support={},y=b.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},F=b.setDocument=function(a){var b,c,d=a?a.ownerDocument||a:O;return d!==G&&9===d.nodeType&&d.documentElement?(G=d,H=d.documentElement,c=d.defaultView,c&&c!==c.top&&(c.addEventListener?c.addEventListener("unload",xa,!1):c.attachEvent&&c.attachEvent("onunload",xa)),I=!y(d),v.attributes=e(function(a){return a.className="i",!a.getAttribute("className")}),v.getElementsByTagName=e(function(a){return a.appendChild(d.createComment("")),!a.getElementsByTagName("*").length}),v.getElementsByClassName=ra.test(d.getElementsByClassName),v.getById=e(function(a){return H.appendChild(a).id=N,!d.getElementsByName||!d.getElementsByName(N).length}),v.getById?(w.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&I){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},w.filter.ID=function(a){var b=a.replace(va,wa);return function(a){return a.getAttribute("id")===b}}):(delete w.find.ID,w.filter.ID=function(a){var b=a.replace(va,wa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),w.find.TAG=v.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):v.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f},w.find.CLASS=v.getElementsByClassName&&function(a,b){return I?b.getElementsByClassName(a):void 0},K=[],J=[],(v.qsa=ra.test(d.querySelectorAll))&&(e(function(a){H.appendChild(a).innerHTML="<a id='"+N+"'></a><select id='"+N+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&J.push("[*^$]="+ca+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||J.push("\\["+ca+"*(?:value|"+ba+")"),a.querySelectorAll("[id~="+N+"-]").length||J.push("~="),a.querySelectorAll(":checked").length||J.push(":checked"),a.querySelectorAll("a#"+N+"+*").length||J.push(".#.+[+~]")}),e(function(a){var b=d.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&J.push("name"+ca+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||J.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),J.push(",.*:")})),(v.matchesSelector=ra.test(L=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&e(function(a){v.disconnectedMatch=L.call(a,"div"),L.call(a,"[s!='']:x"),K.push("!=",ga)}),J=J.length&&new RegExp(J.join("|")),K=K.length&&new RegExp(K.join("|")),b=ra.test(H.compareDocumentPosition),M=b||ra.test(H.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},U=b?function(a,b){if(a===b)return E=!0,0;var c=!a.compareDocumentPosition-!b.compareDocumentPosition;return c?c:(c=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&c||!v.sortDetached&&b.compareDocumentPosition(a)===c?a===d||a.ownerDocument===O&&M(O,a)?-1:b===d||b.ownerDocument===O&&M(O,b)?1:D?aa(D,a)-aa(D,b):0:4&c?-1:1)}:function(a,b){if(a===b)return E=!0,0;var c,e=0,f=a.parentNode,h=b.parentNode,i=[a],j=[b];if(!f||!h)return a===d?-1:b===d?1:f?-1:h?1:D?aa(D,a)-aa(D,b):0;if(f===h)return g(a,b);for(c=a;c=c.parentNode;)i.unshift(c);for(c=b;c=c.parentNode;)j.unshift(c);for(;i[e]===j[e];)e++;return e?g(i[e],j[e]):i[e]===O?-1:j[e]===O?1:0},d):G},b.matches=function(a,c){return b(a,null,null,c)},b.matchesSelector=function(a,c){if((a.ownerDocument||a)!==G&&F(a),c=c.replace(la,"='$1']"),v.matchesSelector&&I&&(!K||!K.test(c))&&(!J||!J.test(c)))try{var d=L.call(a,c);if(d||v.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return b(c,G,null,[a]).length>0},b.contains=function(a,b){return(a.ownerDocument||a)!==G&&F(a),M(a,b)},b.attr=function(a,b){(a.ownerDocument||a)!==G&&F(a);var c=w.attrHandle[b.toLowerCase()],d=c&&W.call(w.attrHandle,b.toLowerCase())?c(a,b,!I):void 0;return void 0!==d?d:v.attributes||!I?a.getAttribute(b):(d=a.getAttributeNode(b))&&d.specified?d.value:null},b.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},b.uniqueSort=function(a){var b,c=[],d=0,e=0;if(E=!v.detectDuplicates,D=!v.sortStable&&a.slice(0),a.sort(U),E){for(;b=a[e++];)b===a[e]&&(d=c.push(e));for(;d--;)a.splice(c[d],1)}return D=null,a},x=b.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(1===e||9===e||11===e){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=x(a)}else if(3===e||4===e)return a.nodeValue}else for(;b=a[d++];)c+=x(b);return c},w=b.selectors={cacheLength:50,createPseudo:d,match:oa,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(va,wa),a[3]=(a[3]||a[4]||a[5]||"").replace(va,wa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||b.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&b.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return oa.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&ma.test(c)&&(b=z(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(va,wa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=R[a+" "];return b||(b=new RegExp("(^|"+ca+")"+a+"("+ca+"|$)"))&&R(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,c,d){return function(e){var f=b.attr(e,a);return null==f?"!="===c:c?(f+="","="===c?f===d:"!="===c?f!==d:"^="===c?d&&0===f.indexOf(d):"*="===c?d&&f.indexOf(d)>-1:"$="===c?d&&f.slice(-d.length)===d:"~="===c?(" "+f.replace(ha," ")+" ").indexOf(d)>-1:"|="===c?f===d||f.slice(0,d.length+1)===d+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){for(;p;){for(l=b;l=l[p];)if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){for(k=q[N]||(q[N]={}),j=k[a]||[],n=j[0]===P&&j[1],m=j[0]===P&&j[2],l=n&&q.childNodes[n];l=++n&&l&&l[p]||(m=n=0)||o.pop();)if(1===l.nodeType&&++m&&l===b){k[a]=[P,n,m];break}}else if(s&&(j=(b[N]||(b[N]={}))[a])&&j[0]===P)m=j[1];else for(;(l=++n&&l&&l[p]||(m=n=0)||o.pop())&&((h?l.nodeName.toLowerCase()!==r:1!==l.nodeType)||!++m||(s&&((l[N]||(l[N]={}))[a]=[P,m]),l!==b)););return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,c){var e,f=w.pseudos[a]||w.setFilters[a.toLowerCase()]||b.error("unsupported pseudo: "+a);return f[N]?f(c):f.length>1?(e=[a,a,"",c],w.setFilters.hasOwnProperty(a.toLowerCase())?d(function(a,b){for(var d,e=f(a,c),g=e.length;g--;)d=aa(a,e[g]),a[d]=!(b[d]=e[g])}):function(a){return f(a,0,e)}):f}},pseudos:{not:d(function(a){var b=[],c=[],e=A(a.replace(ia,"$1"));return e[N]?d(function(a,b,c,d){for(var f,g=e(a,null,d,[]),h=a.length;h--;)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,d,f){return b[0]=a,e(b,null,f,c),b[0]=null,!c.pop()}}),has:d(function(a){return function(c){return b(a,c).length>0}}),contains:d(function(a){return a=a.replace(va,wa),function(b){return(b.textContent||b.innerText||x(b)).indexOf(a)>-1}}),lang:d(function(a){return na.test(a||"")||b.error("unsupported lang: "+a),a=a.replace(va,wa).toLowerCase(),function(b){var c;do if(c=I?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===H},focus:function(a){return a===G.activeElement&&(!G.hasFocus||G.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!w.pseudos.empty(a)},header:function(a){return qa.test(a.nodeName)},input:function(a){return pa.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:j(function(){return[0]}),last:j(function(a,b){return[b-1]}),eq:j(function(a,b,c){return[0>c?c+b:c]}),even:j(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:j(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:j(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:j(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},w.pseudos.nth=w.pseudos.eq;for(u in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[u]=h(u);for(u in{submit:!0,reset:!0})w.pseudos[u]=i(u);return l.prototype=w.filters=w.pseudos,w.setFilters=new l,z=b.tokenize=function(a,c){var d,e,f,g,h,i,j,k=S[a+" "];if(k)return c?0:k.slice(0);for(h=a,i=[],j=w.preFilter;h;){(!d||(e=ja.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),d=!1,(e=ka.exec(h))&&(d=e.shift(),f.push({value:d,type:e[0].replace(ia," ")}),h=h.slice(d.length));for(g in w.filter)!(e=oa[g].exec(h))||j[g]&&!(e=j[g](e))||(d=e.shift(),f.push({value:d,type:g,matches:e}),h=h.slice(d.length));if(!d)break}return c?h.length:h?b.error(a):S(a,i).slice(0)},A=b.compile=function(a,b){var c,d=[],e=[],f=T[a+" "];if(!f){for(b||(b=z(a)),c=b.length;c--;)f=s(b[c]),f[N]?d.push(f):e.push(f);f=T(a,t(e,d)),f.selector=a}return f},B=b.select=function(a,b,c,d){var e,f,g,h,i,j="function"==typeof a&&a,l=!d&&z(a=j.selector||a);if(c=c||[],1===l.length){if(f=l[0]=l[0].slice(0),f.length>2&&"ID"===(g=f[0]).type&&v.getById&&9===b.nodeType&&I&&w.relative[f[1].type]){if(b=(w.find.ID(g.matches[0].replace(va,wa),b)||[])[0],!b)return c;j&&(b=b.parentNode),a=a.slice(f.shift().value.length)}for(e=oa.needsContext.test(a)?0:f.length;e--&&(g=f[e],!w.relative[h=g.type]);)if((i=w.find[h])&&(d=i(g.matches[0].replace(va,wa),ta.test(f[0].type)&&k(b.parentNode)||b))){if(f.splice(e,1),a=d.length&&m(f),!a)return $.apply(c,d),c;break}}return(j||A(a,l))(d,b,!I,c,ta.test(a)&&k(b.parentNode)||b),c},v.sortStable=N.split("").sort(U).join("")===N,v.detectDuplicates=!!E,F(),v.sortDetached=e(function(a){return 1&a.compareDocumentPosition(G.createElement("div"))}),e(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||f("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),v.attributes&&e(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||f("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),e(function(a){return null==a.getAttribute("disabled")})||f(ba,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),b}(a);_.find=ea,_.expr=ea.selectors,_.expr[":"]=_.expr.pseudos,_.unique=ea.uniqueSort,_.text=ea.getText,_.isXMLDoc=ea.isXML,_.contains=ea.contains;var fa=_.expr.match.needsContext,ga=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,ha=/^.[^:#\[\.,]*$/;_.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?_.find.matchesSelector(d,a)?[d]:[]:_.find.matches(a,_.grep(b,function(a){return 1===a.nodeType}))},_.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(_(a).filter(function(){for(b=0;c>b;b++)if(_.contains(e[b],this))return!0}));for(b=0;c>b;b++)_.find(a,e[b],d);return d=this.pushStack(c>1?_.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(d(this,a||[],!1))},not:function(a){return this.pushStack(d(this,a||[],!0))},is:function(a){return!!d(this,"string"==typeof a&&fa.test(a)?_(a):a||[],!1).length}});var ia,ja=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ka=_.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:ja.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||ia).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof _?b[0]:b,_.merge(this,_.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:Z,!0)),ga.test(c[1])&&_.isPlainObject(b))for(c in b)_.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=Z.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=Z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):_.isFunction(a)?"undefined"!=typeof ia.ready?ia.ready(a):a(_):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),_.makeArray(a,this))};ka.prototype=_.fn,ia=_(Z);var la=/^(?:parents|prev(?:Until|All))/,ma={children:!0,contents:!0,next:!0,prev:!0};_.extend({dir:function(a,b,c){for(var d=[],e=void 0!==c;(a=a[b])&&9!==a.nodeType;)if(1===a.nodeType){if(e&&_(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),_.fn.extend({has:function(a){var b=_(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(_.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=fa.test(a)||"string"!=typeof a?_(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&_.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?_.unique(f):f)},index:function(a){return a?"string"==typeof a?U.call(_(a),this[0]):U.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(_.unique(_.merge(this.get(),_(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}}),_.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return _.dir(a,"parentNode")},parentsUntil:function(a,b,c){return _.dir(a,"parentNode",c)},next:function(a){return e(a,"nextSibling")},prev:function(a){return e(a,"previousSibling")},nextAll:function(a){return _.dir(a,"nextSibling")},prevAll:function(a){return _.dir(a,"previousSibling")},nextUntil:function(a,b,c){return _.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return _.dir(a,"previousSibling",c)},siblings:function(a){return _.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return _.sibling(a.firstChild)},contents:function(a){return a.contentDocument||_.merge([],a.childNodes)}},function(a,b){_.fn[a]=function(c,d){var e=_.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=_.filter(d,e)),this.length>1&&(ma[a]||_.unique(e),la.test(a)&&e.reverse()),this.pushStack(e)}});var na=/\S+/g,oa={};_.Callbacks=function(a){a="string"==typeof a?oa[a]||f(a):_.extend({},a);var b,c,d,e,g,h,i=[],j=!a.once&&[],k=function(f){for(b=a.memory&&f,c=!0,h=e||0,e=0,g=i.length,d=!0;i&&g>h;h++)if(i[h].apply(f[0],f[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,i&&(j?j.length&&k(j.shift()):b?i=[]:l.disable())},l={add:function(){if(i){var c=i.length;!function f(b){_.each(b,function(b,c){var d=_.type(c);"function"===d?a.unique&&l.has(c)||i.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),d?g=i.length:b&&(e=c,k(b))}return this},remove:function(){return i&&_.each(arguments,function(a,b){for(var c;(c=_.inArray(b,i,c))>-1;)i.splice(c,1),d&&(g>=c&&g--,h>=c&&h--)}),this},has:function(a){return a?_.inArray(a,i)>-1:!(!i||!i.length)},empty:function(){return i=[],g=0,this},disable:function(){return i=j=b=void 0,this},disabled:function(){return!i},lock:function(){return j=void 0,b||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return!i||c&&!j||(b=b||[],b=[a,b.slice?b.slice():b],d?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!c}};return l},_.extend({Deferred:function(a){var b=[["resolve","done",_.Callbacks("once memory"),"resolved"],["reject","fail",_.Callbacks("once memory"),"rejected"],["notify","progress",_.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return _.Deferred(function(c){_.each(b,function(b,f){var g=_.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&_.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?_.extend(a,d):d}},e={};return d.pipe=d.then,_.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b,c,d,e=0,f=R.call(arguments),g=f.length,h=1!==g||a&&_.isFunction(a.promise)?g:0,i=1===h?a:_.Deferred(),j=function(a,c,d){return function(e){c[a]=this,d[a]=arguments.length>1?R.call(arguments):e,d===b?i.notifyWith(c,d):--h||i.resolveWith(c,d)}};if(g>1)for(b=new Array(g),c=new Array(g),d=new Array(g);g>e;e++)f[e]&&_.isFunction(f[e].promise)?f[e].promise().done(j(e,d,f)).fail(i.reject).progress(j(e,c,b)):--h;return h||i.resolveWith(d,f),i.promise()}});var pa;_.fn.ready=function(a){return _.ready.promise().done(a),this},_.extend({isReady:!1,readyWait:1,holdReady:function(a){a?_.readyWait++:_.ready(!0)},ready:function(a){(a===!0?--_.readyWait:_.isReady)||(_.isReady=!0,a!==!0&&--_.readyWait>0||(pa.resolveWith(Z,[_]),_.fn.triggerHandler&&(_(Z).triggerHandler("ready"),_(Z).off("ready"))))}}),_.ready.promise=function(b){return pa||(pa=_.Deferred(),"complete"===Z.readyState?setTimeout(_.ready):(Z.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1))),pa.promise(b)},_.ready.promise();var qa=_.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===_.type(c)){e=!0;for(h in c)_.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,_.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(_(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};_.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType},h.uid=1,h.accepts=_.acceptData,h.prototype={key:function(a){if(!h.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=h.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,_.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(_.isEmptyObject(f))_.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,_.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{_.isArray(b)?d=b.concat(b.map(_.camelCase)):(e=_.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(na)||[])),c=d.length;for(;c--;)delete g[d[c]]}},hasData:function(a){return!_.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var ra=new h,sa=new h,ta=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ua=/([A-Z])/g;_.extend({hasData:function(a){return sa.hasData(a)||ra.hasData(a)},data:function(a,b,c){return sa.access(a,b,c)},removeData:function(a,b){sa.remove(a,b)},_data:function(a,b,c){return ra.access(a,b,c)},_removeData:function(a,b){ra.remove(a,b)}}),_.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=sa.get(f),1===f.nodeType&&!ra.get(f,"hasDataAttrs"))){for(c=g.length;c--;)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=_.camelCase(d.slice(5)),i(f,d,e[d])));ra.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){sa.set(this,a)}):qa(this,function(b){var c,d=_.camelCase(a);if(f&&void 0===b){if(c=sa.get(f,a),void 0!==c)return c;if(c=sa.get(f,d),void 0!==c)return c;if(c=i(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=sa.get(this,d);sa.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&sa.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){sa.remove(this,a)})}}),_.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=ra.get(a,b),c&&(!d||_.isArray(c)?d=ra.access(a,b,_.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=_.queue(a,b),d=c.length,e=c.shift(),f=_._queueHooks(a,b),g=function(){_.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return ra.get(a,c)||ra.access(a,c,{empty:_.Callbacks("once memory").add(function(){ra.remove(a,[b+"queue",c])})})}}),_.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?_.queue(this[0],a):void 0===b?this:this.each(function(){var c=_.queue(this,a,b);_._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&_.dequeue(this,a)})},dequeue:function(a){return this.each(function(){_.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=_.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};for("string"!=typeof a&&(b=a,a=void 0),a=a||"fx";g--;)c=ra.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var va=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,wa=["Top","Right","Bottom","Left"],xa=function(a,b){return a=b||a,"none"===_.css(a,"display")||!_.contains(a.ownerDocument,a)},ya=/^(?:checkbox|radio)$/i;!function(){var a=Z.createDocumentFragment(),b=a.appendChild(Z.createElement("div")),c=Z.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),Y.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",Y.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var za="undefined";Y.focusinBubbles="onfocusin"in a;var Aa=/^key/,Ba=/^(?:mouse|pointer|contextmenu)|click/,Ca=/^(?:focusinfocus|focusoutblur)$/,Da=/^([^.]*)(?:\.(.+)|)$/;_.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=ra.get(a);if(q)for(c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=_.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return typeof _!==za&&_.event.triggered!==b.type?_.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(na)||[""],j=b.length;j--;)h=Da.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=_.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=_.event.special[n]||{},k=_.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&_.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),_.event.global[n]=!0)},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=ra.hasData(a)&&ra.get(a);if(q&&(i=q.events)){for(b=(b||"").match(na)||[""],j=b.length;j--;)if(h=Da.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){for(l=_.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;f--;)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||_.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)_.event.remove(a,n+b[j],c,d,!0);_.isEmptyObject(i)&&(delete q.handle,ra.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,j,k,l,m=[d||Z],n=X.call(b,"type")?b.type:b,o=X.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||Z,3!==d.nodeType&&8!==d.nodeType&&!Ca.test(n+_.event.triggered)&&(n.indexOf(".")>=0&&(o=n.split("."),n=o.shift(),o.sort()),j=n.indexOf(":")<0&&"on"+n,b=b[_.expando]?b:new _.Event(n,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=o.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),
+c=null==c?[b]:_.makeArray(c,[b]),l=_.event.special[n]||{},e||!l.trigger||l.trigger.apply(d,c)!==!1)){if(!e&&!l.noBubble&&!_.isWindow(d)){for(i=l.delegateType||n,Ca.test(i+n)||(g=g.parentNode);g;g=g.parentNode)m.push(g),h=g;h===(d.ownerDocument||Z)&&m.push(h.defaultView||h.parentWindow||a)}for(f=0;(g=m[f++])&&!b.isPropagationStopped();)b.type=f>1?i:l.bindType||n,k=(ra.get(g,"events")||{})[b.type]&&ra.get(g,"handle"),k&&k.apply(g,c),k=j&&g[j],k&&k.apply&&_.acceptData(g)&&(b.result=k.apply(g,c),b.result===!1&&b.preventDefault());return b.type=n,e||b.isDefaultPrevented()||l._default&&l._default.apply(m.pop(),c)!==!1||!_.acceptData(d)||j&&_.isFunction(d[n])&&!_.isWindow(d)&&(h=d[j],h&&(d[j]=null),_.event.triggered=n,d[n](),_.event.triggered=void 0,h&&(d[j]=h)),b.result}},dispatch:function(a){a=_.event.fix(a);var b,c,d,e,f,g=[],h=R.call(arguments),i=(ra.get(this,"events")||{})[a.type]||[],j=_.event.special[a.type]||{};if(h[0]=a,a.delegateTarget=this,!j.preDispatch||j.preDispatch.call(this,a)!==!1){for(g=_.event.handlers.call(this,a,i),b=0;(e=g[b++])&&!a.isPropagationStopped();)for(a.currentTarget=e.elem,c=0;(f=e.handlers[c++])&&!a.isImmediatePropagationStopped();)(!a.namespace_re||a.namespace_re.test(f.namespace))&&(a.handleObj=f,a.data=f.data,d=((_.event.special[f.origType]||{}).handle||f.handler).apply(e.elem,h),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()));return j.postDispatch&&j.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?_(e,this).index(i)>=0:_.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||Z,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[_.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];for(g||(this.fixHooks[e]=g=Ba.test(e)?this.mouseHooks:Aa.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new _.Event(f),b=d.length;b--;)c=d[b],a[c]=f[c];return a.target||(a.target=Z),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==l()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===l()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&_.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return _.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=_.extend(new _.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?_.event.trigger(e,null,b):_.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},_.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},_.Event=function(a,b){return this instanceof _.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?j:k):this.type=a,b&&_.extend(this,b),this.timeStamp=a&&a.timeStamp||_.now(),void(this[_.expando]=!0)):new _.Event(a,b)},_.Event.prototype={isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=j,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=j,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=j,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},_.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){_.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!_.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),Y.focusinBubbles||_.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){_.event.simulate(b,a.target,_.event.fix(a),!0)};_.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=ra.access(d,b);e||d.addEventListener(a,c,!0),ra.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=ra.access(d,b)-1;e?ra.access(d,b,e):(d.removeEventListener(a,c,!0),ra.remove(d,b))}}}),_.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=k;else if(!d)return this;return 1===e&&(f=d,d=function(a){return _().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=_.guid++)),this.each(function(){_.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,_(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=k),this.each(function(){_.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){_.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?_.event.trigger(a,b,c,!0):void 0}});var Ea=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Fa=/<([\w:]+)/,Ga=/<|&#?\w+;/,Ha=/<(?:script|style|link)/i,Ia=/checked\s*(?:[^=]|=\s*.checked.)/i,Ja=/^$|\/(?:java|ecma)script/i,Ka=/^true\/(.*)/,La=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Ma.optgroup=Ma.option,Ma.tbody=Ma.tfoot=Ma.colgroup=Ma.caption=Ma.thead,Ma.th=Ma.td,_.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=_.contains(a.ownerDocument,a);if(!(Y.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||_.isXMLDoc(a)))for(g=r(h),f=r(a),d=0,e=f.length;e>d;d++)s(f[d],g[d]);if(b)if(c)for(f=f||r(a),g=g||r(h),d=0,e=f.length;e>d;d++)q(f[d],g[d]);else q(a,h);return g=r(h,"script"),g.length>0&&p(g,!i&&r(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,n=a.length;n>m;m++)if(e=a[m],e||0===e)if("object"===_.type(e))_.merge(l,e.nodeType?[e]:e);else if(Ga.test(e)){for(f=f||k.appendChild(b.createElement("div")),g=(Fa.exec(e)||["",""])[1].toLowerCase(),h=Ma[g]||Ma._default,f.innerHTML=h[1]+e.replace(Ea,"<$1></$2>")+h[2],j=h[0];j--;)f=f.lastChild;_.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));for(k.textContent="",m=0;e=l[m++];)if((!d||-1===_.inArray(e,d))&&(i=_.contains(e.ownerDocument,e),f=r(k.appendChild(e),"script"),i&&p(f),c))for(j=0;e=f[j++];)Ja.test(e.type||"")&&c.push(e);return k},cleanData:function(a){for(var b,c,d,e,f=_.event.special,g=0;void 0!==(c=a[g]);g++){if(_.acceptData(c)&&(e=c[ra.expando],e&&(b=ra.cache[e]))){if(b.events)for(d in b.events)f[d]?_.event.remove(c,d):_.removeEvent(c,d,b.handle);ra.cache[e]&&delete ra.cache[e]}delete sa.cache[c[sa.expando]]}}}),_.fn.extend({text:function(a){return qa(this,function(a){return void 0===a?_.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=m(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=m(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?_.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||_.cleanData(r(c)),c.parentNode&&(b&&_.contains(c.ownerDocument,c)&&p(r(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(_.cleanData(r(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return _.clone(this,a,b)})},html:function(a){return qa(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Ha.test(a)&&!Ma[(Fa.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ea,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(_.cleanData(r(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,_.cleanData(r(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=S.apply([],a);var c,d,e,f,g,h,i=0,j=this.length,k=this,l=j-1,m=a[0],p=_.isFunction(m);if(p||j>1&&"string"==typeof m&&!Y.checkClone&&Ia.test(m))return this.each(function(c){var d=k.eq(c);p&&(a[0]=m.call(this,c,d.html())),d.domManip(a,b)});if(j&&(c=_.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(e=_.map(r(c,"script"),n),f=e.length;j>i;i++)g=c,i!==l&&(g=_.clone(g,!0,!0),f&&_.merge(e,r(g,"script"))),b.call(this[i],g,i);if(f)for(h=e[e.length-1].ownerDocument,_.map(e,o),i=0;f>i;i++)g=e[i],Ja.test(g.type||"")&&!ra.access(g,"globalEval")&&_.contains(h,g)&&(g.src?_._evalUrl&&_._evalUrl(g.src):_.globalEval(g.textContent.replace(La,"")))}return this}}),_.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){_.fn[a]=function(a){for(var c,d=[],e=_(a),f=e.length-1,g=0;f>=g;g++)c=g===f?this:this.clone(!0),_(e[g])[b](c),T.apply(d,c.get());return this.pushStack(d)}});var Na,Oa={},Pa=/^margin/,Qa=new RegExp("^("+va+")(?!px)[a-z%]+$","i"),Ra=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};!function(){function b(){g.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",g.innerHTML="",e.appendChild(f);var b=a.getComputedStyle(g,null);c="1%"!==b.top,d="4px"===b.width,e.removeChild(f)}var c,d,e=Z.documentElement,f=Z.createElement("div"),g=Z.createElement("div");g.style&&(g.style.backgroundClip="content-box",g.cloneNode(!0).style.backgroundClip="",Y.clearCloneStyle="content-box"===g.style.backgroundClip,f.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",f.appendChild(g),a.getComputedStyle&&_.extend(Y,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return null==d&&b(),d},reliableMarginRight:function(){var b,c=g.appendChild(Z.createElement("div"));return c.style.cssText=g.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",g.style.width="1px",e.appendChild(f),b=!parseFloat(a.getComputedStyle(c,null).marginRight),e.removeChild(f),g.removeChild(c),b}}))}(),_.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Sa=/^(none|table(?!-c[ea]).+)/,Ta=new RegExp("^("+va+")(.*)$","i"),Ua=new RegExp("^([+-])=("+va+")","i"),Va={position:"absolute",visibility:"hidden",display:"block"},Wa={letterSpacing:"0",fontWeight:"400"},Xa=["Webkit","O","Moz","ms"];_.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=v(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=_.camelCase(b),i=a.style;return b=_.cssProps[h]||(_.cssProps[h]=x(i,h)),g=_.cssHooks[b]||_.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ua.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(_.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||_.cssNumber[h]||(c+="px"),Y.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=_.camelCase(b);return b=_.cssProps[h]||(_.cssProps[h]=x(a.style,h)),g=_.cssHooks[b]||_.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=v(a,b,d)),"normal"===e&&b in Wa&&(e=Wa[b]),""===c||c?(f=parseFloat(e),c===!0||_.isNumeric(f)?f||0:e):e}}),_.each(["height","width"],function(a,b){_.cssHooks[b]={get:function(a,c,d){return c?Sa.test(_.css(a,"display"))&&0===a.offsetWidth?_.swap(a,Va,function(){return A(a,b,d)}):A(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return y(a,c,d?z(a,b,d,"border-box"===_.css(a,"boxSizing",!1,e),e):0)}}}),_.cssHooks.marginRight=w(Y.reliableMarginRight,function(a,b){return b?_.swap(a,{display:"inline-block"},v,[a,"marginRight"]):void 0}),_.each({margin:"",padding:"",border:"Width"},function(a,b){_.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+wa[d]+b]=f[d]||f[d-2]||f[0];return e}},Pa.test(a)||(_.cssHooks[a+b].set=y)}),_.fn.extend({css:function(a,b){return qa(this,function(a,b,c){var d,e,f={},g=0;if(_.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=_.css(a,b[g],!1,d);return f}return void 0!==c?_.style(a,b,c):_.css(a,b)},a,b,arguments.length>1)},show:function(){return B(this,!0)},hide:function(){return B(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){xa(this)?_(this).show():_(this).hide()})}}),_.Tween=C,C.prototype={constructor:C,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(_.cssNumber[c]?"":"px")},cur:function(){var a=C.propHooks[this.prop];return a&&a.get?a.get(this):C.propHooks._default.get(this)},run:function(a){var b,c=C.propHooks[this.prop];return this.options.duration?this.pos=b=_.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):C.propHooks._default.set(this),this}},C.prototype.init.prototype=C.prototype,C.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=_.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){_.fx.step[a.prop]?_.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[_.cssProps[a.prop]]||_.cssHooks[a.prop])?_.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},C.propHooks.scrollTop=C.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},_.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},_.fx=C.prototype.init,_.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=new RegExp("^(?:([+-])=|)("+va+")([a-z%]*)$","i"),ab=/queueHooks$/,bb=[G],cb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=_a.exec(b),f=e&&e[3]||(_.cssNumber[a]?"":"px"),g=(_.cssNumber[a]||"px"!==f&&+d)&&_a.exec(_.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,_.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};_.Animation=_.extend(I,{tweener:function(a,b){_.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],cb[c]=cb[c]||[],cb[c].unshift(b)},prefilter:function(a,b){b?bb.unshift(a):bb.push(a)}}),_.speed=function(a,b,c){var d=a&&"object"==typeof a?_.extend({},a):{complete:c||!c&&b||_.isFunction(a)&&a,duration:a,easing:c&&b||b&&!_.isFunction(b)&&b};return d.duration=_.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in _.fx.speeds?_.fx.speeds[d.duration]:_.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){_.isFunction(d.old)&&d.old.call(this),d.queue&&_.dequeue(this,d.queue)},d},_.fn.extend({fadeTo:function(a,b,c,d){return this.filter(xa).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=_.isEmptyObject(a),f=_.speed(b,c,d),g=function(){var b=I(this,_.extend({},a),f);(e||ra.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=_.timers,g=ra.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&ab.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&_.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=ra.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=_.timers,g=d?d.length:0;for(c.finish=!0,_.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),_.each(["toggle","show","hide"],function(a,b){var c=_.fn[b];_.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(E(b,!0),a,d,e)}}),_.each({slideDown:E("show"),slideUp:E("hide"),slideToggle:E("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){_.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),_.timers=[],_.fx.tick=function(){var a,b=0,c=_.timers;for(Ya=_.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||_.fx.stop(),Ya=void 0},_.fx.timer=function(a){_.timers.push(a),a()?_.fx.start():_.timers.pop()},_.fx.interval=13,_.fx.start=function(){Za||(Za=setInterval(_.fx.tick,_.fx.interval))},_.fx.stop=function(){clearInterval(Za),Za=null},_.fx.speeds={slow:600,fast:200,_default:400},_.fn.delay=function(a,b){return a=_.fx?_.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=Z.createElement("input"),b=Z.createElement("select"),c=b.appendChild(Z.createElement("option"));a.type="checkbox",Y.checkOn=""!==a.value,Y.optSelected=c.selected,b.disabled=!0,Y.optDisabled=!c.disabled,a=Z.createElement("input"),a.value="t",a.type="radio",Y.radioValue="t"===a.value}();var db,eb,fb=_.expr.attrHandle;_.fn.extend({attr:function(a,b){return qa(this,_.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){_.removeAttr(this,a)})}}),_.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===za?_.prop(a,b,c):(1===f&&_.isXMLDoc(a)||(b=b.toLowerCase(),d=_.attrHooks[b]||(_.expr.match.bool.test(b)?eb:db)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=_.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void _.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(na);if(f&&1===a.nodeType)for(;c=f[e++];)d=_.propFix[c]||c,_.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!Y.radioValue&&"radio"===b&&_.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),eb={set:function(a,b,c){return b===!1?_.removeAttr(a,c):a.setAttribute(c,c),c}},_.each(_.expr.match.bool.source.match(/\w+/g),function(a,b){var c=fb[b]||_.find.attr;fb[b]=function(a,b,d){var e,f;return d||(f=fb[b],fb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,fb[b]=f),e}});var gb=/^(?:input|select|textarea|button)$/i;_.fn.extend({prop:function(a,b){return qa(this,_.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[_.propFix[a]||a]})}}),_.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!_.isXMLDoc(a),f&&(b=_.propFix[b]||b,e=_.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||gb.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),Y.optSelected||(_.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),_.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){_.propFix[this.toLowerCase()]=this});var hb=/[\t\r\n\f]/g;_.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(_.isFunction(a))return this.each(function(b){_(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(na)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(hb," "):" ")){for(f=0;e=b[f++];)d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=_.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(_.isFunction(a))return this.each(function(b){_(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(na)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(hb," "):"")){for(f=0;e=b[f++];)for(;d.indexOf(" "+e+" ")>=0;)d=d.replace(" "+e+" "," ");g=a?_.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):_.isFunction(a)?this.each(function(c){_(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if("string"===c)for(var b,d=0,e=_(this),f=a.match(na)||[];b=f[d++];)e.hasClass(b)?e.removeClass(b):e.addClass(b);else(c===za||"boolean"===c)&&(this.className&&ra.set(this,"__className__",this.className),this.className=this.className||a===!1?"":ra.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(hb," ").indexOf(b)>=0)return!0;return!1}});var ib=/\r/g;_.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=_.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,_(this).val()):a,null==e?e="":"number"==typeof e?e+="":_.isArray(e)&&(e=_.map(e,function(a){return null==a?"":a+""})),b=_.valHooks[this.type]||_.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=_.valHooks[e.type]||_.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ib,""):null==c?"":c)}}}),_.extend({valHooks:{option:{get:function(a){var b=_.find.attr(a,"value");return null!=b?b:_.trim(_.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(Y.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!_.nodeName(c.parentNode,"optgroup"))){if(b=_(c).val(),f)return b;g.push(b)}return g},set:function(a,b){for(var c,d,e=a.options,f=_.makeArray(b),g=e.length;g--;)d=e[g],(d.selected=_.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),_.each(["radio","checkbox"],function(){_.valHooks[this]={set:function(a,b){return _.isArray(b)?a.checked=_.inArray(_(a).val(),b)>=0:void 0}},Y.checkOn||(_.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),_.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){_.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),_.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var jb=_.now(),kb=/\?/;_.parseJSON=function(a){return JSON.parse(a+"")},_.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&_.error("Invalid XML: "+a),b};var lb=/#.*$/,mb=/([?&])_=[^&]*/,nb=/^(.*?):[ \t]*([^\r\n]*)$/gm,ob=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,pb=/^(?:GET|HEAD)$/,qb=/^\/\//,rb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,sb={},tb={},ub="*/".concat("*"),vb=a.location.href,wb=rb.exec(vb.toLowerCase())||[];_.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:vb,type:"GET",isLocal:ob.test(wb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":_.parseJSON,"text xml":_.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?L(L(a,_.ajaxSettings),b):L(_.ajaxSettings,a)},ajaxPrefilter:J(sb),ajaxTransport:J(tb),ajax:function(a,b){function c(a,b,c,g){var i,k,r,s,u,w=b;2!==t&&(t=2,h&&clearTimeout(h),d=void 0,f=g||"",v.readyState=a>0?4:0,i=a>=200&&300>a||304===a,c&&(s=M(l,v,c)),s=N(l,s,v,i),i?(l.ifModified&&(u=v.getResponseHeader("Last-Modified"),u&&(_.lastModified[e]=u),u=v.getResponseHeader("etag"),u&&(_.etag[e]=u)),204===a||"HEAD"===l.type?w="nocontent":304===a?w="notmodified":(w=s.state,k=s.data,r=s.error,i=!r)):(r=w,(a||!w)&&(w="error",0>a&&(a=0))),v.status=a,v.statusText=(b||w)+"",i?o.resolveWith(m,[k,w,v]):o.rejectWith(m,[v,w,r]),v.statusCode(q),q=void 0,j&&n.trigger(i?"ajaxSuccess":"ajaxError",[v,l,i?k:r]),p.fireWith(m,[v,w]),j&&(n.trigger("ajaxComplete",[v,l]),--_.active||_.event.trigger("ajaxStop")))}"object"==typeof a&&(b=a,a=void 0),b=b||{};var d,e,f,g,h,i,j,k,l=_.ajaxSetup({},b),m=l.context||l,n=l.context&&(m.nodeType||m.jquery)?_(m):_.event,o=_.Deferred(),p=_.Callbacks("once memory"),q=l.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!g)for(g={};b=nb.exec(f);)g[b[1].toLowerCase()]=b[2];b=g[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return d&&d.abort(b),c(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,l.url=((a||l.url||vb)+"").replace(lb,"").replace(qb,wb[1]+"//"),l.type=b.method||b.type||l.method||l.type,l.dataTypes=_.trim(l.dataType||"*").toLowerCase().match(na)||[""],null==l.crossDomain&&(i=rb.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]===wb[1]&&i[2]===wb[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(wb[3]||("http:"===wb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=_.param(l.data,l.traditional)),K(sb,l,b,v),2===t)return v;j=_.event&&l.global,j&&0===_.active++&&_.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!pb.test(l.type),e=l.url,l.hasContent||(l.data&&(e=l.url+=(kb.test(e)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=mb.test(e)?e.replace(mb,"$1_="+jb++):e+(kb.test(e)?"&":"?")+"_="+jb++)),l.ifModified&&(_.lastModified[e]&&v.setRequestHeader("If-Modified-Since",_.lastModified[e]),_.etag[e]&&v.setRequestHeader("If-None-Match",_.etag[e])),(l.data&&l.hasContent&&l.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",l.contentType),v.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+ub+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)v.setRequestHeader(k,l.headers[k]);if(l.beforeSend&&(l.beforeSend.call(m,v,l)===!1||2===t))return v.abort();u="abort";for(k in{success:1,error:1,complete:1})v[k](l[k]);if(d=K(tb,l,b,v)){v.readyState=1,j&&n.trigger("ajaxSend",[v,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){v.abort("timeout")},l.timeout));try{t=1,d.send(r,c)}catch(w){if(!(2>t))throw w;c(-1,w)}}else c(-1,"No Transport");return v},getJSON:function(a,b,c){return _.get(a,b,c,"json")},getScript:function(a,b){return _.get(a,void 0,b,"script")}}),_.each(["get","post"],function(a,b){_[b]=function(a,c,d,e){return _.isFunction(c)&&(e=e||d,d=c,c=void 0),_.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),_._evalUrl=function(a){return _.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},_.fn.extend({wrapAll:function(a){var b;return _.isFunction(a)?this.each(function(b){_(this).wrapAll(a.call(this,b))}):(this[0]&&(b=_(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){for(var a=this;a.firstElementChild;)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return _.isFunction(a)?this.each(function(b){_(this).wrapInner(a.call(this,b))}):this.each(function(){var b=_(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=_.isFunction(a);return this.each(function(c){_(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){_.nodeName(this,"body")||_(this).replaceWith(this.childNodes)}).end()}}),_.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},_.expr.filters.visible=function(a){return!_.expr.filters.hidden(a)};var xb=/%20/g,yb=/\[\]$/,zb=/\r?\n/g,Ab=/^(?:submit|button|image|reset|file)$/i,Bb=/^(?:input|select|textarea|keygen)/i;_.param=function(a,b){var c,d=[],e=function(a,b){b=_.isFunction(b)?b():null==b?"":b,
+d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=_.ajaxSettings&&_.ajaxSettings.traditional),_.isArray(a)||a.jquery&&!_.isPlainObject(a))_.each(a,function(){e(this.name,this.value)});else for(c in a)O(c,a[c],b,e);return d.join("&").replace(xb,"+")},_.fn.extend({serialize:function(){return _.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=_.prop(this,"elements");return a?_.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!_(this).is(":disabled")&&Bb.test(this.nodeName)&&!Ab.test(a)&&(this.checked||!ya.test(a))}).map(function(a,b){var c=_(this).val();return null==c?null:_.isArray(c)?_.map(c,function(a){return{name:b.name,value:a.replace(zb,"\r\n")}}):{name:b.name,value:c.replace(zb,"\r\n")}}).get()}}),_.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cb=0,Db={},Eb={0:200,1223:204},Fb=_.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Db)Db[a]()}),Y.cors=!!Fb&&"withCredentials"in Fb,Y.ajax=Fb=!!Fb,_.ajaxTransport(function(a){var b;return Y.cors||Fb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Db[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Eb[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Db[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),_.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return _.globalEval(a),a}}}),_.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),_.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=_("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),Z.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gb=[],Hb=/(=)\?(?=&|$)|\?\?/;_.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gb.pop()||_.expando+"_"+jb++;return this[a]=!0,a}}),_.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=_.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hb,"$1"+e):b.jsonp!==!1&&(b.url+=(kb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||_.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gb.push(e)),g&&_.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),_.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||Z;var d=ga.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=_.buildFragment([a],b,e),e&&e.length&&_(e).remove(),_.merge([],d.childNodes))};var Ib=_.fn.load;_.fn.load=function(a,b,c){if("string"!=typeof a&&Ib)return Ib.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=_.trim(a.slice(h)),a=a.slice(0,h)),_.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&_.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?_("<div>").append(_.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},_.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){_.fn[b]=function(a){return this.on(b,a)}}),_.expr.filters.animated=function(a){return _.grep(_.timers,function(b){return a===b.elem}).length};var Jb=a.document.documentElement;_.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=_.css(a,"position"),l=_(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=_.css(a,"top"),i=_.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),_.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},_.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){_.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,_.contains(b,d)?(typeof d.getBoundingClientRect!==za&&(e=d.getBoundingClientRect()),c=P(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===_.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),_.nodeName(a[0],"html")||(d=a.offset()),d.top+=_.css(a[0],"borderTopWidth",!0),d.left+=_.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-_.css(c,"marginTop",!0),left:b.left-d.left-_.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||Jb;a&&!_.nodeName(a,"html")&&"static"===_.css(a,"position");)a=a.offsetParent;return a||Jb})}}),_.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;_.fn[b]=function(e){return qa(this,function(b,e,f){var g=P(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),_.each(["top","left"],function(a,b){_.cssHooks[b]=w(Y.pixelPosition,function(a,c){return c?(c=v(a,b),Qa.test(c)?_(a).position()[b]+"px":c):void 0})}),_.each({Height:"height",Width:"width"},function(a,b){_.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){_.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return qa(this,function(b,c,d){var e;return _.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?_.css(b,c,g):_.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),_.fn.size=function(){return this.length},_.fn.andSelf=_.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return _});var Kb=a.jQuery,Lb=a.$;return _.noConflict=function(b){return a.$===_&&(a.$=Lb),b&&a.jQuery===_&&(a.jQuery=Kb),_},typeof b===za&&(a.jQuery=a.$=_),_});
\ No newline at end of file
diff --git a/js/foundation/js/vendor/modernizr.js b/js/foundation/js/vendor/modernizr.js
new file mode 100644 (file)
index 0000000..04508b5
--- /dev/null
@@ -0,0 +1,8 @@
+/*!
+ * Modernizr v2.8.3
+ * www.modernizr.com
+ *
+ * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
+ * Available under the BSD and MIT licenses: www.modernizr.com/license/
+ */
+window.Modernizr=function(a,b,c){function d(a){t.cssText=a}function e(a,b){return d(x.join(a+";")+(b||""))}function f(a,b){return typeof a===b}function g(a,b){return!!~(""+a).indexOf(b)}function h(a,b){for(var d in a){var e=a[d];if(!g(e,"-")&&t[e]!==c)return"pfx"==b?e:!0}return!1}function i(a,b,d){for(var e in a){var g=b[a[e]];if(g!==c)return d===!1?a[e]:f(g,"function")?g.bind(d||b):g}return!1}function j(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+z.join(d+" ")+d).split(" ");return f(b,"string")||f(b,"undefined")?h(e,b):(e=(a+" "+A.join(d+" ")+d).split(" "),i(e,b,c))}function k(){o.input=function(c){for(var d=0,e=c.length;e>d;d++)E[c[d]]=!!(c[d]in u);return E.list&&(E.list=!(!b.createElement("datalist")||!a.HTMLDataListElement)),E}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),o.inputtypes=function(a){for(var d,e,f,g=0,h=a.length;h>g;g++)u.setAttribute("type",e=a[g]),d="text"!==u.type,d&&(u.value=v,u.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&u.style.WebkitAppearance!==c?(q.appendChild(u),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(u,null).WebkitAppearance&&0!==u.offsetHeight,q.removeChild(u)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?u.checkValidity&&u.checkValidity()===!1:u.value!=v)),D[a[g]]=!!d;return D}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var l,m,n="2.8.3",o={},p=!0,q=b.documentElement,r="modernizr",s=b.createElement(r),t=s.style,u=b.createElement("input"),v=":)",w={}.toString,x=" -webkit- -moz- -o- -ms- ".split(" "),y="Webkit Moz O ms",z=y.split(" "),A=y.toLowerCase().split(" "),B={svg:"http://www.w3.org/2000/svg"},C={},D={},E={},F=[],G=F.slice,H=function(a,c,d,e){var f,g,h,i,j=b.createElement("div"),k=b.body,l=k||b.createElement("body");if(parseInt(d,10))for(;d--;)h=b.createElement("div"),h.id=e?e[d]:r+(d+1),j.appendChild(h);return f=["&#173;",'<style id="s',r,'">',a,"</style>"].join(""),j.id=r,(k?j:l).innerHTML+=f,l.appendChild(j),k||(l.style.background="",l.style.overflow="hidden",i=q.style.overflow,q.style.overflow="hidden",q.appendChild(l)),g=c(j,a),k?j.parentNode.removeChild(j):(l.parentNode.removeChild(l),q.style.overflow=i),!!g},I=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return H("@media "+b+" { #"+r+" { position: absolute; } }",function(b){d="absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position}),d},J=function(){function a(a,e){e=e||b.createElement(d[a]||"div"),a="on"+a;var g=a in e;return g||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(a,""),g=f(e[a],"function"),f(e[a],"undefined")||(e[a]=c),e.removeAttribute(a))),e=null,g}var d={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return a}(),K={}.hasOwnProperty;m=f(K,"undefined")||f(K.call,"undefined")?function(a,b){return b in a&&f(a.constructor.prototype[b],"undefined")}:function(a,b){return K.call(a,b)},Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=G.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(G.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(G.call(arguments)))};return d}),C.flexbox=function(){return j("flexWrap")},C.flexboxlegacy=function(){return j("boxDirection")},C.canvas=function(){var a=b.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))},C.canvastext=function(){return!(!o.canvas||!f(b.createElement("canvas").getContext("2d").fillText,"function"))},C.webgl=function(){return!!a.WebGLRenderingContext},C.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:H(["@media (",x.join("touch-enabled),("),r,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=9===a.offsetTop}),c},C.geolocation=function(){return"geolocation"in navigator},C.postmessage=function(){return!!a.postMessage},C.websqldatabase=function(){return!!a.openDatabase},C.indexedDB=function(){return!!j("indexedDB",a)},C.hashchange=function(){return J("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},C.history=function(){return!(!a.history||!history.pushState)},C.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},C.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},C.rgba=function(){return d("background-color:rgba(150,255,150,.5)"),g(t.backgroundColor,"rgba")},C.hsla=function(){return d("background-color:hsla(120,40%,100%,.5)"),g(t.backgroundColor,"rgba")||g(t.backgroundColor,"hsla")},C.multiplebgs=function(){return d("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(t.background)},C.backgroundsize=function(){return j("backgroundSize")},C.borderimage=function(){return j("borderImage")},C.borderradius=function(){return j("borderRadius")},C.boxshadow=function(){return j("boxShadow")},C.textshadow=function(){return""===b.createElement("div").style.textShadow},C.opacity=function(){return e("opacity:.55"),/^0.55$/.test(t.opacity)},C.cssanimations=function(){return j("animationName")},C.csscolumns=function(){return j("columnCount")},C.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return d((a+"-webkit- ".split(" ").join(b+a)+x.join(c+a)).slice(0,-a.length)),g(t.backgroundImage,"gradient")},C.cssreflections=function(){return j("boxReflect")},C.csstransforms=function(){return!!j("transform")},C.csstransforms3d=function(){var a=!!j("perspective");return a&&"webkitPerspective"in q.style&&H("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=9===b.offsetLeft&&3===b.offsetHeight}),a},C.csstransitions=function(){return j("transition")},C.fontface=function(){var a;return H('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&0===g.indexOf(d.split(" ")[0])}),a},C.generatedcontent=function(){var a;return H(["#",r,"{font:0/0 a}#",r,':after{content:"',v,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},C.video=function(){var a=b.createElement("video"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(d){}return c},C.audio=function(){var a=b.createElement("audio"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(d){}return c},C.localstorage=function(){try{return localStorage.setItem(r,r),localStorage.removeItem(r),!0}catch(a){return!1}},C.sessionstorage=function(){try{return sessionStorage.setItem(r,r),sessionStorage.removeItem(r),!0}catch(a){return!1}},C.webworkers=function(){return!!a.Worker},C.applicationcache=function(){return!!a.applicationCache},C.svg=function(){return!!b.createElementNS&&!!b.createElementNS(B.svg,"svg").createSVGRect},C.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==B.svg},C.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(w.call(b.createElementNS(B.svg,"animate")))},C.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(w.call(b.createElementNS(B.svg,"clipPath")))};for(var L in C)m(C,L)&&(l=L.toLowerCase(),o[l]=C[L](),F.push((o[l]?"":"no-")+l));return o.input||k(),o.addTest=function(a,b){if("object"==typeof a)for(var d in a)m(a,d)&&o.addTest(d,a[d]);else{if(a=a.toLowerCase(),o[a]!==c)return o;b="function"==typeof b?b():b,"undefined"!=typeof p&&p&&(q.className+=" "+(b?"":"no-")+a),o[a]=b}return o},d(""),s=u=null,function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=s.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=r[a[p]];return b||(b={},q++,a[p]=q,r[q]=b),b}function f(a,c,d){if(c||(c=b),k)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():o.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!f.canHaveChildren||n.test(a)||f.tagUrn?f:d.frag.appendChild(f)}function g(a,c){if(a||(a=b),k)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function i(a){a||(a=b);var d=e(a);return!s.shivCSS||j||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||h(a,d),a}var j,k,l="3.7.0",m=a.html5||{},n=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,o=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,p="_html5shiv",q=0,r={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",j="hidden"in a,k=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){j=!0,k=!0}}();var s={elements:m.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:l,shivCSS:m.shivCSS!==!1,supportsUnknownElements:k,shivMethods:m.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g};a.html5=s,i(b)}(this,b),o._version=n,o._prefixes=x,o._domPrefixes=A,o._cssomPrefixes=z,o.mq=I,o.hasEvent=J,o.testProp=function(a){return h([a])},o.testAllProps=j,o.testStyles=H,o.prefixed=function(a,b,c){return b?j(a,b,c):j(a,"pfx")},q.className=q.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(p?" js "+F.join(" "):""),o}(this,this.document);
\ No newline at end of file
diff --git a/js/foundation/js/vendor/placeholder.js b/js/foundation/js/vendor/placeholder.js
new file mode 100644 (file)
index 0000000..caa5495
--- /dev/null
@@ -0,0 +1,2 @@
+/*! http://mths.be/placeholder v2.0.9 by @mathias */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){function b(b){var c={},d=/^jQuery\d+$/;return a.each(b.attributes,function(a,b){b.specified&&!d.test(b.name)&&(c[b.name]=b.value)}),c}function c(b,c){var d=this,f=a(d);if(d.value==f.attr("placeholder")&&f.hasClass("placeholder"))if(f.data("placeholder-password")){if(f=f.hide().nextAll('input[type="password"]:first').show().attr("id",f.removeAttr("id").data("placeholder-id")),b===!0)return f[0].value=c;f.focus()}else d.value="",f.removeClass("placeholder"),d==e()&&d.select()}function d(){var d,e=this,f=a(e),g=this.id;if(""===e.value){if("password"===e.type){if(!f.data("placeholder-textinput")){try{d=f.clone().attr({type:"text"})}catch(h){d=a("<input>").attr(a.extend(b(this),{type:"text"}))}d.removeAttr("name").data({"placeholder-password":f,"placeholder-id":g}).bind("focus.placeholder",c),f.data({"placeholder-textinput":d,"placeholder-id":g}).before(d)}f=f.removeAttr("id").hide().prevAll('input[type="text"]:first').attr("id",g).show()}f.addClass("placeholder"),f[0].value=f.attr("placeholder")}else f.removeClass("placeholder")}function e(){try{return document.activeElement}catch(a){}}var f,g,h="[object OperaMini]"==Object.prototype.toString.call(window.operamini),i="placeholder"in document.createElement("input")&&!h,j="placeholder"in document.createElement("textarea")&&!h,k=a.valHooks,l=a.propHooks;i&&j?(g=a.fn.placeholder=function(){return this},g.input=g.textarea=!0):(g=a.fn.placeholder=function(){var a=this;return a.filter((i?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":c,"blur.placeholder":d}).data("placeholder-enabled",!0).trigger("blur.placeholder"),a},g.input=i,g.textarea=j,f={get:function(b){var c=a(b),d=c.data("placeholder-password");return d?d[0].value:c.data("placeholder-enabled")&&c.hasClass("placeholder")?"":b.value},set:function(b,f){var g=a(b),h=g.data("placeholder-password");return h?h[0].value=f:g.data("placeholder-enabled")?(""===f?(b.value=f,b!=e()&&d.call(b)):g.hasClass("placeholder")?c.call(b,!0,f)||(b.value=f):b.value=f,g):b.value=f}},i||(k.input=f,l.value=f),j||(k.textarea=f,l.value=f),a(function(){a(document).delegate("form","submit.placeholder",function(){var b=a(".placeholder",this).each(c);setTimeout(function(){b.each(d)},10)})}),a(window).bind("beforeunload.placeholder",function(){a(".placeholder").each(function(){this.value=""})}))});
\ No newline at end of file
diff --git a/js/jquery-placeholder/jquery.placeholder.js b/js/jquery-placeholder/jquery.placeholder.js
new file mode 100644 (file)
index 0000000..94e5e2c
--- /dev/null
@@ -0,0 +1,192 @@
+/*! http://mths.be/placeholder v2.0.9 by @mathias */
+(function(factory) {
+       if (typeof define === 'function' && define.amd) {
+               // AMD
+               define(['jquery'], factory);
+       } else {
+               // Browser globals
+               factory(jQuery);
+       }
+}(function($) {
+
+       // Opera Mini v7 doesn’t support placeholder although its DOM seems to indicate so
+       var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]';
+       var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini;
+       var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini;
+       var valHooks = $.valHooks;
+       var propHooks = $.propHooks;
+       var hooks;
+       var placeholder;
+
+       if (isInputSupported && isTextareaSupported) {
+
+               placeholder = $.fn.placeholder = function() {
+                       return this;
+               };
+
+               placeholder.input = placeholder.textarea = true;
+
+       } else {
+
+               placeholder = $.fn.placeholder = function() {
+                       var $this = this;
+                       $this
+                               .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
+                               .not('.placeholder')
+                               .bind({
+                                       'focus.placeholder': clearPlaceholder,
+                                       'blur.placeholder': setPlaceholder
+                               })
+                               .data('placeholder-enabled', true)
+                               .trigger('blur.placeholder');
+                       return $this;
+               };
+
+               placeholder.input = isInputSupported;
+               placeholder.textarea = isTextareaSupported;
+
+               hooks = {
+                       'get': function(element) {
+                               var $element = $(element);
+
+                               var $passwordInput = $element.data('placeholder-password');
+                               if ($passwordInput) {
+                                       return $passwordInput[0].value;
+                               }
+
+                               return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
+                       },
+                       'set': function(element, value) {
+                               var $element = $(element);
+
+                               var $passwordInput = $element.data('placeholder-password');
+                               if ($passwordInput) {
+                                       return $passwordInput[0].value = value;
+                               }
+
+                               if (!$element.data('placeholder-enabled')) {
+                                       return element.value = value;
+                               }
+                               if (value === '') {
+                                       element.value = value;
+                                       // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
+                                       if (element != safeActiveElement()) {
+                                               // We can't use `triggerHandler` here because of dummy text/password inputs :(
+                                               setPlaceholder.call(element);
+                                       }
+                               } else if ($element.hasClass('placeholder')) {
+                                       clearPlaceholder.call(element, true, value) || (element.value = value);
+                               } else {
+                                       element.value = value;
+                               }
+                               // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
+                               return $element;
+                       }
+               };
+
+               if (!isInputSupported) {
+                       valHooks.input = hooks;
+                       propHooks.value = hooks;
+               }
+               if (!isTextareaSupported) {
+                       valHooks.textarea = hooks;
+                       propHooks.value = hooks;
+               }
+
+               $(function() {
+                       // Look for forms
+                       $(document).delegate('form', 'submit.placeholder', function() {
+                               // Clear the placeholder values so they don't get submitted
+                               var $inputs = $('.placeholder', this).each(clearPlaceholder);
+                               setTimeout(function() {
+                                       $inputs.each(setPlaceholder);
+                               }, 10);
+                       });
+               });
+
+               // Clear placeholder values upon page reload
+               $(window).bind('beforeunload.placeholder', function() {
+                       $('.placeholder').each(function() {
+                               this.value = '';
+                       });
+               });
+
+       }
+
+       function args(elem) {
+               // Return an object of element attributes
+               var newAttrs = {};
+               var rinlinejQuery = /^jQuery\d+$/;
+               $.each(elem.attributes, function(i, attr) {
+                       if (attr.specified && !rinlinejQuery.test(attr.name)) {
+                               newAttrs[attr.name] = attr.value;
+                       }
+               });
+               return newAttrs;
+       }
+
+       function clearPlaceholder(event, value) {
+               var input = this;
+               var $input = $(input);
+               if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
+                       if ($input.data('placeholder-password')) {
+                               $input = $input.hide().nextAll('input[type="password"]:first').show().attr('id', $input.removeAttr('id').data('placeholder-id'));
+                               // If `clearPlaceholder` was called from `$.valHooks.input.set`
+                               if (event === true) {
+                                       return $input[0].value = value;
+                               }
+                               $input.focus();
+                       } else {
+                               input.value = '';
+                               $input.removeClass('placeholder');
+                               input == safeActiveElement() && input.select();
+                       }
+               }
+       }
+
+       function setPlaceholder() {
+               var $replacement;
+               var input = this;
+               var $input = $(input);
+               var id = this.id;
+               if (input.value === '') {
+                       if (input.type === 'password') {
+                               if (!$input.data('placeholder-textinput')) {
+                                       try {
+                                               $replacement = $input.clone().attr({ 'type': 'text' });
+                                       } catch(e) {
+                                               $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
+                                       }
+                                       $replacement
+                                               .removeAttr('name')
+                                               .data({
+                                                       'placeholder-password': $input,
+                                                       'placeholder-id': id
+                                               })
+                                               .bind('focus.placeholder', clearPlaceholder);
+                                       $input
+                                               .data({
+                                                       'placeholder-textinput': $replacement,
+                                                       'placeholder-id': id
+                                               })
+                                               .before($replacement);
+                               }
+                               $input = $input.removeAttr('id').hide().prevAll('input[type="text"]:first').attr('id', id).show();
+                               // Note: `$input[0] != input` now!
+                       }
+                       $input.addClass('placeholder');
+                       $input[0].value = $input.attr('placeholder');
+               } else {
+                       $input.removeClass('placeholder');
+               }
+       }
+
+       function safeActiveElement() {
+               // Avoid IE9 `document.activeElement` of death
+               // https://github.com/mathiasbynens/jquery-placeholder/pull/99
+               try {
+                       return document.activeElement;
+               } catch (exception) {}
+       }
+
+}));
diff --git a/js/jquery.cookie/jquery.cookie.js b/js/jquery.cookie/jquery.cookie.js
new file mode 100644 (file)
index 0000000..c7f3a59
--- /dev/null
@@ -0,0 +1,117 @@
+/*!
+ * jQuery Cookie Plugin v1.4.1
+ * https://github.com/carhartl/jquery-cookie
+ *
+ * Copyright 2013 Klaus Hartl
+ * Released under the MIT license
+ */
+(function (factory) {
+       if (typeof define === 'function' && define.amd) {
+               // AMD
+               define(['jquery'], factory);
+       } else if (typeof exports === 'object') {
+               // CommonJS
+               factory(require('jquery'));
+       } else {
+               // Browser globals
+               factory(jQuery);
+       }
+}(function ($) {
+
+       var pluses = /\+/g;
+
+       function encode(s) {
+               return config.raw ? s : encodeURIComponent(s);
+       }
+
+       function decode(s) {
+               return config.raw ? s : decodeURIComponent(s);
+       }
+
+       function stringifyCookieValue(value) {
+               return encode(config.json ? JSON.stringify(value) : String(value));
+       }
+
+       function parseCookieValue(s) {
+               if (s.indexOf('"') === 0) {
+                       // This is a quoted cookie as according to RFC2068, unescape...
+                       s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
+               }
+
+               try {
+                       // Replace server-side written pluses with spaces.
+                       // If we can't decode the cookie, ignore it, it's unusable.
+                       // If we can't parse the cookie, ignore it, it's unusable.
+                       s = decodeURIComponent(s.replace(pluses, ' '));
+                       return config.json ? JSON.parse(s) : s;
+               } catch(e) {}
+       }
+
+       function read(s, converter) {
+               var value = config.raw ? s : parseCookieValue(s);
+               return $.isFunction(converter) ? converter(value) : value;
+       }
+
+       var config = $.cookie = function (key, value, options) {
+
+               // Write
+
+               if (value !== undefined && !$.isFunction(value)) {
+                       options = $.extend({}, config.defaults, options);
+
+                       if (typeof options.expires === 'number') {
+                               var days = options.expires, t = options.expires = new Date();
+                               t.setTime(+t + days * 864e+5);
+                       }
+
+                       return (document.cookie = [
+                               encode(key), '=', stringifyCookieValue(value),
+                               options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
+                               options.path    ? '; path=' + options.path : '',
+                               options.domain  ? '; domain=' + options.domain : '',
+                               options.secure  ? '; secure' : ''
+                       ].join(''));
+               }
+
+               // Read
+
+               var result = key ? undefined : {};
+
+               // To prevent the for loop in the first place assign an empty array
+               // in case there are no cookies at all. Also prevents odd result when
+               // calling $.cookie().
+               var cookies = document.cookie ? document.cookie.split('; ') : [];
+
+               for (var i = 0, l = cookies.length; i < l; i++) {
+                       var parts = cookies[i].split('=');
+                       var name = decode(parts.shift());
+                       var cookie = parts.join('=');
+
+                       if (key && key === name) {
+                               // If second argument (value) is a function it's a converter...
+                               result = read(cookie, value);
+                               break;
+                       }
+
+                       // Prevent storing a cookie that we couldn't decode.
+                       if (!key && (cookie = read(cookie)) !== undefined) {
+                               result[name] = cookie;
+                       }
+               }
+
+               return result;
+       };
+
+       config.defaults = {};
+
+       $.removeCookie = function (key, options) {
+               if ($.cookie(key) === undefined) {
+                       return false;
+               }
+
+               // Must not alter options, thus extending a fresh object...
+               $.cookie(key, '', $.extend({}, options, { expires: -1 }));
+               return !$.cookie(key);
+       };
+
+}));
diff --git a/js/jquery/dist/core.js b/js/jquery/dist/core.js
new file mode 100644 (file)
index 0000000..4c8a4ab
--- /dev/null
@@ -0,0 +1,482 @@
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+define( [
+       "./var/arr",
+       "./var/document",
+       "./var/getProto",
+       "./var/slice",
+       "./var/concat",
+       "./var/push",
+       "./var/indexOf",
+       "./var/class2type",
+       "./var/toString",
+       "./var/hasOwn",
+       "./var/fnToString",
+       "./var/ObjectFunctionString",
+       "./var/support",
+       "./core/DOMEval"
+], function( arr, document, getProto, slice, concat, push, indexOf,
+       class2type, toString, hasOwn, fnToString, ObjectFunctionString,
+       support, DOMEval ) {
+
+"use strict";
+
+var
+       version = "3.1.1",
+
+       // Define a local copy of jQuery
+       jQuery = function( selector, context ) {
+
+               // The jQuery object is actually just the init constructor 'enhanced'
+               // Need init if jQuery is called (just allow error to be thrown if not included)
+               return new jQuery.fn.init( selector, context );
+       },
+
+       // Support: Android <=4.0 only
+       // Make sure we trim BOM and NBSP
+       rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+       // Matches dashed string for camelizing
+       rmsPrefix = /^-ms-/,
+       rdashAlpha = /-([a-z])/g,
+
+       // Used by jQuery.camelCase as callback to replace()
+       fcamelCase = function( all, letter ) {
+               return letter.toUpperCase();
+       };
+
+jQuery.fn = jQuery.prototype = {
+
+       // The current version of jQuery being used
+       jquery: version,
+
+       constructor: jQuery,
+
+       // The default length of a jQuery object is 0
+       length: 0,
+
+       toArray: function() {
+               return slice.call( this );
+       },
+
+       // Get the Nth element in the matched element set OR
+       // Get the whole matched element set as a clean array
+       get: function( num ) {
+
+               // Return all the elements in a clean array
+               if ( num == null ) {
+                       return slice.call( this );
+               }
+
+               // Return just the one element from the set
+               return num < 0 ? this[ num + this.length ] : this[ num ];
+       },
+
+       // Take an array of elements and push it onto the stack
+       // (returning the new matched element set)
+       pushStack: function( elems ) {
+
+               // Build a new jQuery matched element set
+               var ret = jQuery.merge( this.constructor(), elems );
+
+               // Add the old object onto the stack (as a reference)
+               ret.prevObject = this;
+
+               // Return the newly-formed element set
+               return ret;
+       },
+
+       // Execute a callback for every element in the matched set.
+       each: function( callback ) {
+               return jQuery.each( this, callback );
+       },
+
+       map: function( callback ) {
+               return this.pushStack( jQuery.map( this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               } ) );
+       },
+
+       slice: function() {
+               return this.pushStack( slice.apply( this, arguments ) );
+       },
+
+       first: function() {
+               return this.eq( 0 );
+       },
+
+       last: function() {
+               return this.eq( -1 );
+       },
+
+       eq: function( i ) {
+               var len = this.length,
+                       j = +i + ( i < 0 ? len : 0 );
+               return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+       },
+
+       end: function() {
+               return this.prevObject || this.constructor();
+       },
+
+       // For internal use only.
+       // Behaves like an Array's method, not like a jQuery method.
+       push: push,
+       sort: arr.sort,
+       splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+       var options, name, src, copy, copyIsArray, clone,
+               target = arguments[ 0 ] || {},
+               i = 1,
+               length = arguments.length,
+               deep = false;
+
+       // Handle a deep copy situation
+       if ( typeof target === "boolean" ) {
+               deep = target;
+
+               // Skip the boolean and the target
+               target = arguments[ i ] || {};
+               i++;
+       }
+
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+               target = {};
+       }
+
+       // Extend jQuery itself if only one argument is passed
+       if ( i === length ) {
+               target = this;
+               i--;
+       }
+
+       for ( ; i < length; i++ ) {
+
+               // Only deal with non-null/undefined values
+               if ( ( options = arguments[ i ] ) != null ) {
+
+                       // Extend the base object
+                       for ( name in options ) {
+                               src = target[ name ];
+                               copy = options[ name ];
+
+                               // Prevent never-ending loop
+                               if ( target === copy ) {
+                                       continue;
+                               }
+
+                               // Recurse if we're merging plain objects or arrays
+                               if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+                                       ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
+
+                                       if ( copyIsArray ) {
+                                               copyIsArray = false;
+                                               clone = src && jQuery.isArray( src ) ? src : [];
+
+                                       } else {
+                                               clone = src && jQuery.isPlainObject( src ) ? src : {};
+                                       }
+
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
+
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
+                               }
+                       }
+               }
+       }
+
+       // Return the modified object
+       return target;
+};
+
+jQuery.extend( {
+
+       // Unique for each copy of jQuery on the page
+       expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+       // Assume jQuery is ready without the ready module
+       isReady: true,
+
+       error: function( msg ) {
+               throw new Error( msg );
+       },
+
+       noop: function() {},
+
+       isFunction: function( obj ) {
+               return jQuery.type( obj ) === "function";
+       },
+
+       isArray: Array.isArray,
+
+       isWindow: function( obj ) {
+               return obj != null && obj === obj.window;
+       },
+
+       isNumeric: function( obj ) {
+
+               // As of jQuery 3.0, isNumeric is limited to
+               // strings and numbers (primitives or objects)
+               // that can be coerced to finite numbers (gh-2662)
+               var type = jQuery.type( obj );
+               return ( type === "number" || type === "string" ) &&
+
+                       // parseFloat NaNs numeric-cast false positives ("")
+                       // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+                       // subtraction forces infinities to NaN
+                       !isNaN( obj - parseFloat( obj ) );
+       },
+
+       isPlainObject: function( obj ) {
+               var proto, Ctor;
+
+               // Detect obvious negatives
+               // Use toString instead of jQuery.type to catch host objects
+               if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+                       return false;
+               }
+
+               proto = getProto( obj );
+
+               // Objects with no prototype (e.g., `Object.create( null )`) are plain
+               if ( !proto ) {
+                       return true;
+               }
+
+               // Objects with prototype are plain iff they were constructed by a global Object function
+               Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+               return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+       },
+
+       isEmptyObject: function( obj ) {
+
+               /* eslint-disable no-unused-vars */
+               // See https://github.com/eslint/eslint/issues/6125
+               var name;
+
+               for ( name in obj ) {
+                       return false;
+               }
+               return true;
+       },
+
+       type: function( obj ) {
+               if ( obj == null ) {
+                       return obj + "";
+               }
+
+               // Support: Android <=2.3 only (functionish RegExp)
+               return typeof obj === "object" || typeof obj === "function" ?
+                       class2type[ toString.call( obj ) ] || "object" :
+                       typeof obj;
+       },
+
+       // Evaluates a script in a global context
+       globalEval: function( code ) {
+               DOMEval( code );
+       },
+
+       // Convert dashed to camelCase; used by the css and data modules
+       // Support: IE <=9 - 11, Edge 12 - 13
+       // Microsoft forgot to hump their vendor prefix (#9572)
+       camelCase: function( string ) {
+               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+       },
+
+       nodeName: function( elem, name ) {
+               return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+       },
+
+       each: function( obj, callback ) {
+               var length, i = 0;
+
+               if ( isArrayLike( obj ) ) {
+                       length = obj.length;
+                       for ( ; i < length; i++ ) {
+                               if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+                                       break;
+                               }
+                       }
+               } else {
+                       for ( i in obj ) {
+                               if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+                                       break;
+                               }
+                       }
+               }
+
+               return obj;
+       },
+
+       // Support: Android <=4.0 only
+       trim: function( text ) {
+               return text == null ?
+                       "" :
+                       ( text + "" ).replace( rtrim, "" );
+       },
+
+       // results is for internal usage only
+       makeArray: function( arr, results ) {
+               var ret = results || [];
+
+               if ( arr != null ) {
+                       if ( isArrayLike( Object( arr ) ) ) {
+                               jQuery.merge( ret,
+                                       typeof arr === "string" ?
+                                       [ arr ] : arr
+                               );
+                       } else {
+                               push.call( ret, arr );
+                       }
+               }
+
+               return ret;
+       },
+
+       inArray: function( elem, arr, i ) {
+               return arr == null ? -1 : indexOf.call( arr, elem, i );
+       },
+
+       // Support: Android <=4.0 only, PhantomJS 1 only
+       // push.apply(_, arraylike) throws on ancient WebKit
+       merge: function( first, second ) {
+               var len = +second.length,
+                       j = 0,
+                       i = first.length;
+
+               for ( ; j < len; j++ ) {
+                       first[ i++ ] = second[ j ];
+               }
+
+               first.length = i;
+
+               return first;
+       },
+
+       grep: function( elems, callback, invert ) {
+               var callbackInverse,
+                       matches = [],
+                       i = 0,
+                       length = elems.length,
+                       callbackExpect = !invert;
+
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( ; i < length; i++ ) {
+                       callbackInverse = !callback( elems[ i ], i );
+                       if ( callbackInverse !== callbackExpect ) {
+                               matches.push( elems[ i ] );
+                       }
+               }
+
+               return matches;
+       },
+
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var length, value,
+                       i = 0,
+                       ret = [];
+
+               // Go through the array, translating each of the items to their new values
+               if ( isArrayLike( elems ) ) {
+                       length = elems.length;
+                       for ( ; i < length; i++ ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+
+               // Go through every key on the object,
+               } else {
+                       for ( i in elems ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+               }
+
+               // Flatten any nested arrays
+               return concat.apply( [], ret );
+       },
+
+       // A global GUID counter for objects
+       guid: 1,
+
+       // Bind a function to a context, optionally partially applying any
+       // arguments.
+       proxy: function( fn, context ) {
+               var tmp, args, proxy;
+
+               if ( typeof context === "string" ) {
+                       tmp = fn[ context ];
+                       context = fn;
+                       fn = tmp;
+               }
+
+               // Quick check to determine if target is callable, in the spec
+               // this throws a TypeError, but we will just return undefined.
+               if ( !jQuery.isFunction( fn ) ) {
+                       return undefined;
+               }
+
+               // Simulated bind
+               args = slice.call( arguments, 2 );
+               proxy = function() {
+                       return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+               };
+
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+               return proxy;
+       },
+
+       now: Date.now,
+
+       // jQuery.support is not used in Core but other projects attach their
+       // properties to it so it needs to exist.
+       support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+       jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+       class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+       // Support: real iOS 8.2 only (not reproducible in simulator)
+       // `in` check used to prevent JIT error (gh-2145)
+       // hasOwn isn't used here due to false negatives
+       // regarding Nodelist length in IE
+       var length = !!obj && "length" in obj && obj.length,
+               type = jQuery.type( obj );
+
+       if ( type === "function" || jQuery.isWindow( obj ) ) {
+               return false;
+       }
+
+       return type === "array" || length === 0 ||
+               typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+
+return jQuery;
+} );
diff --git a/js/jquery/dist/jquery.js b/js/jquery/dist/jquery.js
new file mode 100644 (file)
index 0000000..072e308
--- /dev/null
@@ -0,0 +1,10220 @@
+/*!
+ * jQuery JavaScript Library v3.1.1
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2016-09-22T22:30Z
+ */
+( function( global, factory ) {
+
+       "use strict";
+
+       if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+               // For CommonJS and CommonJS-like environments where a proper `window`
+               // is present, execute the factory and get jQuery.
+               // For environments that do not have a `window` with a `document`
+               // (such as Node.js), expose a factory as module.exports.
+               // This accentuates the need for the creation of a real `window`.
+               // e.g. var jQuery = require("jquery")(window);
+               // See ticket #14549 for more info.
+               module.exports = global.document ?
+                       factory( global, true ) :
+                       function( w ) {
+                               if ( !w.document ) {
+                                       throw new Error( "jQuery requires a window with a document" );
+                               }
+                               return factory( w );
+                       };
+       } else {
+               factory( global );
+       }
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+
+
+       function DOMEval( code, doc ) {
+               doc = doc || document;
+
+               var script = doc.createElement( "script" );
+
+               script.text = code;
+               doc.head.appendChild( script ).parentNode.removeChild( script );
+       }
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+       version = "3.1.1",
+
+       // Define a local copy of jQuery
+       jQuery = function( selector, context ) {
+
+               // The jQuery object is actually just the init constructor 'enhanced'
+               // Need init if jQuery is called (just allow error to be thrown if not included)
+               return new jQuery.fn.init( selector, context );
+       },
+
+       // Support: Android <=4.0 only
+       // Make sure we trim BOM and NBSP
+       rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+       // Matches dashed string for camelizing
+       rmsPrefix = /^-ms-/,
+       rdashAlpha = /-([a-z])/g,
+
+       // Used by jQuery.camelCase as callback to replace()
+       fcamelCase = function( all, letter ) {
+               return letter.toUpperCase();
+       };
+
+jQuery.fn = jQuery.prototype = {
+
+       // The current version of jQuery being used
+       jquery: version,
+
+       constructor: jQuery,
+
+       // The default length of a jQuery object is 0
+       length: 0,
+
+       toArray: function() {
+               return slice.call( this );
+       },
+
+       // Get the Nth element in the matched element set OR
+       // Get the whole matched element set as a clean array
+       get: function( num ) {
+
+               // Return all the elements in a clean array
+               if ( num == null ) {
+                       return slice.call( this );
+               }
+
+               // Return just the one element from the set
+               return num < 0 ? this[ num + this.length ] : this[ num ];
+       },
+
+       // Take an array of elements and push it onto the stack
+       // (returning the new matched element set)
+       pushStack: function( elems ) {
+
+               // Build a new jQuery matched element set
+               var ret = jQuery.merge( this.constructor(), elems );
+
+               // Add the old object onto the stack (as a reference)
+               ret.prevObject = this;
+
+               // Return the newly-formed element set
+               return ret;
+       },
+
+       // Execute a callback for every element in the matched set.
+       each: function( callback ) {
+               return jQuery.each( this, callback );
+       },
+
+       map: function( callback ) {
+               return this.pushStack( jQuery.map( this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               } ) );
+       },
+
+       slice: function() {
+               return this.pushStack( slice.apply( this, arguments ) );
+       },
+
+       first: function() {
+               return this.eq( 0 );
+       },
+
+       last: function() {
+               return this.eq( -1 );
+       },
+
+       eq: function( i ) {
+               var len = this.length,
+                       j = +i + ( i < 0 ? len : 0 );
+               return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+       },
+
+       end: function() {
+               return this.prevObject || this.constructor();
+       },
+
+       // For internal use only.
+       // Behaves like an Array's method, not like a jQuery method.
+       push: push,
+       sort: arr.sort,
+       splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+       var options, name, src, copy, copyIsArray, clone,
+               target = arguments[ 0 ] || {},
+               i = 1,
+               length = arguments.length,
+               deep = false;
+
+       // Handle a deep copy situation
+       if ( typeof target === "boolean" ) {
+               deep = target;
+
+               // Skip the boolean and the target
+               target = arguments[ i ] || {};
+               i++;
+       }
+
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+               target = {};
+       }
+
+       // Extend jQuery itself if only one argument is passed
+       if ( i === length ) {
+               target = this;
+               i--;
+       }
+
+       for ( ; i < length; i++ ) {
+
+               // Only deal with non-null/undefined values
+               if ( ( options = arguments[ i ] ) != null ) {
+
+                       // Extend the base object
+                       for ( name in options ) {
+                               src = target[ name ];
+                               copy = options[ name ];
+
+                               // Prevent never-ending loop
+                               if ( target === copy ) {
+                                       continue;
+                               }
+
+                               // Recurse if we're merging plain objects or arrays
+                               if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+                                       ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
+
+                                       if ( copyIsArray ) {
+                                               copyIsArray = false;
+                                               clone = src && jQuery.isArray( src ) ? src : [];
+
+                                       } else {
+                                               clone = src && jQuery.isPlainObject( src ) ? src : {};
+                                       }
+
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
+
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
+                               }
+                       }
+               }
+       }
+
+       // Return the modified object
+       return target;
+};
+
+jQuery.extend( {
+
+       // Unique for each copy of jQuery on the page
+       expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+       // Assume jQuery is ready without the ready module
+       isReady: true,
+
+       error: function( msg ) {
+               throw new Error( msg );
+       },
+
+       noop: function() {},
+
+       isFunction: function( obj ) {
+               return jQuery.type( obj ) === "function";
+       },
+
+       isArray: Array.isArray,
+
+       isWindow: function( obj ) {
+               return obj != null && obj === obj.window;
+       },
+
+       isNumeric: function( obj ) {
+
+               // As of jQuery 3.0, isNumeric is limited to
+               // strings and numbers (primitives or objects)
+               // that can be coerced to finite numbers (gh-2662)
+               var type = jQuery.type( obj );
+               return ( type === "number" || type === "string" ) &&
+
+                       // parseFloat NaNs numeric-cast false positives ("")
+                       // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+                       // subtraction forces infinities to NaN
+                       !isNaN( obj - parseFloat( obj ) );
+       },
+
+       isPlainObject: function( obj ) {
+               var proto, Ctor;
+
+               // Detect obvious negatives
+               // Use toString instead of jQuery.type to catch host objects
+               if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+                       return false;
+               }
+
+               proto = getProto( obj );
+
+               // Objects with no prototype (e.g., `Object.create( null )`) are plain
+               if ( !proto ) {
+                       return true;
+               }
+
+               // Objects with prototype are plain iff they were constructed by a global Object function
+               Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+               return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+       },
+
+       isEmptyObject: function( obj ) {
+
+               /* eslint-disable no-unused-vars */
+               // See https://github.com/eslint/eslint/issues/6125
+               var name;
+
+               for ( name in obj ) {
+                       return false;
+               }
+               return true;
+       },
+
+       type: function( obj ) {
+               if ( obj == null ) {
+                       return obj + "";
+               }
+
+               // Support: Android <=2.3 only (functionish RegExp)
+               return typeof obj === "object" || typeof obj === "function" ?
+                       class2type[ toString.call( obj ) ] || "object" :
+                       typeof obj;
+       },
+
+       // Evaluates a script in a global context
+       globalEval: function( code ) {
+               DOMEval( code );
+       },
+
+       // Convert dashed to camelCase; used by the css and data modules
+       // Support: IE <=9 - 11, Edge 12 - 13
+       // Microsoft forgot to hump their vendor prefix (#9572)
+       camelCase: function( string ) {
+               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+       },
+
+       nodeName: function( elem, name ) {
+               return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+       },
+
+       each: function( obj, callback ) {
+               var length, i = 0;
+
+               if ( isArrayLike( obj ) ) {
+                       length = obj.length;
+                       for ( ; i < length; i++ ) {
+                               if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+                                       break;
+                               }
+                       }
+               } else {
+                       for ( i in obj ) {
+                               if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+                                       break;
+                               }
+                       }
+               }
+
+               return obj;
+       },
+
+       // Support: Android <=4.0 only
+       trim: function( text ) {
+               return text == null ?
+                       "" :
+                       ( text + "" ).replace( rtrim, "" );
+       },
+
+       // results is for internal usage only
+       makeArray: function( arr, results ) {
+               var ret = results || [];
+
+               if ( arr != null ) {
+                       if ( isArrayLike( Object( arr ) ) ) {
+                               jQuery.merge( ret,
+                                       typeof arr === "string" ?
+                                       [ arr ] : arr
+                               );
+                       } else {
+                               push.call( ret, arr );
+                       }
+               }
+
+               return ret;
+       },
+
+       inArray: function( elem, arr, i ) {
+               return arr == null ? -1 : indexOf.call( arr, elem, i );
+       },
+
+       // Support: Android <=4.0 only, PhantomJS 1 only
+       // push.apply(_, arraylike) throws on ancient WebKit
+       merge: function( first, second ) {
+               var len = +second.length,
+                       j = 0,
+                       i = first.length;
+
+               for ( ; j < len; j++ ) {
+                       first[ i++ ] = second[ j ];
+               }
+
+               first.length = i;
+
+               return first;
+       },
+
+       grep: function( elems, callback, invert ) {
+               var callbackInverse,
+                       matches = [],
+                       i = 0,
+                       length = elems.length,
+                       callbackExpect = !invert;
+
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( ; i < length; i++ ) {
+                       callbackInverse = !callback( elems[ i ], i );
+                       if ( callbackInverse !== callbackExpect ) {
+                               matches.push( elems[ i ] );
+                       }
+               }
+
+               return matches;
+       },
+
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var length, value,
+                       i = 0,
+                       ret = [];
+
+               // Go through the array, translating each of the items to their new values
+               if ( isArrayLike( elems ) ) {
+                       length = elems.length;
+                       for ( ; i < length; i++ ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+
+               // Go through every key on the object,
+               } else {
+                       for ( i in elems ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+               }
+
+               // Flatten any nested arrays
+               return concat.apply( [], ret );
+       },
+
+       // A global GUID counter for objects
+       guid: 1,
+
+       // Bind a function to a context, optionally partially applying any
+       // arguments.
+       proxy: function( fn, context ) {
+               var tmp, args, proxy;
+
+               if ( typeof context === "string" ) {
+                       tmp = fn[ context ];
+                       context = fn;
+                       fn = tmp;
+               }
+
+               // Quick check to determine if target is callable, in the spec
+               // this throws a TypeError, but we will just return undefined.
+               if ( !jQuery.isFunction( fn ) ) {
+                       return undefined;
+               }
+
+               // Simulated bind
+               args = slice.call( arguments, 2 );
+               proxy = function() {
+                       return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+               };
+
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+               return proxy;
+       },
+
+       now: Date.now,
+
+       // jQuery.support is not used in Core but other projects attach their
+       // properties to it so it needs to exist.
+       support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+       jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+       class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+       // Support: real iOS 8.2 only (not reproducible in simulator)
+       // `in` check used to prevent JIT error (gh-2145)
+       // hasOwn isn't used here due to false negatives
+       // regarding Nodelist length in IE
+       var length = !!obj && "length" in obj && obj.length,
+               type = jQuery.type( obj );
+
+       if ( type === "function" || jQuery.isWindow( obj ) ) {
+               return false;
+       }
+
+       return type === "array" || length === 0 ||
+               typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+       support,
+       Expr,
+       getText,
+       isXML,
+       tokenize,
+       compile,
+       select,
+       outermostContext,
+       sortInput,
+       hasDuplicate,
+
+       // Local document vars
+       setDocument,
+       document,
+       docElem,
+       documentIsHTML,
+       rbuggyQSA,
+       rbuggyMatches,
+       matches,
+       contains,
+
+       // Instance-specific data
+       expando = "sizzle" + 1 * new Date(),
+       preferredDoc = window.document,
+       dirruns = 0,
+       done = 0,
+       classCache = createCache(),
+       tokenCache = createCache(),
+       compilerCache = createCache(),
+       sortOrder = function( a, b ) {
+               if ( a === b ) {
+                       hasDuplicate = true;
+               }
+               return 0;
+       },
+
+       // Instance methods
+       hasOwn = ({}).hasOwnProperty,
+       arr = [],
+       pop = arr.pop,
+       push_native = arr.push,
+       push = arr.push,
+       slice = arr.slice,
+       // Use a stripped-down indexOf as it's faster than native
+       // https://jsperf.com/thor-indexof-vs-for/5
+       indexOf = function( list, elem ) {
+               var i = 0,
+                       len = list.length;
+               for ( ; i < len; i++ ) {
+                       if ( list[i] === elem ) {
+                               return i;
+                       }
+               }
+               return -1;
+       },
+
+       booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+       // Regular expressions
+
+       // http://www.w3.org/TR/css3-selectors/#whitespace
+       whitespace = "[\\x20\\t\\r\\n\\f]",
+
+       // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+       identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+       // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+       attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+               // Operator (capture 2)
+               "*([*^$|!~]?=)" + whitespace +
+               // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+               "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+               "*\\]",
+
+       pseudos = ":(" + identifier + ")(?:\\((" +
+               // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+               // 1. quoted (capture 3; capture 4 or capture 5)
+               "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+               // 2. simple (capture 6)
+               "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+               // 3. anything else (capture 2)
+               ".*" +
+               ")\\)|)",
+
+       // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+       rwhitespace = new RegExp( whitespace + "+", "g" ),
+       rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+       rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+       rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+       rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+       rpseudo = new RegExp( pseudos ),
+       ridentifier = new RegExp( "^" + identifier + "$" ),
+
+       matchExpr = {
+               "ID": new RegExp( "^#(" + identifier + ")" ),
+               "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+               "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+               "ATTR": new RegExp( "^" + attributes ),
+               "PSEUDO": new RegExp( "^" + pseudos ),
+               "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+                       "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+                       "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+               "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+               // For use in libraries implementing .is()
+               // We use this for POS matching in `select`
+               "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+                       whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+       },
+
+       rinputs = /^(?:input|select|textarea|button)$/i,
+       rheader = /^h\d$/i,
+
+       rnative = /^[^{]+\{\s*\[native \w/,
+
+       // Easily-parseable/retrievable ID or TAG or CLASS selectors
+       rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+       rsibling = /[+~]/,
+
+       // CSS escapes
+       // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+       runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+       funescape = function( _, escaped, escapedWhitespace ) {
+               var high = "0x" + escaped - 0x10000;
+               // NaN means non-codepoint
+               // Support: Firefox<24
+               // Workaround erroneous numeric interpretation of +"0x"
+               return high !== high || escapedWhitespace ?
+                       escaped :
+                       high < 0 ?
+                               // BMP codepoint
+                               String.fromCharCode( high + 0x10000 ) :
+                               // Supplemental Plane codepoint (surrogate pair)
+                               String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+       },
+
+       // CSS string/identifier serialization
+       // https://drafts.csswg.org/cssom/#common-serializing-idioms
+       rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+       fcssescape = function( ch, asCodePoint ) {
+               if ( asCodePoint ) {
+
+                       // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+                       if ( ch === "\0" ) {
+                               return "\uFFFD";
+                       }
+
+                       // Control characters and (dependent upon position) numbers get escaped as code points
+                       return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+               }
+
+               // Other potentially-special ASCII characters get backslash-escaped
+               return "\\" + ch;
+       },
+
+       // Used for iframes
+       // See setDocument()
+       // Removing the function wrapper causes a "Permission Denied"
+       // error in IE
+       unloadHandler = function() {
+               setDocument();
+       },
+
+       disabledAncestor = addCombinator(
+               function( elem ) {
+                       return elem.disabled === true && ("form" in elem || "label" in elem);
+               },
+               { dir: "parentNode", next: "legend" }
+       );
+
+// Optimize for push.apply( _, NodeList )
+try {
+       push.apply(
+               (arr = slice.call( preferredDoc.childNodes )),
+               preferredDoc.childNodes
+       );
+       // Support: Android<4.0
+       // Detect silently failing push.apply
+       arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+       push = { apply: arr.length ?
+
+               // Leverage slice if possible
+               function( target, els ) {
+                       push_native.apply( target, slice.call(els) );
+               } :
+
+               // Support: IE<9
+               // Otherwise append directly
+               function( target, els ) {
+                       var j = target.length,
+                               i = 0;
+                       // Can't trust NodeList.length
+                       while ( (target[j++] = els[i++]) ) {}
+                       target.length = j - 1;
+               }
+       };
+}
+
+function Sizzle( selector, context, results, seed ) {
+       var m, i, elem, nid, match, groups, newSelector,
+               newContext = context && context.ownerDocument,
+
+               // nodeType defaults to 9, since context defaults to document
+               nodeType = context ? context.nodeType : 9;
+
+       results = results || [];
+
+       // Return early from calls with invalid selector or context
+       if ( typeof selector !== "string" || !selector ||
+               nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+               return results;
+       }
+
+       // Try to shortcut find operations (as opposed to filters) in HTML documents
+       if ( !seed ) {
+
+               if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+                       setDocument( context );
+               }
+               context = context || document;
+
+               if ( documentIsHTML ) {
+
+                       // If the selector is sufficiently simple, try using a "get*By*" DOM method
+                       // (excepting DocumentFragment context, where the methods don't exist)
+                       if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+                               // ID selector
+                               if ( (m = match[1]) ) {
+
+                                       // Document context
+                                       if ( nodeType === 9 ) {
+                                               if ( (elem = context.getElementById( m )) ) {
+
+                                                       // Support: IE, Opera, Webkit
+                                                       // TODO: identify versions
+                                                       // getElementById can match elements by name instead of ID
+                                                       if ( elem.id === m ) {
+                                                               results.push( elem );
+                                                               return results;
+                                                       }
+                                               } else {
+                                                       return results;
+                                               }
+
+                                       // Element context
+                                       } else {
+
+                                               // Support: IE, Opera, Webkit
+                                               // TODO: identify versions
+                                               // getElementById can match elements by name instead of ID
+                                               if ( newContext && (elem = newContext.getElementById( m )) &&
+                                                       contains( context, elem ) &&
+                                                       elem.id === m ) {
+
+                                                       results.push( elem );
+                                                       return results;
+                                               }
+                                       }
+
+                               // Type selector
+                               } else if ( match[2] ) {
+                                       push.apply( results, context.getElementsByTagName( selector ) );
+                                       return results;
+
+                               // Class selector
+                               } else if ( (m = match[3]) && support.getElementsByClassName &&
+                                       context.getElementsByClassName ) {
+
+                                       push.apply( results, context.getElementsByClassName( m ) );
+                                       return results;
+                               }
+                       }
+
+                       // Take advantage of querySelectorAll
+                       if ( support.qsa &&
+                               !compilerCache[ selector + " " ] &&
+                               (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+                               if ( nodeType !== 1 ) {
+                                       newContext = context;
+                                       newSelector = selector;
+
+                               // qSA looks outside Element context, which is not what we want
+                               // Thanks to Andrew Dupont for this workaround technique
+                               // Support: IE <=8
+                               // Exclude object elements
+                               } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+                                       // Capture the context ID, setting it first if necessary
+                                       if ( (nid = context.getAttribute( "id" )) ) {
+                                               nid = nid.replace( rcssescape, fcssescape );
+                                       } else {
+                                               context.setAttribute( "id", (nid = expando) );
+                                       }
+
+                                       // Prefix every selector in the list
+                                       groups = tokenize( selector );
+                                       i = groups.length;
+                                       while ( i-- ) {
+                                               groups[i] = "#" + nid + " " + toSelector( groups[i] );
+                                       }
+                                       newSelector = groups.join( "," );
+
+                                       // Expand context for sibling selectors
+                                       newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+                                               context;
+                               }
+
+                               if ( newSelector ) {
+                                       try {
+                                               push.apply( results,
+                                                       newContext.querySelectorAll( newSelector )
+                                               );
+                                               return results;
+                                       } catch ( qsaError ) {
+                                       } finally {
+                                               if ( nid === expando ) {
+                                                       context.removeAttribute( "id" );
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       // All others
+       return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ *     property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *     deleting the oldest entry
+ */
+function createCache() {
+       var keys = [];
+
+       function cache( key, value ) {
+               // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+               if ( keys.push( key + " " ) > Expr.cacheLength ) {
+                       // Only keep the most recent entries
+                       delete cache[ keys.shift() ];
+               }
+               return (cache[ key + " " ] = value);
+       }
+       return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+       fn[ expando ] = true;
+       return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+       var el = document.createElement("fieldset");
+
+       try {
+               return !!fn( el );
+       } catch (e) {
+               return false;
+       } finally {
+               // Remove from its parent by default
+               if ( el.parentNode ) {
+                       el.parentNode.removeChild( el );
+               }
+               // release memory in IE
+               el = null;
+       }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+       var arr = attrs.split("|"),
+               i = arr.length;
+
+       while ( i-- ) {
+               Expr.attrHandle[ arr[i] ] = handler;
+       }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+       var cur = b && a,
+               diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+                       a.sourceIndex - b.sourceIndex;
+
+       // Use IE sourceIndex if available on both nodes
+       if ( diff ) {
+               return diff;
+       }
+
+       // Check if b follows a
+       if ( cur ) {
+               while ( (cur = cur.nextSibling) ) {
+                       if ( cur === b ) {
+                               return -1;
+                       }
+               }
+       }
+
+       return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return name === "input" && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return (name === "input" || name === "button") && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+       // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+       return function( elem ) {
+
+               // Only certain elements can match :enabled or :disabled
+               // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+               // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+               if ( "form" in elem ) {
+
+                       // Check for inherited disabledness on relevant non-disabled elements:
+                       // * listed form-associated elements in a disabled fieldset
+                       //   https://html.spec.whatwg.org/multipage/forms.html#category-listed
+                       //   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+                       // * option elements in a disabled optgroup
+                       //   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+                       // All such elements have a "form" property.
+                       if ( elem.parentNode && elem.disabled === false ) {
+
+                               // Option elements defer to a parent optgroup if present
+                               if ( "label" in elem ) {
+                                       if ( "label" in elem.parentNode ) {
+                                               return elem.parentNode.disabled === disabled;
+                                       } else {
+                                               return elem.disabled === disabled;
+                                       }
+                               }
+
+                               // Support: IE 6 - 11
+                               // Use the isDisabled shortcut property to check for disabled fieldset ancestors
+                               return elem.isDisabled === disabled ||
+
+                                       // Where there is no isDisabled, check manually
+                                       /* jshint -W018 */
+                                       elem.isDisabled !== !disabled &&
+                                               disabledAncestor( elem ) === disabled;
+                       }
+
+                       return elem.disabled === disabled;
+
+               // Try to winnow out elements that can't be disabled before trusting the disabled property.
+               // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+               // even exist on them, let alone have a boolean value.
+               } else if ( "label" in elem ) {
+                       return elem.disabled === disabled;
+               }
+
+               // Remaining elements are neither :enabled nor :disabled
+               return false;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+       return markFunction(function( argument ) {
+               argument = +argument;
+               return markFunction(function( seed, matches ) {
+                       var j,
+                               matchIndexes = fn( [], seed.length, argument ),
+                               i = matchIndexes.length;
+
+                       // Match elements found at the specified indexes
+                       while ( i-- ) {
+                               if ( seed[ (j = matchIndexes[i]) ] ) {
+                                       seed[j] = !(matches[j] = seed[j]);
+                               }
+                       }
+               });
+       });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+       return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833)
+       var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+       var hasCompare, subWindow,
+               doc = node ? node.ownerDocument || node : preferredDoc;
+
+       // Return early if doc is invalid or already selected
+       if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+               return document;
+       }
+
+       // Update global variables
+       document = doc;
+       docElem = document.documentElement;
+       documentIsHTML = !isXML( document );
+
+       // Support: IE 9-11, Edge
+       // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+       if ( preferredDoc !== document &&
+               (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+               // Support: IE 11, Edge
+               if ( subWindow.addEventListener ) {
+                       subWindow.addEventListener( "unload", unloadHandler, false );
+
+               // Support: IE 9 - 10 only
+               } else if ( subWindow.attachEvent ) {
+                       subWindow.attachEvent( "onunload", unloadHandler );
+               }
+       }
+
+       /* Attributes
+       ---------------------------------------------------------------------- */
+
+       // Support: IE<8
+       // Verify that getAttribute really returns attributes and not properties
+       // (excepting IE8 booleans)
+       support.attributes = assert(function( el ) {
+               el.className = "i";
+               return !el.getAttribute("className");
+       });
+
+       /* getElement(s)By*
+       ---------------------------------------------------------------------- */
+
+       // Check if getElementsByTagName("*") returns only elements
+       support.getElementsByTagName = assert(function( el ) {
+               el.appendChild( document.createComment("") );
+               return !el.getElementsByTagName("*").length;
+       });
+
+       // Support: IE<9
+       support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+       // Support: IE<10
+       // Check if getElementById returns elements by name
+       // The broken getElementById methods don't pick up programmatically-set names,
+       // so use a roundabout getElementsByName test
+       support.getById = assert(function( el ) {
+               docElem.appendChild( el ).id = expando;
+               return !document.getElementsByName || !document.getElementsByName( expando ).length;
+       });
+
+       // ID filter and find
+       if ( support.getById ) {
+               Expr.filter["ID"] = function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               return elem.getAttribute("id") === attrId;
+                       };
+               };
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+                               var elem = context.getElementById( id );
+                               return elem ? [ elem ] : [];
+                       }
+               };
+       } else {
+               Expr.filter["ID"] =  function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               var node = typeof elem.getAttributeNode !== "undefined" &&
+                                       elem.getAttributeNode("id");
+                               return node && node.value === attrId;
+                       };
+               };
+
+               // Support: IE 6 - 7 only
+               // getElementById is not reliable as a find shortcut
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+                               var node, i, elems,
+                                       elem = context.getElementById( id );
+
+                               if ( elem ) {
+
+                                       // Verify the id attribute
+                                       node = elem.getAttributeNode("id");
+                                       if ( node && node.value === id ) {
+                                               return [ elem ];
+                                       }
+
+                                       // Fall back on getElementsByName
+                                       elems = context.getElementsByName( id );
+                                       i = 0;
+                                       while ( (elem = elems[i++]) ) {
+                                               node = elem.getAttributeNode("id");
+                                               if ( node && node.value === id ) {
+                                                       return [ elem ];
+                                               }
+                                       }
+                               }
+
+                               return [];
+                       }
+               };
+       }
+
+       // Tag
+       Expr.find["TAG"] = support.getElementsByTagName ?
+               function( tag, context ) {
+                       if ( typeof context.getElementsByTagName !== "undefined" ) {
+                               return context.getElementsByTagName( tag );
+
+                       // DocumentFragment nodes don't have gEBTN
+                       } else if ( support.qsa ) {
+                               return context.querySelectorAll( tag );
+                       }
+               } :
+
+               function( tag, context ) {
+                       var elem,
+                               tmp = [],
+                               i = 0,
+                               // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+                               results = context.getElementsByTagName( tag );
+
+                       // Filter out possible comments
+                       if ( tag === "*" ) {
+                               while ( (elem = results[i++]) ) {
+                                       if ( elem.nodeType === 1 ) {
+                                               tmp.push( elem );
+                                       }
+                               }
+
+                               return tmp;
+                       }
+                       return results;
+               };
+
+       // Class
+       Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+               if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+                       return context.getElementsByClassName( className );
+               }
+       };
+
+       /* QSA/matchesSelector
+       ---------------------------------------------------------------------- */
+
+       // QSA and matchesSelector support
+
+       // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+       rbuggyMatches = [];
+
+       // qSa(:focus) reports false when true (Chrome 21)
+       // We allow this because of a bug in IE8/9 that throws an error
+       // whenever `document.activeElement` is accessed on an iframe
+       // So, we allow :focus to pass through QSA all the time to avoid the IE error
+       // See https://bugs.jquery.com/ticket/13378
+       rbuggyQSA = [];
+
+       if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+               // Build QSA regex
+               // Regex strategy adopted from Diego Perini
+               assert(function( el ) {
+                       // Select is set to empty string on purpose
+                       // This is to test IE's treatment of not explicitly
+                       // setting a boolean content attribute,
+                       // since its presence should be enough
+                       // https://bugs.jquery.com/ticket/12359
+                       docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+                               "<select id='" + expando + "-\r\\' msallowcapture=''>" +
+                               "<option selected=''></option></select>";
+
+                       // Support: IE8, Opera 11-12.16
+                       // Nothing should be selected when empty strings follow ^= or $= or *=
+                       // The test attribute must be unknown in Opera but "safe" for WinRT
+                       // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+                       if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+                               rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+                       }
+
+                       // Support: IE8
+                       // Boolean attributes and "value" are not treated correctly
+                       if ( !el.querySelectorAll("[selected]").length ) {
+                               rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+                       }
+
+                       // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+                       if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+                               rbuggyQSA.push("~=");
+                       }
+
+                       // Webkit/Opera - :checked should return selected option elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       // IE8 throws error here and will not see later tests
+                       if ( !el.querySelectorAll(":checked").length ) {
+                               rbuggyQSA.push(":checked");
+                       }
+
+                       // Support: Safari 8+, iOS 8+
+                       // https://bugs.webkit.org/show_bug.cgi?id=136851
+                       // In-page `selector#id sibling-combinator selector` fails
+                       if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+                               rbuggyQSA.push(".#.+[+~]");
+                       }
+               });
+
+               assert(function( el ) {
+                       el.innerHTML = "<a href='' disabled='disabled'></a>" +
+                               "<select disabled='disabled'><option/></select>";
+
+                       // Support: Windows 8 Native Apps
+                       // The type and name attributes are restricted during .innerHTML assignment
+                       var input = document.createElement("input");
+                       input.setAttribute( "type", "hidden" );
+                       el.appendChild( input ).setAttribute( "name", "D" );
+
+                       // Support: IE8
+                       // Enforce case-sensitivity of name attribute
+                       if ( el.querySelectorAll("[name=d]").length ) {
+                               rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+                       }
+
+                       // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+                       // IE8 throws error here and will not see later tests
+                       if ( el.querySelectorAll(":enabled").length !== 2 ) {
+                               rbuggyQSA.push( ":enabled", ":disabled" );
+                       }
+
+                       // Support: IE9-11+
+                       // IE's :disabled selector does not pick up the children of disabled fieldsets
+                       docElem.appendChild( el ).disabled = true;
+                       if ( el.querySelectorAll(":disabled").length !== 2 ) {
+                               rbuggyQSA.push( ":enabled", ":disabled" );
+                       }
+
+                       // Opera 10-11 does not throw on post-comma invalid pseudos
+                       el.querySelectorAll("*,:x");
+                       rbuggyQSA.push(",.*:");
+               });
+       }
+
+       if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+               docElem.webkitMatchesSelector ||
+               docElem.mozMatchesSelector ||
+               docElem.oMatchesSelector ||
+               docElem.msMatchesSelector) )) ) {
+
+               assert(function( el ) {
+                       // Check to see if it's possible to do matchesSelector
+                       // on a disconnected node (IE 9)
+                       support.disconnectedMatch = matches.call( el, "*" );
+
+                       // This should fail with an exception
+                       // Gecko does not error, returns false instead
+                       matches.call( el, "[s!='']:x" );
+                       rbuggyMatches.push( "!=", pseudos );
+               });
+       }
+
+       rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+       rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+       /* Contains
+       ---------------------------------------------------------------------- */
+       hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+       // Element contains another
+       // Purposefully self-exclusive
+       // As in, an element does not contain itself
+       contains = hasCompare || rnative.test( docElem.contains ) ?
+               function( a, b ) {
+                       var adown = a.nodeType === 9 ? a.documentElement : a,
+                               bup = b && b.parentNode;
+                       return a === bup || !!( bup && bup.nodeType === 1 && (
+                               adown.contains ?
+                                       adown.contains( bup ) :
+                                       a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+                       ));
+               } :
+               function( a, b ) {
+                       if ( b ) {
+                               while ( (b = b.parentNode) ) {
+                                       if ( b === a ) {
+                                               return true;
+                                       }
+                               }
+                       }
+                       return false;
+               };
+
+       /* Sorting
+       ---------------------------------------------------------------------- */
+
+       // Document order sorting
+       sortOrder = hasCompare ?
+       function( a, b ) {
+
+               // Flag for duplicate removal
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               // Sort on method existence if only one input has compareDocumentPosition
+               var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+               if ( compare ) {
+                       return compare;
+               }
+
+               // Calculate position if both inputs belong to the same document
+               compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+                       a.compareDocumentPosition( b ) :
+
+                       // Otherwise we know they are disconnected
+                       1;
+
+               // Disconnected nodes
+               if ( compare & 1 ||
+                       (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+                       // Choose the first element that is related to our preferred document
+                       if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+                               return -1;
+                       }
+                       if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+                               return 1;
+                       }
+
+                       // Maintain original order
+                       return sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+               }
+
+               return compare & 4 ? -1 : 1;
+       } :
+       function( a, b ) {
+               // Exit early if the nodes are identical
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               var cur,
+                       i = 0,
+                       aup = a.parentNode,
+                       bup = b.parentNode,
+                       ap = [ a ],
+                       bp = [ b ];
+
+               // Parentless nodes are either documents or disconnected
+               if ( !aup || !bup ) {
+                       return a === document ? -1 :
+                               b === document ? 1 :
+                               aup ? -1 :
+                               bup ? 1 :
+                               sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+
+               // If the nodes are siblings, we can do a quick check
+               } else if ( aup === bup ) {
+                       return siblingCheck( a, b );
+               }
+
+               // Otherwise we need full lists of their ancestors for comparison
+               cur = a;
+               while ( (cur = cur.parentNode) ) {
+                       ap.unshift( cur );
+               }
+               cur = b;
+               while ( (cur = cur.parentNode) ) {
+                       bp.unshift( cur );
+               }
+
+               // Walk down the tree looking for a discrepancy
+               while ( ap[i] === bp[i] ) {
+                       i++;
+               }
+
+               return i ?
+                       // Do a sibling check if the nodes have a common ancestor
+                       siblingCheck( ap[i], bp[i] ) :
+
+                       // Otherwise nodes in our document sort first
+                       ap[i] === preferredDoc ? -1 :
+                       bp[i] === preferredDoc ? 1 :
+                       0;
+       };
+
+       return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+       return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       // Make sure that attribute selectors are quoted
+       expr = expr.replace( rattributeQuotes, "='$1']" );
+
+       if ( support.matchesSelector && documentIsHTML &&
+               !compilerCache[ expr + " " ] &&
+               ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+               ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+               try {
+                       var ret = matches.call( elem, expr );
+
+                       // IE 9's matchesSelector returns false on disconnected nodes
+                       if ( ret || support.disconnectedMatch ||
+                                       // As well, disconnected nodes are said to be in a document
+                                       // fragment in IE 9
+                                       elem.document && elem.document.nodeType !== 11 ) {
+                               return ret;
+                       }
+               } catch (e) {}
+       }
+
+       return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+       // Set document vars if needed
+       if ( ( context.ownerDocument || context ) !== document ) {
+               setDocument( context );
+       }
+       return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       var fn = Expr.attrHandle[ name.toLowerCase() ],
+               // Don't get fooled by Object.prototype properties (jQuery #13807)
+               val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+                       fn( elem, name, !documentIsHTML ) :
+                       undefined;
+
+       return val !== undefined ?
+               val :
+               support.attributes || !documentIsHTML ?
+                       elem.getAttribute( name ) :
+                       (val = elem.getAttributeNode(name)) && val.specified ?
+                               val.value :
+                               null;
+};
+
+Sizzle.escape = function( sel ) {
+       return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+       throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+       var elem,
+               duplicates = [],
+               j = 0,
+               i = 0;
+
+       // Unless we *know* we can detect duplicates, assume their presence
+       hasDuplicate = !support.detectDuplicates;
+       sortInput = !support.sortStable && results.slice( 0 );
+       results.sort( sortOrder );
+
+       if ( hasDuplicate ) {
+               while ( (elem = results[i++]) ) {
+                       if ( elem === results[ i ] ) {
+                               j = duplicates.push( i );
+                       }
+               }
+               while ( j-- ) {
+                       results.splice( duplicates[ j ], 1 );
+               }
+       }
+
+       // Clear input after sorting to release objects
+       // See https://github.com/jquery/sizzle/pull/225
+       sortInput = null;
+
+       return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+       var node,
+               ret = "",
+               i = 0,
+               nodeType = elem.nodeType;
+
+       if ( !nodeType ) {
+               // If no nodeType, this is expected to be an array
+               while ( (node = elem[i++]) ) {
+                       // Do not traverse comment nodes
+                       ret += getText( node );
+               }
+       } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+               // Use textContent for elements
+               // innerText usage removed for consistency of new lines (jQuery #11153)
+               if ( typeof elem.textContent === "string" ) {
+                       return elem.textContent;
+               } else {
+                       // Traverse its children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               ret += getText( elem );
+                       }
+               }
+       } else if ( nodeType === 3 || nodeType === 4 ) {
+               return elem.nodeValue;
+       }
+       // Do not include comment or processing instruction nodes
+
+       return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+       // Can be adjusted by the user
+       cacheLength: 50,
+
+       createPseudo: markFunction,
+
+       match: matchExpr,
+
+       attrHandle: {},
+
+       find: {},
+
+       relative: {
+               ">": { dir: "parentNode", first: true },
+               " ": { dir: "parentNode" },
+               "+": { dir: "previousSibling", first: true },
+               "~": { dir: "previousSibling" }
+       },
+
+       preFilter: {
+               "ATTR": function( match ) {
+                       match[1] = match[1].replace( runescape, funescape );
+
+                       // Move the given value to match[3] whether quoted or unquoted
+                       match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+                       if ( match[2] === "~=" ) {
+                               match[3] = " " + match[3] + " ";
+                       }
+
+                       return match.slice( 0, 4 );
+               },
+
+               "CHILD": function( match ) {
+                       /* matches from matchExpr["CHILD"]
+                               1 type (only|nth|...)
+                               2 what (child|of-type)
+                               3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+                               4 xn-component of xn+y argument ([+-]?\d*n|)
+                               5 sign of xn-component
+                               6 x of xn-component
+                               7 sign of y-component
+                               8 y of y-component
+                       */
+                       match[1] = match[1].toLowerCase();
+
+                       if ( match[1].slice( 0, 3 ) === "nth" ) {
+                               // nth-* requires argument
+                               if ( !match[3] ) {
+                                       Sizzle.error( match[0] );
+                               }
+
+                               // numeric x and y parameters for Expr.filter.CHILD
+                               // remember that false/true cast respectively to 0/1
+                               match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+                               match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+                       // other types prohibit arguments
+                       } else if ( match[3] ) {
+                               Sizzle.error( match[0] );
+                       }
+
+                       return match;
+               },
+
+               "PSEUDO": function( match ) {
+                       var excess,
+                               unquoted = !match[6] && match[2];
+
+                       if ( matchExpr["CHILD"].test( match[0] ) ) {
+                               return null;
+                       }
+
+                       // Accept quoted arguments as-is
+                       if ( match[3] ) {
+                               match[2] = match[4] || match[5] || "";
+
+                       // Strip excess characters from unquoted arguments
+                       } else if ( unquoted && rpseudo.test( unquoted ) &&
+                               // Get excess from tokenize (recursively)
+                               (excess = tokenize( unquoted, true )) &&
+                               // advance to the next closing parenthesis
+                               (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+                               // excess is a negative index
+                               match[0] = match[0].slice( 0, excess );
+                               match[2] = unquoted.slice( 0, excess );
+                       }
+
+                       // Return only captures needed by the pseudo filter method (type and argument)
+                       return match.slice( 0, 3 );
+               }
+       },
+
+       filter: {
+
+               "TAG": function( nodeNameSelector ) {
+                       var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+                       return nodeNameSelector === "*" ?
+                               function() { return true; } :
+                               function( elem ) {
+                                       return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+                               };
+               },
+
+               "CLASS": function( className ) {
+                       var pattern = classCache[ className + " " ];
+
+                       return pattern ||
+                               (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+                               classCache( className, function( elem ) {
+                                       return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+                               });
+               },
+
+               "ATTR": function( name, operator, check ) {
+                       return function( elem ) {
+                               var result = Sizzle.attr( elem, name );
+
+                               if ( result == null ) {
+                                       return operator === "!=";
+                               }
+                               if ( !operator ) {
+                                       return true;
+                               }
+
+                               result += "";
+
+                               return operator === "=" ? result === check :
+                                       operator === "!=" ? result !== check :
+                                       operator === "^=" ? check && result.indexOf( check ) === 0 :
+                                       operator === "*=" ? check && result.indexOf( check ) > -1 :
+                                       operator === "$=" ? check && result.slice( -check.length ) === check :
+                                       operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+                                       operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+                                       false;
+                       };
+               },
+
+               "CHILD": function( type, what, argument, first, last ) {
+                       var simple = type.slice( 0, 3 ) !== "nth",
+                               forward = type.slice( -4 ) !== "last",
+                               ofType = what === "of-type";
+
+                       return first === 1 && last === 0 ?
+
+                               // Shortcut for :nth-*(n)
+                               function( elem ) {
+                                       return !!elem.parentNode;
+                               } :
+
+                               function( elem, context, xml ) {
+                                       var cache, uniqueCache, outerCache, node, nodeIndex, start,
+                                               dir = simple !== forward ? "nextSibling" : "previousSibling",
+                                               parent = elem.parentNode,
+                                               name = ofType && elem.nodeName.toLowerCase(),
+                                               useCache = !xml && !ofType,
+                                               diff = false;
+
+                                       if ( parent ) {
+
+                                               // :(first|last|only)-(child|of-type)
+                                               if ( simple ) {
+                                                       while ( dir ) {
+                                                               node = elem;
+                                                               while ( (node = node[ dir ]) ) {
+                                                                       if ( ofType ?
+                                                                               node.nodeName.toLowerCase() === name :
+                                                                               node.nodeType === 1 ) {
+
+                                                                               return false;
+                                                                       }
+                                                               }
+                                                               // Reverse direction for :only-* (if we haven't yet done so)
+                                                               start = dir = type === "only" && !start && "nextSibling";
+                                                       }
+                                                       return true;
+                                               }
+
+                                               start = [ forward ? parent.firstChild : parent.lastChild ];
+
+                                               // non-xml :nth-child(...) stores cache data on `parent`
+                                               if ( forward && useCache ) {
+
+                                                       // Seek `elem` from a previously-cached index
+
+                                                       // ...in a gzip-friendly way
+                                                       node = parent;
+                                                       outerCache = node[ expando ] || (node[ expando ] = {});
+
+                                                       // Support: IE <9 only
+                                                       // Defend against cloned attroperties (jQuery gh-1709)
+                                                       uniqueCache = outerCache[ node.uniqueID ] ||
+                                                               (outerCache[ node.uniqueID ] = {});
+
+                                                       cache = uniqueCache[ type ] || [];
+                                                       nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+                                                       diff = nodeIndex && cache[ 2 ];
+                                                       node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+                                                               // Fallback to seeking `elem` from the start
+                                                               (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                               // When found, cache indexes on `parent` and break
+                                                               if ( node.nodeType === 1 && ++diff && node === elem ) {
+                                                                       uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+                                                                       break;
+                                                               }
+                                                       }
+
+                                               } else {
+                                                       // Use previously-cached element index if available
+                                                       if ( useCache ) {
+                                                               // ...in a gzip-friendly way
+                                                               node = elem;
+                                                               outerCache = node[ expando ] || (node[ expando ] = {});
+
+                                                               // Support: IE <9 only
+                                                               // Defend against cloned attroperties (jQuery gh-1709)
+                                                               uniqueCache = outerCache[ node.uniqueID ] ||
+                                                                       (outerCache[ node.uniqueID ] = {});
+
+                                                               cache = uniqueCache[ type ] || [];
+                                                               nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+                                                               diff = nodeIndex;
+                                                       }
+
+                                                       // xml :nth-child(...)
+                                                       // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+                                                       if ( diff === false ) {
+                                                               // Use the same loop as above to seek `elem` from the start
+                                                               while ( (node = ++nodeIndex && node && node[ dir ] ||
+                                                                       (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                                       if ( ( ofType ?
+                                                                               node.nodeName.toLowerCase() === name :
+                                                                               node.nodeType === 1 ) &&
+                                                                               ++diff ) {
+
+                                                                               // Cache the index of each encountered element
+                                                                               if ( useCache ) {
+                                                                                       outerCache = node[ expando ] || (node[ expando ] = {});
+
+                                                                                       // Support: IE <9 only
+                                                                                       // Defend against cloned attroperties (jQuery gh-1709)
+                                                                                       uniqueCache = outerCache[ node.uniqueID ] ||
+                                                                                               (outerCache[ node.uniqueID ] = {});
+
+                                                                                       uniqueCache[ type ] = [ dirruns, diff ];
+                                                                               }
+
+                                                                               if ( node === elem ) {
+                                                                                       break;
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+
+                                               // Incorporate the offset, then check against cycle size
+                                               diff -= last;
+                                               return diff === first || ( diff % first === 0 && diff / first >= 0 );
+                                       }
+                               };
+               },
+
+               "PSEUDO": function( pseudo, argument ) {
+                       // pseudo-class names are case-insensitive
+                       // http://www.w3.org/TR/selectors/#pseudo-classes
+                       // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+                       // Remember that setFilters inherits from pseudos
+                       var args,
+                               fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+                                       Sizzle.error( "unsupported pseudo: " + pseudo );
+
+                       // The user may use createPseudo to indicate that
+                       // arguments are needed to create the filter function
+                       // just as Sizzle does
+                       if ( fn[ expando ] ) {
+                               return fn( argument );
+                       }
+
+                       // But maintain support for old signatures
+                       if ( fn.length > 1 ) {
+                               args = [ pseudo, pseudo, "", argument ];
+                               return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+                                       markFunction(function( seed, matches ) {
+                                               var idx,
+                                                       matched = fn( seed, argument ),
+                                                       i = matched.length;
+                                               while ( i-- ) {
+                                                       idx = indexOf( seed, matched[i] );
+                                                       seed[ idx ] = !( matches[ idx ] = matched[i] );
+                                               }
+                                       }) :
+                                       function( elem ) {
+                                               return fn( elem, 0, args );
+                                       };
+                       }
+
+                       return fn;
+               }
+       },
+
+       pseudos: {
+               // Potentially complex pseudos
+               "not": markFunction(function( selector ) {
+                       // Trim the selector passed to compile
+                       // to avoid treating leading and trailing
+                       // spaces as combinators
+                       var input = [],
+                               results = [],
+                               matcher = compile( selector.replace( rtrim, "$1" ) );
+
+                       return matcher[ expando ] ?
+                               markFunction(function( seed, matches, context, xml ) {
+                                       var elem,
+                                               unmatched = matcher( seed, null, xml, [] ),
+                                               i = seed.length;
+
+                                       // Match elements unmatched by `matcher`
+                                       while ( i-- ) {
+                                               if ( (elem = unmatched[i]) ) {
+                                                       seed[i] = !(matches[i] = elem);
+                                               }
+                                       }
+                               }) :
+                               function( elem, context, xml ) {
+                                       input[0] = elem;
+                                       matcher( input, null, xml, results );
+                                       // Don't keep the element (issue #299)
+                                       input[0] = null;
+                                       return !results.pop();
+                               };
+               }),
+
+               "has": markFunction(function( selector ) {
+                       return function( elem ) {
+                               return Sizzle( selector, elem ).length > 0;
+                       };
+               }),
+
+               "contains": markFunction(function( text ) {
+                       text = text.replace( runescape, funescape );
+                       return function( elem ) {
+                               return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+                       };
+               }),
+
+               // "Whether an element is represented by a :lang() selector
+               // is based solely on the element's language value
+               // being equal to the identifier C,
+               // or beginning with the identifier C immediately followed by "-".
+               // The matching of C against the element's language value is performed case-insensitively.
+               // The identifier C does not have to be a valid language name."
+               // http://www.w3.org/TR/selectors/#lang-pseudo
+               "lang": markFunction( function( lang ) {
+                       // lang value must be a valid identifier
+                       if ( !ridentifier.test(lang || "") ) {
+                               Sizzle.error( "unsupported lang: " + lang );
+                       }
+                       lang = lang.replace( runescape, funescape ).toLowerCase();
+                       return function( elem ) {
+                               var elemLang;
+                               do {
+                                       if ( (elemLang = documentIsHTML ?
+                                               elem.lang :
+                                               elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+                                               elemLang = elemLang.toLowerCase();
+                                               return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+                                       }
+                               } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+                               return false;
+                       };
+               }),
+
+               // Miscellaneous
+               "target": function( elem ) {
+                       var hash = window.location && window.location.hash;
+                       return hash && hash.slice( 1 ) === elem.id;
+               },
+
+               "root": function( elem ) {
+                       return elem === docElem;
+               },
+
+               "focus": function( elem ) {
+                       return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+               },
+
+               // Boolean properties
+               "enabled": createDisabledPseudo( false ),
+               "disabled": createDisabledPseudo( true ),
+
+               "checked": function( elem ) {
+                       // In CSS3, :checked should return both checked and selected elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       var nodeName = elem.nodeName.toLowerCase();
+                       return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+               },
+
+               "selected": function( elem ) {
+                       // Accessing this property makes selected-by-default
+                       // options in Safari work properly
+                       if ( elem.parentNode ) {
+                               elem.parentNode.selectedIndex;
+                       }
+
+                       return elem.selected === true;
+               },
+
+               // Contents
+               "empty": function( elem ) {
+                       // http://www.w3.org/TR/selectors/#empty-pseudo
+                       // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+                       //   but not by others (comment: 8; processing instruction: 7; etc.)
+                       // nodeType < 6 works because attributes (2) do not appear as children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               if ( elem.nodeType < 6 ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               },
+
+               "parent": function( elem ) {
+                       return !Expr.pseudos["empty"]( elem );
+               },
+
+               // Element/input types
+               "header": function( elem ) {
+                       return rheader.test( elem.nodeName );
+               },
+
+               "input": function( elem ) {
+                       return rinputs.test( elem.nodeName );
+               },
+
+               "button": function( elem ) {
+                       var name = elem.nodeName.toLowerCase();
+                       return name === "input" && elem.type === "button" || name === "button";
+               },
+
+               "text": function( elem ) {
+                       var attr;
+                       return elem.nodeName.toLowerCase() === "input" &&
+                               elem.type === "text" &&
+
+                               // Support: IE<8
+                               // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+                               ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+               },
+
+               // Position-in-collection
+               "first": createPositionalPseudo(function() {
+                       return [ 0 ];
+               }),
+
+               "last": createPositionalPseudo(function( matchIndexes, length ) {
+                       return [ length - 1 ];
+               }),
+
+               "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       return [ argument < 0 ? argument + length : argument ];
+               }),
+
+               "even": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 0;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "odd": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 1;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; --i >= 0; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; ++i < length; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               })
+       }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+       Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+       Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+       var matched, match, tokens, type,
+               soFar, groups, preFilters,
+               cached = tokenCache[ selector + " " ];
+
+       if ( cached ) {
+               return parseOnly ? 0 : cached.slice( 0 );
+       }
+
+       soFar = selector;
+       groups = [];
+       preFilters = Expr.preFilter;
+
+       while ( soFar ) {
+
+               // Comma and first run
+               if ( !matched || (match = rcomma.exec( soFar )) ) {
+                       if ( match ) {
+                               // Don't consume trailing commas as valid
+                               soFar = soFar.slice( match[0].length ) || soFar;
+                       }
+                       groups.push( (tokens = []) );
+               }
+
+               matched = false;
+
+               // Combinators
+               if ( (match = rcombinators.exec( soFar )) ) {
+                       matched = match.shift();
+                       tokens.push({
+                               value: matched,
+                               // Cast descendant combinators to space
+                               type: match[0].replace( rtrim, " " )
+                       });
+                       soFar = soFar.slice( matched.length );
+               }
+
+               // Filters
+               for ( type in Expr.filter ) {
+                       if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+                               (match = preFilters[ type ]( match ))) ) {
+                               matched = match.shift();
+                               tokens.push({
+                                       value: matched,
+                                       type: type,
+                                       matches: match
+                               });
+                               soFar = soFar.slice( matched.length );
+                       }
+               }
+
+               if ( !matched ) {
+                       break;
+               }
+       }
+
+       // Return the length of the invalid excess
+       // if we're just parsing
+       // Otherwise, throw an error or return tokens
+       return parseOnly ?
+               soFar.length :
+               soFar ?
+                       Sizzle.error( selector ) :
+                       // Cache the tokens
+                       tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+       var i = 0,
+               len = tokens.length,
+               selector = "";
+       for ( ; i < len; i++ ) {
+               selector += tokens[i].value;
+       }
+       return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+       var dir = combinator.dir,
+               skip = combinator.next,
+               key = skip || dir,
+               checkNonElements = base && key === "parentNode",
+               doneName = done++;
+
+       return combinator.first ?
+               // Check against closest ancestor/preceding element
+               function( elem, context, xml ) {
+                       while ( (elem = elem[ dir ]) ) {
+                               if ( elem.nodeType === 1 || checkNonElements ) {
+                                       return matcher( elem, context, xml );
+                               }
+                       }
+                       return false;
+               } :
+
+               // Check against all ancestor/preceding elements
+               function( elem, context, xml ) {
+                       var oldCache, uniqueCache, outerCache,
+                               newCache = [ dirruns, doneName ];
+
+                       // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+                       if ( xml ) {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               if ( matcher( elem, context, xml ) ) {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                       } else {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+                                               // Support: IE <9 only
+                                               // Defend against cloned attroperties (jQuery gh-1709)
+                                               uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+                                               if ( skip && skip === elem.nodeName.toLowerCase() ) {
+                                                       elem = elem[ dir ] || elem;
+                                               } else if ( (oldCache = uniqueCache[ key ]) &&
+                                                       oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+                                                       // Assign to newCache so results back-propagate to previous elements
+                                                       return (newCache[ 2 ] = oldCache[ 2 ]);
+                                               } else {
+                                                       // Reuse newcache so results back-propagate to previous elements
+                                                       uniqueCache[ key ] = newCache;
+
+                                                       // A match means we're done; a fail means we have to keep checking
+                                                       if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+                                                               return true;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       return false;
+               };
+}
+
+function elementMatcher( matchers ) {
+       return matchers.length > 1 ?
+               function( elem, context, xml ) {
+                       var i = matchers.length;
+                       while ( i-- ) {
+                               if ( !matchers[i]( elem, context, xml ) ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               } :
+               matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+       var i = 0,
+               len = contexts.length;
+       for ( ; i < len; i++ ) {
+               Sizzle( selector, contexts[i], results );
+       }
+       return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+       var elem,
+               newUnmatched = [],
+               i = 0,
+               len = unmatched.length,
+               mapped = map != null;
+
+       for ( ; i < len; i++ ) {
+               if ( (elem = unmatched[i]) ) {
+                       if ( !filter || filter( elem, context, xml ) ) {
+                               newUnmatched.push( elem );
+                               if ( mapped ) {
+                                       map.push( i );
+                               }
+                       }
+               }
+       }
+
+       return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+       if ( postFilter && !postFilter[ expando ] ) {
+               postFilter = setMatcher( postFilter );
+       }
+       if ( postFinder && !postFinder[ expando ] ) {
+               postFinder = setMatcher( postFinder, postSelector );
+       }
+       return markFunction(function( seed, results, context, xml ) {
+               var temp, i, elem,
+                       preMap = [],
+                       postMap = [],
+                       preexisting = results.length,
+
+                       // Get initial elements from seed or context
+                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+                       // Prefilter to get matcher input, preserving a map for seed-results synchronization
+                       matcherIn = preFilter && ( seed || !selector ) ?
+                               condense( elems, preMap, preFilter, context, xml ) :
+                               elems,
+
+                       matcherOut = matcher ?
+                               // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+                               postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+                                       // ...intermediate processing is necessary
+                                       [] :
+
+                                       // ...otherwise use results directly
+                                       results :
+                               matcherIn;
+
+               // Find primary matches
+               if ( matcher ) {
+                       matcher( matcherIn, matcherOut, context, xml );
+               }
+
+               // Apply postFilter
+               if ( postFilter ) {
+                       temp = condense( matcherOut, postMap );
+                       postFilter( temp, [], context, xml );
+
+                       // Un-match failing elements by moving them back to matcherIn
+                       i = temp.length;
+                       while ( i-- ) {
+                               if ( (elem = temp[i]) ) {
+                                       matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+                               }
+                       }
+               }
+
+               if ( seed ) {
+                       if ( postFinder || preFilter ) {
+                               if ( postFinder ) {
+                                       // Get the final matcherOut by condensing this intermediate into postFinder contexts
+                                       temp = [];
+                                       i = matcherOut.length;
+                                       while ( i-- ) {
+                                               if ( (elem = matcherOut[i]) ) {
+                                                       // Restore matcherIn since elem is not yet a final match
+                                                       temp.push( (matcherIn[i] = elem) );
+                                               }
+                                       }
+                                       postFinder( null, (matcherOut = []), temp, xml );
+                               }
+
+                               // Move matched elements from seed to results to keep them synchronized
+                               i = matcherOut.length;
+                               while ( i-- ) {
+                                       if ( (elem = matcherOut[i]) &&
+                                               (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+                                               seed[temp] = !(results[temp] = elem);
+                                       }
+                               }
+                       }
+
+               // Add elements to results, through postFinder if defined
+               } else {
+                       matcherOut = condense(
+                               matcherOut === results ?
+                                       matcherOut.splice( preexisting, matcherOut.length ) :
+                                       matcherOut
+                       );
+                       if ( postFinder ) {
+                               postFinder( null, results, matcherOut, xml );
+                       } else {
+                               push.apply( results, matcherOut );
+                       }
+               }
+       });
+}
+
+function matcherFromTokens( tokens ) {
+       var checkContext, matcher, j,
+               len = tokens.length,
+               leadingRelative = Expr.relative[ tokens[0].type ],
+               implicitRelative = leadingRelative || Expr.relative[" "],
+               i = leadingRelative ? 1 : 0,
+
+               // The foundational matcher ensures that elements are reachable from top-level context(s)
+               matchContext = addCombinator( function( elem ) {
+                       return elem === checkContext;
+               }, implicitRelative, true ),
+               matchAnyContext = addCombinator( function( elem ) {
+                       return indexOf( checkContext, elem ) > -1;
+               }, implicitRelative, true ),
+               matchers = [ function( elem, context, xml ) {
+                       var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+                               (checkContext = context).nodeType ?
+                                       matchContext( elem, context, xml ) :
+                                       matchAnyContext( elem, context, xml ) );
+                       // Avoid hanging onto element (issue #299)
+                       checkContext = null;
+                       return ret;
+               } ];
+
+       for ( ; i < len; i++ ) {
+               if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+                       matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+               } else {
+                       matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+                       // Return special upon seeing a positional matcher
+                       if ( matcher[ expando ] ) {
+                               // Find the next relative operator (if any) for proper handling
+                               j = ++i;
+                               for ( ; j < len; j++ ) {
+                                       if ( Expr.relative[ tokens[j].type ] ) {
+                                               break;
+                                       }
+                               }
+                               return setMatcher(
+                                       i > 1 && elementMatcher( matchers ),
+                                       i > 1 && toSelector(
+                                               // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+                                               tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+                                       ).replace( rtrim, "$1" ),
+                                       matcher,
+                                       i < j && matcherFromTokens( tokens.slice( i, j ) ),
+                                       j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+                                       j < len && toSelector( tokens )
+                               );
+                       }
+                       matchers.push( matcher );
+               }
+       }
+
+       return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+       var bySet = setMatchers.length > 0,
+               byElement = elementMatchers.length > 0,
+               superMatcher = function( seed, context, xml, results, outermost ) {
+                       var elem, j, matcher,
+                               matchedCount = 0,
+                               i = "0",
+                               unmatched = seed && [],
+                               setMatched = [],
+                               contextBackup = outermostContext,
+                               // We must always have either seed elements or outermost context
+                               elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+                               // Use integer dirruns iff this is the outermost matcher
+                               dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+                               len = elems.length;
+
+                       if ( outermost ) {
+                               outermostContext = context === document || context || outermost;
+                       }
+
+                       // Add elements passing elementMatchers directly to results
+                       // Support: IE<9, Safari
+                       // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+                       for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+                               if ( byElement && elem ) {
+                                       j = 0;
+                                       if ( !context && elem.ownerDocument !== document ) {
+                                               setDocument( elem );
+                                               xml = !documentIsHTML;
+                                       }
+                                       while ( (matcher = elementMatchers[j++]) ) {
+                                               if ( matcher( elem, context || document, xml) ) {
+                                                       results.push( elem );
+                                                       break;
+                                               }
+                                       }
+                                       if ( outermost ) {
+                                               dirruns = dirrunsUnique;
+                                       }
+                               }
+
+                               // Track unmatched elements for set filters
+                               if ( bySet ) {
+                                       // They will have gone through all possible matchers
+                                       if ( (elem = !matcher && elem) ) {
+                                               matchedCount--;
+                                       }
+
+                                       // Lengthen the array for every element, matched or not
+                                       if ( seed ) {
+                                               unmatched.push( elem );
+                                       }
+                               }
+                       }
+
+                       // `i` is now the count of elements visited above, and adding it to `matchedCount`
+                       // makes the latter nonnegative.
+                       matchedCount += i;
+
+                       // Apply set filters to unmatched elements
+                       // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+                       // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+                       // no element matchers and no seed.
+                       // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+                       // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+                       // numerically zero.
+                       if ( bySet && i !== matchedCount ) {
+                               j = 0;
+                               while ( (matcher = setMatchers[j++]) ) {
+                                       matcher( unmatched, setMatched, context, xml );
+                               }
+
+                               if ( seed ) {
+                                       // Reintegrate element matches to eliminate the need for sorting
+                                       if ( matchedCount > 0 ) {
+                                               while ( i-- ) {
+                                                       if ( !(unmatched[i] || setMatched[i]) ) {
+                                                               setMatched[i] = pop.call( results );
+                                                       }
+                                               }
+                                       }
+
+                                       // Discard index placeholder values to get only actual matches
+                                       setMatched = condense( setMatched );
+                               }
+
+                               // Add matches to results
+                               push.apply( results, setMatched );
+
+                               // Seedless set matches succeeding multiple successful matchers stipulate sorting
+                               if ( outermost && !seed && setMatched.length > 0 &&
+                                       ( matchedCount + setMatchers.length ) > 1 ) {
+
+                                       Sizzle.uniqueSort( results );
+                               }
+                       }
+
+                       // Override manipulation of globals by nested matchers
+                       if ( outermost ) {
+                               dirruns = dirrunsUnique;
+                               outermostContext = contextBackup;
+                       }
+
+                       return unmatched;
+               };
+
+       return bySet ?
+               markFunction( superMatcher ) :
+               superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+       var i,
+               setMatchers = [],
+               elementMatchers = [],
+               cached = compilerCache[ selector + " " ];
+
+       if ( !cached ) {
+               // Generate a function of recursive functions that can be used to check each element
+               if ( !match ) {
+                       match = tokenize( selector );
+               }
+               i = match.length;
+               while ( i-- ) {
+                       cached = matcherFromTokens( match[i] );
+                       if ( cached[ expando ] ) {
+                               setMatchers.push( cached );
+                       } else {
+                               elementMatchers.push( cached );
+                       }
+               }
+
+               // Cache the compiled function
+               cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+               // Save selector and tokenization
+               cached.selector = selector;
+       }
+       return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+       var i, tokens, token, type, find,
+               compiled = typeof selector === "function" && selector,
+               match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+       results = results || [];
+
+       // Try to minimize operations if there is only one selector in the list and no seed
+       // (the latter of which guarantees us context)
+       if ( match.length === 1 ) {
+
+               // Reduce context if the leading compound selector is an ID
+               tokens = match[0] = match[0].slice( 0 );
+               if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+                               context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+                       context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+                       if ( !context ) {
+                               return results;
+
+                       // Precompiled matchers will still verify ancestry, so step up a level
+                       } else if ( compiled ) {
+                               context = context.parentNode;
+                       }
+
+                       selector = selector.slice( tokens.shift().value.length );
+               }
+
+               // Fetch a seed set for right-to-left matching
+               i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+               while ( i-- ) {
+                       token = tokens[i];
+
+                       // Abort if we hit a combinator
+                       if ( Expr.relative[ (type = token.type) ] ) {
+                               break;
+                       }
+                       if ( (find = Expr.find[ type ]) ) {
+                               // Search, expanding context for leading sibling combinators
+                               if ( (seed = find(
+                                       token.matches[0].replace( runescape, funescape ),
+                                       rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+                               )) ) {
+
+                                       // If seed is empty or no tokens remain, we can return early
+                                       tokens.splice( i, 1 );
+                                       selector = seed.length && toSelector( tokens );
+                                       if ( !selector ) {
+                                               push.apply( results, seed );
+                                               return results;
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       // Compile and execute a filtering function if one is not provided
+       // Provide `match` to avoid retokenization if we modified the selector above
+       ( compiled || compile( selector, match ) )(
+               seed,
+               context,
+               !documentIsHTML,
+               results,
+               !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+       );
+       return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+       // Should return 1, but returns 4 (following)
+       return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+       el.innerHTML = "<a href='#'></a>";
+       return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+       addHandle( "type|href|height|width", function( elem, name, isXML ) {
+               if ( !isXML ) {
+                       return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+               }
+       });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+       el.innerHTML = "<input/>";
+       el.firstChild.setAttribute( "value", "" );
+       return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+       addHandle( "value", function( elem, name, isXML ) {
+               if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+                       return elem.defaultValue;
+               }
+       });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+       return el.getAttribute("disabled") == null;
+}) ) {
+       addHandle( booleans, function( elem, name, isXML ) {
+               var val;
+               if ( !isXML ) {
+                       return elem[ name ] === true ? name.toLowerCase() :
+                                       (val = elem.getAttributeNode( name )) && val.specified ?
+                                       val.value :
+                               null;
+               }
+       });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+       var matched = [],
+               truncate = until !== undefined;
+
+       while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+               if ( elem.nodeType === 1 ) {
+                       if ( truncate && jQuery( elem ).is( until ) ) {
+                               break;
+                       }
+                       matched.push( elem );
+               }
+       }
+       return matched;
+};
+
+
+var siblings = function( n, elem ) {
+       var matched = [];
+
+       for ( ; n; n = n.nextSibling ) {
+               if ( n.nodeType === 1 && n !== elem ) {
+                       matched.push( n );
+               }
+       }
+
+       return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+       if ( jQuery.isFunction( qualifier ) ) {
+               return jQuery.grep( elements, function( elem, i ) {
+                       return !!qualifier.call( elem, i, elem ) !== not;
+               } );
+       }
+
+       // Single element
+       if ( qualifier.nodeType ) {
+               return jQuery.grep( elements, function( elem ) {
+                       return ( elem === qualifier ) !== not;
+               } );
+       }
+
+       // Arraylike of elements (jQuery, arguments, Array)
+       if ( typeof qualifier !== "string" ) {
+               return jQuery.grep( elements, function( elem ) {
+                       return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+               } );
+       }
+
+       // Simple selector that can be filtered directly, removing non-Elements
+       if ( risSimple.test( qualifier ) ) {
+               return jQuery.filter( qualifier, elements, not );
+       }
+
+       // Complex selector, compare the two sets, removing non-Elements
+       qualifier = jQuery.filter( qualifier, elements );
+       return jQuery.grep( elements, function( elem ) {
+               return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+       } );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+       var elem = elems[ 0 ];
+
+       if ( not ) {
+               expr = ":not(" + expr + ")";
+       }
+
+       if ( elems.length === 1 && elem.nodeType === 1 ) {
+               return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+       }
+
+       return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+               return elem.nodeType === 1;
+       } ) );
+};
+
+jQuery.fn.extend( {
+       find: function( selector ) {
+               var i, ret,
+                       len = this.length,
+                       self = this;
+
+               if ( typeof selector !== "string" ) {
+                       return this.pushStack( jQuery( selector ).filter( function() {
+                               for ( i = 0; i < len; i++ ) {
+                                       if ( jQuery.contains( self[ i ], this ) ) {
+                                               return true;
+                                       }
+                               }
+                       } ) );
+               }
+
+               ret = this.pushStack( [] );
+
+               for ( i = 0; i < len; i++ ) {
+                       jQuery.find( selector, self[ i ], ret );
+               }
+
+               return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+       },
+       filter: function( selector ) {
+               return this.pushStack( winnow( this, selector || [], false ) );
+       },
+       not: function( selector ) {
+               return this.pushStack( winnow( this, selector || [], true ) );
+       },
+       is: function( selector ) {
+               return !!winnow(
+                       this,
+
+                       // If this is a positional/relative selector, check membership in the returned set
+                       // so $("p:first").is("p:last") won't return true for a doc with two "p".
+                       typeof selector === "string" && rneedsContext.test( selector ) ?
+                               jQuery( selector ) :
+                               selector || [],
+                       false
+               ).length;
+       }
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+       // A simple way to check for HTML strings
+       // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+       // Strict HTML recognition (#11290: must start with <)
+       // Shortcut simple #id case for speed
+       rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+       init = jQuery.fn.init = function( selector, context, root ) {
+               var match, elem;
+
+               // HANDLE: $(""), $(null), $(undefined), $(false)
+               if ( !selector ) {
+                       return this;
+               }
+
+               // Method init() accepts an alternate rootjQuery
+               // so migrate can support jQuery.sub (gh-2101)
+               root = root || rootjQuery;
+
+               // Handle HTML strings
+               if ( typeof selector === "string" ) {
+                       if ( selector[ 0 ] === "<" &&
+                               selector[ selector.length - 1 ] === ">" &&
+                               selector.length >= 3 ) {
+
+                               // Assume that strings that start and end with <> are HTML and skip the regex check
+                               match = [ null, selector, null ];
+
+                       } else {
+                               match = rquickExpr.exec( selector );
+                       }
+
+                       // Match html or make sure no context is specified for #id
+                       if ( match && ( match[ 1 ] || !context ) ) {
+
+                               // HANDLE: $(html) -> $(array)
+                               if ( match[ 1 ] ) {
+                                       context = context instanceof jQuery ? context[ 0 ] : context;
+
+                                       // Option to run scripts is true for back-compat
+                                       // Intentionally let the error be thrown if parseHTML is not present
+                                       jQuery.merge( this, jQuery.parseHTML(
+                                               match[ 1 ],
+                                               context && context.nodeType ? context.ownerDocument || context : document,
+                                               true
+                                       ) );
+
+                                       // HANDLE: $(html, props)
+                                       if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+                                               for ( match in context ) {
+
+                                                       // Properties of context are called as methods if possible
+                                                       if ( jQuery.isFunction( this[ match ] ) ) {
+                                                               this[ match ]( context[ match ] );
+
+                                                       // ...and otherwise set as attributes
+                                                       } else {
+                                                               this.attr( match, context[ match ] );
+                                                       }
+                                               }
+                                       }
+
+                                       return this;
+
+                               // HANDLE: $(#id)
+                               } else {
+                                       elem = document.getElementById( match[ 2 ] );
+
+                                       if ( elem ) {
+
+                                               // Inject the element directly into the jQuery object
+                                               this[ 0 ] = elem;
+                                               this.length = 1;
+                                       }
+                                       return this;
+                               }
+
+                       // HANDLE: $(expr, $(...))
+                       } else if ( !context || context.jquery ) {
+                               return ( context || root ).find( selector );
+
+                       // HANDLE: $(expr, context)
+                       // (which is just equivalent to: $(context).find(expr)
+                       } else {
+                               return this.constructor( context ).find( selector );
+                       }
+
+               // HANDLE: $(DOMElement)
+               } else if ( selector.nodeType ) {
+                       this[ 0 ] = selector;
+                       this.length = 1;
+                       return this;
+
+               // HANDLE: $(function)
+               // Shortcut for document ready
+               } else if ( jQuery.isFunction( selector ) ) {
+                       return root.ready !== undefined ?
+                               root.ready( selector ) :
+
+                               // Execute immediately if ready is not present
+                               selector( jQuery );
+               }
+
+               return jQuery.makeArray( selector, this );
+       };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+       // Methods guaranteed to produce a unique set when starting from a unique set
+       guaranteedUnique = {
+               children: true,
+               contents: true,
+               next: true,
+               prev: true
+       };
+
+jQuery.fn.extend( {
+       has: function( target ) {
+               var targets = jQuery( target, this ),
+                       l = targets.length;
+
+               return this.filter( function() {
+                       var i = 0;
+                       for ( ; i < l; i++ ) {
+                               if ( jQuery.contains( this, targets[ i ] ) ) {
+                                       return true;
+                               }
+                       }
+               } );
+       },
+
+       closest: function( selectors, context ) {
+               var cur,
+                       i = 0,
+                       l = this.length,
+                       matched = [],
+                       targets = typeof selectors !== "string" && jQuery( selectors );
+
+               // Positional selectors never match, since there's no _selection_ context
+               if ( !rneedsContext.test( selectors ) ) {
+                       for ( ; i < l; i++ ) {
+                               for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+                                       // Always skip document fragments
+                                       if ( cur.nodeType < 11 && ( targets ?
+                                               targets.index( cur ) > -1 :
+
+                                               // Don't pass non-elements to Sizzle
+                                               cur.nodeType === 1 &&
+                                                       jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+                                               matched.push( cur );
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+       },
+
+       // Determine the position of an element within the set
+       index: function( elem ) {
+
+               // No argument, return index in parent
+               if ( !elem ) {
+                       return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+               }
+
+               // Index in selector
+               if ( typeof elem === "string" ) {
+                       return indexOf.call( jQuery( elem ), this[ 0 ] );
+               }
+
+               // Locate the position of the desired element
+               return indexOf.call( this,
+
+                       // If it receives a jQuery object, the first element is used
+                       elem.jquery ? elem[ 0 ] : elem
+               );
+       },
+
+       add: function( selector, context ) {
+               return this.pushStack(
+                       jQuery.uniqueSort(
+                               jQuery.merge( this.get(), jQuery( selector, context ) )
+                       )
+               );
+       },
+
+       addBack: function( selector ) {
+               return this.add( selector == null ?
+                       this.prevObject : this.prevObject.filter( selector )
+               );
+       }
+} );
+
+function sibling( cur, dir ) {
+       while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+       return cur;
+}
+
+jQuery.each( {
+       parent: function( elem ) {
+               var parent = elem.parentNode;
+               return parent && parent.nodeType !== 11 ? parent : null;
+       },
+       parents: function( elem ) {
+               return dir( elem, "parentNode" );
+       },
+       parentsUntil: function( elem, i, until ) {
+               return dir( elem, "parentNode", until );
+       },
+       next: function( elem ) {
+               return sibling( elem, "nextSibling" );
+       },
+       prev: function( elem ) {
+               return sibling( elem, "previousSibling" );
+       },
+       nextAll: function( elem ) {
+               return dir( elem, "nextSibling" );
+       },
+       prevAll: function( elem ) {
+               return dir( elem, "previousSibling" );
+       },
+       nextUntil: function( elem, i, until ) {
+               return dir( elem, "nextSibling", until );
+       },
+       prevUntil: function( elem, i, until ) {
+               return dir( elem, "previousSibling", until );
+       },
+       siblings: function( elem ) {
+               return siblings( ( elem.parentNode || {} ).firstChild, elem );
+       },
+       children: function( elem ) {
+               return siblings( elem.firstChild );
+       },
+       contents: function( elem ) {
+               return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+       }
+}, function( name, fn ) {
+       jQuery.fn[ name ] = function( until, selector ) {
+               var matched = jQuery.map( this, fn, until );
+
+               if ( name.slice( -5 ) !== "Until" ) {
+                       selector = until;
+               }
+
+               if ( selector && typeof selector === "string" ) {
+                       matched = jQuery.filter( selector, matched );
+               }
+
+               if ( this.length > 1 ) {
+
+                       // Remove duplicates
+                       if ( !guaranteedUnique[ name ] ) {
+                               jQuery.uniqueSort( matched );
+                       }
+
+                       // Reverse order for parents* and prev-derivatives
+                       if ( rparentsprev.test( name ) ) {
+                               matched.reverse();
+                       }
+               }
+
+               return this.pushStack( matched );
+       };
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+       var object = {};
+       jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+               object[ flag ] = true;
+       } );
+       return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *     options: an optional list of space-separated options that will change how
+ *                     the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *     once:                   will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *     memory:                 will keep track of previous values and will call any callback added
+ *                                     after the list has been fired right away with the latest "memorized"
+ *                                     values (like a Deferred)
+ *
+ *     unique:                 will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *     stopOnFalse:    interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+       // Convert options from String-formatted to Object-formatted if needed
+       // (we check in cache first)
+       options = typeof options === "string" ?
+               createOptions( options ) :
+               jQuery.extend( {}, options );
+
+       var // Flag to know if list is currently firing
+               firing,
+
+               // Last fire value for non-forgettable lists
+               memory,
+
+               // Flag to know if list was already fired
+               fired,
+
+               // Flag to prevent firing
+               locked,
+
+               // Actual callback list
+               list = [],
+
+               // Queue of execution data for repeatable lists
+               queue = [],
+
+               // Index of currently firing callback (modified by add/remove as needed)
+               firingIndex = -1,
+
+               // Fire callbacks
+               fire = function() {
+
+                       // Enforce single-firing
+                       locked = options.once;
+
+                       // Execute callbacks for all pending executions,
+                       // respecting firingIndex overrides and runtime changes
+                       fired = firing = true;
+                       for ( ; queue.length; firingIndex = -1 ) {
+                               memory = queue.shift();
+                               while ( ++firingIndex < list.length ) {
+
+                                       // Run callback and check for early termination
+                                       if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+                                               options.stopOnFalse ) {
+
+                                               // Jump to end and forget the data so .add doesn't re-fire
+                                               firingIndex = list.length;
+                                               memory = false;
+                                       }
+                               }
+                       }
+
+                       // Forget the data if we're done with it
+                       if ( !options.memory ) {
+                               memory = false;
+                       }
+
+                       firing = false;
+
+                       // Clean up if we're done firing for good
+                       if ( locked ) {
+
+                               // Keep an empty list if we have data for future add calls
+                               if ( memory ) {
+                                       list = [];
+
+                               // Otherwise, this object is spent
+                               } else {
+                                       list = "";
+                               }
+                       }
+               },
+
+               // Actual Callbacks object
+               self = {
+
+                       // Add a callback or a collection of callbacks to the list
+                       add: function() {
+                               if ( list ) {
+
+                                       // If we have memory from a past run, we should fire after adding
+                                       if ( memory && !firing ) {
+                                               firingIndex = list.length - 1;
+                                               queue.push( memory );
+                                       }
+
+                                       ( function add( args ) {
+                                               jQuery.each( args, function( _, arg ) {
+                                                       if ( jQuery.isFunction( arg ) ) {
+                                                               if ( !options.unique || !self.has( arg ) ) {
+                                                                       list.push( arg );
+                                                               }
+                                                       } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+                                                               // Inspect recursively
+                                                               add( arg );
+                                                       }
+                                               } );
+                                       } )( arguments );
+
+                                       if ( memory && !firing ) {
+                                               fire();
+                                       }
+                               }
+                               return this;
+                       },
+
+                       // Remove a callback from the list
+                       remove: function() {
+                               jQuery.each( arguments, function( _, arg ) {
+                                       var index;
+                                       while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+                                               list.splice( index, 1 );
+
+                                               // Handle firing indexes
+                                               if ( index <= firingIndex ) {
+                                                       firingIndex--;
+                                               }
+                                       }
+                               } );
+                               return this;
+                       },
+
+                       // Check if a given callback is in the list.
+                       // If no argument is given, return whether or not list has callbacks attached.
+                       has: function( fn ) {
+                               return fn ?
+                                       jQuery.inArray( fn, list ) > -1 :
+                                       list.length > 0;
+                       },
+
+                       // Remove all callbacks from the list
+                       empty: function() {
+                               if ( list ) {
+                                       list = [];
+                               }
+                               return this;
+                       },
+
+                       // Disable .fire and .add
+                       // Abort any current/pending executions
+                       // Clear all callbacks and values
+                       disable: function() {
+                               locked = queue = [];
+                               list = memory = "";
+                               return this;
+                       },
+                       disabled: function() {
+                               return !list;
+                       },
+
+                       // Disable .fire
+                       // Also disable .add unless we have memory (since it would have no effect)
+                       // Abort any pending executions
+                       lock: function() {
+                               locked = queue = [];
+                               if ( !memory && !firing ) {
+                                       list = memory = "";
+                               }
+                               return this;
+                       },
+                       locked: function() {
+                               return !!locked;
+                       },
+
+                       // Call all callbacks with the given context and arguments
+                       fireWith: function( context, args ) {
+                               if ( !locked ) {
+                                       args = args || [];
+                                       args = [ context, args.slice ? args.slice() : args ];
+                                       queue.push( args );
+                                       if ( !firing ) {
+                                               fire();
+                                       }
+                               }
+                               return this;
+                       },
+
+                       // Call all the callbacks with the given arguments
+                       fire: function() {
+                               self.fireWith( this, arguments );
+                               return this;
+                       },
+
+                       // To know if the callbacks have already been called at least once
+                       fired: function() {
+                               return !!fired;
+                       }
+               };
+
+       return self;
+};
+
+
+function Identity( v ) {
+       return v;
+}
+function Thrower( ex ) {
+       throw ex;
+}
+
+function adoptValue( value, resolve, reject ) {
+       var method;
+
+       try {
+
+               // Check for promise aspect first to privilege synchronous behavior
+               if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+                       method.call( value ).done( resolve ).fail( reject );
+
+               // Other thenables
+               } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+                       method.call( value, resolve, reject );
+
+               // Other non-thenables
+               } else {
+
+                       // Support: Android 4.0 only
+                       // Strict mode functions invoked without .call/.apply get global-object context
+                       resolve.call( undefined, value );
+               }
+
+       // For Promises/A+, convert exceptions into rejections
+       // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+       // Deferred#then to conditionally suppress rejection.
+       } catch ( value ) {
+
+               // Support: Android 4.0 only
+               // Strict mode functions invoked without .call/.apply get global-object context
+               reject.call( undefined, value );
+       }
+}
+
+jQuery.extend( {
+
+       Deferred: function( func ) {
+               var tuples = [
+
+                               // action, add listener, callbacks,
+                               // ... .then handlers, argument index, [final state]
+                               [ "notify", "progress", jQuery.Callbacks( "memory" ),
+                                       jQuery.Callbacks( "memory" ), 2 ],
+                               [ "resolve", "done", jQuery.Callbacks( "once memory" ),
+                                       jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+                               [ "reject", "fail", jQuery.Callbacks( "once memory" ),
+                                       jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+                       ],
+                       state = "pending",
+                       promise = {
+                               state: function() {
+                                       return state;
+                               },
+                               always: function() {
+                                       deferred.done( arguments ).fail( arguments );
+                                       return this;
+                               },
+                               "catch": function( fn ) {
+                                       return promise.then( null, fn );
+                               },
+
+                               // Keep pipe for back-compat
+                               pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+                                       var fns = arguments;
+
+                                       return jQuery.Deferred( function( newDefer ) {
+                                               jQuery.each( tuples, function( i, tuple ) {
+
+                                                       // Map tuples (progress, done, fail) to arguments (done, fail, progress)
+                                                       var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+                                                       // deferred.progress(function() { bind to newDefer or newDefer.notify })
+                                                       // deferred.done(function() { bind to newDefer or newDefer.resolve })
+                                                       // deferred.fail(function() { bind to newDefer or newDefer.reject })
+                                                       deferred[ tuple[ 1 ] ]( function() {
+                                                               var returned = fn && fn.apply( this, arguments );
+                                                               if ( returned && jQuery.isFunction( returned.promise ) ) {
+                                                                       returned.promise()
+                                                                               .progress( newDefer.notify )
+                                                                               .done( newDefer.resolve )
+                                                                               .fail( newDefer.reject );
+                                                               } else {
+                                                                       newDefer[ tuple[ 0 ] + "With" ](
+                                                                               this,
+                                                                               fn ? [ returned ] : arguments
+                                                                       );
+                                                               }
+                                                       } );
+                                               } );
+                                               fns = null;
+                                       } ).promise();
+                               },
+                               then: function( onFulfilled, onRejected, onProgress ) {
+                                       var maxDepth = 0;
+                                       function resolve( depth, deferred, handler, special ) {
+                                               return function() {
+                                                       var that = this,
+                                                               args = arguments,
+                                                               mightThrow = function() {
+                                                                       var returned, then;
+
+                                                                       // Support: Promises/A+ section 2.3.3.3.3
+                                                                       // https://promisesaplus.com/#point-59
+                                                                       // Ignore double-resolution attempts
+                                                                       if ( depth < maxDepth ) {
+                                                                               return;
+                                                                       }
+
+                                                                       returned = handler.apply( that, args );
+
+                                                                       // Support: Promises/A+ section 2.3.1
+                                                                       // https://promisesaplus.com/#point-48
+                                                                       if ( returned === deferred.promise() ) {
+                                                                               throw new TypeError( "Thenable self-resolution" );
+                                                                       }
+
+                                                                       // Support: Promises/A+ sections 2.3.3.1, 3.5
+                                                                       // https://promisesaplus.com/#point-54
+                                                                       // https://promisesaplus.com/#point-75
+                                                                       // Retrieve `then` only once
+                                                                       then = returned &&
+
+                                                                               // Support: Promises/A+ section 2.3.4
+                                                                               // https://promisesaplus.com/#point-64
+                                                                               // Only check objects and functions for thenability
+                                                                               ( typeof returned === "object" ||
+                                                                                       typeof returned === "function" ) &&
+                                                                               returned.then;
+
+                                                                       // Handle a returned thenable
+                                                                       if ( jQuery.isFunction( then ) ) {
+
+                                                                               // Special processors (notify) just wait for resolution
+                                                                               if ( special ) {
+                                                                                       then.call(
+                                                                                               returned,
+                                                                                               resolve( maxDepth, deferred, Identity, special ),
+                                                                                               resolve( maxDepth, deferred, Thrower, special )
+                                                                                       );
+
+                                                                               // Normal processors (resolve) also hook into progress
+                                                                               } else {
+
+                                                                                       // ...and disregard older resolution values
+                                                                                       maxDepth++;
+
+                                                                                       then.call(
+                                                                                               returned,
+                                                                                               resolve( maxDepth, deferred, Identity, special ),
+                                                                                               resolve( maxDepth, deferred, Thrower, special ),
+                                                                                               resolve( maxDepth, deferred, Identity,
+                                                                                                       deferred.notifyWith )
+                                                                                       );
+                                                                               }
+
+                                                                       // Handle all other returned values
+                                                                       } else {
+
+                                                                               // Only substitute handlers pass on context
+                                                                               // and multiple values (non-spec behavior)
+                                                                               if ( handler !== Identity ) {
+                                                                                       that = undefined;
+                                                                                       args = [ returned ];
+                                                                               }
+
+                                                                               // Process the value(s)
+                                                                               // Default process is resolve
+                                                                               ( special || deferred.resolveWith )( that, args );
+                                                                       }
+                                                               },
+
+                                                               // Only normal processors (resolve) catch and reject exceptions
+                                                               process = special ?
+                                                                       mightThrow :
+                                                                       function() {
+                                                                               try {
+                                                                                       mightThrow();
+                                                                               } catch ( e ) {
+
+                                                                                       if ( jQuery.Deferred.exceptionHook ) {
+                                                                                               jQuery.Deferred.exceptionHook( e,
+                                                                                                       process.stackTrace );
+                                                                                       }
+
+                                                                                       // Support: Promises/A+ section 2.3.3.3.4.1
+                                                                                       // https://promisesaplus.com/#point-61
+                                                                                       // Ignore post-resolution exceptions
+                                                                                       if ( depth + 1 >= maxDepth ) {
+
+                                                                                               // Only substitute handlers pass on context
+                                                                                               // and multiple values (non-spec behavior)
+                                                                                               if ( handler !== Thrower ) {
+                                                                                                       that = undefined;
+                                                                                                       args = [ e ];
+                                                                                               }
+
+                                                                                               deferred.rejectWith( that, args );
+                                                                                       }
+                                                                               }
+                                                                       };
+
+                                                       // Support: Promises/A+ section 2.3.3.3.1
+                                                       // https://promisesaplus.com/#point-57
+                                                       // Re-resolve promises immediately to dodge false rejection from
+                                                       // subsequent errors
+                                                       if ( depth ) {
+                                                               process();
+                                                       } else {
+
+                                                               // Call an optional hook to record the stack, in case of exception
+                                                               // since it's otherwise lost when execution goes async
+                                                               if ( jQuery.Deferred.getStackHook ) {
+                                                                       process.stackTrace = jQuery.Deferred.getStackHook();
+                                                               }
+                                                               window.setTimeout( process );
+                                                       }
+                                               };
+                                       }
+
+                                       return jQuery.Deferred( function( newDefer ) {
+
+                                               // progress_handlers.add( ... )
+                                               tuples[ 0 ][ 3 ].add(
+                                                       resolve(
+                                                               0,
+                                                               newDefer,
+                                                               jQuery.isFunction( onProgress ) ?
+                                                                       onProgress :
+                                                                       Identity,
+                                                               newDefer.notifyWith
+                                                       )
+                                               );
+
+                                               // fulfilled_handlers.add( ... )
+                                               tuples[ 1 ][ 3 ].add(
+                                                       resolve(
+                                                               0,
+                                                               newDefer,
+                                                               jQuery.isFunction( onFulfilled ) ?
+                                                                       onFulfilled :
+                                                                       Identity
+                                                       )
+                                               );
+
+                                               // rejected_handlers.add( ... )
+                                               tuples[ 2 ][ 3 ].add(
+                                                       resolve(
+                                                               0,
+                                                               newDefer,
+                                                               jQuery.isFunction( onRejected ) ?
+                                                                       onRejected :
+                                                                       Thrower
+                                                       )
+                                               );
+                                       } ).promise();
+                               },
+
+                               // Get a promise for this deferred
+                               // If obj is provided, the promise aspect is added to the object
+                               promise: function( obj ) {
+                                       return obj != null ? jQuery.extend( obj, promise ) : promise;
+                               }
+                       },
+                       deferred = {};
+
+               // Add list-specific methods
+               jQuery.each( tuples, function( i, tuple ) {
+                       var list = tuple[ 2 ],
+                               stateString = tuple[ 5 ];
+
+                       // promise.progress = list.add
+                       // promise.done = list.add
+                       // promise.fail = list.add
+                       promise[ tuple[ 1 ] ] = list.add;
+
+                       // Handle state
+                       if ( stateString ) {
+                               list.add(
+                                       function() {
+
+                                               // state = "resolved" (i.e., fulfilled)
+                                               // state = "rejected"
+                                               state = stateString;
+                                       },
+
+                                       // rejected_callbacks.disable
+                                       // fulfilled_callbacks.disable
+                                       tuples[ 3 - i ][ 2 ].disable,
+
+                                       // progress_callbacks.lock
+                                       tuples[ 0 ][ 2 ].lock
+                               );
+                       }
+
+                       // progress_handlers.fire
+                       // fulfilled_handlers.fire
+                       // rejected_handlers.fire
+                       list.add( tuple[ 3 ].fire );
+
+                       // deferred.notify = function() { deferred.notifyWith(...) }
+                       // deferred.resolve = function() { deferred.resolveWith(...) }
+                       // deferred.reject = function() { deferred.rejectWith(...) }
+                       deferred[ tuple[ 0 ] ] = function() {
+                               deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+                               return this;
+                       };
+
+                       // deferred.notifyWith = list.fireWith
+                       // deferred.resolveWith = list.fireWith
+                       // deferred.rejectWith = list.fireWith
+                       deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+               } );
+
+               // Make the deferred a promise
+               promise.promise( deferred );
+
+               // Call given func if any
+               if ( func ) {
+                       func.call( deferred, deferred );
+               }
+
+               // All done!
+               return deferred;
+       },
+
+       // Deferred helper
+       when: function( singleValue ) {
+               var
+
+                       // count of uncompleted subordinates
+                       remaining = arguments.length,
+
+                       // count of unprocessed arguments
+                       i = remaining,
+
+                       // subordinate fulfillment data
+                       resolveContexts = Array( i ),
+                       resolveValues = slice.call( arguments ),
+
+                       // the master Deferred
+                       master = jQuery.Deferred(),
+
+                       // subordinate callback factory
+                       updateFunc = function( i ) {
+                               return function( value ) {
+                                       resolveContexts[ i ] = this;
+                                       resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+                                       if ( !( --remaining ) ) {
+                                               master.resolveWith( resolveContexts, resolveValues );
+                                       }
+                               };
+                       };
+
+               // Single- and empty arguments are adopted like Promise.resolve
+               if ( remaining <= 1 ) {
+                       adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
+
+                       // Use .then() to unwrap secondary thenables (cf. gh-3000)
+                       if ( master.state() === "pending" ||
+                               jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+                               return master.then();
+                       }
+               }
+
+               // Multiple arguments are aggregated like Promise.all array elements
+               while ( i-- ) {
+                       adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+               }
+
+               return master.promise();
+       }
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+       // Support: IE 8 - 9 only
+       // Console exists when dev tools are open, which can happen at any time
+       if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+               window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+       }
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+       window.setTimeout( function() {
+               throw error;
+       } );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+       readyList
+               .then( fn )
+
+               // Wrap jQuery.readyException in a function so that the lookup
+               // happens at the time of error handling instead of callback
+               // registration.
+               .catch( function( error ) {
+                       jQuery.readyException( error );
+               } );
+
+       return this;
+};
+
+jQuery.extend( {
+
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+
+       // A counter to track how many items to wait for before
+       // the ready event fires. See #6781
+       readyWait: 1,
+
+       // Hold (or release) the ready event
+       holdReady: function( hold ) {
+               if ( hold ) {
+                       jQuery.readyWait++;
+               } else {
+                       jQuery.ready( true );
+               }
+       },
+
+       // Handle when the DOM is ready
+       ready: function( wait ) {
+
+               // Abort if there are pending holds or we're already ready
+               if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+                       return;
+               }
+
+               // Remember that the DOM is ready
+               jQuery.isReady = true;
+
+               // If a normal DOM Ready event fired, decrement, and wait if need be
+               if ( wait !== true && --jQuery.readyWait > 0 ) {
+                       return;
+               }
+
+               // If there are functions bound, to execute
+               readyList.resolveWith( document, [ jQuery ] );
+       }
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+       document.removeEventListener( "DOMContentLoaded", completed );
+       window.removeEventListener( "load", completed );
+       jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+       ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+       // Handle it asynchronously to allow scripts the opportunity to delay ready
+       window.setTimeout( jQuery.ready );
+
+} else {
+
+       // Use the handy event callback
+       document.addEventListener( "DOMContentLoaded", completed );
+
+       // A fallback to window.onload, that will always work
+       window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+       var i = 0,
+               len = elems.length,
+               bulk = key == null;
+
+       // Sets many values
+       if ( jQuery.type( key ) === "object" ) {
+               chainable = true;
+               for ( i in key ) {
+                       access( elems, fn, i, key[ i ], true, emptyGet, raw );
+               }
+
+       // Sets one value
+       } else if ( value !== undefined ) {
+               chainable = true;
+
+               if ( !jQuery.isFunction( value ) ) {
+                       raw = true;
+               }
+
+               if ( bulk ) {
+
+                       // Bulk operations run against the entire set
+                       if ( raw ) {
+                               fn.call( elems, value );
+                               fn = null;
+
+                       // ...except when executing function values
+                       } else {
+                               bulk = fn;
+                               fn = function( elem, key, value ) {
+                                       return bulk.call( jQuery( elem ), value );
+                               };
+                       }
+               }
+
+               if ( fn ) {
+                       for ( ; i < len; i++ ) {
+                               fn(
+                                       elems[ i ], key, raw ?
+                                       value :
+                                       value.call( elems[ i ], i, fn( elems[ i ], key ) )
+                               );
+                       }
+               }
+       }
+
+       if ( chainable ) {
+               return elems;
+       }
+
+       // Gets
+       if ( bulk ) {
+               return fn.call( elems );
+       }
+
+       return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+       // Accepts only:
+       //  - Node
+       //    - Node.ELEMENT_NODE
+       //    - Node.DOCUMENT_NODE
+       //  - Object
+       //    - Any
+       return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+       this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+       cache: function( owner ) {
+
+               // Check if the owner object already has a cache
+               var value = owner[ this.expando ];
+
+               // If not, create one
+               if ( !value ) {
+                       value = {};
+
+                       // We can accept data for non-element nodes in modern browsers,
+                       // but we should not, see #8335.
+                       // Always return an empty object.
+                       if ( acceptData( owner ) ) {
+
+                               // If it is a node unlikely to be stringify-ed or looped over
+                               // use plain assignment
+                               if ( owner.nodeType ) {
+                                       owner[ this.expando ] = value;
+
+                               // Otherwise secure it in a non-enumerable property
+                               // configurable must be true to allow the property to be
+                               // deleted when data is removed
+                               } else {
+                                       Object.defineProperty( owner, this.expando, {
+                                               value: value,
+                                               configurable: true
+                                       } );
+                               }
+                       }
+               }
+
+               return value;
+       },
+       set: function( owner, data, value ) {
+               var prop,
+                       cache = this.cache( owner );
+
+               // Handle: [ owner, key, value ] args
+               // Always use camelCase key (gh-2257)
+               if ( typeof data === "string" ) {
+                       cache[ jQuery.camelCase( data ) ] = value;
+
+               // Handle: [ owner, { properties } ] args
+               } else {
+
+                       // Copy the properties one-by-one to the cache object
+                       for ( prop in data ) {
+                               cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+                       }
+               }
+               return cache;
+       },
+       get: function( owner, key ) {
+               return key === undefined ?
+                       this.cache( owner ) :
+
+                       // Always use camelCase key (gh-2257)
+                       owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+       },
+       access: function( owner, key, value ) {
+
+               // In cases where either:
+               //
+               //   1. No key was specified
+               //   2. A string key was specified, but no value provided
+               //
+               // Take the "read" path and allow the get method to determine
+               // which value to return, respectively either:
+               //
+               //   1. The entire cache object
+               //   2. The data stored at the key
+               //
+               if ( key === undefined ||
+                               ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+                       return this.get( owner, key );
+               }
+
+               // When the key is not a string, or both a key and value
+               // are specified, set or extend (existing objects) with either:
+               //
+               //   1. An object of properties
+               //   2. A key and value
+               //
+               this.set( owner, key, value );
+
+               // Since the "set" path can have two possible entry points
+               // return the expected data based on which path was taken[*]
+               return value !== undefined ? value : key;
+       },
+       remove: function( owner, key ) {
+               var i,
+                       cache = owner[ this.expando ];
+
+               if ( cache === undefined ) {
+                       return;
+               }
+
+               if ( key !== undefined ) {
+
+                       // Support array or space separated string of keys
+                       if ( jQuery.isArray( key ) ) {
+
+                               // If key is an array of keys...
+                               // We always set camelCase keys, so remove that.
+                               key = key.map( jQuery.camelCase );
+                       } else {
+                               key = jQuery.camelCase( key );
+
+                               // If a key with the spaces exists, use it.
+                               // Otherwise, create an array by matching non-whitespace
+                               key = key in cache ?
+                                       [ key ] :
+                                       ( key.match( rnothtmlwhite ) || [] );
+                       }
+
+                       i = key.length;
+
+                       while ( i-- ) {
+                               delete cache[ key[ i ] ];
+                       }
+               }
+
+               // Remove the expando if there's no more data
+               if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+                       // Support: Chrome <=35 - 45
+                       // Webkit & Blink performance suffers when deleting properties
+                       // from DOM nodes, so set to undefined instead
+                       // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+                       if ( owner.nodeType ) {
+                               owner[ this.expando ] = undefined;
+                       } else {
+                               delete owner[ this.expando ];
+                       }
+               }
+       },
+       hasData: function( owner ) {
+               var cache = owner[ this.expando ];
+               return cache !== undefined && !jQuery.isEmptyObject( cache );
+       }
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+//     Implementation Summary
+//
+//     1. Enforce API surface and semantic compatibility with 1.9.x branch
+//     2. Improve the module's maintainability by reducing the storage
+//             paths to a single mechanism.
+//     3. Use the same single mechanism to support "private" and "user" data.
+//     4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//     5. Avoid exposing implementation details on user objects (eg. expando properties)
+//     6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+       rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+       if ( data === "true" ) {
+               return true;
+       }
+
+       if ( data === "false" ) {
+               return false;
+       }
+
+       if ( data === "null" ) {
+               return null;
+       }
+
+       // Only convert to a number if it doesn't change the string
+       if ( data === +data + "" ) {
+               return +data;
+       }
+
+       if ( rbrace.test( data ) ) {
+               return JSON.parse( data );
+       }
+
+       return data;
+}
+
+function dataAttr( elem, key, data ) {
+       var name;
+
+       // If nothing was found internally, try to fetch any
+       // data from the HTML5 data-* attribute
+       if ( data === undefined && elem.nodeType === 1 ) {
+               name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+               data = elem.getAttribute( name );
+
+               if ( typeof data === "string" ) {
+                       try {
+                               data = getData( data );
+                       } catch ( e ) {}
+
+                       // Make sure we set the data so it isn't changed later
+                       dataUser.set( elem, key, data );
+               } else {
+                       data = undefined;
+               }
+       }
+       return data;
+}
+
+jQuery.extend( {
+       hasData: function( elem ) {
+               return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+       },
+
+       data: function( elem, name, data ) {
+               return dataUser.access( elem, name, data );
+       },
+
+       removeData: function( elem, name ) {
+               dataUser.remove( elem, name );
+       },
+
+       // TODO: Now that all calls to _data and _removeData have been replaced
+       // with direct calls to dataPriv methods, these can be deprecated.
+       _data: function( elem, name, data ) {
+               return dataPriv.access( elem, name, data );
+       },
+
+       _removeData: function( elem, name ) {
+               dataPriv.remove( elem, name );
+       }
+} );
+
+jQuery.fn.extend( {
+       data: function( key, value ) {
+               var i, name, data,
+                       elem = this[ 0 ],
+                       attrs = elem && elem.attributes;
+
+               // Gets all values
+               if ( key === undefined ) {
+                       if ( this.length ) {
+                               data = dataUser.get( elem );
+
+                               if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+                                       i = attrs.length;
+                                       while ( i-- ) {
+
+                                               // Support: IE 11 only
+                                               // The attrs elements can be null (#14894)
+                                               if ( attrs[ i ] ) {
+                                                       name = attrs[ i ].name;
+                                                       if ( name.indexOf( "data-" ) === 0 ) {
+                                                               name = jQuery.camelCase( name.slice( 5 ) );
+                                                               dataAttr( elem, name, data[ name ] );
+                                                       }
+                                               }
+                                       }
+                                       dataPriv.set( elem, "hasDataAttrs", true );
+                               }
+                       }
+
+                       return data;
+               }
+
+               // Sets multiple values
+               if ( typeof key === "object" ) {
+                       return this.each( function() {
+                               dataUser.set( this, key );
+                       } );
+               }
+
+               return access( this, function( value ) {
+                       var data;
+
+                       // The calling jQuery object (element matches) is not empty
+                       // (and therefore has an element appears at this[ 0 ]) and the
+                       // `value` parameter was not undefined. An empty jQuery object
+                       // will result in `undefined` for elem = this[ 0 ] which will
+                       // throw an exception if an attempt to read a data cache is made.
+                       if ( elem && value === undefined ) {
+
+                               // Attempt to get data from the cache
+                               // The key will always be camelCased in Data
+                               data = dataUser.get( elem, key );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // Attempt to "discover" the data in
+                               // HTML5 custom data-* attrs
+                               data = dataAttr( elem, key );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // We tried really hard, but the data doesn't exist.
+                               return;
+                       }
+
+                       // Set the data...
+                       this.each( function() {
+
+                               // We always store the camelCased key
+                               dataUser.set( this, key, value );
+                       } );
+               }, null, value, arguments.length > 1, null, true );
+       },
+
+       removeData: function( key ) {
+               return this.each( function() {
+                       dataUser.remove( this, key );
+               } );
+       }
+} );
+
+
+jQuery.extend( {
+       queue: function( elem, type, data ) {
+               var queue;
+
+               if ( elem ) {
+                       type = ( type || "fx" ) + "queue";
+                       queue = dataPriv.get( elem, type );
+
+                       // Speed up dequeue by getting out quickly if this is just a lookup
+                       if ( data ) {
+                               if ( !queue || jQuery.isArray( data ) ) {
+                                       queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+                               } else {
+                                       queue.push( data );
+                               }
+                       }
+                       return queue || [];
+               }
+       },
+
+       dequeue: function( elem, type ) {
+               type = type || "fx";
+
+               var queue = jQuery.queue( elem, type ),
+                       startLength = queue.length,
+                       fn = queue.shift(),
+                       hooks = jQuery._queueHooks( elem, type ),
+                       next = function() {
+                               jQuery.dequeue( elem, type );
+                       };
+
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if ( fn === "inprogress" ) {
+                       fn = queue.shift();
+                       startLength--;
+               }
+
+               if ( fn ) {
+
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if ( type === "fx" ) {
+                               queue.unshift( "inprogress" );
+                       }
+
+                       // Clear up the last queue stop function
+                       delete hooks.stop;
+                       fn.call( elem, next, hooks );
+               }
+
+               if ( !startLength && hooks ) {
+                       hooks.empty.fire();
+               }
+       },
+
+       // Not public - generate a queueHooks object, or return the current one
+       _queueHooks: function( elem, type ) {
+               var key = type + "queueHooks";
+               return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+                       empty: jQuery.Callbacks( "once memory" ).add( function() {
+                               dataPriv.remove( elem, [ type + "queue", key ] );
+                       } )
+               } );
+       }
+} );
+
+jQuery.fn.extend( {
+       queue: function( type, data ) {
+               var setter = 2;
+
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+                       setter--;
+               }
+
+               if ( arguments.length < setter ) {
+                       return jQuery.queue( this[ 0 ], type );
+               }
+
+               return data === undefined ?
+                       this :
+                       this.each( function() {
+                               var queue = jQuery.queue( this, type, data );
+
+                               // Ensure a hooks for this queue
+                               jQuery._queueHooks( this, type );
+
+                               if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+                                       jQuery.dequeue( this, type );
+                               }
+                       } );
+       },
+       dequeue: function( type ) {
+               return this.each( function() {
+                       jQuery.dequeue( this, type );
+               } );
+       },
+       clearQueue: function( type ) {
+               return this.queue( type || "fx", [] );
+       },
+
+       // Get a promise resolved when queues of a certain type
+       // are emptied (fx is the type by default)
+       promise: function( type, obj ) {
+               var tmp,
+                       count = 1,
+                       defer = jQuery.Deferred(),
+                       elements = this,
+                       i = this.length,
+                       resolve = function() {
+                               if ( !( --count ) ) {
+                                       defer.resolveWith( elements, [ elements ] );
+                               }
+                       };
+
+               if ( typeof type !== "string" ) {
+                       obj = type;
+                       type = undefined;
+               }
+               type = type || "fx";
+
+               while ( i-- ) {
+                       tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+                       if ( tmp && tmp.empty ) {
+                               count++;
+                               tmp.empty.add( resolve );
+                       }
+               }
+               resolve();
+               return defer.promise( obj );
+       }
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+               // isHiddenWithinTree might be called from jQuery#filter function;
+               // in that case, element will be second argument
+               elem = el || elem;
+
+               // Inline style trumps all
+               return elem.style.display === "none" ||
+                       elem.style.display === "" &&
+
+                       // Otherwise, check computed style
+                       // Support: Firefox <=43 - 45
+                       // Disconnected elements can have computed display: none, so first confirm that elem is
+                       // in the document.
+                       jQuery.contains( elem.ownerDocument, elem ) &&
+
+                       jQuery.css( elem, "display" ) === "none";
+       };
+
+var swap = function( elem, options, callback, args ) {
+       var ret, name,
+               old = {};
+
+       // Remember the old values, and insert the new ones
+       for ( name in options ) {
+               old[ name ] = elem.style[ name ];
+               elem.style[ name ] = options[ name ];
+       }
+
+       ret = callback.apply( elem, args || [] );
+
+       // Revert the old values
+       for ( name in options ) {
+               elem.style[ name ] = old[ name ];
+       }
+
+       return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+       var adjusted,
+               scale = 1,
+               maxIterations = 20,
+               currentValue = tween ?
+                       function() {
+                               return tween.cur();
+                       } :
+                       function() {
+                               return jQuery.css( elem, prop, "" );
+                       },
+               initial = currentValue(),
+               unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+               // Starting value computation is required for potential unit mismatches
+               initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+                       rcssNum.exec( jQuery.css( elem, prop ) );
+
+       if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+               // Trust units reported by jQuery.css
+               unit = unit || initialInUnit[ 3 ];
+
+               // Make sure we update the tween properties later on
+               valueParts = valueParts || [];
+
+               // Iteratively approximate from a nonzero starting point
+               initialInUnit = +initial || 1;
+
+               do {
+
+                       // If previous iteration zeroed out, double until we get *something*.
+                       // Use string for doubling so we don't accidentally see scale as unchanged below
+                       scale = scale || ".5";
+
+                       // Adjust and apply
+                       initialInUnit = initialInUnit / scale;
+                       jQuery.style( elem, prop, initialInUnit + unit );
+
+               // Update scale, tolerating zero or NaN from tween.cur()
+               // Break the loop if scale is unchanged or perfect, or if we've just had enough.
+               } while (
+                       scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+               );
+       }
+
+       if ( valueParts ) {
+               initialInUnit = +initialInUnit || +initial || 0;
+
+               // Apply relative offset (+=/-=) if specified
+               adjusted = valueParts[ 1 ] ?
+                       initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+                       +valueParts[ 2 ];
+               if ( tween ) {
+                       tween.unit = unit;
+                       tween.start = initialInUnit;
+                       tween.end = adjusted;
+               }
+       }
+       return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+       var temp,
+               doc = elem.ownerDocument,
+               nodeName = elem.nodeName,
+               display = defaultDisplayMap[ nodeName ];
+
+       if ( display ) {
+               return display;
+       }
+
+       temp = doc.body.appendChild( doc.createElement( nodeName ) );
+       display = jQuery.css( temp, "display" );
+
+       temp.parentNode.removeChild( temp );
+
+       if ( display === "none" ) {
+               display = "block";
+       }
+       defaultDisplayMap[ nodeName ] = display;
+
+       return display;
+}
+
+function showHide( elements, show ) {
+       var display, elem,
+               values = [],
+               index = 0,
+               length = elements.length;
+
+       // Determine new display value for elements that need to change
+       for ( ; index < length; index++ ) {
+               elem = elements[ index ];
+               if ( !elem.style ) {
+                       continue;
+               }
+
+               display = elem.style.display;
+               if ( show ) {
+
+                       // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+                       // check is required in this first loop unless we have a nonempty display value (either
+                       // inline or about-to-be-restored)
+                       if ( display === "none" ) {
+                               values[ index ] = dataPriv.get( elem, "display" ) || null;
+                               if ( !values[ index ] ) {
+                                       elem.style.display = "";
+                               }
+                       }
+                       if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+                               values[ index ] = getDefaultDisplay( elem );
+                       }
+               } else {
+                       if ( display !== "none" ) {
+                               values[ index ] = "none";
+
+                               // Remember what we're overwriting
+                               dataPriv.set( elem, "display", display );
+                       }
+               }
+       }
+
+       // Set the display of the elements in a second loop to avoid constant reflow
+       for ( index = 0; index < length; index++ ) {
+               if ( values[ index ] != null ) {
+                       elements[ index ].style.display = values[ index ];
+               }
+       }
+
+       return elements;
+}
+
+jQuery.fn.extend( {
+       show: function() {
+               return showHide( this, true );
+       },
+       hide: function() {
+               return showHide( this );
+       },
+       toggle: function( state ) {
+               if ( typeof state === "boolean" ) {
+                       return state ? this.show() : this.hide();
+               }
+
+               return this.each( function() {
+                       if ( isHiddenWithinTree( this ) ) {
+                               jQuery( this ).show();
+                       } else {
+                               jQuery( this ).hide();
+                       }
+               } );
+       }
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+       // Support: IE <=9 only
+       option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+       // XHTML parsers do not magically insert elements in the
+       // same way that tag soup parsers do. So we cannot shorten
+       // this by omitting <tbody> or other required elements.
+       thead: [ 1, "<table>", "</table>" ],
+       col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+       tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+       td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+       _default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+       // Support: IE <=9 - 11 only
+       // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+       var ret;
+
+       if ( typeof context.getElementsByTagName !== "undefined" ) {
+               ret = context.getElementsByTagName( tag || "*" );
+
+       } else if ( typeof context.querySelectorAll !== "undefined" ) {
+               ret = context.querySelectorAll( tag || "*" );
+
+       } else {
+               ret = [];
+       }
+
+       if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
+               return jQuery.merge( [ context ], ret );
+       }
+
+       return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+       var i = 0,
+               l = elems.length;
+
+       for ( ; i < l; i++ ) {
+               dataPriv.set(
+                       elems[ i ],
+                       "globalEval",
+                       !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+               );
+       }
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+       var elem, tmp, tag, wrap, contains, j,
+               fragment = context.createDocumentFragment(),
+               nodes = [],
+               i = 0,
+               l = elems.length;
+
+       for ( ; i < l; i++ ) {
+               elem = elems[ i ];
+
+               if ( elem || elem === 0 ) {
+
+                       // Add nodes directly
+                       if ( jQuery.type( elem ) === "object" ) {
+
+                               // Support: Android <=4.0 only, PhantomJS 1 only
+                               // push.apply(_, arraylike) throws on ancient WebKit
+                               jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+                       // Convert non-html into a text node
+                       } else if ( !rhtml.test( elem ) ) {
+                               nodes.push( context.createTextNode( elem ) );
+
+                       // Convert html into DOM nodes
+                       } else {
+                               tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+                               // Deserialize a standard representation
+                               tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+                               wrap = wrapMap[ tag ] || wrapMap._default;
+                               tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+                               // Descend through wrappers to the right content
+                               j = wrap[ 0 ];
+                               while ( j-- ) {
+                                       tmp = tmp.lastChild;
+                               }
+
+                               // Support: Android <=4.0 only, PhantomJS 1 only
+                               // push.apply(_, arraylike) throws on ancient WebKit
+                               jQuery.merge( nodes, tmp.childNodes );
+
+                               // Remember the top-level container
+                               tmp = fragment.firstChild;
+
+                               // Ensure the created nodes are orphaned (#12392)
+                               tmp.textContent = "";
+                       }
+               }
+       }
+
+       // Remove wrapper from fragment
+       fragment.textContent = "";
+
+       i = 0;
+       while ( ( elem = nodes[ i++ ] ) ) {
+
+               // Skip elements already in the context collection (trac-4087)
+               if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+                       if ( ignored ) {
+                               ignored.push( elem );
+                       }
+                       continue;
+               }
+
+               contains = jQuery.contains( elem.ownerDocument, elem );
+
+               // Append to fragment
+               tmp = getAll( fragment.appendChild( elem ), "script" );
+
+               // Preserve script evaluation history
+               if ( contains ) {
+                       setGlobalEval( tmp );
+               }
+
+               // Capture executables
+               if ( scripts ) {
+                       j = 0;
+                       while ( ( elem = tmp[ j++ ] ) ) {
+                               if ( rscriptType.test( elem.type || "" ) ) {
+                                       scripts.push( elem );
+                               }
+                       }
+               }
+       }
+
+       return fragment;
+}
+
+
+( function() {
+       var fragment = document.createDocumentFragment(),
+               div = fragment.appendChild( document.createElement( "div" ) ),
+               input = document.createElement( "input" );
+
+       // Support: Android 4.0 - 4.3 only
+       // Check state lost if the name is set (#11217)
+       // Support: Windows Web Apps (WWA)
+       // `name` and `type` must use .setAttribute for WWA (#14901)
+       input.setAttribute( "type", "radio" );
+       input.setAttribute( "checked", "checked" );
+       input.setAttribute( "name", "t" );
+
+       div.appendChild( input );
+
+       // Support: Android <=4.1 only
+       // Older WebKit doesn't clone checked state correctly in fragments
+       support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+       // Support: IE <=11 only
+       // Make sure textarea (and checkbox) defaultValue is properly cloned
+       div.innerHTML = "<textarea>x</textarea>";
+       support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+       rkeyEvent = /^key/,
+       rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+       rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+       return true;
+}
+
+function returnFalse() {
+       return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+       try {
+               return document.activeElement;
+       } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+       var origFn, type;
+
+       // Types can be a map of types/handlers
+       if ( typeof types === "object" ) {
+
+               // ( types-Object, selector, data )
+               if ( typeof selector !== "string" ) {
+
+                       // ( types-Object, data )
+                       data = data || selector;
+                       selector = undefined;
+               }
+               for ( type in types ) {
+                       on( elem, type, selector, data, types[ type ], one );
+               }
+               return elem;
+       }
+
+       if ( data == null && fn == null ) {
+
+               // ( types, fn )
+               fn = selector;
+               data = selector = undefined;
+       } else if ( fn == null ) {
+               if ( typeof selector === "string" ) {
+
+                       // ( types, selector, fn )
+                       fn = data;
+                       data = undefined;
+               } else {
+
+                       // ( types, data, fn )
+                       fn = data;
+                       data = selector;
+                       selector = undefined;
+               }
+       }
+       if ( fn === false ) {
+               fn = returnFalse;
+       } else if ( !fn ) {
+               return elem;
+       }
+
+       if ( one === 1 ) {
+               origFn = fn;
+               fn = function( event ) {
+
+                       // Can use an empty set, since event contains the info
+                       jQuery().off( event );
+                       return origFn.apply( this, arguments );
+               };
+
+               // Use same guid so caller can remove using origFn
+               fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+       }
+       return elem.each( function() {
+               jQuery.event.add( this, types, fn, data, selector );
+       } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+       global: {},
+
+       add: function( elem, types, handler, data, selector ) {
+
+               var handleObjIn, eventHandle, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = dataPriv.get( elem );
+
+               // Don't attach events to noData or text/comment nodes (but allow plain objects)
+               if ( !elemData ) {
+                       return;
+               }
+
+               // Caller can pass in an object of custom data in lieu of the handler
+               if ( handler.handler ) {
+                       handleObjIn = handler;
+                       handler = handleObjIn.handler;
+                       selector = handleObjIn.selector;
+               }
+
+               // Ensure that invalid selectors throw exceptions at attach time
+               // Evaluate against documentElement in case elem is a non-element node (e.g., document)
+               if ( selector ) {
+                       jQuery.find.matchesSelector( documentElement, selector );
+               }
+
+               // Make sure that the handler has a unique ID, used to find/remove it later
+               if ( !handler.guid ) {
+                       handler.guid = jQuery.guid++;
+               }
+
+               // Init the element's event structure and main handler, if this is the first
+               if ( !( events = elemData.events ) ) {
+                       events = elemData.events = {};
+               }
+               if ( !( eventHandle = elemData.handle ) ) {
+                       eventHandle = elemData.handle = function( e ) {
+
+                               // Discard the second event of a jQuery.event.trigger() and
+                               // when an event is called after a page has unloaded
+                               return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+                                       jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+                       };
+               }
+
+               // Handle multiple events separated by a space
+               types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[ t ] ) || [];
+                       type = origType = tmp[ 1 ];
+                       namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+                       // There *must* be a type, no attaching namespace-only handlers
+                       if ( !type ) {
+                               continue;
+                       }
+
+                       // If event changes its type, use the special event handlers for the changed type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // If selector defined, determine special event api type, otherwise given type
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+
+                       // Update special based on newly reset type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // handleObj is passed to all event handlers
+                       handleObj = jQuery.extend( {
+                               type: type,
+                               origType: origType,
+                               data: data,
+                               handler: handler,
+                               guid: handler.guid,
+                               selector: selector,
+                               needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+                               namespace: namespaces.join( "." )
+                       }, handleObjIn );
+
+                       // Init the event handler queue if we're the first
+                       if ( !( handlers = events[ type ] ) ) {
+                               handlers = events[ type ] = [];
+                               handlers.delegateCount = 0;
+
+                               // Only use addEventListener if the special events handler returns false
+                               if ( !special.setup ||
+                                       special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+                                       if ( elem.addEventListener ) {
+                                               elem.addEventListener( type, eventHandle );
+                                       }
+                               }
+                       }
+
+                       if ( special.add ) {
+                               special.add.call( elem, handleObj );
+
+                               if ( !handleObj.handler.guid ) {
+                                       handleObj.handler.guid = handler.guid;
+                               }
+                       }
+
+                       // Add to the element's handler list, delegates in front
+                       if ( selector ) {
+                               handlers.splice( handlers.delegateCount++, 0, handleObj );
+                       } else {
+                               handlers.push( handleObj );
+                       }
+
+                       // Keep track of which events have ever been used, for event optimization
+                       jQuery.event.global[ type ] = true;
+               }
+
+       },
+
+       // Detach an event or set of events from an element
+       remove: function( elem, types, handler, selector, mappedTypes ) {
+
+               var j, origCount, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+               if ( !elemData || !( events = elemData.events ) ) {
+                       return;
+               }
+
+               // Once for each type.namespace in types; type may be omitted
+               types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[ t ] ) || [];
+                       type = origType = tmp[ 1 ];
+                       namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+                       // Unbind all events (on this namespace, if provided) for the element
+                       if ( !type ) {
+                               for ( type in events ) {
+                                       jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+                               }
+                               continue;
+                       }
+
+                       special = jQuery.event.special[ type ] || {};
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+                       handlers = events[ type ] || [];
+                       tmp = tmp[ 2 ] &&
+                               new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+                       // Remove matching events
+                       origCount = j = handlers.length;
+                       while ( j-- ) {
+                               handleObj = handlers[ j ];
+
+                               if ( ( mappedTypes || origType === handleObj.origType ) &&
+                                       ( !handler || handler.guid === handleObj.guid ) &&
+                                       ( !tmp || tmp.test( handleObj.namespace ) ) &&
+                                       ( !selector || selector === handleObj.selector ||
+                                               selector === "**" && handleObj.selector ) ) {
+                                       handlers.splice( j, 1 );
+
+                                       if ( handleObj.selector ) {
+                                               handlers.delegateCount--;
+                                       }
+                                       if ( special.remove ) {
+                                               special.remove.call( elem, handleObj );
+                                       }
+                               }
+                       }
+
+                       // Remove generic event handler if we removed something and no more handlers exist
+                       // (avoids potential for endless recursion during removal of special event handlers)
+                       if ( origCount && !handlers.length ) {
+                               if ( !special.teardown ||
+                                       special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+                                       jQuery.removeEvent( elem, type, elemData.handle );
+                               }
+
+                               delete events[ type ];
+                       }
+               }
+
+               // Remove data and the expando if it's no longer used
+               if ( jQuery.isEmptyObject( events ) ) {
+                       dataPriv.remove( elem, "handle events" );
+               }
+       },
+
+       dispatch: function( nativeEvent ) {
+
+               // Make a writable jQuery.Event from the native event object
+               var event = jQuery.event.fix( nativeEvent );
+
+               var i, j, ret, matched, handleObj, handlerQueue,
+                       args = new Array( arguments.length ),
+                       handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+                       special = jQuery.event.special[ event.type ] || {};
+
+               // Use the fix-ed jQuery.Event rather than the (read-only) native event
+               args[ 0 ] = event;
+
+               for ( i = 1; i < arguments.length; i++ ) {
+                       args[ i ] = arguments[ i ];
+               }
+
+               event.delegateTarget = this;
+
+               // Call the preDispatch hook for the mapped type, and let it bail if desired
+               if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+                       return;
+               }
+
+               // Determine handlers
+               handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+               // Run delegates first; they may want to stop propagation beneath us
+               i = 0;
+               while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+                       event.currentTarget = matched.elem;
+
+                       j = 0;
+                       while ( ( handleObj = matched.handlers[ j++ ] ) &&
+                               !event.isImmediatePropagationStopped() ) {
+
+                               // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+                               // a subset or equal to those in the bound event (both can have no namespace).
+                               if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+                                       event.handleObj = handleObj;
+                                       event.data = handleObj.data;
+
+                                       ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+                                               handleObj.handler ).apply( matched.elem, args );
+
+                                       if ( ret !== undefined ) {
+                                               if ( ( event.result = ret ) === false ) {
+                                                       event.preventDefault();
+                                                       event.stopPropagation();
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               // Call the postDispatch hook for the mapped type
+               if ( special.postDispatch ) {
+                       special.postDispatch.call( this, event );
+               }
+
+               return event.result;
+       },
+
+       handlers: function( event, handlers ) {
+               var i, handleObj, sel, matchedHandlers, matchedSelectors,
+                       handlerQueue = [],
+                       delegateCount = handlers.delegateCount,
+                       cur = event.target;
+
+               // Find delegate handlers
+               if ( delegateCount &&
+
+                       // Support: IE <=9
+                       // Black-hole SVG <use> instance trees (trac-13180)
+                       cur.nodeType &&
+
+                       // Support: Firefox <=42
+                       // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+                       // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+                       // Support: IE 11 only
+                       // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+                       !( event.type === "click" && event.button >= 1 ) ) {
+
+                       for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+                               // Don't check non-elements (#13208)
+                               // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+                               if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+                                       matchedHandlers = [];
+                                       matchedSelectors = {};
+                                       for ( i = 0; i < delegateCount; i++ ) {
+                                               handleObj = handlers[ i ];
+
+                                               // Don't conflict with Object.prototype properties (#13203)
+                                               sel = handleObj.selector + " ";
+
+                                               if ( matchedSelectors[ sel ] === undefined ) {
+                                                       matchedSelectors[ sel ] = handleObj.needsContext ?
+                                                               jQuery( sel, this ).index( cur ) > -1 :
+                                                               jQuery.find( sel, this, null, [ cur ] ).length;
+                                               }
+                                               if ( matchedSelectors[ sel ] ) {
+                                                       matchedHandlers.push( handleObj );
+                                               }
+                                       }
+                                       if ( matchedHandlers.length ) {
+                                               handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+                                       }
+                               }
+                       }
+               }
+
+               // Add the remaining (directly-bound) handlers
+               cur = this;
+               if ( delegateCount < handlers.length ) {
+                       handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+               }
+
+               return handlerQueue;
+       },
+
+       addProp: function( name, hook ) {
+               Object.defineProperty( jQuery.Event.prototype, name, {
+                       enumerable: true,
+                       configurable: true,
+
+                       get: jQuery.isFunction( hook ) ?
+                               function() {
+                                       if ( this.originalEvent ) {
+                                                       return hook( this.originalEvent );
+                                       }
+                               } :
+                               function() {
+                                       if ( this.originalEvent ) {
+                                                       return this.originalEvent[ name ];
+                                       }
+                               },
+
+                       set: function( value ) {
+                               Object.defineProperty( this, name, {
+                                       enumerable: true,
+                                       configurable: true,
+                                       writable: true,
+                                       value: value
+                               } );
+                       }
+               } );
+       },
+
+       fix: function( originalEvent ) {
+               return originalEvent[ jQuery.expando ] ?
+                       originalEvent :
+                       new jQuery.Event( originalEvent );
+       },
+
+       special: {
+               load: {
+
+                       // Prevent triggered image.load events from bubbling to window.load
+                       noBubble: true
+               },
+               focus: {
+
+                       // Fire native event if possible so blur/focus sequence is correct
+                       trigger: function() {
+                               if ( this !== safeActiveElement() && this.focus ) {
+                                       this.focus();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusin"
+               },
+               blur: {
+                       trigger: function() {
+                               if ( this === safeActiveElement() && this.blur ) {
+                                       this.blur();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusout"
+               },
+               click: {
+
+                       // For checkbox, fire native event so checked state will be right
+                       trigger: function() {
+                               if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+                                       this.click();
+                                       return false;
+                               }
+                       },
+
+                       // For cross-browser consistency, don't fire native .click() on links
+                       _default: function( event ) {
+                               return jQuery.nodeName( event.target, "a" );
+                       }
+               },
+
+               beforeunload: {
+                       postDispatch: function( event ) {
+
+                               // Support: Firefox 20+
+                               // Firefox doesn't alert if the returnValue field is not set.
+                               if ( event.result !== undefined && event.originalEvent ) {
+                                       event.originalEvent.returnValue = event.result;
+                               }
+                       }
+               }
+       }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+       // This "if" is needed for plain objects
+       if ( elem.removeEventListener ) {
+               elem.removeEventListener( type, handle );
+       }
+};
+
+jQuery.Event = function( src, props ) {
+
+       // Allow instantiation without the 'new' keyword
+       if ( !( this instanceof jQuery.Event ) ) {
+               return new jQuery.Event( src, props );
+       }
+
+       // Event object
+       if ( src && src.type ) {
+               this.originalEvent = src;
+               this.type = src.type;
+
+               // Events bubbling up the document may have been marked as prevented
+               // by a handler lower down the tree; reflect the correct value.
+               this.isDefaultPrevented = src.defaultPrevented ||
+                               src.defaultPrevented === undefined &&
+
+                               // Support: Android <=2.3 only
+                               src.returnValue === false ?
+                       returnTrue :
+                       returnFalse;
+
+               // Create target properties
+               // Support: Safari <=6 - 7 only
+               // Target should not be a text node (#504, #13143)
+               this.target = ( src.target && src.target.nodeType === 3 ) ?
+                       src.target.parentNode :
+                       src.target;
+
+               this.currentTarget = src.currentTarget;
+               this.relatedTarget = src.relatedTarget;
+
+       // Event type
+       } else {
+               this.type = src;
+       }
+
+       // Put explicitly provided properties onto the event object
+       if ( props ) {
+               jQuery.extend( this, props );
+       }
+
+       // Create a timestamp if incoming event doesn't have one
+       this.timeStamp = src && src.timeStamp || jQuery.now();
+
+       // Mark it as fixed
+       this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+       constructor: jQuery.Event,
+       isDefaultPrevented: returnFalse,
+       isPropagationStopped: returnFalse,
+       isImmediatePropagationStopped: returnFalse,
+       isSimulated: false,
+
+       preventDefault: function() {
+               var e = this.originalEvent;
+
+               this.isDefaultPrevented = returnTrue;
+
+               if ( e && !this.isSimulated ) {
+                       e.preventDefault();
+               }
+       },
+       stopPropagation: function() {
+               var e = this.originalEvent;
+
+               this.isPropagationStopped = returnTrue;
+
+               if ( e && !this.isSimulated ) {
+                       e.stopPropagation();
+               }
+       },
+       stopImmediatePropagation: function() {
+               var e = this.originalEvent;
+
+               this.isImmediatePropagationStopped = returnTrue;
+
+               if ( e && !this.isSimulated ) {
+                       e.stopImmediatePropagation();
+               }
+
+               this.stopPropagation();
+       }
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+       altKey: true,
+       bubbles: true,
+       cancelable: true,
+       changedTouches: true,
+       ctrlKey: true,
+       detail: true,
+       eventPhase: true,
+       metaKey: true,
+       pageX: true,
+       pageY: true,
+       shiftKey: true,
+       view: true,
+       "char": true,
+       charCode: true,
+       key: true,
+       keyCode: true,
+       button: true,
+       buttons: true,
+       clientX: true,
+       clientY: true,
+       offsetX: true,
+       offsetY: true,
+       pointerId: true,
+       pointerType: true,
+       screenX: true,
+       screenY: true,
+       targetTouches: true,
+       toElement: true,
+       touches: true,
+
+       which: function( event ) {
+               var button = event.button;
+
+               // Add which for key events
+               if ( event.which == null && rkeyEvent.test( event.type ) ) {
+                       return event.charCode != null ? event.charCode : event.keyCode;
+               }
+
+               // Add which for click: 1 === left; 2 === middle; 3 === right
+               if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+                       if ( button & 1 ) {
+                               return 1;
+                       }
+
+                       if ( button & 2 ) {
+                               return 3;
+                       }
+
+                       if ( button & 4 ) {
+                               return 2;
+                       }
+
+                       return 0;
+               }
+
+               return event.which;
+       }
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+       mouseenter: "mouseover",
+       mouseleave: "mouseout",
+       pointerenter: "pointerover",
+       pointerleave: "pointerout"
+}, function( orig, fix ) {
+       jQuery.event.special[ orig ] = {
+               delegateType: fix,
+               bindType: fix,
+
+               handle: function( event ) {
+                       var ret,
+                               target = this,
+                               related = event.relatedTarget,
+                               handleObj = event.handleObj;
+
+                       // For mouseenter/leave call the handler if related is outside the target.
+                       // NB: No relatedTarget if the mouse left/entered the browser window
+                       if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+                               event.type = handleObj.origType;
+                               ret = handleObj.handler.apply( this, arguments );
+                               event.type = fix;
+                       }
+                       return ret;
+               }
+       };
+} );
+
+jQuery.fn.extend( {
+
+       on: function( types, selector, data, fn ) {
+               return on( this, types, selector, data, fn );
+       },
+       one: function( types, selector, data, fn ) {
+               return on( this, types, selector, data, fn, 1 );
+       },
+       off: function( types, selector, fn ) {
+               var handleObj, type;
+               if ( types && types.preventDefault && types.handleObj ) {
+
+                       // ( event )  dispatched jQuery.Event
+                       handleObj = types.handleObj;
+                       jQuery( types.delegateTarget ).off(
+                               handleObj.namespace ?
+                                       handleObj.origType + "." + handleObj.namespace :
+                                       handleObj.origType,
+                               handleObj.selector,
+                               handleObj.handler
+                       );
+                       return this;
+               }
+               if ( typeof types === "object" ) {
+
+                       // ( types-object [, selector] )
+                       for ( type in types ) {
+                               this.off( type, selector, types[ type ] );
+                       }
+                       return this;
+               }
+               if ( selector === false || typeof selector === "function" ) {
+
+                       // ( types [, fn] )
+                       fn = selector;
+                       selector = undefined;
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               }
+               return this.each( function() {
+                       jQuery.event.remove( this, types, fn, selector );
+               } );
+       }
+} );
+
+
+var
+
+       /* eslint-disable max-len */
+
+       // See https://github.com/eslint/eslint/issues/3229
+       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+       /* eslint-enable */
+
+       // Support: IE <=10 - 11, Edge 12 - 13
+       // In IE/Edge using regex groups here causes severe slowdowns.
+       // See https://connect.microsoft.com/IE/feedback/details/1736512/
+       rnoInnerhtml = /<script|<style|<link/i,
+
+       // checked="checked" or checked
+       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+       rscriptTypeMasked = /^true\/(.*)/,
+       rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+function manipulationTarget( elem, content ) {
+       if ( jQuery.nodeName( elem, "table" ) &&
+               jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+               return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
+       }
+
+       return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+       elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+       return elem;
+}
+function restoreScript( elem ) {
+       var match = rscriptTypeMasked.exec( elem.type );
+
+       if ( match ) {
+               elem.type = match[ 1 ];
+       } else {
+               elem.removeAttribute( "type" );
+       }
+
+       return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+       var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+       if ( dest.nodeType !== 1 ) {
+               return;
+       }
+
+       // 1. Copy private data: events, handlers, etc.
+       if ( dataPriv.hasData( src ) ) {
+               pdataOld = dataPriv.access( src );
+               pdataCur = dataPriv.set( dest, pdataOld );
+               events = pdataOld.events;
+
+               if ( events ) {
+                       delete pdataCur.handle;
+                       pdataCur.events = {};
+
+                       for ( type in events ) {
+                               for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+                                       jQuery.event.add( dest, type, events[ type ][ i ] );
+                               }
+                       }
+               }
+       }
+
+       // 2. Copy user data
+       if ( dataUser.hasData( src ) ) {
+               udataOld = dataUser.access( src );
+               udataCur = jQuery.extend( {}, udataOld );
+
+               dataUser.set( dest, udataCur );
+       }
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+       var nodeName = dest.nodeName.toLowerCase();
+
+       // Fails to persist the checked state of a cloned checkbox or radio button.
+       if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+               dest.checked = src.checked;
+
+       // Fails to return the selected option to the default selected state when cloning options
+       } else if ( nodeName === "input" || nodeName === "textarea" ) {
+               dest.defaultValue = src.defaultValue;
+       }
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+       // Flatten any nested arrays
+       args = concat.apply( [], args );
+
+       var fragment, first, scripts, hasScripts, node, doc,
+               i = 0,
+               l = collection.length,
+               iNoClone = l - 1,
+               value = args[ 0 ],
+               isFunction = jQuery.isFunction( value );
+
+       // We can't cloneNode fragments that contain checked, in WebKit
+       if ( isFunction ||
+                       ( l > 1 && typeof value === "string" &&
+                               !support.checkClone && rchecked.test( value ) ) ) {
+               return collection.each( function( index ) {
+                       var self = collection.eq( index );
+                       if ( isFunction ) {
+                               args[ 0 ] = value.call( this, index, self.html() );
+                       }
+                       domManip( self, args, callback, ignored );
+               } );
+       }
+
+       if ( l ) {
+               fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+               first = fragment.firstChild;
+
+               if ( fragment.childNodes.length === 1 ) {
+                       fragment = first;
+               }
+
+               // Require either new content or an interest in ignored elements to invoke the callback
+               if ( first || ignored ) {
+                       scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+                       hasScripts = scripts.length;
+
+                       // Use the original fragment for the last item
+                       // instead of the first because it can end up
+                       // being emptied incorrectly in certain situations (#8070).
+                       for ( ; i < l; i++ ) {
+                               node = fragment;
+
+                               if ( i !== iNoClone ) {
+                                       node = jQuery.clone( node, true, true );
+
+                                       // Keep references to cloned scripts for later restoration
+                                       if ( hasScripts ) {
+
+                                               // Support: Android <=4.0 only, PhantomJS 1 only
+                                               // push.apply(_, arraylike) throws on ancient WebKit
+                                               jQuery.merge( scripts, getAll( node, "script" ) );
+                                       }
+                               }
+
+                               callback.call( collection[ i ], node, i );
+                       }
+
+                       if ( hasScripts ) {
+                               doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+                               // Reenable scripts
+                               jQuery.map( scripts, restoreScript );
+
+                               // Evaluate executable scripts on first document insertion
+                               for ( i = 0; i < hasScripts; i++ ) {
+                                       node = scripts[ i ];
+                                       if ( rscriptType.test( node.type || "" ) &&
+                                               !dataPriv.access( node, "globalEval" ) &&
+                                               jQuery.contains( doc, node ) ) {
+
+                                               if ( node.src ) {
+
+                                                       // Optional AJAX dependency, but won't run scripts if not present
+                                                       if ( jQuery._evalUrl ) {
+                                                               jQuery._evalUrl( node.src );
+                                                       }
+                                               } else {
+                                                       DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return collection;
+}
+
+function remove( elem, selector, keepData ) {
+       var node,
+               nodes = selector ? jQuery.filter( selector, elem ) : elem,
+               i = 0;
+
+       for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+               if ( !keepData && node.nodeType === 1 ) {
+                       jQuery.cleanData( getAll( node ) );
+               }
+
+               if ( node.parentNode ) {
+                       if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+                               setGlobalEval( getAll( node, "script" ) );
+                       }
+                       node.parentNode.removeChild( node );
+               }
+       }
+
+       return elem;
+}
+
+jQuery.extend( {
+       htmlPrefilter: function( html ) {
+               return html.replace( rxhtmlTag, "<$1></$2>" );
+       },
+
+       clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+               var i, l, srcElements, destElements,
+                       clone = elem.cloneNode( true ),
+                       inPage = jQuery.contains( elem.ownerDocument, elem );
+
+               // Fix IE cloning issues
+               if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+                               !jQuery.isXMLDoc( elem ) ) {
+
+                       // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+                       destElements = getAll( clone );
+                       srcElements = getAll( elem );
+
+                       for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                               fixInput( srcElements[ i ], destElements[ i ] );
+                       }
+               }
+
+               // Copy the events from the original to the clone
+               if ( dataAndEvents ) {
+                       if ( deepDataAndEvents ) {
+                               srcElements = srcElements || getAll( elem );
+                               destElements = destElements || getAll( clone );
+
+                               for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                                       cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+                               }
+                       } else {
+                               cloneCopyEvent( elem, clone );
+                       }
+               }
+
+               // Preserve script evaluation history
+               destElements = getAll( clone, "script" );
+               if ( destElements.length > 0 ) {
+                       setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+               }
+
+               // Return the cloned set
+               return clone;
+       },
+
+       cleanData: function( elems ) {
+               var data, elem, type,
+                       special = jQuery.event.special,
+                       i = 0;
+
+               for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+                       if ( acceptData( elem ) ) {
+                               if ( ( data = elem[ dataPriv.expando ] ) ) {
+                                       if ( data.events ) {
+                                               for ( type in data.events ) {
+                                                       if ( special[ type ] ) {
+                                                               jQuery.event.remove( elem, type );
+
+                                                       // This is a shortcut to avoid jQuery.event.remove's overhead
+                                                       } else {
+                                                               jQuery.removeEvent( elem, type, data.handle );
+                                                       }
+                                               }
+                                       }
+
+                                       // Support: Chrome <=35 - 45+
+                                       // Assign undefined instead of using delete, see Data#remove
+                                       elem[ dataPriv.expando ] = undefined;
+                               }
+                               if ( elem[ dataUser.expando ] ) {
+
+                                       // Support: Chrome <=35 - 45+
+                                       // Assign undefined instead of using delete, see Data#remove
+                                       elem[ dataUser.expando ] = undefined;
+                               }
+                       }
+               }
+       }
+} );
+
+jQuery.fn.extend( {
+       detach: function( selector ) {
+               return remove( this, selector, true );
+       },
+
+       remove: function( selector ) {
+               return remove( this, selector );
+       },
+
+       text: function( value ) {
+               return access( this, function( value ) {
+                       return value === undefined ?
+                               jQuery.text( this ) :
+                               this.empty().each( function() {
+                                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                                               this.textContent = value;
+                                       }
+                               } );
+               }, null, value, arguments.length );
+       },
+
+       append: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.appendChild( elem );
+                       }
+               } );
+       },
+
+       prepend: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.insertBefore( elem, target.firstChild );
+                       }
+               } );
+       },
+
+       before: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this );
+                       }
+               } );
+       },
+
+       after: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this.nextSibling );
+                       }
+               } );
+       },
+
+       empty: function() {
+               var elem,
+                       i = 0;
+
+               for ( ; ( elem = this[ i ] ) != null; i++ ) {
+                       if ( elem.nodeType === 1 ) {
+
+                               // Prevent memory leaks
+                               jQuery.cleanData( getAll( elem, false ) );
+
+                               // Remove any remaining nodes
+                               elem.textContent = "";
+                       }
+               }
+
+               return this;
+       },
+
+       clone: function( dataAndEvents, deepDataAndEvents ) {
+               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+               deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+               return this.map( function() {
+                       return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+               } );
+       },
+
+       html: function( value ) {
+               return access( this, function( value ) {
+                       var elem = this[ 0 ] || {},
+                               i = 0,
+                               l = this.length;
+
+                       if ( value === undefined && elem.nodeType === 1 ) {
+                               return elem.innerHTML;
+                       }
+
+                       // See if we can take a shortcut and just use innerHTML
+                       if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+                               !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+                               value = jQuery.htmlPrefilter( value );
+
+                               try {
+                                       for ( ; i < l; i++ ) {
+                                               elem = this[ i ] || {};
+
+                                               // Remove element nodes and prevent memory leaks
+                                               if ( elem.nodeType === 1 ) {
+                                                       jQuery.cleanData( getAll( elem, false ) );
+                                                       elem.innerHTML = value;
+                                               }
+                                       }
+
+                                       elem = 0;
+
+                               // If using innerHTML throws an exception, use the fallback method
+                               } catch ( e ) {}
+                       }
+
+                       if ( elem ) {
+                               this.empty().append( value );
+                       }
+               }, null, value, arguments.length );
+       },
+
+       replaceWith: function() {
+               var ignored = [];
+
+               // Make the changes, replacing each non-ignored context element with the new content
+               return domManip( this, arguments, function( elem ) {
+                       var parent = this.parentNode;
+
+                       if ( jQuery.inArray( this, ignored ) < 0 ) {
+                               jQuery.cleanData( getAll( this ) );
+                               if ( parent ) {
+                                       parent.replaceChild( elem, this );
+                               }
+                       }
+
+               // Force callback invocation
+               }, ignored );
+       }
+} );
+
+jQuery.each( {
+       appendTo: "append",
+       prependTo: "prepend",
+       insertBefore: "before",
+       insertAfter: "after",
+       replaceAll: "replaceWith"
+}, function( name, original ) {
+       jQuery.fn[ name ] = function( selector ) {
+               var elems,
+                       ret = [],
+                       insert = jQuery( selector ),
+                       last = insert.length - 1,
+                       i = 0;
+
+               for ( ; i <= last; i++ ) {
+                       elems = i === last ? this : this.clone( true );
+                       jQuery( insert[ i ] )[ original ]( elems );
+
+                       // Support: Android <=4.0 only, PhantomJS 1 only
+                       // .get() because push.apply(_, arraylike) throws on ancient WebKit
+                       push.apply( ret, elems.get() );
+               }
+
+               return this.pushStack( ret );
+       };
+} );
+var rmargin = ( /^margin/ );
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+               // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+               // IE throws on elements created in popups
+               // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+               var view = elem.ownerDocument.defaultView;
+
+               if ( !view || !view.opener ) {
+                       view = window;
+               }
+
+               return view.getComputedStyle( elem );
+       };
+
+
+
+( function() {
+
+       // Executing both pixelPosition & boxSizingReliable tests require only one layout
+       // so they're executed at the same time to save the second computation.
+       function computeStyleTests() {
+
+               // This is a singleton, we need to execute it only once
+               if ( !div ) {
+                       return;
+               }
+
+               div.style.cssText =
+                       "box-sizing:border-box;" +
+                       "position:relative;display:block;" +
+                       "margin:auto;border:1px;padding:1px;" +
+                       "top:1%;width:50%";
+               div.innerHTML = "";
+               documentElement.appendChild( container );
+
+               var divStyle = window.getComputedStyle( div );
+               pixelPositionVal = divStyle.top !== "1%";
+
+               // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+               reliableMarginLeftVal = divStyle.marginLeft === "2px";
+               boxSizingReliableVal = divStyle.width === "4px";
+
+               // Support: Android 4.0 - 4.3 only
+               // Some styles come back with percentage values, even though they shouldn't
+               div.style.marginRight = "50%";
+               pixelMarginRightVal = divStyle.marginRight === "4px";
+
+               documentElement.removeChild( container );
+
+               // Nullify the div so it wouldn't be stored in the memory and
+               // it will also be a sign that checks already performed
+               div = null;
+       }
+
+       var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+               container = document.createElement( "div" ),
+               div = document.createElement( "div" );
+
+       // Finish early in limited (non-browser) environments
+       if ( !div.style ) {
+               return;
+       }
+
+       // Support: IE <=9 - 11 only
+       // Style of cloned element affects source element cloned (#8908)
+       div.style.backgroundClip = "content-box";
+       div.cloneNode( true ).style.backgroundClip = "";
+       support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+       container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+               "padding:0;margin-top:1px;position:absolute";
+       container.appendChild( div );
+
+       jQuery.extend( support, {
+               pixelPosition: function() {
+                       computeStyleTests();
+                       return pixelPositionVal;
+               },
+               boxSizingReliable: function() {
+                       computeStyleTests();
+                       return boxSizingReliableVal;
+               },
+               pixelMarginRight: function() {
+                       computeStyleTests();
+                       return pixelMarginRightVal;
+               },
+               reliableMarginLeft: function() {
+                       computeStyleTests();
+                       return reliableMarginLeftVal;
+               }
+       } );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+       var width, minWidth, maxWidth, ret,
+               style = elem.style;
+
+       computed = computed || getStyles( elem );
+
+       // Support: IE <=9 only
+       // getPropertyValue is only needed for .css('filter') (#12537)
+       if ( computed ) {
+               ret = computed.getPropertyValue( name ) || computed[ name ];
+
+               if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+                       ret = jQuery.style( elem, name );
+               }
+
+               // A tribute to the "awesome hack by Dean Edwards"
+               // Android Browser returns percentage for some values,
+               // but width seems to be reliably pixels.
+               // This is against the CSSOM draft spec:
+               // https://drafts.csswg.org/cssom/#resolved-values
+               if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+                       // Remember the original values
+                       width = style.width;
+                       minWidth = style.minWidth;
+                       maxWidth = style.maxWidth;
+
+                       // Put in the new values to get a computed value out
+                       style.minWidth = style.maxWidth = style.width = ret;
+                       ret = computed.width;
+
+                       // Revert the changed values
+                       style.width = width;
+                       style.minWidth = minWidth;
+                       style.maxWidth = maxWidth;
+               }
+       }
+
+       return ret !== undefined ?
+
+               // Support: IE <=9 - 11 only
+               // IE returns zIndex value as an integer.
+               ret + "" :
+               ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+       // Define the hook, we'll check on the first run if it's really needed.
+       return {
+               get: function() {
+                       if ( conditionFn() ) {
+
+                               // Hook not needed (or it's not possible to use it due
+                               // to missing dependency), remove it.
+                               delete this.get;
+                               return;
+                       }
+
+                       // Hook needed; redefine it so that the support test is not executed again.
+                       return ( this.get = hookFn ).apply( this, arguments );
+               }
+       };
+}
+
+
+var
+
+       // Swappable if display is none or starts with table
+       // except "table", "table-cell", or "table-caption"
+       // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+       rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+       cssNormalTransform = {
+               letterSpacing: "0",
+               fontWeight: "400"
+       },
+
+       cssPrefixes = [ "Webkit", "Moz", "ms" ],
+       emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+       // Shortcut for names that are not vendor prefixed
+       if ( name in emptyStyle ) {
+               return name;
+       }
+
+       // Check for vendor prefixed names
+       var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+               i = cssPrefixes.length;
+
+       while ( i-- ) {
+               name = cssPrefixes[ i ] + capName;
+               if ( name in emptyStyle ) {
+                       return name;
+               }
+       }
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+       // Any relative (+/-) values have already been
+       // normalized at this point
+       var matches = rcssNum.exec( value );
+       return matches ?
+
+               // Guard against undefined "subtract", e.g., when used as in cssHooks
+               Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+               value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+       var i,
+               val = 0;
+
+       // If we already have the right measurement, avoid augmentation
+       if ( extra === ( isBorderBox ? "border" : "content" ) ) {
+               i = 4;
+
+       // Otherwise initialize for horizontal or vertical properties
+       } else {
+               i = name === "width" ? 1 : 0;
+       }
+
+       for ( ; i < 4; i += 2 ) {
+
+               // Both box models exclude margin, so add it if we want it
+               if ( extra === "margin" ) {
+                       val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+               }
+
+               if ( isBorderBox ) {
+
+                       // border-box includes padding, so remove it if we want content
+                       if ( extra === "content" ) {
+                               val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+                       }
+
+                       // At this point, extra isn't border nor margin, so remove border
+                       if ( extra !== "margin" ) {
+                               val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               } else {
+
+                       // At this point, extra isn't content, so add padding
+                       val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+                       // At this point, extra isn't content nor padding, so add border
+                       if ( extra !== "padding" ) {
+                               val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               }
+       }
+
+       return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+       // Start with offset property, which is equivalent to the border-box value
+       var val,
+               valueIsBorderBox = true,
+               styles = getStyles( elem ),
+               isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+       // Support: IE <=11 only
+       // Running getBoundingClientRect on a disconnected node
+       // in IE throws an error.
+       if ( elem.getClientRects().length ) {
+               val = elem.getBoundingClientRect()[ name ];
+       }
+
+       // Some non-html elements return undefined for offsetWidth, so check for null/undefined
+       // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+       // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+       if ( val <= 0 || val == null ) {
+
+               // Fall back to computed then uncomputed css if necessary
+               val = curCSS( elem, name, styles );
+               if ( val < 0 || val == null ) {
+                       val = elem.style[ name ];
+               }
+
+               // Computed unit is not pixels. Stop here and return.
+               if ( rnumnonpx.test( val ) ) {
+                       return val;
+               }
+
+               // Check for style in case a browser which returns unreliable values
+               // for getComputedStyle silently falls back to the reliable elem.style
+               valueIsBorderBox = isBorderBox &&
+                       ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+               // Normalize "", auto, and prepare for extra
+               val = parseFloat( val ) || 0;
+       }
+
+       // Use the active box-sizing model to add/subtract irrelevant styles
+       return ( val +
+               augmentWidthOrHeight(
+                       elem,
+                       name,
+                       extra || ( isBorderBox ? "border" : "content" ),
+                       valueIsBorderBox,
+                       styles
+               )
+       ) + "px";
+}
+
+jQuery.extend( {
+
+       // Add in style property hooks for overriding the default
+       // behavior of getting and setting a style property
+       cssHooks: {
+               opacity: {
+                       get: function( elem, computed ) {
+                               if ( computed ) {
+
+                                       // We should always get a number back from opacity
+                                       var ret = curCSS( elem, "opacity" );
+                                       return ret === "" ? "1" : ret;
+                               }
+                       }
+               }
+       },
+
+       // Don't automatically add "px" to these possibly-unitless properties
+       cssNumber: {
+               "animationIterationCount": true,
+               "columnCount": true,
+               "fillOpacity": true,
+               "flexGrow": true,
+               "flexShrink": true,
+               "fontWeight": true,
+               "lineHeight": true,
+               "opacity": true,
+               "order": true,
+               "orphans": true,
+               "widows": true,
+               "zIndex": true,
+               "zoom": true
+       },
+
+       // Add in properties whose names you wish to fix before
+       // setting or getting the value
+       cssProps: {
+               "float": "cssFloat"
+       },
+
+       // Get and set the style property on a DOM Node
+       style: function( elem, name, value, extra ) {
+
+               // Don't set styles on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+                       return;
+               }
+
+               // Make sure that we're working with the right name
+               var ret, type, hooks,
+                       origName = jQuery.camelCase( name ),
+                       style = elem.style;
+
+               name = jQuery.cssProps[ origName ] ||
+                       ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+               // Gets hook for the prefixed version, then unprefixed version
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // Check if we're setting a value
+               if ( value !== undefined ) {
+                       type = typeof value;
+
+                       // Convert "+=" or "-=" to relative numbers (#7345)
+                       if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+                               value = adjustCSS( elem, name, ret );
+
+                               // Fixes bug #9237
+                               type = "number";
+                       }
+
+                       // Make sure that null and NaN values aren't set (#7116)
+                       if ( value == null || value !== value ) {
+                               return;
+                       }
+
+                       // If a number was passed in, add the unit (except for certain CSS properties)
+                       if ( type === "number" ) {
+                               value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+                       }
+
+                       // background-* props affect original clone's values
+                       if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+                               style[ name ] = "inherit";
+                       }
+
+                       // If a hook was provided, use that value, otherwise just set the specified value
+                       if ( !hooks || !( "set" in hooks ) ||
+                               ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+                               style[ name ] = value;
+                       }
+
+               } else {
+
+                       // If a hook was provided get the non-computed value from there
+                       if ( hooks && "get" in hooks &&
+                               ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+                               return ret;
+                       }
+
+                       // Otherwise just get the value from the style object
+                       return style[ name ];
+               }
+       },
+
+       css: function( elem, name, extra, styles ) {
+               var val, num, hooks,
+                       origName = jQuery.camelCase( name );
+
+               // Make sure that we're working with the right name
+               name = jQuery.cssProps[ origName ] ||
+                       ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+               // Try prefixed name followed by the unprefixed name
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // If a hook was provided get the computed value from there
+               if ( hooks && "get" in hooks ) {
+                       val = hooks.get( elem, true, extra );
+               }
+
+               // Otherwise, if a way to get the computed value exists, use that
+               if ( val === undefined ) {
+                       val = curCSS( elem, name, styles );
+               }
+
+               // Convert "normal" to computed value
+               if ( val === "normal" && name in cssNormalTransform ) {
+                       val = cssNormalTransform[ name ];
+               }
+
+               // Make numeric if forced or a qualifier was provided and val looks numeric
+               if ( extra === "" || extra ) {
+                       num = parseFloat( val );
+                       return extra === true || isFinite( num ) ? num || 0 : val;
+               }
+               return val;
+       }
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+       jQuery.cssHooks[ name ] = {
+               get: function( elem, computed, extra ) {
+                       if ( computed ) {
+
+                               // Certain elements can have dimension info if we invisibly show them
+                               // but it must have a current display style that would benefit
+                               return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+                                       // Support: Safari 8+
+                                       // Table columns in Safari have non-zero offsetWidth & zero
+                                       // getBoundingClientRect().width unless display is changed.
+                                       // Support: IE <=11 only
+                                       // Running getBoundingClientRect on a disconnected node
+                                       // in IE throws an error.
+                                       ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+                                               swap( elem, cssShow, function() {
+                                                       return getWidthOrHeight( elem, name, extra );
+                                               } ) :
+                                               getWidthOrHeight( elem, name, extra );
+                       }
+               },
+
+               set: function( elem, value, extra ) {
+                       var matches,
+                               styles = extra && getStyles( elem ),
+                               subtract = extra && augmentWidthOrHeight(
+                                       elem,
+                                       name,
+                                       extra,
+                                       jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+                                       styles
+                               );
+
+                       // Convert to pixels if value adjustment is needed
+                       if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+                               ( matches[ 3 ] || "px" ) !== "px" ) {
+
+                               elem.style[ name ] = value;
+                               value = jQuery.css( elem, name );
+                       }
+
+                       return setPositiveNumber( elem, value, subtract );
+               }
+       };
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+       function( elem, computed ) {
+               if ( computed ) {
+                       return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+                               elem.getBoundingClientRect().left -
+                                       swap( elem, { marginLeft: 0 }, function() {
+                                               return elem.getBoundingClientRect().left;
+                                       } )
+                               ) + "px";
+               }
+       }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+       margin: "",
+       padding: "",
+       border: "Width"
+}, function( prefix, suffix ) {
+       jQuery.cssHooks[ prefix + suffix ] = {
+               expand: function( value ) {
+                       var i = 0,
+                               expanded = {},
+
+                               // Assumes a single number if not a string
+                               parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+                       for ( ; i < 4; i++ ) {
+                               expanded[ prefix + cssExpand[ i ] + suffix ] =
+                                       parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+                       }
+
+                       return expanded;
+               }
+       };
+
+       if ( !rmargin.test( prefix ) ) {
+               jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+       }
+} );
+
+jQuery.fn.extend( {
+       css: function( name, value ) {
+               return access( this, function( elem, name, value ) {
+                       var styles, len,
+                               map = {},
+                               i = 0;
+
+                       if ( jQuery.isArray( name ) ) {
+                               styles = getStyles( elem );
+                               len = name.length;
+
+                               for ( ; i < len; i++ ) {
+                                       map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+                               }
+
+                               return map;
+                       }
+
+                       return value !== undefined ?
+                               jQuery.style( elem, name, value ) :
+                               jQuery.css( elem, name );
+               }, name, value, arguments.length > 1 );
+       }
+} );
+
+
+function Tween( elem, options, prop, end, easing ) {
+       return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+       constructor: Tween,
+       init: function( elem, options, prop, end, easing, unit ) {
+               this.elem = elem;
+               this.prop = prop;
+               this.easing = easing || jQuery.easing._default;
+               this.options = options;
+               this.start = this.now = this.cur();
+               this.end = end;
+               this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+       },
+       cur: function() {
+               var hooks = Tween.propHooks[ this.prop ];
+
+               return hooks && hooks.get ?
+                       hooks.get( this ) :
+                       Tween.propHooks._default.get( this );
+       },
+       run: function( percent ) {
+               var eased,
+                       hooks = Tween.propHooks[ this.prop ];
+
+               if ( this.options.duration ) {
+                       this.pos = eased = jQuery.easing[ this.easing ](
+                               percent, this.options.duration * percent, 0, 1, this.options.duration
+                       );
+               } else {
+                       this.pos = eased = percent;
+               }
+               this.now = ( this.end - this.start ) * eased + this.start;
+
+               if ( this.options.step ) {
+                       this.options.step.call( this.elem, this.now, this );
+               }
+
+               if ( hooks && hooks.set ) {
+                       hooks.set( this );
+               } else {
+                       Tween.propHooks._default.set( this );
+               }
+               return this;
+       }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+       _default: {
+               get: function( tween ) {
+                       var result;
+
+                       // Use a property on the element directly when it is not a DOM element,
+                       // or when there is no matching style property that exists.
+                       if ( tween.elem.nodeType !== 1 ||
+                               tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+                               return tween.elem[ tween.prop ];
+                       }
+
+                       // Passing an empty string as a 3rd parameter to .css will automatically
+                       // attempt a parseFloat and fallback to a string if the parse fails.
+                       // Simple values such as "10px" are parsed to Float;
+                       // complex values such as "rotate(1rad)" are returned as-is.
+                       result = jQuery.css( tween.elem, tween.prop, "" );
+
+                       // Empty strings, null, undefined and "auto" are converted to 0.
+                       return !result || result === "auto" ? 0 : result;
+               },
+               set: function( tween ) {
+
+                       // Use step hook for back compat.
+                       // Use cssHook if its there.
+                       // Use .style if available and use plain properties where available.
+                       if ( jQuery.fx.step[ tween.prop ] ) {
+                               jQuery.fx.step[ tween.prop ]( tween );
+                       } else if ( tween.elem.nodeType === 1 &&
+                               ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+                                       jQuery.cssHooks[ tween.prop ] ) ) {
+                               jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+                       } else {
+                               tween.elem[ tween.prop ] = tween.now;
+                       }
+               }
+       }
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+       set: function( tween ) {
+               if ( tween.elem.nodeType && tween.elem.parentNode ) {
+                       tween.elem[ tween.prop ] = tween.now;
+               }
+       }
+};
+
+jQuery.easing = {
+       linear: function( p ) {
+               return p;
+       },
+       swing: function( p ) {
+               return 0.5 - Math.cos( p * Math.PI ) / 2;
+       },
+       _default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+       fxNow, timerId,
+       rfxtypes = /^(?:toggle|show|hide)$/,
+       rrun = /queueHooks$/;
+
+function raf() {
+       if ( timerId ) {
+               window.requestAnimationFrame( raf );
+               jQuery.fx.tick();
+       }
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+       window.setTimeout( function() {
+               fxNow = undefined;
+       } );
+       return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+       var which,
+               i = 0,
+               attrs = { height: type };
+
+       // If we include width, step value is 1 to do all cssExpand values,
+       // otherwise step value is 2 to skip over Left and Right
+       includeWidth = includeWidth ? 1 : 0;
+       for ( ; i < 4; i += 2 - includeWidth ) {
+               which = cssExpand[ i ];
+               attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+       }
+
+       if ( includeWidth ) {
+               attrs.opacity = attrs.width = type;
+       }
+
+       return attrs;
+}
+
+function createTween( value, prop, animation ) {
+       var tween,
+               collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+               index = 0,
+               length = collection.length;
+       for ( ; index < length; index++ ) {
+               if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+                       // We're done with this property
+                       return tween;
+               }
+       }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+       var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+               isBox = "width" in props || "height" in props,
+               anim = this,
+               orig = {},
+               style = elem.style,
+               hidden = elem.nodeType && isHiddenWithinTree( elem ),
+               dataShow = dataPriv.get( elem, "fxshow" );
+
+       // Queue-skipping animations hijack the fx hooks
+       if ( !opts.queue ) {
+               hooks = jQuery._queueHooks( elem, "fx" );
+               if ( hooks.unqueued == null ) {
+                       hooks.unqueued = 0;
+                       oldfire = hooks.empty.fire;
+                       hooks.empty.fire = function() {
+                               if ( !hooks.unqueued ) {
+                                       oldfire();
+                               }
+                       };
+               }
+               hooks.unqueued++;
+
+               anim.always( function() {
+
+                       // Ensure the complete handler is called before this completes
+                       anim.always( function() {
+                               hooks.unqueued--;
+                               if ( !jQuery.queue( elem, "fx" ).length ) {
+                                       hooks.empty.fire();
+                               }
+                       } );
+               } );
+       }
+
+       // Detect show/hide animations
+       for ( prop in props ) {
+               value = props[ prop ];
+               if ( rfxtypes.test( value ) ) {
+                       delete props[ prop ];
+                       toggle = toggle || value === "toggle";
+                       if ( value === ( hidden ? "hide" : "show" ) ) {
+
+                               // Pretend to be hidden if this is a "show" and
+                               // there is still data from a stopped show/hide
+                               if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+                                       hidden = true;
+
+                               // Ignore all other no-op show/hide data
+                               } else {
+                                       continue;
+                               }
+                       }
+                       orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+               }
+       }
+
+       // Bail out if this is a no-op like .hide().hide()
+       propTween = !jQuery.isEmptyObject( props );
+       if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+               return;
+       }
+
+       // Restrict "overflow" and "display" styles during box animations
+       if ( isBox && elem.nodeType === 1 ) {
+
+               // Support: IE <=9 - 11, Edge 12 - 13
+               // Record all 3 overflow attributes because IE does not infer the shorthand
+               // from identically-valued overflowX and overflowY
+               opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+               // Identify a display type, preferring old show/hide data over the CSS cascade
+               restoreDisplay = dataShow && dataShow.display;
+               if ( restoreDisplay == null ) {
+                       restoreDisplay = dataPriv.get( elem, "display" );
+               }
+               display = jQuery.css( elem, "display" );
+               if ( display === "none" ) {
+                       if ( restoreDisplay ) {
+                               display = restoreDisplay;
+                       } else {
+
+                               // Get nonempty value(s) by temporarily forcing visibility
+                               showHide( [ elem ], true );
+                               restoreDisplay = elem.style.display || restoreDisplay;
+                               display = jQuery.css( elem, "display" );
+                               showHide( [ elem ] );
+                       }
+               }
+
+               // Animate inline elements as inline-block
+               if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+                       if ( jQuery.css( elem, "float" ) === "none" ) {
+
+                               // Restore the original display value at the end of pure show/hide animations
+                               if ( !propTween ) {
+                                       anim.done( function() {
+                                               style.display = restoreDisplay;
+                                       } );
+                                       if ( restoreDisplay == null ) {
+                                               display = style.display;
+                                               restoreDisplay = display === "none" ? "" : display;
+                                       }
+                               }
+                               style.display = "inline-block";
+                       }
+               }
+       }
+
+       if ( opts.overflow ) {
+               style.overflow = "hidden";
+               anim.always( function() {
+                       style.overflow = opts.overflow[ 0 ];
+                       style.overflowX = opts.overflow[ 1 ];
+                       style.overflowY = opts.overflow[ 2 ];
+               } );
+       }
+
+       // Implement show/hide animations
+       propTween = false;
+       for ( prop in orig ) {
+
+               // General show/hide setup for this element animation
+               if ( !propTween ) {
+                       if ( dataShow ) {
+                               if ( "hidden" in dataShow ) {
+                                       hidden = dataShow.hidden;
+                               }
+                       } else {
+                               dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+                       }
+
+                       // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+                       if ( toggle ) {
+                               dataShow.hidden = !hidden;
+                       }
+
+                       // Show elements before animating them
+                       if ( hidden ) {
+                               showHide( [ elem ], true );
+                       }
+
+                       /* eslint-disable no-loop-func */
+
+                       anim.done( function() {
+
+                       /* eslint-enable no-loop-func */
+
+                               // The final step of a "hide" animation is actually hiding the element
+                               if ( !hidden ) {
+                                       showHide( [ elem ] );
+                               }
+                               dataPriv.remove( elem, "fxshow" );
+                               for ( prop in orig ) {
+                                       jQuery.style( elem, prop, orig[ prop ] );
+                               }
+                       } );
+               }
+
+               // Per-property setup
+               propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+               if ( !( prop in dataShow ) ) {
+                       dataShow[ prop ] = propTween.start;
+                       if ( hidden ) {
+                               propTween.end = propTween.start;
+                               propTween.start = 0;
+                       }
+               }
+       }
+}
+
+function propFilter( props, specialEasing ) {
+       var index, name, easing, value, hooks;
+
+       // camelCase, specialEasing and expand cssHook pass
+       for ( index in props ) {
+               name = jQuery.camelCase( index );
+               easing = specialEasing[ name ];
+               value = props[ index ];
+               if ( jQuery.isArray( value ) ) {
+                       easing = value[ 1 ];
+                       value = props[ index ] = value[ 0 ];
+               }
+
+               if ( index !== name ) {
+                       props[ name ] = value;
+                       delete props[ index ];
+               }
+
+               hooks = jQuery.cssHooks[ name ];
+               if ( hooks && "expand" in hooks ) {
+                       value = hooks.expand( value );
+                       delete props[ name ];
+
+                       // Not quite $.extend, this won't overwrite existing keys.
+                       // Reusing 'index' because we have the correct "name"
+                       for ( index in value ) {
+                               if ( !( index in props ) ) {
+                                       props[ index ] = value[ index ];
+                                       specialEasing[ index ] = easing;
+                               }
+                       }
+               } else {
+                       specialEasing[ name ] = easing;
+               }
+       }
+}
+
+function Animation( elem, properties, options ) {
+       var result,
+               stopped,
+               index = 0,
+               length = Animation.prefilters.length,
+               deferred = jQuery.Deferred().always( function() {
+
+                       // Don't match elem in the :animated selector
+                       delete tick.elem;
+               } ),
+               tick = function() {
+                       if ( stopped ) {
+                               return false;
+                       }
+                       var currentTime = fxNow || createFxNow(),
+                               remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+                               // Support: Android 2.3 only
+                               // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+                               temp = remaining / animation.duration || 0,
+                               percent = 1 - temp,
+                               index = 0,
+                               length = animation.tweens.length;
+
+                       for ( ; index < length; index++ ) {
+                               animation.tweens[ index ].run( percent );
+                       }
+
+                       deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+                       if ( percent < 1 && length ) {
+                               return remaining;
+                       } else {
+                               deferred.resolveWith( elem, [ animation ] );
+                               return false;
+                       }
+               },
+               animation = deferred.promise( {
+                       elem: elem,
+                       props: jQuery.extend( {}, properties ),
+                       opts: jQuery.extend( true, {
+                               specialEasing: {},
+                               easing: jQuery.easing._default
+                       }, options ),
+                       originalProperties: properties,
+                       originalOptions: options,
+                       startTime: fxNow || createFxNow(),
+                       duration: options.duration,
+                       tweens: [],
+                       createTween: function( prop, end ) {
+                               var tween = jQuery.Tween( elem, animation.opts, prop, end,
+                                               animation.opts.specialEasing[ prop ] || animation.opts.easing );
+                               animation.tweens.push( tween );
+                               return tween;
+                       },
+                       stop: function( gotoEnd ) {
+                               var index = 0,
+
+                                       // If we are going to the end, we want to run all the tweens
+                                       // otherwise we skip this part
+                                       length = gotoEnd ? animation.tweens.length : 0;
+                               if ( stopped ) {
+                                       return this;
+                               }
+                               stopped = true;
+                               for ( ; index < length; index++ ) {
+                                       animation.tweens[ index ].run( 1 );
+                               }
+
+                               // Resolve when we played the last frame; otherwise, reject
+                               if ( gotoEnd ) {
+                                       deferred.notifyWith( elem, [ animation, 1, 0 ] );
+                                       deferred.resolveWith( elem, [ animation, gotoEnd ] );
+                               } else {
+                                       deferred.rejectWith( elem, [ animation, gotoEnd ] );
+                               }
+                               return this;
+                       }
+               } ),
+               props = animation.props;
+
+       propFilter( props, animation.opts.specialEasing );
+
+       for ( ; index < length; index++ ) {
+               result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+               if ( result ) {
+                       if ( jQuery.isFunction( result.stop ) ) {
+                               jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+                                       jQuery.proxy( result.stop, result );
+                       }
+                       return result;
+               }
+       }
+
+       jQuery.map( props, createTween, animation );
+
+       if ( jQuery.isFunction( animation.opts.start ) ) {
+               animation.opts.start.call( elem, animation );
+       }
+
+       jQuery.fx.timer(
+               jQuery.extend( tick, {
+                       elem: elem,
+                       anim: animation,
+                       queue: animation.opts.queue
+               } )
+       );
+
+       // attach callbacks from options
+       return animation.progress( animation.opts.progress )
+               .done( animation.opts.done, animation.opts.complete )
+               .fail( animation.opts.fail )
+               .always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+       tweeners: {
+               "*": [ function( prop, value ) {
+                       var tween = this.createTween( prop, value );
+                       adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+                       return tween;
+               } ]
+       },
+
+       tweener: function( props, callback ) {
+               if ( jQuery.isFunction( props ) ) {
+                       callback = props;
+                       props = [ "*" ];
+               } else {
+                       props = props.match( rnothtmlwhite );
+               }
+
+               var prop,
+                       index = 0,
+                       length = props.length;
+
+               for ( ; index < length; index++ ) {
+                       prop = props[ index ];
+                       Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+                       Animation.tweeners[ prop ].unshift( callback );
+               }
+       },
+
+       prefilters: [ defaultPrefilter ],
+
+       prefilter: function( callback, prepend ) {
+               if ( prepend ) {
+                       Animation.prefilters.unshift( callback );
+               } else {
+                       Animation.prefilters.push( callback );
+               }
+       }
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+       var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+               complete: fn || !fn && easing ||
+                       jQuery.isFunction( speed ) && speed,
+               duration: speed,
+               easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+       };
+
+       // Go to the end state if fx are off or if document is hidden
+       if ( jQuery.fx.off || document.hidden ) {
+               opt.duration = 0;
+
+       } else {
+               if ( typeof opt.duration !== "number" ) {
+                       if ( opt.duration in jQuery.fx.speeds ) {
+                               opt.duration = jQuery.fx.speeds[ opt.duration ];
+
+                       } else {
+                               opt.duration = jQuery.fx.speeds._default;
+                       }
+               }
+       }
+
+       // Normalize opt.queue - true/undefined/null -> "fx"
+       if ( opt.queue == null || opt.queue === true ) {
+               opt.queue = "fx";
+       }
+
+       // Queueing
+       opt.old = opt.complete;
+
+       opt.complete = function() {
+               if ( jQuery.isFunction( opt.old ) ) {
+                       opt.old.call( this );
+               }
+
+               if ( opt.queue ) {
+                       jQuery.dequeue( this, opt.queue );
+               }
+       };
+
+       return opt;
+};
+
+jQuery.fn.extend( {
+       fadeTo: function( speed, to, easing, callback ) {
+
+               // Show any hidden elements after setting opacity to 0
+               return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+                       // Animate to the value specified
+                       .end().animate( { opacity: to }, speed, easing, callback );
+       },
+       animate: function( prop, speed, easing, callback ) {
+               var empty = jQuery.isEmptyObject( prop ),
+                       optall = jQuery.speed( speed, easing, callback ),
+                       doAnimation = function() {
+
+                               // Operate on a copy of prop so per-property easing won't be lost
+                               var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+                               // Empty animations, or finishing resolves immediately
+                               if ( empty || dataPriv.get( this, "finish" ) ) {
+                                       anim.stop( true );
+                               }
+                       };
+                       doAnimation.finish = doAnimation;
+
+               return empty || optall.queue === false ?
+                       this.each( doAnimation ) :
+                       this.queue( optall.queue, doAnimation );
+       },
+       stop: function( type, clearQueue, gotoEnd ) {
+               var stopQueue = function( hooks ) {
+                       var stop = hooks.stop;
+                       delete hooks.stop;
+                       stop( gotoEnd );
+               };
+
+               if ( typeof type !== "string" ) {
+                       gotoEnd = clearQueue;
+                       clearQueue = type;
+                       type = undefined;
+               }
+               if ( clearQueue && type !== false ) {
+                       this.queue( type || "fx", [] );
+               }
+
+               return this.each( function() {
+                       var dequeue = true,
+                               index = type != null && type + "queueHooks",
+                               timers = jQuery.timers,
+                               data = dataPriv.get( this );
+
+                       if ( index ) {
+                               if ( data[ index ] && data[ index ].stop ) {
+                                       stopQueue( data[ index ] );
+                               }
+                       } else {
+                               for ( index in data ) {
+                                       if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+                                               stopQueue( data[ index ] );
+                                       }
+                               }
+                       }
+
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this &&
+                                       ( type == null || timers[ index ].queue === type ) ) {
+
+                                       timers[ index ].anim.stop( gotoEnd );
+                                       dequeue = false;
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // Start the next in the queue if the last step wasn't forced.
+                       // Timers currently will call their complete callbacks, which
+                       // will dequeue but only if they were gotoEnd.
+                       if ( dequeue || !gotoEnd ) {
+                               jQuery.dequeue( this, type );
+                       }
+               } );
+       },
+       finish: function( type ) {
+               if ( type !== false ) {
+                       type = type || "fx";
+               }
+               return this.each( function() {
+                       var index,
+                               data = dataPriv.get( this ),
+                               queue = data[ type + "queue" ],
+                               hooks = data[ type + "queueHooks" ],
+                               timers = jQuery.timers,
+                               length = queue ? queue.length : 0;
+
+                       // Enable finishing flag on private data
+                       data.finish = true;
+
+                       // Empty the queue first
+                       jQuery.queue( this, type, [] );
+
+                       if ( hooks && hooks.stop ) {
+                               hooks.stop.call( this, true );
+                       }
+
+                       // Look for any active animations, and finish them
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+                                       timers[ index ].anim.stop( true );
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // Look for any animations in the old queue and finish them
+                       for ( index = 0; index < length; index++ ) {
+                               if ( queue[ index ] && queue[ index ].finish ) {
+                                       queue[ index ].finish.call( this );
+                               }
+                       }
+
+                       // Turn off finishing flag
+                       delete data.finish;
+               } );
+       }
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+       var cssFn = jQuery.fn[ name ];
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return speed == null || typeof speed === "boolean" ?
+                       cssFn.apply( this, arguments ) :
+                       this.animate( genFx( name, true ), speed, easing, callback );
+       };
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+       slideDown: genFx( "show" ),
+       slideUp: genFx( "hide" ),
+       slideToggle: genFx( "toggle" ),
+       fadeIn: { opacity: "show" },
+       fadeOut: { opacity: "hide" },
+       fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return this.animate( props, speed, easing, callback );
+       };
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+       var timer,
+               i = 0,
+               timers = jQuery.timers;
+
+       fxNow = jQuery.now();
+
+       for ( ; i < timers.length; i++ ) {
+               timer = timers[ i ];
+
+               // Checks the timer has not already been removed
+               if ( !timer() && timers[ i ] === timer ) {
+                       timers.splice( i--, 1 );
+               }
+       }
+
+       if ( !timers.length ) {
+               jQuery.fx.stop();
+       }
+       fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+       jQuery.timers.push( timer );
+       if ( timer() ) {
+               jQuery.fx.start();
+       } else {
+               jQuery.timers.pop();
+       }
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+       if ( !timerId ) {
+               timerId = window.requestAnimationFrame ?
+                       window.requestAnimationFrame( raf ) :
+                       window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
+       }
+};
+
+jQuery.fx.stop = function() {
+       if ( window.cancelAnimationFrame ) {
+               window.cancelAnimationFrame( timerId );
+       } else {
+               window.clearInterval( timerId );
+       }
+
+       timerId = null;
+};
+
+jQuery.fx.speeds = {
+       slow: 600,
+       fast: 200,
+
+       // Default speed
+       _default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+       time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+       type = type || "fx";
+
+       return this.queue( type, function( next, hooks ) {
+               var timeout = window.setTimeout( next, time );
+               hooks.stop = function() {
+                       window.clearTimeout( timeout );
+               };
+       } );
+};
+
+
+( function() {
+       var input = document.createElement( "input" ),
+               select = document.createElement( "select" ),
+               opt = select.appendChild( document.createElement( "option" ) );
+
+       input.type = "checkbox";
+
+       // Support: Android <=4.3 only
+       // Default value for a checkbox should be "on"
+       support.checkOn = input.value !== "";
+
+       // Support: IE <=11 only
+       // Must access selectedIndex to make default options select
+       support.optSelected = opt.selected;
+
+       // Support: IE <=11 only
+       // An input loses its value after becoming a radio
+       input = document.createElement( "input" );
+       input.value = "t";
+       input.type = "radio";
+       support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+       attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+       attr: function( name, value ) {
+               return access( this, jQuery.attr, name, value, arguments.length > 1 );
+       },
+
+       removeAttr: function( name ) {
+               return this.each( function() {
+                       jQuery.removeAttr( this, name );
+               } );
+       }
+} );
+
+jQuery.extend( {
+       attr: function( elem, name, value ) {
+               var ret, hooks,
+                       nType = elem.nodeType;
+
+               // Don't get/set attributes on text, comment and attribute nodes
+               if ( nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               // Fallback to prop when attributes are not supported
+               if ( typeof elem.getAttribute === "undefined" ) {
+                       return jQuery.prop( elem, name, value );
+               }
+
+               // Attribute hooks are determined by the lowercase version
+               // Grab necessary hook if one is defined
+               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+                       hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+                               ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+               }
+
+               if ( value !== undefined ) {
+                       if ( value === null ) {
+                               jQuery.removeAttr( elem, name );
+                               return;
+                       }
+
+                       if ( hooks && "set" in hooks &&
+                               ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+                               return ret;
+                       }
+
+                       elem.setAttribute( name, value + "" );
+                       return value;
+               }
+
+               if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+                       return ret;
+               }
+
+               ret = jQuery.find.attr( elem, name );
+
+               // Non-existent attributes return null, we normalize to undefined
+               return ret == null ? undefined : ret;
+       },
+
+       attrHooks: {
+               type: {
+                       set: function( elem, value ) {
+                               if ( !support.radioValue && value === "radio" &&
+                                       jQuery.nodeName( elem, "input" ) ) {
+                                       var val = elem.value;
+                                       elem.setAttribute( "type", value );
+                                       if ( val ) {
+                                               elem.value = val;
+                                       }
+                                       return value;
+                               }
+                       }
+               }
+       },
+
+       removeAttr: function( elem, value ) {
+               var name,
+                       i = 0,
+
+                       // Attribute names can contain non-HTML whitespace characters
+                       // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+                       attrNames = value && value.match( rnothtmlwhite );
+
+               if ( attrNames && elem.nodeType === 1 ) {
+                       while ( ( name = attrNames[ i++ ] ) ) {
+                               elem.removeAttribute( name );
+                       }
+               }
+       }
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+       set: function( elem, value, name ) {
+               if ( value === false ) {
+
+                       // Remove boolean attributes when set to false
+                       jQuery.removeAttr( elem, name );
+               } else {
+                       elem.setAttribute( name, name );
+               }
+               return name;
+       }
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+       var getter = attrHandle[ name ] || jQuery.find.attr;
+
+       attrHandle[ name ] = function( elem, name, isXML ) {
+               var ret, handle,
+                       lowercaseName = name.toLowerCase();
+
+               if ( !isXML ) {
+
+                       // Avoid an infinite loop by temporarily removing this function from the getter
+                       handle = attrHandle[ lowercaseName ];
+                       attrHandle[ lowercaseName ] = ret;
+                       ret = getter( elem, name, isXML ) != null ?
+                               lowercaseName :
+                               null;
+                       attrHandle[ lowercaseName ] = handle;
+               }
+               return ret;
+       };
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+       rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+       prop: function( name, value ) {
+               return access( this, jQuery.prop, name, value, arguments.length > 1 );
+       },
+
+       removeProp: function( name ) {
+               return this.each( function() {
+                       delete this[ jQuery.propFix[ name ] || name ];
+               } );
+       }
+} );
+
+jQuery.extend( {
+       prop: function( elem, name, value ) {
+               var ret, hooks,
+                       nType = elem.nodeType;
+
+               // Don't get/set properties on text, comment and attribute nodes
+               if ( nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+                       // Fix name and attach hooks
+                       name = jQuery.propFix[ name ] || name;
+                       hooks = jQuery.propHooks[ name ];
+               }
+
+               if ( value !== undefined ) {
+                       if ( hooks && "set" in hooks &&
+                               ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+                               return ret;
+                       }
+
+                       return ( elem[ name ] = value );
+               }
+
+               if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+                       return ret;
+               }
+
+               return elem[ name ];
+       },
+
+       propHooks: {
+               tabIndex: {
+                       get: function( elem ) {
+
+                               // Support: IE <=9 - 11 only
+                               // elem.tabIndex doesn't always return the
+                               // correct value when it hasn't been explicitly set
+                               // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+                               // Use proper attribute retrieval(#12072)
+                               var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+                               if ( tabindex ) {
+                                       return parseInt( tabindex, 10 );
+                               }
+
+                               if (
+                                       rfocusable.test( elem.nodeName ) ||
+                                       rclickable.test( elem.nodeName ) &&
+                                       elem.href
+                               ) {
+                                       return 0;
+                               }
+
+                               return -1;
+                       }
+               }
+       },
+
+       propFix: {
+               "for": "htmlFor",
+               "class": "className"
+       }
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+       jQuery.propHooks.selected = {
+               get: function( elem ) {
+
+                       /* eslint no-unused-expressions: "off" */
+
+                       var parent = elem.parentNode;
+                       if ( parent && parent.parentNode ) {
+                               parent.parentNode.selectedIndex;
+                       }
+                       return null;
+               },
+               set: function( elem ) {
+
+                       /* eslint no-unused-expressions: "off" */
+
+                       var parent = elem.parentNode;
+                       if ( parent ) {
+                               parent.selectedIndex;
+
+                               if ( parent.parentNode ) {
+                                       parent.parentNode.selectedIndex;
+                               }
+                       }
+               }
+       };
+}
+
+jQuery.each( [
+       "tabIndex",
+       "readOnly",
+       "maxLength",
+       "cellSpacing",
+       "cellPadding",
+       "rowSpan",
+       "colSpan",
+       "useMap",
+       "frameBorder",
+       "contentEditable"
+], function() {
+       jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+       // Strip and collapse whitespace according to HTML spec
+       // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
+       function stripAndCollapse( value ) {
+               var tokens = value.match( rnothtmlwhite ) || [];
+               return tokens.join( " " );
+       }
+
+
+function getClass( elem ) {
+       return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+       addClass: function( value ) {
+               var classes, elem, cur, curValue, clazz, j, finalValue,
+                       i = 0;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each( function( j ) {
+                               jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+                       } );
+               }
+
+               if ( typeof value === "string" && value ) {
+                       classes = value.match( rnothtmlwhite ) || [];
+
+                       while ( ( elem = this[ i++ ] ) ) {
+                               curValue = getClass( elem );
+                               cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( ( clazz = classes[ j++ ] ) ) {
+                                               if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+                                                       cur += clazz + " ";
+                                               }
+                                       }
+
+                                       // Only assign if different to avoid unneeded rendering.
+                                       finalValue = stripAndCollapse( cur );
+                                       if ( curValue !== finalValue ) {
+                                               elem.setAttribute( "class", finalValue );
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       removeClass: function( value ) {
+               var classes, elem, cur, curValue, clazz, j, finalValue,
+                       i = 0;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each( function( j ) {
+                               jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+                       } );
+               }
+
+               if ( !arguments.length ) {
+                       return this.attr( "class", "" );
+               }
+
+               if ( typeof value === "string" && value ) {
+                       classes = value.match( rnothtmlwhite ) || [];
+
+                       while ( ( elem = this[ i++ ] ) ) {
+                               curValue = getClass( elem );
+
+                               // This expression is here for better compressibility (see addClass)
+                               cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( ( clazz = classes[ j++ ] ) ) {
+
+                                               // Remove *all* instances
+                                               while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+                                                       cur = cur.replace( " " + clazz + " ", " " );
+                                               }
+                                       }
+
+                                       // Only assign if different to avoid unneeded rendering.
+                                       finalValue = stripAndCollapse( cur );
+                                       if ( curValue !== finalValue ) {
+                                               elem.setAttribute( "class", finalValue );
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       toggleClass: function( value, stateVal ) {
+               var type = typeof value;
+
+               if ( typeof stateVal === "boolean" && type === "string" ) {
+                       return stateVal ? this.addClass( value ) : this.removeClass( value );
+               }
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each( function( i ) {
+                               jQuery( this ).toggleClass(
+                                       value.call( this, i, getClass( this ), stateVal ),
+                                       stateVal
+                               );
+                       } );
+               }
+
+               return this.each( function() {
+                       var className, i, self, classNames;
+
+                       if ( type === "string" ) {
+
+                               // Toggle individual class names
+                               i = 0;
+                               self = jQuery( this );
+                               classNames = value.match( rnothtmlwhite ) || [];
+
+                               while ( ( className = classNames[ i++ ] ) ) {
+
+                                       // Check each className given, space separated list
+                                       if ( self.hasClass( className ) ) {
+                                               self.removeClass( className );
+                                       } else {
+                                               self.addClass( className );
+                                       }
+                               }
+
+                       // Toggle whole class name
+                       } else if ( value === undefined || type === "boolean" ) {
+                               className = getClass( this );
+                               if ( className ) {
+
+                                       // Store className if set
+                                       dataPriv.set( this, "__className__", className );
+                               }
+
+                               // If the element has a class name or if we're passed `false`,
+                               // then remove the whole classname (if there was one, the above saved it).
+                               // Otherwise bring back whatever was previously saved (if anything),
+                               // falling back to the empty string if nothing was stored.
+                               if ( this.setAttribute ) {
+                                       this.setAttribute( "class",
+                                               className || value === false ?
+                                               "" :
+                                               dataPriv.get( this, "__className__" ) || ""
+                                       );
+                               }
+                       }
+               } );
+       },
+
+       hasClass: function( selector ) {
+               var className, elem,
+                       i = 0;
+
+               className = " " + selector + " ";
+               while ( ( elem = this[ i++ ] ) ) {
+                       if ( elem.nodeType === 1 &&
+                               ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+                                       return true;
+                       }
+               }
+
+               return false;
+       }
+} );
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+       val: function( value ) {
+               var hooks, ret, isFunction,
+                       elem = this[ 0 ];
+
+               if ( !arguments.length ) {
+                       if ( elem ) {
+                               hooks = jQuery.valHooks[ elem.type ] ||
+                                       jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+                               if ( hooks &&
+                                       "get" in hooks &&
+                                       ( ret = hooks.get( elem, "value" ) ) !== undefined
+                               ) {
+                                       return ret;
+                               }
+
+                               ret = elem.value;
+
+                               // Handle most common string cases
+                               if ( typeof ret === "string" ) {
+                                       return ret.replace( rreturn, "" );
+                               }
+
+                               // Handle cases where value is null/undef or number
+                               return ret == null ? "" : ret;
+                       }
+
+                       return;
+               }
+
+               isFunction = jQuery.isFunction( value );
+
+               return this.each( function( i ) {
+                       var val;
+
+                       if ( this.nodeType !== 1 ) {
+                               return;
+                       }
+
+                       if ( isFunction ) {
+                               val = value.call( this, i, jQuery( this ).val() );
+                       } else {
+                               val = value;
+                       }
+
+                       // Treat null/undefined as ""; convert numbers to string
+                       if ( val == null ) {
+                               val = "";
+
+                       } else if ( typeof val === "number" ) {
+                               val += "";
+
+                       } else if ( jQuery.isArray( val ) ) {
+                               val = jQuery.map( val, function( value ) {
+                                       return value == null ? "" : value + "";
+                               } );
+                       }
+
+                       hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+                       // If set returns undefined, fall back to normal setting
+                       if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+                               this.value = val;
+                       }
+               } );
+       }
+} );
+
+jQuery.extend( {
+       valHooks: {
+               option: {
+                       get: function( elem ) {
+
+                               var val = jQuery.find.attr( elem, "value" );
+                               return val != null ?
+                                       val :
+
+                                       // Support: IE <=10 - 11 only
+                                       // option.text throws exceptions (#14686, #14858)
+                                       // Strip and collapse whitespace
+                                       // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+                                       stripAndCollapse( jQuery.text( elem ) );
+                       }
+               },
+               select: {
+                       get: function( elem ) {
+                               var value, option, i,
+                                       options = elem.options,
+                                       index = elem.selectedIndex,
+                                       one = elem.type === "select-one",
+                                       values = one ? null : [],
+                                       max = one ? index + 1 : options.length;
+
+                               if ( index < 0 ) {
+                                       i = max;
+
+                               } else {
+                                       i = one ? index : 0;
+                               }
+
+                               // Loop through all the selected options
+                               for ( ; i < max; i++ ) {
+                                       option = options[ i ];
+
+                                       // Support: IE <=9 only
+                                       // IE8-9 doesn't update selected after form reset (#2551)
+                                       if ( ( option.selected || i === index ) &&
+
+                                                       // Don't return options that are disabled or in a disabled optgroup
+                                                       !option.disabled &&
+                                                       ( !option.parentNode.disabled ||
+                                                               !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+                                               // Get the specific value for the option
+                                               value = jQuery( option ).val();
+
+                                               // We don't need an array for one selects
+                                               if ( one ) {
+                                                       return value;
+                                               }
+
+                                               // Multi-Selects return an array
+                                               values.push( value );
+                                       }
+                               }
+
+                               return values;
+                       },
+
+                       set: function( elem, value ) {
+                               var optionSet, option,
+                                       options = elem.options,
+                                       values = jQuery.makeArray( value ),
+                                       i = options.length;
+
+                               while ( i-- ) {
+                                       option = options[ i ];
+
+                                       /* eslint-disable no-cond-assign */
+
+                                       if ( option.selected =
+                                               jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+                                       ) {
+                                               optionSet = true;
+                                       }
+
+                                       /* eslint-enable no-cond-assign */
+                               }
+
+                               // Force browsers to behave consistently when non-matching value is set
+                               if ( !optionSet ) {
+                                       elem.selectedIndex = -1;
+                               }
+                               return values;
+                       }
+               }
+       }
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+       jQuery.valHooks[ this ] = {
+               set: function( elem, value ) {
+                       if ( jQuery.isArray( value ) ) {
+                               return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+                       }
+               }
+       };
+       if ( !support.checkOn ) {
+               jQuery.valHooks[ this ].get = function( elem ) {
+                       return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+               };
+       }
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+       trigger: function( event, data, elem, onlyHandlers ) {
+
+               var i, cur, tmp, bubbleType, ontype, handle, special,
+                       eventPath = [ elem || document ],
+                       type = hasOwn.call( event, "type" ) ? event.type : event,
+                       namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+               cur = tmp = elem = elem || document;
+
+               // Don't do events on text and comment nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               // focus/blur morphs to focusin/out; ensure we're not firing them right now
+               if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+                       return;
+               }
+
+               if ( type.indexOf( "." ) > -1 ) {
+
+                       // Namespaced trigger; create a regexp to match event type in handle()
+                       namespaces = type.split( "." );
+                       type = namespaces.shift();
+                       namespaces.sort();
+               }
+               ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+               // Caller can pass in a jQuery.Event object, Object, or just an event type string
+               event = event[ jQuery.expando ] ?
+                       event :
+                       new jQuery.Event( type, typeof event === "object" && event );
+
+               // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+               event.isTrigger = onlyHandlers ? 2 : 3;
+               event.namespace = namespaces.join( "." );
+               event.rnamespace = event.namespace ?
+                       new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+                       null;
+
+               // Clean up the event in case it is being reused
+               event.result = undefined;
+               if ( !event.target ) {
+                       event.target = elem;
+               }
+
+               // Clone any incoming data and prepend the event, creating the handler arg list
+               data = data == null ?
+                       [ event ] :
+                       jQuery.makeArray( data, [ event ] );
+
+               // Allow special events to draw outside the lines
+               special = jQuery.event.special[ type ] || {};
+               if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+                       return;
+               }
+
+               // Determine event propagation path in advance, per W3C events spec (#9951)
+               // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+               if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+                       bubbleType = special.delegateType || type;
+                       if ( !rfocusMorph.test( bubbleType + type ) ) {
+                               cur = cur.parentNode;
+                       }
+                       for ( ; cur; cur = cur.parentNode ) {
+                               eventPath.push( cur );
+                               tmp = cur;
+                       }
+
+                       // Only add window if we got to document (e.g., not plain obj or detached DOM)
+                       if ( tmp === ( elem.ownerDocument || document ) ) {
+                               eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+                       }
+               }
+
+               // Fire handlers on the event path
+               i = 0;
+               while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+                       event.type = i > 1 ?
+                               bubbleType :
+                               special.bindType || type;
+
+                       // jQuery handler
+                       handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+                               dataPriv.get( cur, "handle" );
+                       if ( handle ) {
+                               handle.apply( cur, data );
+                       }
+
+                       // Native handler
+                       handle = ontype && cur[ ontype ];
+                       if ( handle && handle.apply && acceptData( cur ) ) {
+                               event.result = handle.apply( cur, data );
+                               if ( event.result === false ) {
+                                       event.preventDefault();
+                               }
+                       }
+               }
+               event.type = type;
+
+               // If nobody prevented the default action, do it now
+               if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+                       if ( ( !special._default ||
+                               special._default.apply( eventPath.pop(), data ) === false ) &&
+                               acceptData( elem ) ) {
+
+                               // Call a native DOM method on the target with the same name as the event.
+                               // Don't do default actions on window, that's where global variables be (#6170)
+                               if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+                                       // Don't re-trigger an onFOO event when we call its FOO() method
+                                       tmp = elem[ ontype ];
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = null;
+                                       }
+
+                                       // Prevent re-triggering of the same event, since we already bubbled it above
+                                       jQuery.event.triggered = type;
+                                       elem[ type ]();
+                                       jQuery.event.triggered = undefined;
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = tmp;
+                                       }
+                               }
+                       }
+               }
+
+               return event.result;
+       },
+
+       // Piggyback on a donor event to simulate a different one
+       // Used only for `focus(in | out)` events
+       simulate: function( type, elem, event ) {
+               var e = jQuery.extend(
+                       new jQuery.Event(),
+                       event,
+                       {
+                               type: type,
+                               isSimulated: true
+                       }
+               );
+
+               jQuery.event.trigger( e, null, elem );
+       }
+
+} );
+
+jQuery.fn.extend( {
+
+       trigger: function( type, data ) {
+               return this.each( function() {
+                       jQuery.event.trigger( type, data, this );
+               } );
+       },
+       triggerHandler: function( type, data ) {
+               var elem = this[ 0 ];
+               if ( elem ) {
+                       return jQuery.event.trigger( type, data, elem, true );
+               }
+       }
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+       "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+       "change select submit keydown keypress keyup contextmenu" ).split( " " ),
+       function( i, name ) {
+
+       // Handle event binding
+       jQuery.fn[ name ] = function( data, fn ) {
+               return arguments.length > 0 ?
+                       this.on( name, null, data, fn ) :
+                       this.trigger( name );
+       };
+} );
+
+jQuery.fn.extend( {
+       hover: function( fnOver, fnOut ) {
+               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+       }
+} );
+
+
+
+
+support.focusin = "onfocusin" in window;
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+       jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+               // Attach a single capturing handler on the document while someone wants focusin/focusout
+               var handler = function( event ) {
+                       jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+               };
+
+               jQuery.event.special[ fix ] = {
+                       setup: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = dataPriv.access( doc, fix );
+
+                               if ( !attaches ) {
+                                       doc.addEventListener( orig, handler, true );
+                               }
+                               dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+                       },
+                       teardown: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = dataPriv.access( doc, fix ) - 1;
+
+                               if ( !attaches ) {
+                                       doc.removeEventListener( orig, handler, true );
+                                       dataPriv.remove( doc, fix );
+
+                               } else {
+                                       dataPriv.access( doc, fix, attaches );
+                               }
+                       }
+               };
+       } );
+}
+var location = window.location;
+
+var nonce = jQuery.now();
+
+var rquery = ( /\?/ );
+
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+       var xml;
+       if ( !data || typeof data !== "string" ) {
+               return null;
+       }
+
+       // Support: IE 9 - 11 only
+       // IE throws on parseFromString with invalid input.
+       try {
+               xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+       } catch ( e ) {
+               xml = undefined;
+       }
+
+       if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+               jQuery.error( "Invalid XML: " + data );
+       }
+       return xml;
+};
+
+
+var
+       rbracket = /\[\]$/,
+       rCRLF = /\r?\n/g,
+       rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+       rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+       var name;
+
+       if ( jQuery.isArray( obj ) ) {
+
+               // Serialize array item.
+               jQuery.each( obj, function( i, v ) {
+                       if ( traditional || rbracket.test( prefix ) ) {
+
+                               // Treat each array item as a scalar.
+                               add( prefix, v );
+
+                       } else {
+
+                               // Item is non-scalar (array or object), encode its numeric index.
+                               buildParams(
+                                       prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+                                       v,
+                                       traditional,
+                                       add
+                               );
+                       }
+               } );
+
+       } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+               // Serialize object item.
+               for ( name in obj ) {
+                       buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+               }
+
+       } else {
+
+               // Serialize scalar item.
+               add( prefix, obj );
+       }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+       var prefix,
+               s = [],
+               add = function( key, valueOrFunction ) {
+
+                       // If value is a function, invoke it and use its return value
+                       var value = jQuery.isFunction( valueOrFunction ) ?
+                               valueOrFunction() :
+                               valueOrFunction;
+
+                       s[ s.length ] = encodeURIComponent( key ) + "=" +
+                               encodeURIComponent( value == null ? "" : value );
+               };
+
+       // If an array was passed in, assume that it is an array of form elements.
+       if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+               // Serialize the form elements
+               jQuery.each( a, function() {
+                       add( this.name, this.value );
+               } );
+
+       } else {
+
+               // If traditional, encode the "old" way (the way 1.3.2 or older
+               // did it), otherwise encode params recursively.
+               for ( prefix in a ) {
+                       buildParams( prefix, a[ prefix ], traditional, add );
+               }
+       }
+
+       // Return the resulting serialization
+       return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+       serialize: function() {
+               return jQuery.param( this.serializeArray() );
+       },
+       serializeArray: function() {
+               return this.map( function() {
+
+                       // Can add propHook for "elements" to filter or add form elements
+                       var elements = jQuery.prop( this, "elements" );
+                       return elements ? jQuery.makeArray( elements ) : this;
+               } )
+               .filter( function() {
+                       var type = this.type;
+
+                       // Use .is( ":disabled" ) so that fieldset[disabled] works
+                       return this.name && !jQuery( this ).is( ":disabled" ) &&
+                               rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+                               ( this.checked || !rcheckableType.test( type ) );
+               } )
+               .map( function( i, elem ) {
+                       var val = jQuery( this ).val();
+
+                       if ( val == null ) {
+                               return null;
+                       }
+
+                       if ( jQuery.isArray( val ) ) {
+                               return jQuery.map( val, function( val ) {
+                                       return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+                               } );
+                       }
+
+                       return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+               } ).get();
+       }
+} );
+
+
+var
+       r20 = /%20/g,
+       rhash = /#.*$/,
+       rantiCache = /([?&])_=[^&]*/,
+       rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+       // #7653, #8125, #8152: local protocol detection
+       rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+       rnoContent = /^(?:GET|HEAD)$/,
+       rprotocol = /^\/\//,
+
+       /* Prefilters
+        * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+        * 2) These are called:
+        *    - BEFORE asking for a transport
+        *    - AFTER param serialization (s.data is a string if s.processData is true)
+        * 3) key is the dataType
+        * 4) the catchall symbol "*" can be used
+        * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+        */
+       prefilters = {},
+
+       /* Transports bindings
+        * 1) key is the dataType
+        * 2) the catchall symbol "*" can be used
+        * 3) selection will start with transport dataType and THEN go to "*" if needed
+        */
+       transports = {},
+
+       // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+       allTypes = "*/".concat( "*" ),
+
+       // Anchor tag for parsing the document origin
+       originAnchor = document.createElement( "a" );
+       originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+       // dataTypeExpression is optional and defaults to "*"
+       return function( dataTypeExpression, func ) {
+
+               if ( typeof dataTypeExpression !== "string" ) {
+                       func = dataTypeExpression;
+                       dataTypeExpression = "*";
+               }
+
+               var dataType,
+                       i = 0,
+                       dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
+
+               if ( jQuery.isFunction( func ) ) {
+
+                       // For each dataType in the dataTypeExpression
+                       while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+                               // Prepend if requested
+                               if ( dataType[ 0 ] === "+" ) {
+                                       dataType = dataType.slice( 1 ) || "*";
+                                       ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+                               // Otherwise append
+                               } else {
+                                       ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+                               }
+                       }
+               }
+       };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+       var inspected = {},
+               seekingTransport = ( structure === transports );
+
+       function inspect( dataType ) {
+               var selected;
+               inspected[ dataType ] = true;
+               jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+                       var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+                       if ( typeof dataTypeOrTransport === "string" &&
+                               !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+                               options.dataTypes.unshift( dataTypeOrTransport );
+                               inspect( dataTypeOrTransport );
+                               return false;
+                       } else if ( seekingTransport ) {
+                               return !( selected = dataTypeOrTransport );
+                       }
+               } );
+               return selected;
+       }
+
+       return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+       var key, deep,
+               flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+       for ( key in src ) {
+               if ( src[ key ] !== undefined ) {
+                       ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+               }
+       }
+       if ( deep ) {
+               jQuery.extend( true, target, deep );
+       }
+
+       return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+       var ct, type, finalDataType, firstDataType,
+               contents = s.contents,
+               dataTypes = s.dataTypes;
+
+       // Remove auto dataType and get content-type in the process
+       while ( dataTypes[ 0 ] === "*" ) {
+               dataTypes.shift();
+               if ( ct === undefined ) {
+                       ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+               }
+       }
+
+       // Check if we're dealing with a known content-type
+       if ( ct ) {
+               for ( type in contents ) {
+                       if ( contents[ type ] && contents[ type ].test( ct ) ) {
+                               dataTypes.unshift( type );
+                               break;
+                       }
+               }
+       }
+
+       // Check to see if we have a response for the expected dataType
+       if ( dataTypes[ 0 ] in responses ) {
+               finalDataType = dataTypes[ 0 ];
+       } else {
+
+               // Try convertible dataTypes
+               for ( type in responses ) {
+                       if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+                               finalDataType = type;
+                               break;
+                       }
+                       if ( !firstDataType ) {
+                               firstDataType = type;
+                       }
+               }
+
+               // Or just use first one
+               finalDataType = finalDataType || firstDataType;
+       }
+
+       // If we found a dataType
+       // We add the dataType to the list if needed
+       // and return the corresponding response
+       if ( finalDataType ) {
+               if ( finalDataType !== dataTypes[ 0 ] ) {
+                       dataTypes.unshift( finalDataType );
+               }
+               return responses[ finalDataType ];
+       }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+       var conv2, current, conv, tmp, prev,
+               converters = {},
+
+               // Work with a copy of dataTypes in case we need to modify it for conversion
+               dataTypes = s.dataTypes.slice();
+
+       // Create converters map with lowercased keys
+       if ( dataTypes[ 1 ] ) {
+               for ( conv in s.converters ) {
+                       converters[ conv.toLowerCase() ] = s.converters[ conv ];
+               }
+       }
+
+       current = dataTypes.shift();
+
+       // Convert to each sequential dataType
+       while ( current ) {
+
+               if ( s.responseFields[ current ] ) {
+                       jqXHR[ s.responseFields[ current ] ] = response;
+               }
+
+               // Apply the dataFilter if provided
+               if ( !prev && isSuccess && s.dataFilter ) {
+                       response = s.dataFilter( response, s.dataType );
+               }
+
+               prev = current;
+               current = dataTypes.shift();
+
+               if ( current ) {
+
+                       // There's only work to do if current dataType is non-auto
+                       if ( current === "*" ) {
+
+                               current = prev;
+
+                       // Convert response if prev dataType is non-auto and differs from current
+                       } else if ( prev !== "*" && prev !== current ) {
+
+                               // Seek a direct converter
+                               conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+                               // If none found, seek a pair
+                               if ( !conv ) {
+                                       for ( conv2 in converters ) {
+
+                                               // If conv2 outputs current
+                                               tmp = conv2.split( " " );
+                                               if ( tmp[ 1 ] === current ) {
+
+                                                       // If prev can be converted to accepted input
+                                                       conv = converters[ prev + " " + tmp[ 0 ] ] ||
+                                                               converters[ "* " + tmp[ 0 ] ];
+                                                       if ( conv ) {
+
+                                                               // Condense equivalence converters
+                                                               if ( conv === true ) {
+                                                                       conv = converters[ conv2 ];
+
+                                                               // Otherwise, insert the intermediate dataType
+                                                               } else if ( converters[ conv2 ] !== true ) {
+                                                                       current = tmp[ 0 ];
+                                                                       dataTypes.unshift( tmp[ 1 ] );
+                                                               }
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               // Apply converter (if not an equivalence)
+                               if ( conv !== true ) {
+
+                                       // Unless errors are allowed to bubble, catch and return them
+                                       if ( conv && s.throws ) {
+                                               response = conv( response );
+                                       } else {
+                                               try {
+                                                       response = conv( response );
+                                               } catch ( e ) {
+                                                       return {
+                                                               state: "parsererror",
+                                                               error: conv ? e : "No conversion from " + prev + " to " + current
+                                                       };
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+       // Counter for holding the number of active queries
+       active: 0,
+
+       // Last-Modified header cache for next request
+       lastModified: {},
+       etag: {},
+
+       ajaxSettings: {
+               url: location.href,
+               type: "GET",
+               isLocal: rlocalProtocol.test( location.protocol ),
+               global: true,
+               processData: true,
+               async: true,
+               contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+               /*
+               timeout: 0,
+               data: null,
+               dataType: null,
+               username: null,
+               password: null,
+               cache: null,
+               throws: false,
+               traditional: false,
+               headers: {},
+               */
+
+               accepts: {
+                       "*": allTypes,
+                       text: "text/plain",
+                       html: "text/html",
+                       xml: "application/xml, text/xml",
+                       json: "application/json, text/javascript"
+               },
+
+               contents: {
+                       xml: /\bxml\b/,
+                       html: /\bhtml/,
+                       json: /\bjson\b/
+               },
+
+               responseFields: {
+                       xml: "responseXML",
+                       text: "responseText",
+                       json: "responseJSON"
+               },
+
+               // Data converters
+               // Keys separate source (or catchall "*") and destination types with a single space
+               converters: {
+
+                       // Convert anything to text
+                       "* text": String,
+
+                       // Text to html (true = no transformation)
+                       "text html": true,
+
+                       // Evaluate text as a json expression
+                       "text json": JSON.parse,
+
+                       // Parse text as xml
+                       "text xml": jQuery.parseXML
+               },
+
+               // For options that shouldn't be deep extended:
+               // you can add your own custom options here if
+               // and when you create one that shouldn't be
+               // deep extended (see ajaxExtend)
+               flatOptions: {
+                       url: true,
+                       context: true
+               }
+       },
+
+       // Creates a full fledged settings object into target
+       // with both ajaxSettings and settings fields.
+       // If target is omitted, writes into ajaxSettings.
+       ajaxSetup: function( target, settings ) {
+               return settings ?
+
+                       // Building a settings object
+                       ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+                       // Extending ajaxSettings
+                       ajaxExtend( jQuery.ajaxSettings, target );
+       },
+
+       ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+       ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+       // Main method
+       ajax: function( url, options ) {
+
+               // If url is an object, simulate pre-1.5 signature
+               if ( typeof url === "object" ) {
+                       options = url;
+                       url = undefined;
+               }
+
+               // Force options to be an object
+               options = options || {};
+
+               var transport,
+
+                       // URL without anti-cache param
+                       cacheURL,
+
+                       // Response headers
+                       responseHeadersString,
+                       responseHeaders,
+
+                       // timeout handle
+                       timeoutTimer,
+
+                       // Url cleanup var
+                       urlAnchor,
+
+                       // Request state (becomes false upon send and true upon completion)
+                       completed,
+
+                       // To know if global events are to be dispatched
+                       fireGlobals,
+
+                       // Loop variable
+                       i,
+
+                       // uncached part of the url
+                       uncached,
+
+                       // Create the final options object
+                       s = jQuery.ajaxSetup( {}, options ),
+
+                       // Callbacks context
+                       callbackContext = s.context || s,
+
+                       // Context for global events is callbackContext if it is a DOM node or jQuery collection
+                       globalEventContext = s.context &&
+                               ( callbackContext.nodeType || callbackContext.jquery ) ?
+                                       jQuery( callbackContext ) :
+                                       jQuery.event,
+
+                       // Deferreds
+                       deferred = jQuery.Deferred(),
+                       completeDeferred = jQuery.Callbacks( "once memory" ),
+
+                       // Status-dependent callbacks
+                       statusCode = s.statusCode || {},
+
+                       // Headers (they are sent all at once)
+                       requestHeaders = {},
+                       requestHeadersNames = {},
+
+                       // Default abort message
+                       strAbort = "canceled",
+
+                       // Fake xhr
+                       jqXHR = {
+                               readyState: 0,
+
+                               // Builds headers hashtable if needed
+                               getResponseHeader: function( key ) {
+                                       var match;
+                                       if ( completed ) {
+                                               if ( !responseHeaders ) {
+                                                       responseHeaders = {};
+                                                       while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+                                                               responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+                                                       }
+                                               }
+                                               match = responseHeaders[ key.toLowerCase() ];
+                                       }
+                                       return match == null ? null : match;
+                               },
+
+                               // Raw string
+                               getAllResponseHeaders: function() {
+                                       return completed ? responseHeadersString : null;
+                               },
+
+                               // Caches the header
+                               setRequestHeader: function( name, value ) {
+                                       if ( completed == null ) {
+                                               name = requestHeadersNames[ name.toLowerCase() ] =
+                                                       requestHeadersNames[ name.toLowerCase() ] || name;
+                                               requestHeaders[ name ] = value;
+                                       }
+                                       return this;
+                               },
+
+                               // Overrides response content-type header
+                               overrideMimeType: function( type ) {
+                                       if ( completed == null ) {
+                                               s.mimeType = type;
+                                       }
+                                       return this;
+                               },
+
+                               // Status-dependent callbacks
+                               statusCode: function( map ) {
+                                       var code;
+                                       if ( map ) {
+                                               if ( completed ) {
+
+                                                       // Execute the appropriate callbacks
+                                                       jqXHR.always( map[ jqXHR.status ] );
+                                               } else {
+
+                                                       // Lazy-add the new callbacks in a way that preserves old ones
+                                                       for ( code in map ) {
+                                                               statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+                                                       }
+                                               }
+                                       }
+                                       return this;
+                               },
+
+                               // Cancel the request
+                               abort: function( statusText ) {
+                                       var finalText = statusText || strAbort;
+                                       if ( transport ) {
+                                               transport.abort( finalText );
+                                       }
+                                       done( 0, finalText );
+                                       return this;
+                               }
+                       };
+
+               // Attach deferreds
+               deferred.promise( jqXHR );
+
+               // Add protocol if not provided (prefilters might expect it)
+               // Handle falsy url in the settings object (#10093: consistency with old signature)
+               // We also use the url parameter if available
+               s.url = ( ( url || s.url || location.href ) + "" )
+                       .replace( rprotocol, location.protocol + "//" );
+
+               // Alias method option to type as per ticket #12004
+               s.type = options.method || options.type || s.method || s.type;
+
+               // Extract dataTypes list
+               s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
+
+               // A cross-domain request is in order when the origin doesn't match the current origin.
+               if ( s.crossDomain == null ) {
+                       urlAnchor = document.createElement( "a" );
+
+                       // Support: IE <=8 - 11, Edge 12 - 13
+                       // IE throws exception on accessing the href property if url is malformed,
+                       // e.g. http://example.com:80x/
+                       try {
+                               urlAnchor.href = s.url;
+
+                               // Support: IE <=8 - 11 only
+                               // Anchor's host property isn't correctly set when s.url is relative
+                               urlAnchor.href = urlAnchor.href;
+                               s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+                                       urlAnchor.protocol + "//" + urlAnchor.host;
+                       } catch ( e ) {
+
+                               // If there is an error parsing the URL, assume it is crossDomain,
+                               // it can be rejected by the transport if it is invalid
+                               s.crossDomain = true;
+                       }
+               }
+
+               // Convert data if not already a string
+               if ( s.data && s.processData && typeof s.data !== "string" ) {
+                       s.data = jQuery.param( s.data, s.traditional );
+               }
+
+               // Apply prefilters
+               inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+               // If request was aborted inside a prefilter, stop there
+               if ( completed ) {
+                       return jqXHR;
+               }
+
+               // We can fire global events as of now if asked to
+               // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+               fireGlobals = jQuery.event && s.global;
+
+               // Watch for a new set of requests
+               if ( fireGlobals && jQuery.active++ === 0 ) {
+                       jQuery.event.trigger( "ajaxStart" );
+               }
+
+               // Uppercase the type
+               s.type = s.type.toUpperCase();
+
+               // Determine if request has content
+               s.hasContent = !rnoContent.test( s.type );
+
+               // Save the URL in case we're toying with the If-Modified-Since
+               // and/or If-None-Match header later on
+               // Remove hash to simplify url manipulation
+               cacheURL = s.url.replace( rhash, "" );
+
+               // More options handling for requests with no content
+               if ( !s.hasContent ) {
+
+                       // Remember the hash so we can put it back
+                       uncached = s.url.slice( cacheURL.length );
+
+                       // If data is available, append data to url
+                       if ( s.data ) {
+                               cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+                               // #9682: remove data so that it's not used in an eventual retry
+                               delete s.data;
+                       }
+
+                       // Add or update anti-cache param if needed
+                       if ( s.cache === false ) {
+                               cacheURL = cacheURL.replace( rantiCache, "$1" );
+                               uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+                       }
+
+                       // Put hash and anti-cache on the URL that will be requested (gh-1732)
+                       s.url = cacheURL + uncached;
+
+               // Change '%20' to '+' if this is encoded form body content (gh-2658)
+               } else if ( s.data && s.processData &&
+                       ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+                       s.data = s.data.replace( r20, "+" );
+               }
+
+               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+               if ( s.ifModified ) {
+                       if ( jQuery.lastModified[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+                       }
+                       if ( jQuery.etag[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+                       }
+               }
+
+               // Set the correct header, if data is being sent
+               if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+                       jqXHR.setRequestHeader( "Content-Type", s.contentType );
+               }
+
+               // Set the Accepts header for the server, depending on the dataType
+               jqXHR.setRequestHeader(
+                       "Accept",
+                       s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+                               s.accepts[ s.dataTypes[ 0 ] ] +
+                                       ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+                               s.accepts[ "*" ]
+               );
+
+               // Check for headers option
+               for ( i in s.headers ) {
+                       jqXHR.setRequestHeader( i, s.headers[ i ] );
+               }
+
+               // Allow custom headers/mimetypes and early abort
+               if ( s.beforeSend &&
+                       ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+                       // Abort if not done already and return
+                       return jqXHR.abort();
+               }
+
+               // Aborting is no longer a cancellation
+               strAbort = "abort";
+
+               // Install callbacks on deferreds
+               completeDeferred.add( s.complete );
+               jqXHR.done( s.success );
+               jqXHR.fail( s.error );
+
+               // Get transport
+               transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+               // If no transport, we auto-abort
+               if ( !transport ) {
+                       done( -1, "No Transport" );
+               } else {
+                       jqXHR.readyState = 1;
+
+                       // Send global event
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+                       }
+
+                       // If request was aborted inside ajaxSend, stop there
+                       if ( completed ) {
+                               return jqXHR;
+                       }
+
+                       // Timeout
+                       if ( s.async && s.timeout > 0 ) {
+                               timeoutTimer = window.setTimeout( function() {
+                                       jqXHR.abort( "timeout" );
+                               }, s.timeout );
+                       }
+
+                       try {
+                               completed = false;
+                               transport.send( requestHeaders, done );
+                       } catch ( e ) {
+
+                               // Rethrow post-completion exceptions
+                               if ( completed ) {
+                                       throw e;
+                               }
+
+                               // Propagate others as results
+                               done( -1, e );
+                       }
+               }
+
+               // Callback for when everything is done
+               function done( status, nativeStatusText, responses, headers ) {
+                       var isSuccess, success, error, response, modified,
+                               statusText = nativeStatusText;
+
+                       // Ignore repeat invocations
+                       if ( completed ) {
+                               return;
+                       }
+
+                       completed = true;
+
+                       // Clear timeout if it exists
+                       if ( timeoutTimer ) {
+                               window.clearTimeout( timeoutTimer );
+                       }
+
+                       // Dereference transport for early garbage collection
+                       // (no matter how long the jqXHR object will be used)
+                       transport = undefined;
+
+                       // Cache response headers
+                       responseHeadersString = headers || "";
+
+                       // Set readyState
+                       jqXHR.readyState = status > 0 ? 4 : 0;
+
+                       // Determine if successful
+                       isSuccess = status >= 200 && status < 300 || status === 304;
+
+                       // Get response data
+                       if ( responses ) {
+                               response = ajaxHandleResponses( s, jqXHR, responses );
+                       }
+
+                       // Convert no matter what (that way responseXXX fields are always set)
+                       response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+                       // If successful, handle type chaining
+                       if ( isSuccess ) {
+
+                               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+                               if ( s.ifModified ) {
+                                       modified = jqXHR.getResponseHeader( "Last-Modified" );
+                                       if ( modified ) {
+                                               jQuery.lastModified[ cacheURL ] = modified;
+                                       }
+                                       modified = jqXHR.getResponseHeader( "etag" );
+                                       if ( modified ) {
+                                               jQuery.etag[ cacheURL ] = modified;
+                                       }
+                               }
+
+                               // if no content
+                               if ( status === 204 || s.type === "HEAD" ) {
+                                       statusText = "nocontent";
+
+                               // if not modified
+                               } else if ( status === 304 ) {
+                                       statusText = "notmodified";
+
+                               // If we have data, let's convert it
+                               } else {
+                                       statusText = response.state;
+                                       success = response.data;
+                                       error = response.error;
+                                       isSuccess = !error;
+                               }
+                       } else {
+
+                               // Extract error from statusText and normalize for non-aborts
+                               error = statusText;
+                               if ( status || !statusText ) {
+                                       statusText = "error";
+                                       if ( status < 0 ) {
+                                               status = 0;
+                                       }
+                               }
+                       }
+
+                       // Set data for the fake xhr object
+                       jqXHR.status = status;
+                       jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+                       // Success/Error
+                       if ( isSuccess ) {
+                               deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+                       } else {
+                               deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+                       }
+
+                       // Status-dependent callbacks
+                       jqXHR.statusCode( statusCode );
+                       statusCode = undefined;
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+                                       [ jqXHR, s, isSuccess ? success : error ] );
+                       }
+
+                       // Complete
+                       completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+                               // Handle the global AJAX counter
+                               if ( !( --jQuery.active ) ) {
+                                       jQuery.event.trigger( "ajaxStop" );
+                               }
+                       }
+               }
+
+               return jqXHR;
+       },
+
+       getJSON: function( url, data, callback ) {
+               return jQuery.get( url, data, callback, "json" );
+       },
+
+       getScript: function( url, callback ) {
+               return jQuery.get( url, undefined, callback, "script" );
+       }
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+       jQuery[ method ] = function( url, data, callback, type ) {
+
+               // Shift arguments if data argument was omitted
+               if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
+                       callback = data;
+                       data = undefined;
+               }
+
+               // The url can be an options object (which then must have .url)
+               return jQuery.ajax( jQuery.extend( {
+                       url: url,
+                       type: method,
+                       dataType: type,
+                       data: data,
+                       success: callback
+               }, jQuery.isPlainObject( url ) && url ) );
+       };
+} );
+
+
+jQuery._evalUrl = function( url ) {
+       return jQuery.ajax( {
+               url: url,
+
+               // Make this explicit, since user can override this through ajaxSetup (#11264)
+               type: "GET",
+               dataType: "script",
+               cache: true,
+               async: false,
+               global: false,
+               "throws": true
+       } );
+};
+
+
+jQuery.fn.extend( {
+       wrapAll: function( html ) {
+               var wrap;
+
+               if ( this[ 0 ] ) {
+                       if ( jQuery.isFunction( html ) ) {
+                               html = html.call( this[ 0 ] );
+                       }
+
+                       // The elements to wrap the target around
+                       wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+                       if ( this[ 0 ].parentNode ) {
+                               wrap.insertBefore( this[ 0 ] );
+                       }
+
+                       wrap.map( function() {
+                               var elem = this;
+
+                               while ( elem.firstElementChild ) {
+                                       elem = elem.firstElementChild;
+                               }
+
+                               return elem;
+                       } ).append( this );
+               }
+
+               return this;
+       },
+
+       wrapInner: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each( function( i ) {
+                               jQuery( this ).wrapInner( html.call( this, i ) );
+                       } );
+               }
+
+               return this.each( function() {
+                       var self = jQuery( this ),
+                               contents = self.contents();
+
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
+
+                       } else {
+                               self.append( html );
+                       }
+               } );
+       },
+
+       wrap: function( html ) {
+               var isFunction = jQuery.isFunction( html );
+
+               return this.each( function( i ) {
+                       jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+               } );
+       },
+
+       unwrap: function( selector ) {
+               this.parent( selector ).not( "body" ).each( function() {
+                       jQuery( this ).replaceWith( this.childNodes );
+               } );
+               return this;
+       }
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+       return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+       return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+jQuery.ajaxSettings.xhr = function() {
+       try {
+               return new window.XMLHttpRequest();
+       } catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+               // File protocol always yields status code 0, assume 200
+               0: 200,
+
+               // Support: IE <=9 only
+               // #1450: sometimes IE returns 1223 when it should be 204
+               1223: 204
+       },
+       xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+       var callback, errorCallback;
+
+       // Cross domain only allowed if supported through XMLHttpRequest
+       if ( support.cors || xhrSupported && !options.crossDomain ) {
+               return {
+                       send: function( headers, complete ) {
+                               var i,
+                                       xhr = options.xhr();
+
+                               xhr.open(
+                                       options.type,
+                                       options.url,
+                                       options.async,
+                                       options.username,
+                                       options.password
+                               );
+
+                               // Apply custom fields if provided
+                               if ( options.xhrFields ) {
+                                       for ( i in options.xhrFields ) {
+                                               xhr[ i ] = options.xhrFields[ i ];
+                                       }
+                               }
+
+                               // Override mime type if needed
+                               if ( options.mimeType && xhr.overrideMimeType ) {
+                                       xhr.overrideMimeType( options.mimeType );
+                               }
+
+                               // X-Requested-With header
+                               // For cross-domain requests, seeing as conditions for a preflight are
+                               // akin to a jigsaw puzzle, we simply never set it to be sure.
+                               // (it can always be set on a per-request basis or even using ajaxSetup)
+                               // For same-domain requests, won't change header if already provided.
+                               if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+                                       headers[ "X-Requested-With" ] = "XMLHttpRequest";
+                               }
+
+                               // Set headers
+                               for ( i in headers ) {
+                                       xhr.setRequestHeader( i, headers[ i ] );
+                               }
+
+                               // Callback
+                               callback = function( type ) {
+                                       return function() {
+                                               if ( callback ) {
+                                                       callback = errorCallback = xhr.onload =
+                                                               xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+
+                                                       if ( type === "abort" ) {
+                                                               xhr.abort();
+                                                       } else if ( type === "error" ) {
+
+                                                               // Support: IE <=9 only
+                                                               // On a manual native abort, IE9 throws
+                                                               // errors on any property access that is not readyState
+                                                               if ( typeof xhr.status !== "number" ) {
+                                                                       complete( 0, "error" );
+                                                               } else {
+                                                                       complete(
+
+                                                                               // File: protocol always yields status 0; see #8605, #14207
+                                                                               xhr.status,
+                                                                               xhr.statusText
+                                                                       );
+                                                               }
+                                                       } else {
+                                                               complete(
+                                                                       xhrSuccessStatus[ xhr.status ] || xhr.status,
+                                                                       xhr.statusText,
+
+                                                                       // Support: IE <=9 only
+                                                                       // IE9 has no XHR2 but throws on binary (trac-11426)
+                                                                       // For XHR2 non-text, let the caller handle it (gh-2498)
+                                                                       ( xhr.responseType || "text" ) !== "text"  ||
+                                                                       typeof xhr.responseText !== "string" ?
+                                                                               { binary: xhr.response } :
+                                                                               { text: xhr.responseText },
+                                                                       xhr.getAllResponseHeaders()
+                                                               );
+                                                       }
+                                               }
+                                       };
+                               };
+
+                               // Listen to events
+                               xhr.onload = callback();
+                               errorCallback = xhr.onerror = callback( "error" );
+
+                               // Support: IE 9 only
+                               // Use onreadystatechange to replace onabort
+                               // to handle uncaught aborts
+                               if ( xhr.onabort !== undefined ) {
+                                       xhr.onabort = errorCallback;
+                               } else {
+                                       xhr.onreadystatechange = function() {
+
+                                               // Check readyState before timeout as it changes
+                                               if ( xhr.readyState === 4 ) {
+
+                                                       // Allow onerror to be called first,
+                                                       // but that will not handle a native abort
+                                                       // Also, save errorCallback to a variable
+                                                       // as xhr.onerror cannot be accessed
+                                                       window.setTimeout( function() {
+                                                               if ( callback ) {
+                                                                       errorCallback();
+                                                               }
+                                                       } );
+                                               }
+                                       };
+                               }
+
+                               // Create the abort callback
+                               callback = callback( "abort" );
+
+                               try {
+
+                                       // Do send the request (this may raise an exception)
+                                       xhr.send( options.hasContent && options.data || null );
+                               } catch ( e ) {
+
+                                       // #14683: Only rethrow if this hasn't been notified as an error yet
+                                       if ( callback ) {
+                                               throw e;
+                                       }
+                               }
+                       },
+
+                       abort: function() {
+                               if ( callback ) {
+                                       callback();
+                               }
+                       }
+               };
+       }
+} );
+
+
+
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+       if ( s.crossDomain ) {
+               s.contents.script = false;
+       }
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+       accepts: {
+               script: "text/javascript, application/javascript, " +
+                       "application/ecmascript, application/x-ecmascript"
+       },
+       contents: {
+               script: /\b(?:java|ecma)script\b/
+       },
+       converters: {
+               "text script": function( text ) {
+                       jQuery.globalEval( text );
+                       return text;
+               }
+       }
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+       if ( s.cache === undefined ) {
+               s.cache = false;
+       }
+       if ( s.crossDomain ) {
+               s.type = "GET";
+       }
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+       // This transport only deals with cross domain requests
+       if ( s.crossDomain ) {
+               var script, callback;
+               return {
+                       send: function( _, complete ) {
+                               script = jQuery( "<script>" ).prop( {
+                                       charset: s.scriptCharset,
+                                       src: s.url
+                               } ).on(
+                                       "load error",
+                                       callback = function( evt ) {
+                                               script.remove();
+                                               callback = null;
+                                               if ( evt ) {
+                                                       complete( evt.type === "error" ? 404 : 200, evt.type );
+                                               }
+                                       }
+                               );
+
+                               // Use native DOM manipulation to avoid our domManip AJAX trickery
+                               document.head.appendChild( script[ 0 ] );
+                       },
+                       abort: function() {
+                               if ( callback ) {
+                                       callback();
+                               }
+                       }
+               };
+       }
+} );
+
+
+
+
+var oldCallbacks = [],
+       rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+       jsonp: "callback",
+       jsonpCallback: function() {
+               var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+               this[ callback ] = true;
+               return callback;
+       }
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+       var callbackName, overwritten, responseContainer,
+               jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+                       "url" :
+                       typeof s.data === "string" &&
+                               ( s.contentType || "" )
+                                       .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+                               rjsonp.test( s.data ) && "data"
+               );
+
+       // Handle iff the expected data type is "jsonp" or we have a parameter to set
+       if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+               // Get callback name, remembering preexisting value associated with it
+               callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+                       s.jsonpCallback() :
+                       s.jsonpCallback;
+
+               // Insert callback into url or form data
+               if ( jsonProp ) {
+                       s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+               } else if ( s.jsonp !== false ) {
+                       s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+               }
+
+               // Use data converter to retrieve json after script execution
+               s.converters[ "script json" ] = function() {
+                       if ( !responseContainer ) {
+                               jQuery.error( callbackName + " was not called" );
+                       }
+                       return responseContainer[ 0 ];
+               };
+
+               // Force json dataType
+               s.dataTypes[ 0 ] = "json";
+
+               // Install callback
+               overwritten = window[ callbackName ];
+               window[ callbackName ] = function() {
+                       responseContainer = arguments;
+               };
+
+               // Clean-up function (fires after converters)
+               jqXHR.always( function() {
+
+                       // If previous value didn't exist - remove it
+                       if ( overwritten === undefined ) {
+                               jQuery( window ).removeProp( callbackName );
+
+                       // Otherwise restore preexisting value
+                       } else {
+                               window[ callbackName ] = overwritten;
+                       }
+
+                       // Save back as free
+                       if ( s[ callbackName ] ) {
+
+                               // Make sure that re-using the options doesn't screw things around
+                               s.jsonpCallback = originalSettings.jsonpCallback;
+
+                               // Save the callback name for future use
+                               oldCallbacks.push( callbackName );
+                       }
+
+                       // Call if it was a function and we have a response
+                       if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+                               overwritten( responseContainer[ 0 ] );
+                       }
+
+                       responseContainer = overwritten = undefined;
+               } );
+
+               // Delegate to script
+               return "script";
+       }
+} );
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+       var body = document.implementation.createHTMLDocument( "" ).body;
+       body.innerHTML = "<form></form><form></form>";
+       return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+       if ( typeof data !== "string" ) {
+               return [];
+       }
+       if ( typeof context === "boolean" ) {
+               keepScripts = context;
+               context = false;
+       }
+
+       var base, parsed, scripts;
+
+       if ( !context ) {
+
+               // Stop scripts or inline event handlers from being executed immediately
+               // by using document.implementation
+               if ( support.createHTMLDocument ) {
+                       context = document.implementation.createHTMLDocument( "" );
+
+                       // Set the base href for the created document
+                       // so any parsed elements with URLs
+                       // are based on the document's URL (gh-2965)
+                       base = context.createElement( "base" );
+                       base.href = document.location.href;
+                       context.head.appendChild( base );
+               } else {
+                       context = document;
+               }
+       }
+
+       parsed = rsingleTag.exec( data );
+       scripts = !keepScripts && [];
+
+       // Single tag
+       if ( parsed ) {
+               return [ context.createElement( parsed[ 1 ] ) ];
+       }
+
+       parsed = buildFragment( [ data ], context, scripts );
+
+       if ( scripts && scripts.length ) {
+               jQuery( scripts ).remove();
+       }
+
+       return jQuery.merge( [], parsed.childNodes );
+};
+
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+       var selector, type, response,
+               self = this,
+               off = url.indexOf( " " );
+
+       if ( off > -1 ) {
+               selector = stripAndCollapse( url.slice( off ) );
+               url = url.slice( 0, off );
+       }
+
+       // If it's a function
+       if ( jQuery.isFunction( params ) ) {
+
+               // We assume that it's the callback
+               callback = params;
+               params = undefined;
+
+       // Otherwise, build a param string
+       } else if ( params && typeof params === "object" ) {
+               type = "POST";
+       }
+
+       // If we have elements to modify, make the request
+       if ( self.length > 0 ) {
+               jQuery.ajax( {
+                       url: url,
+
+                       // If "type" variable is undefined, then "GET" method will be used.
+                       // Make value of this field explicit since
+                       // user can override it through ajaxSetup method
+                       type: type || "GET",
+                       dataType: "html",
+                       data: params
+               } ).done( function( responseText ) {
+
+                       // Save response for use in complete callback
+                       response = arguments;
+
+                       self.html( selector ?
+
+                               // If a selector was specified, locate the right elements in a dummy div
+                               // Exclude scripts to avoid IE 'Permission Denied' errors
+                               jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+                               // Otherwise use the full result
+                               responseText );
+
+               // If the request succeeds, this function gets "data", "status", "jqXHR"
+               // but they are ignored because response was set above.
+               // If it fails, this function gets "jqXHR", "status", "error"
+               } ).always( callback && function( jqXHR, status ) {
+                       self.each( function() {
+                               callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+                       } );
+               } );
+       }
+
+       return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+       "ajaxStart",
+       "ajaxStop",
+       "ajaxComplete",
+       "ajaxError",
+       "ajaxSuccess",
+       "ajaxSend"
+], function( i, type ) {
+       jQuery.fn[ type ] = function( fn ) {
+               return this.on( type, fn );
+       };
+} );
+
+
+
+
+jQuery.expr.pseudos.animated = function( elem ) {
+       return jQuery.grep( jQuery.timers, function( fn ) {
+               return elem === fn.elem;
+       } ).length;
+};
+
+
+
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+       return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+       setOffset: function( elem, options, i ) {
+               var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+                       position = jQuery.css( elem, "position" ),
+                       curElem = jQuery( elem ),
+                       props = {};
+
+               // Set position first, in-case top/left are set even on static elem
+               if ( position === "static" ) {
+                       elem.style.position = "relative";
+               }
+
+               curOffset = curElem.offset();
+               curCSSTop = jQuery.css( elem, "top" );
+               curCSSLeft = jQuery.css( elem, "left" );
+               calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+                       ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+               // Need to be able to calculate position if either
+               // top or left is auto and position is either absolute or fixed
+               if ( calculatePosition ) {
+                       curPosition = curElem.position();
+                       curTop = curPosition.top;
+                       curLeft = curPosition.left;
+
+               } else {
+                       curTop = parseFloat( curCSSTop ) || 0;
+                       curLeft = parseFloat( curCSSLeft ) || 0;
+               }
+
+               if ( jQuery.isFunction( options ) ) {
+
+                       // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+                       options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+               }
+
+               if ( options.top != null ) {
+                       props.top = ( options.top - curOffset.top ) + curTop;
+               }
+               if ( options.left != null ) {
+                       props.left = ( options.left - curOffset.left ) + curLeft;
+               }
+
+               if ( "using" in options ) {
+                       options.using.call( elem, props );
+
+               } else {
+                       curElem.css( props );
+               }
+       }
+};
+
+jQuery.fn.extend( {
+       offset: function( options ) {
+
+               // Preserve chaining for setter
+               if ( arguments.length ) {
+                       return options === undefined ?
+                               this :
+                               this.each( function( i ) {
+                                       jQuery.offset.setOffset( this, options, i );
+                               } );
+               }
+
+               var docElem, win, rect, doc,
+                       elem = this[ 0 ];
+
+               if ( !elem ) {
+                       return;
+               }
+
+               // Support: IE <=11 only
+               // Running getBoundingClientRect on a
+               // disconnected node in IE throws an error
+               if ( !elem.getClientRects().length ) {
+                       return { top: 0, left: 0 };
+               }
+
+               rect = elem.getBoundingClientRect();
+
+               // Make sure element is not hidden (display: none)
+               if ( rect.width || rect.height ) {
+                       doc = elem.ownerDocument;
+                       win = getWindow( doc );
+                       docElem = doc.documentElement;
+
+                       return {
+                               top: rect.top + win.pageYOffset - docElem.clientTop,
+                               left: rect.left + win.pageXOffset - docElem.clientLeft
+                       };
+               }
+
+               // Return zeros for disconnected and hidden elements (gh-2310)
+               return rect;
+       },
+
+       position: function() {
+               if ( !this[ 0 ] ) {
+                       return;
+               }
+
+               var offsetParent, offset,
+                       elem = this[ 0 ],
+                       parentOffset = { top: 0, left: 0 };
+
+               // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+               // because it is its only offset parent
+               if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+                       // Assume getBoundingClientRect is there when computed position is fixed
+                       offset = elem.getBoundingClientRect();
+
+               } else {
+
+                       // Get *real* offsetParent
+                       offsetParent = this.offsetParent();
+
+                       // Get correct offsets
+                       offset = this.offset();
+                       if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+                               parentOffset = offsetParent.offset();
+                       }
+
+                       // Add offsetParent borders
+                       parentOffset = {
+                               top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+                               left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+                       };
+               }
+
+               // Subtract parent offsets and element margins
+               return {
+                       top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+                       left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+               };
+       },
+
+       // This method will return documentElement in the following cases:
+       // 1) For the element inside the iframe without offsetParent, this method will return
+       //    documentElement of the parent window
+       // 2) For the hidden or detached element
+       // 3) For body or html element, i.e. in case of the html node - it will return itself
+       //
+       // but those exceptions were never presented as a real life use-cases
+       // and might be considered as more preferable results.
+       //
+       // This logic, however, is not guaranteed and can change at any point in the future
+       offsetParent: function() {
+               return this.map( function() {
+                       var offsetParent = this.offsetParent;
+
+                       while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+                               offsetParent = offsetParent.offsetParent;
+                       }
+
+                       return offsetParent || documentElement;
+               } );
+       }
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+       var top = "pageYOffset" === prop;
+
+       jQuery.fn[ method ] = function( val ) {
+               return access( this, function( elem, method, val ) {
+                       var win = getWindow( elem );
+
+                       if ( val === undefined ) {
+                               return win ? win[ prop ] : elem[ method ];
+                       }
+
+                       if ( win ) {
+                               win.scrollTo(
+                                       !top ? val : win.pageXOffset,
+                                       top ? val : win.pageYOffset
+                               );
+
+                       } else {
+                               elem[ method ] = val;
+                       }
+               }, method, val, arguments.length );
+       };
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+       jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+               function( elem, computed ) {
+                       if ( computed ) {
+                               computed = curCSS( elem, prop );
+
+                               // If curCSS returns percentage, fallback to offset
+                               return rnumnonpx.test( computed ) ?
+                                       jQuery( elem ).position()[ prop ] + "px" :
+                                       computed;
+                       }
+               }
+       );
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+       jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+               function( defaultExtra, funcName ) {
+
+               // Margin is only for outerHeight, outerWidth
+               jQuery.fn[ funcName ] = function( margin, value ) {
+                       var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+                               extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+                       return access( this, function( elem, type, value ) {
+                               var doc;
+
+                               if ( jQuery.isWindow( elem ) ) {
+
+                                       // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+                                       return funcName.indexOf( "outer" ) === 0 ?
+                                               elem[ "inner" + name ] :
+                                               elem.document.documentElement[ "client" + name ];
+                               }
+
+                               // Get document width or height
+                               if ( elem.nodeType === 9 ) {
+                                       doc = elem.documentElement;
+
+                                       // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+                                       // whichever is greatest
+                                       return Math.max(
+                                               elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+                                               elem.body[ "offset" + name ], doc[ "offset" + name ],
+                                               doc[ "client" + name ]
+                                       );
+                               }
+
+                               return value === undefined ?
+
+                                       // Get width or height on the element, requesting but not forcing parseFloat
+                                       jQuery.css( elem, type, extra ) :
+
+                                       // Set width or height on the element
+                                       jQuery.style( elem, type, value, extra );
+                       }, type, chainable ? margin : undefined, chainable );
+               };
+       } );
+} );
+
+
+jQuery.fn.extend( {
+
+       bind: function( types, data, fn ) {
+               return this.on( types, null, data, fn );
+       },
+       unbind: function( types, fn ) {
+               return this.off( types, null, fn );
+       },
+
+       delegate: function( selector, types, data, fn ) {
+               return this.on( types, selector, data, fn );
+       },
+       undelegate: function( selector, types, fn ) {
+
+               // ( namespace ) or ( selector, types [, fn] )
+               return arguments.length === 1 ?
+                       this.off( selector, "**" ) :
+                       this.off( types, selector || "**", fn );
+       }
+} );
+
+jQuery.parseJSON = JSON.parse;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+       define( "jquery", [], function() {
+               return jQuery;
+       } );
+}
+
+
+
+
+var
+
+       // Map over jQuery in case of overwrite
+       _jQuery = window.jQuery,
+
+       // Map over the $ in case of overwrite
+       _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+       if ( window.$ === jQuery ) {
+               window.$ = _$;
+       }
+
+       if ( deep && window.jQuery === jQuery ) {
+               window.jQuery = _jQuery;
+       }
+
+       return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+       window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+
+return jQuery;
+} );
diff --git a/js/jquery/dist/jquery.min.js b/js/jquery/dist/jquery.min.js
new file mode 100644 (file)
index 0000000..4c5be4c
--- /dev/null
@@ -0,0 +1,4 @@
+/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),
+a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:X.test(a)?JSON.parse(a):a)}function $(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=Z(c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),$(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=$(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var _=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,aa=new RegExp("^(?:([+-])=|)("+_+")([a-z%]*)$","i"),ba=["Top","Right","Bottom","Left"],ca=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function ea(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&aa.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var fa={};function ga(a){var b,c=a.ownerDocument,d=a.nodeName,e=fa[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),fa[d]=e,e)}function ha(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ca(d)&&(e[f]=ga(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ha(this,!0)},hide:function(){return ha(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ca(this)?r(this).show():r(this).hide()})}});var ia=/^(?:checkbox|radio)$/i,ja=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var oa=/<|&#?\w+;/;function pa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(oa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ja.exec(f)||["",""])[1].toLowerCase(),i=la[h]||la._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==wa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===wa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ua:va,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:va,isPropagationStopped:va,isImmediatePropagationStopped:va,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ua,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ua,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ua,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&ra.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&sa.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return xa(this,a,b,c,d)},one:function(a,b,c,d){return xa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=va),this.each(function(){r.event.remove(this,a,c,b)})}});var ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/<script|<style|<link/i,Aa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ba=/^true\/(.*)/,Ca=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ha(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ia.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ia(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,ma(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Fa),l=0;l<i;l++)j=h[l],ka.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ca,""),k))}return a}function Ja(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(ma(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&na(ma(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(ya,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);if(b)if(c)for(f=f||ma(a),g=g||ma(h),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);else Ga(a,h);return g=ma(h,"script"),g.length>0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(ma(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ia(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(ma(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ka=/^margin/,La=new RegExp("^("+_+")(?!px)[a-z%]+$","i"),Ma=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",qa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,qa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Na(a,b,c){var d,e,f,g,h=a.style;return c=c||Ma(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&La.test(g)&&Ka.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Oa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Pa=/^(none|table(?!-c[ea]).+)/,Qa={position:"absolute",visibility:"hidden",display:"block"},Ra={letterSpacing:"0",fontWeight:"400"},Sa=["Webkit","Moz","ms"],Ta=d.createElement("div").style;function Ua(a){if(a in Ta)return a;var b=a[0].toUpperCase()+a.slice(1),c=Sa.length;while(c--)if(a=Sa[c]+b,a in Ta)return a}function Va(a,b,c){var d=aa.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Wa(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ba[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ba[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ba[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ba[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ba[f]+"Width",!0,e)));return g}function Xa(a,b,c){var d,e=!0,f=Ma(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Na(a,b,f),(d<0||null==d)&&(d=a.style[b]),La.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Wa(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Na(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=aa.exec(c))&&e[1]&&(c=ea(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Na(a,b,d)),"normal"===e&&b in Ra&&(e=Ra[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Pa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Xa(a,b,d):da(a,Qa,function(){return Xa(a,b,d)})},set:function(a,c,d){var e,f=d&&Ma(a),g=d&&Wa(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=aa.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Va(a,c,g)}}}),r.cssHooks.marginLeft=Oa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Na(a,"marginLeft"))||a.getBoundingClientRect().left-da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ba[d]+b]=f[d]||f[d-2]||f[0];return e}},Ka.test(a)||(r.cssHooks[a+b].set=Va)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=Ma(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Ya(a,b,c,d,e){return new Ya.prototype.init(a,b,c,d,e)}r.Tween=Ya,Ya.prototype={constructor:Ya,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Ya.propHooks[this.prop];return a&&a.get?a.get(this):Ya.propHooks._default.get(this)},run:function(a){var b,c=Ya.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ya.propHooks._default.set(this),this}},Ya.prototype.init.prototype=Ya.prototype,Ya.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Ya.propHooks.scrollTop=Ya.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Ya.prototype.init,r.fx.step={};var Za,$a,_a=/^(?:toggle|show|hide)$/,ab=/queueHooks$/;function bb(){$a&&(a.requestAnimationFrame(bb),r.fx.tick())}function cb(){return a.setTimeout(function(){Za=void 0}),Za=r.now()}function db(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ba[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function eb(a,b,c){for(var d,e=(hb.tweeners[b]||[]).concat(hb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function fb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ca(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],_a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ha([a],!0),j=a.style.display||j,k=r.css(a,"display"),ha([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ha([a],!0),m.done(function(){p||ha([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=eb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function gb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function hb(a,b,c){var d,e,f=0,g=hb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Za||cb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Za||cb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(gb(k,j.opts.specialEasing);f<g;f++)if(d=hb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,eb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(hb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return ea(c.elem,a,aa.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],hb.tweeners[c]=hb.tweeners[c]||[],hb.tweeners[c].unshift(b)},prefilters:[fb],prefilter:function(a,b){b?hb.prefilters.unshift(a):hb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:"number"!=typeof e.duration&&(e.duration in r.fx.speeds?e.duration=r.fx.speeds[e.duration]:e.duration=r.fx.speeds._default),null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ca).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=hb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&ab.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(db(b,!0),a,d,e)}}),r.each({slideDown:db("show"),slideUp:db("hide"),slideToggle:db("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Za=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Za=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){$a||($a=a.requestAnimationFrame?a.requestAnimationFrame(bb):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame($a):a.clearInterval($a),$a=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var ib,jb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?ib:void 0)),
+void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),ib={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=jb[b]||r.find.attr;jb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=jb[g],jb[g]=e,e=null!=c(a,b,d)?g:null,jb[g]=f),e}});var kb=/^(?:input|select|textarea|button)$/i,lb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):kb.test(a.nodeName)||lb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function mb(a){var b=a.match(K)||[];return b.join(" ")}function nb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,nb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,nb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,nb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=nb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(nb(c))+" ").indexOf(b)>-1)return!0;return!1}});var ob=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ob,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:mb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,"$1"),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=pa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=mb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||qa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Oa(o.pixelPosition,function(a,c){if(c)return c=Na(a,b),La.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});
diff --git a/js/jquery/dist/jquery.min.map b/js/jquery/dist/jquery.min.map
new file mode 100644 (file)
index 0000000..8c09dd8
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","DOMEval","code","doc","script","createElement","text","head","appendChild","parentNode","removeChild","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","isNaN","parseFloat","proto","Ctor","isEmptyObject","globalEval","camelCase","string","nodeName","toLowerCase","isArrayLike","trim","makeArray","results","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","value","guid","proxy","tmp","args","now","Date","Symbol","iterator","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","childNodes","nodeType","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","targets","l","closest","index","prevAll","add","addBack","sibling","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","createOptions","object","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Identity","v","Thrower","ex","adoptValue","resolve","reject","method","promise","fail","then","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","readyWait","holdReady","hold","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","optgroup","tbody","tfoot","colgroup","caption","th","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","div","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","on","types","one","origFn","event","off","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","manipulationTarget","content","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","computeStyleTests","cssText","container","divStyle","pixelPositionVal","reliableMarginLeftVal","marginLeft","boxSizingReliableVal","width","marginRight","pixelMarginRightVal","backgroundClip","clearCloneStyle","pixelPosition","boxSizingReliable","pixelMarginRight","reliableMarginLeft","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","rdisplayswap","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","getClientRects","getBoundingClientRect","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","origName","isFinite","left","margin","padding","border","prefix","suffix","expand","expanded","parts","Tween","easing","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rrun","raf","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","defaultPrefilter","opts","oldfire","propTween","restoreDisplay","isBox","anim","hidden","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","timer","complete","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","cancelAnimationFrame","clearInterval","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","parseInt","for","class","stripAndCollapse","getClass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","triggerHandler","hover","fnOver","fnOut","focusin","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","unwrap","visible","offsetWidth","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","onreadystatechange","responseType","responseText","binary","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","rect","pageYOffset","clientTop","pageXOffset","clientLeft","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","unbind","delegate","undelegate","parseJSON","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.min.js"}
\ No newline at end of file
diff --git a/js/jquery/dist/jquery.slim.js b/js/jquery/dist/jquery.slim.js
new file mode 100644 (file)
index 0000000..7c35f7d
--- /dev/null
@@ -0,0 +1,8107 @@
+/*!
+ * jQuery JavaScript Library v3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2016-09-22T22:30Z
+ */
+( function( global, factory ) {
+
+       "use strict";
+
+       if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+               // For CommonJS and CommonJS-like environments where a proper `window`
+               // is present, execute the factory and get jQuery.
+               // For environments that do not have a `window` with a `document`
+               // (such as Node.js), expose a factory as module.exports.
+               // This accentuates the need for the creation of a real `window`.
+               // e.g. var jQuery = require("jquery")(window);
+               // See ticket #14549 for more info.
+               module.exports = global.document ?
+                       factory( global, true ) :
+                       function( w ) {
+                               if ( !w.document ) {
+                                       throw new Error( "jQuery requires a window with a document" );
+                               }
+                               return factory( w );
+                       };
+       } else {
+               factory( global );
+       }
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+
+
+       function DOMEval( code, doc ) {
+               doc = doc || document;
+
+               var script = doc.createElement( "script" );
+
+               script.text = code;
+               doc.head.appendChild( script ).parentNode.removeChild( script );
+       }
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+       version = "3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated",
+
+       // Define a local copy of jQuery
+       jQuery = function( selector, context ) {
+
+               // The jQuery object is actually just the init constructor 'enhanced'
+               // Need init if jQuery is called (just allow error to be thrown if not included)
+               return new jQuery.fn.init( selector, context );
+       },
+
+       // Support: Android <=4.0 only
+       // Make sure we trim BOM and NBSP
+       rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+       // Matches dashed string for camelizing
+       rmsPrefix = /^-ms-/,
+       rdashAlpha = /-([a-z])/g,
+
+       // Used by jQuery.camelCase as callback to replace()
+       fcamelCase = function( all, letter ) {
+               return letter.toUpperCase();
+       };
+
+jQuery.fn = jQuery.prototype = {
+
+       // The current version of jQuery being used
+       jquery: version,
+
+       constructor: jQuery,
+
+       // The default length of a jQuery object is 0
+       length: 0,
+
+       toArray: function() {
+               return slice.call( this );
+       },
+
+       // Get the Nth element in the matched element set OR
+       // Get the whole matched element set as a clean array
+       get: function( num ) {
+
+               // Return all the elements in a clean array
+               if ( num == null ) {
+                       return slice.call( this );
+               }
+
+               // Return just the one element from the set
+               return num < 0 ? this[ num + this.length ] : this[ num ];
+       },
+
+       // Take an array of elements and push it onto the stack
+       // (returning the new matched element set)
+       pushStack: function( elems ) {
+
+               // Build a new jQuery matched element set
+               var ret = jQuery.merge( this.constructor(), elems );
+
+               // Add the old object onto the stack (as a reference)
+               ret.prevObject = this;
+
+               // Return the newly-formed element set
+               return ret;
+       },
+
+       // Execute a callback for every element in the matched set.
+       each: function( callback ) {
+               return jQuery.each( this, callback );
+       },
+
+       map: function( callback ) {
+               return this.pushStack( jQuery.map( this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               } ) );
+       },
+
+       slice: function() {
+               return this.pushStack( slice.apply( this, arguments ) );
+       },
+
+       first: function() {
+               return this.eq( 0 );
+       },
+
+       last: function() {
+               return this.eq( -1 );
+       },
+
+       eq: function( i ) {
+               var len = this.length,
+                       j = +i + ( i < 0 ? len : 0 );
+               return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+       },
+
+       end: function() {
+               return this.prevObject || this.constructor();
+       },
+
+       // For internal use only.
+       // Behaves like an Array's method, not like a jQuery method.
+       push: push,
+       sort: arr.sort,
+       splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+       var options, name, src, copy, copyIsArray, clone,
+               target = arguments[ 0 ] || {},
+               i = 1,
+               length = arguments.length,
+               deep = false;
+
+       // Handle a deep copy situation
+       if ( typeof target === "boolean" ) {
+               deep = target;
+
+               // Skip the boolean and the target
+               target = arguments[ i ] || {};
+               i++;
+       }
+
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+               target = {};
+       }
+
+       // Extend jQuery itself if only one argument is passed
+       if ( i === length ) {
+               target = this;
+               i--;
+       }
+
+       for ( ; i < length; i++ ) {
+
+               // Only deal with non-null/undefined values
+               if ( ( options = arguments[ i ] ) != null ) {
+
+                       // Extend the base object
+                       for ( name in options ) {
+                               src = target[ name ];
+                               copy = options[ name ];
+
+                               // Prevent never-ending loop
+                               if ( target === copy ) {
+                                       continue;
+                               }
+
+                               // Recurse if we're merging plain objects or arrays
+                               if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+                                       ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
+
+                                       if ( copyIsArray ) {
+                                               copyIsArray = false;
+                                               clone = src && jQuery.isArray( src ) ? src : [];
+
+                                       } else {
+                                               clone = src && jQuery.isPlainObject( src ) ? src : {};
+                                       }
+
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
+
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
+                               }
+                       }
+               }
+       }
+
+       // Return the modified object
+       return target;
+};
+
+jQuery.extend( {
+
+       // Unique for each copy of jQuery on the page
+       expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+       // Assume jQuery is ready without the ready module
+       isReady: true,
+
+       error: function( msg ) {
+               throw new Error( msg );
+       },
+
+       noop: function() {},
+
+       isFunction: function( obj ) {
+               return jQuery.type( obj ) === "function";
+       },
+
+       isArray: Array.isArray,
+
+       isWindow: function( obj ) {
+               return obj != null && obj === obj.window;
+       },
+
+       isNumeric: function( obj ) {
+
+               // As of jQuery 3.0, isNumeric is limited to
+               // strings and numbers (primitives or objects)
+               // that can be coerced to finite numbers (gh-2662)
+               var type = jQuery.type( obj );
+               return ( type === "number" || type === "string" ) &&
+
+                       // parseFloat NaNs numeric-cast false positives ("")
+                       // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+                       // subtraction forces infinities to NaN
+                       !isNaN( obj - parseFloat( obj ) );
+       },
+
+       isPlainObject: function( obj ) {
+               var proto, Ctor;
+
+               // Detect obvious negatives
+               // Use toString instead of jQuery.type to catch host objects
+               if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+                       return false;
+               }
+
+               proto = getProto( obj );
+
+               // Objects with no prototype (e.g., `Object.create( null )`) are plain
+               if ( !proto ) {
+                       return true;
+               }
+
+               // Objects with prototype are plain iff they were constructed by a global Object function
+               Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+               return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+       },
+
+       isEmptyObject: function( obj ) {
+
+               /* eslint-disable no-unused-vars */
+               // See https://github.com/eslint/eslint/issues/6125
+               var name;
+
+               for ( name in obj ) {
+                       return false;
+               }
+               return true;
+       },
+
+       type: function( obj ) {
+               if ( obj == null ) {
+                       return obj + "";
+               }
+
+               // Support: Android <=2.3 only (functionish RegExp)
+               return typeof obj === "object" || typeof obj === "function" ?
+                       class2type[ toString.call( obj ) ] || "object" :
+                       typeof obj;
+       },
+
+       // Evaluates a script in a global context
+       globalEval: function( code ) {
+               DOMEval( code );
+       },
+
+       // Convert dashed to camelCase; used by the css and data modules
+       // Support: IE <=9 - 11, Edge 12 - 13
+       // Microsoft forgot to hump their vendor prefix (#9572)
+       camelCase: function( string ) {
+               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+       },
+
+       nodeName: function( elem, name ) {
+               return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+       },
+
+       each: function( obj, callback ) {
+               var length, i = 0;
+
+               if ( isArrayLike( obj ) ) {
+                       length = obj.length;
+                       for ( ; i < length; i++ ) {
+                               if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+                                       break;
+                               }
+                       }
+               } else {
+                       for ( i in obj ) {
+                               if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+                                       break;
+                               }
+                       }
+               }
+
+               return obj;
+       },
+
+       // Support: Android <=4.0 only
+       trim: function( text ) {
+               return text == null ?
+                       "" :
+                       ( text + "" ).replace( rtrim, "" );
+       },
+
+       // results is for internal usage only
+       makeArray: function( arr, results ) {
+               var ret = results || [];
+
+               if ( arr != null ) {
+                       if ( isArrayLike( Object( arr ) ) ) {
+                               jQuery.merge( ret,
+                                       typeof arr === "string" ?
+                                       [ arr ] : arr
+                               );
+                       } else {
+                               push.call( ret, arr );
+                       }
+               }
+
+               return ret;
+       },
+
+       inArray: function( elem, arr, i ) {
+               return arr == null ? -1 : indexOf.call( arr, elem, i );
+       },
+
+       // Support: Android <=4.0 only, PhantomJS 1 only
+       // push.apply(_, arraylike) throws on ancient WebKit
+       merge: function( first, second ) {
+               var len = +second.length,
+                       j = 0,
+                       i = first.length;
+
+               for ( ; j < len; j++ ) {
+                       first[ i++ ] = second[ j ];
+               }
+
+               first.length = i;
+
+               return first;
+       },
+
+       grep: function( elems, callback, invert ) {
+               var callbackInverse,
+                       matches = [],
+                       i = 0,
+                       length = elems.length,
+                       callbackExpect = !invert;
+
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( ; i < length; i++ ) {
+                       callbackInverse = !callback( elems[ i ], i );
+                       if ( callbackInverse !== callbackExpect ) {
+                               matches.push( elems[ i ] );
+                       }
+               }
+
+               return matches;
+       },
+
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var length, value,
+                       i = 0,
+                       ret = [];
+
+               // Go through the array, translating each of the items to their new values
+               if ( isArrayLike( elems ) ) {
+                       length = elems.length;
+                       for ( ; i < length; i++ ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+
+               // Go through every key on the object,
+               } else {
+                       for ( i in elems ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+               }
+
+               // Flatten any nested arrays
+               return concat.apply( [], ret );
+       },
+
+       // A global GUID counter for objects
+       guid: 1,
+
+       // Bind a function to a context, optionally partially applying any
+       // arguments.
+       proxy: function( fn, context ) {
+               var tmp, args, proxy;
+
+               if ( typeof context === "string" ) {
+                       tmp = fn[ context ];
+                       context = fn;
+                       fn = tmp;
+               }
+
+               // Quick check to determine if target is callable, in the spec
+               // this throws a TypeError, but we will just return undefined.
+               if ( !jQuery.isFunction( fn ) ) {
+                       return undefined;
+               }
+
+               // Simulated bind
+               args = slice.call( arguments, 2 );
+               proxy = function() {
+                       return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+               };
+
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+               return proxy;
+       },
+
+       now: Date.now,
+
+       // jQuery.support is not used in Core but other projects attach their
+       // properties to it so it needs to exist.
+       support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+       jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+       class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+       // Support: real iOS 8.2 only (not reproducible in simulator)
+       // `in` check used to prevent JIT error (gh-2145)
+       // hasOwn isn't used here due to false negatives
+       // regarding Nodelist length in IE
+       var length = !!obj && "length" in obj && obj.length,
+               type = jQuery.type( obj );
+
+       if ( type === "function" || jQuery.isWindow( obj ) ) {
+               return false;
+       }
+
+       return type === "array" || length === 0 ||
+               typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+       support,
+       Expr,
+       getText,
+       isXML,
+       tokenize,
+       compile,
+       select,
+       outermostContext,
+       sortInput,
+       hasDuplicate,
+
+       // Local document vars
+       setDocument,
+       document,
+       docElem,
+       documentIsHTML,
+       rbuggyQSA,
+       rbuggyMatches,
+       matches,
+       contains,
+
+       // Instance-specific data
+       expando = "sizzle" + 1 * new Date(),
+       preferredDoc = window.document,
+       dirruns = 0,
+       done = 0,
+       classCache = createCache(),
+       tokenCache = createCache(),
+       compilerCache = createCache(),
+       sortOrder = function( a, b ) {
+               if ( a === b ) {
+                       hasDuplicate = true;
+               }
+               return 0;
+       },
+
+       // Instance methods
+       hasOwn = ({}).hasOwnProperty,
+       arr = [],
+       pop = arr.pop,
+       push_native = arr.push,
+       push = arr.push,
+       slice = arr.slice,
+       // Use a stripped-down indexOf as it's faster than native
+       // https://jsperf.com/thor-indexof-vs-for/5
+       indexOf = function( list, elem ) {
+               var i = 0,
+                       len = list.length;
+               for ( ; i < len; i++ ) {
+                       if ( list[i] === elem ) {
+                               return i;
+                       }
+               }
+               return -1;
+       },
+
+       booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+       // Regular expressions
+
+       // http://www.w3.org/TR/css3-selectors/#whitespace
+       whitespace = "[\\x20\\t\\r\\n\\f]",
+
+       // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+       identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+       // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+       attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+               // Operator (capture 2)
+               "*([*^$|!~]?=)" + whitespace +
+               // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+               "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+               "*\\]",
+
+       pseudos = ":(" + identifier + ")(?:\\((" +
+               // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+               // 1. quoted (capture 3; capture 4 or capture 5)
+               "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+               // 2. simple (capture 6)
+               "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+               // 3. anything else (capture 2)
+               ".*" +
+               ")\\)|)",
+
+       // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+       rwhitespace = new RegExp( whitespace + "+", "g" ),
+       rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+       rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+       rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+       rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+       rpseudo = new RegExp( pseudos ),
+       ridentifier = new RegExp( "^" + identifier + "$" ),
+
+       matchExpr = {
+               "ID": new RegExp( "^#(" + identifier + ")" ),
+               "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+               "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+               "ATTR": new RegExp( "^" + attributes ),
+               "PSEUDO": new RegExp( "^" + pseudos ),
+               "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+                       "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+                       "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+               "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+               // For use in libraries implementing .is()
+               // We use this for POS matching in `select`
+               "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+                       whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+       },
+
+       rinputs = /^(?:input|select|textarea|button)$/i,
+       rheader = /^h\d$/i,
+
+       rnative = /^[^{]+\{\s*\[native \w/,
+
+       // Easily-parseable/retrievable ID or TAG or CLASS selectors
+       rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+       rsibling = /[+~]/,
+
+       // CSS escapes
+       // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+       runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+       funescape = function( _, escaped, escapedWhitespace ) {
+               var high = "0x" + escaped - 0x10000;
+               // NaN means non-codepoint
+               // Support: Firefox<24
+               // Workaround erroneous numeric interpretation of +"0x"
+               return high !== high || escapedWhitespace ?
+                       escaped :
+                       high < 0 ?
+                               // BMP codepoint
+                               String.fromCharCode( high + 0x10000 ) :
+                               // Supplemental Plane codepoint (surrogate pair)
+                               String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+       },
+
+       // CSS string/identifier serialization
+       // https://drafts.csswg.org/cssom/#common-serializing-idioms
+       rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+       fcssescape = function( ch, asCodePoint ) {
+               if ( asCodePoint ) {
+
+                       // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+                       if ( ch === "\0" ) {
+                               return "\uFFFD";
+                       }
+
+                       // Control characters and (dependent upon position) numbers get escaped as code points
+                       return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+               }
+
+               // Other potentially-special ASCII characters get backslash-escaped
+               return "\\" + ch;
+       },
+
+       // Used for iframes
+       // See setDocument()
+       // Removing the function wrapper causes a "Permission Denied"
+       // error in IE
+       unloadHandler = function() {
+               setDocument();
+       },
+
+       disabledAncestor = addCombinator(
+               function( elem ) {
+                       return elem.disabled === true && ("form" in elem || "label" in elem);
+               },
+               { dir: "parentNode", next: "legend" }
+       );
+
+// Optimize for push.apply( _, NodeList )
+try {
+       push.apply(
+               (arr = slice.call( preferredDoc.childNodes )),
+               preferredDoc.childNodes
+       );
+       // Support: Android<4.0
+       // Detect silently failing push.apply
+       arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+       push = { apply: arr.length ?
+
+               // Leverage slice if possible
+               function( target, els ) {
+                       push_native.apply( target, slice.call(els) );
+               } :
+
+               // Support: IE<9
+               // Otherwise append directly
+               function( target, els ) {
+                       var j = target.length,
+                               i = 0;
+                       // Can't trust NodeList.length
+                       while ( (target[j++] = els[i++]) ) {}
+                       target.length = j - 1;
+               }
+       };
+}
+
+function Sizzle( selector, context, results, seed ) {
+       var m, i, elem, nid, match, groups, newSelector,
+               newContext = context && context.ownerDocument,
+
+               // nodeType defaults to 9, since context defaults to document
+               nodeType = context ? context.nodeType : 9;
+
+       results = results || [];
+
+       // Return early from calls with invalid selector or context
+       if ( typeof selector !== "string" || !selector ||
+               nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+               return results;
+       }
+
+       // Try to shortcut find operations (as opposed to filters) in HTML documents
+       if ( !seed ) {
+
+               if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+                       setDocument( context );
+               }
+               context = context || document;
+
+               if ( documentIsHTML ) {
+
+                       // If the selector is sufficiently simple, try using a "get*By*" DOM method
+                       // (excepting DocumentFragment context, where the methods don't exist)
+                       if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+                               // ID selector
+                               if ( (m = match[1]) ) {
+
+                                       // Document context
+                                       if ( nodeType === 9 ) {
+                                               if ( (elem = context.getElementById( m )) ) {
+
+                                                       // Support: IE, Opera, Webkit
+                                                       // TODO: identify versions
+                                                       // getElementById can match elements by name instead of ID
+                                                       if ( elem.id === m ) {
+                                                               results.push( elem );
+                                                               return results;
+                                                       }
+                                               } else {
+                                                       return results;
+                                               }
+
+                                       // Element context
+                                       } else {
+
+                                               // Support: IE, Opera, Webkit
+                                               // TODO: identify versions
+                                               // getElementById can match elements by name instead of ID
+                                               if ( newContext && (elem = newContext.getElementById( m )) &&
+                                                       contains( context, elem ) &&
+                                                       elem.id === m ) {
+
+                                                       results.push( elem );
+                                                       return results;
+                                               }
+                                       }
+
+                               // Type selector
+                               } else if ( match[2] ) {
+                                       push.apply( results, context.getElementsByTagName( selector ) );
+                                       return results;
+
+                               // Class selector
+                               } else if ( (m = match[3]) && support.getElementsByClassName &&
+                                       context.getElementsByClassName ) {
+
+                                       push.apply( results, context.getElementsByClassName( m ) );
+                                       return results;
+                               }
+                       }
+
+                       // Take advantage of querySelectorAll
+                       if ( support.qsa &&
+                               !compilerCache[ selector + " " ] &&
+                               (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+                               if ( nodeType !== 1 ) {
+                                       newContext = context;
+                                       newSelector = selector;
+
+                               // qSA looks outside Element context, which is not what we want
+                               // Thanks to Andrew Dupont for this workaround technique
+                               // Support: IE <=8
+                               // Exclude object elements
+                               } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+                                       // Capture the context ID, setting it first if necessary
+                                       if ( (nid = context.getAttribute( "id" )) ) {
+                                               nid = nid.replace( rcssescape, fcssescape );
+                                       } else {
+                                               context.setAttribute( "id", (nid = expando) );
+                                       }
+
+                                       // Prefix every selector in the list
+                                       groups = tokenize( selector );
+                                       i = groups.length;
+                                       while ( i-- ) {
+                                               groups[i] = "#" + nid + " " + toSelector( groups[i] );
+                                       }
+                                       newSelector = groups.join( "," );
+
+                                       // Expand context for sibling selectors
+                                       newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+                                               context;
+                               }
+
+                               if ( newSelector ) {
+                                       try {
+                                               push.apply( results,
+                                                       newContext.querySelectorAll( newSelector )
+                                               );
+                                               return results;
+                                       } catch ( qsaError ) {
+                                       } finally {
+                                               if ( nid === expando ) {
+                                                       context.removeAttribute( "id" );
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       // All others
+       return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ *     property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *     deleting the oldest entry
+ */
+function createCache() {
+       var keys = [];
+
+       function cache( key, value ) {
+               // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+               if ( keys.push( key + " " ) > Expr.cacheLength ) {
+                       // Only keep the most recent entries
+                       delete cache[ keys.shift() ];
+               }
+               return (cache[ key + " " ] = value);
+       }
+       return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+       fn[ expando ] = true;
+       return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+       var el = document.createElement("fieldset");
+
+       try {
+               return !!fn( el );
+       } catch (e) {
+               return false;
+       } finally {
+               // Remove from its parent by default
+               if ( el.parentNode ) {
+                       el.parentNode.removeChild( el );
+               }
+               // release memory in IE
+               el = null;
+       }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+       var arr = attrs.split("|"),
+               i = arr.length;
+
+       while ( i-- ) {
+               Expr.attrHandle[ arr[i] ] = handler;
+       }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+       var cur = b && a,
+               diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+                       a.sourceIndex - b.sourceIndex;
+
+       // Use IE sourceIndex if available on both nodes
+       if ( diff ) {
+               return diff;
+       }
+
+       // Check if b follows a
+       if ( cur ) {
+               while ( (cur = cur.nextSibling) ) {
+                       if ( cur === b ) {
+                               return -1;
+                       }
+               }
+       }
+
+       return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return name === "input" && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return (name === "input" || name === "button") && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+       // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+       return function( elem ) {
+
+               // Only certain elements can match :enabled or :disabled
+               // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+               // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+               if ( "form" in elem ) {
+
+                       // Check for inherited disabledness on relevant non-disabled elements:
+                       // * listed form-associated elements in a disabled fieldset
+                       //   https://html.spec.whatwg.org/multipage/forms.html#category-listed
+                       //   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+                       // * option elements in a disabled optgroup
+                       //   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+                       // All such elements have a "form" property.
+                       if ( elem.parentNode && elem.disabled === false ) {
+
+                               // Option elements defer to a parent optgroup if present
+                               if ( "label" in elem ) {
+                                       if ( "label" in elem.parentNode ) {
+                                               return elem.parentNode.disabled === disabled;
+                                       } else {
+                                               return elem.disabled === disabled;
+                                       }
+                               }
+
+                               // Support: IE 6 - 11
+                               // Use the isDisabled shortcut property to check for disabled fieldset ancestors
+                               return elem.isDisabled === disabled ||
+
+                                       // Where there is no isDisabled, check manually
+                                       /* jshint -W018 */
+                                       elem.isDisabled !== !disabled &&
+                                               disabledAncestor( elem ) === disabled;
+                       }
+
+                       return elem.disabled === disabled;
+
+               // Try to winnow out elements that can't be disabled before trusting the disabled property.
+               // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+               // even exist on them, let alone have a boolean value.
+               } else if ( "label" in elem ) {
+                       return elem.disabled === disabled;
+               }
+
+               // Remaining elements are neither :enabled nor :disabled
+               return false;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+       return markFunction(function( argument ) {
+               argument = +argument;
+               return markFunction(function( seed, matches ) {
+                       var j,
+                               matchIndexes = fn( [], seed.length, argument ),
+                               i = matchIndexes.length;
+
+                       // Match elements found at the specified indexes
+                       while ( i-- ) {
+                               if ( seed[ (j = matchIndexes[i]) ] ) {
+                                       seed[j] = !(matches[j] = seed[j]);
+                               }
+                       }
+               });
+       });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+       return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833)
+       var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+       var hasCompare, subWindow,
+               doc = node ? node.ownerDocument || node : preferredDoc;
+
+       // Return early if doc is invalid or already selected
+       if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+               return document;
+       }
+
+       // Update global variables
+       document = doc;
+       docElem = document.documentElement;
+       documentIsHTML = !isXML( document );
+
+       // Support: IE 9-11, Edge
+       // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+       if ( preferredDoc !== document &&
+               (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+               // Support: IE 11, Edge
+               if ( subWindow.addEventListener ) {
+                       subWindow.addEventListener( "unload", unloadHandler, false );
+
+               // Support: IE 9 - 10 only
+               } else if ( subWindow.attachEvent ) {
+                       subWindow.attachEvent( "onunload", unloadHandler );
+               }
+       }
+
+       /* Attributes
+       ---------------------------------------------------------------------- */
+
+       // Support: IE<8
+       // Verify that getAttribute really returns attributes and not properties
+       // (excepting IE8 booleans)
+       support.attributes = assert(function( el ) {
+               el.className = "i";
+               return !el.getAttribute("className");
+       });
+
+       /* getElement(s)By*
+       ---------------------------------------------------------------------- */
+
+       // Check if getElementsByTagName("*") returns only elements
+       support.getElementsByTagName = assert(function( el ) {
+               el.appendChild( document.createComment("") );
+               return !el.getElementsByTagName("*").length;
+       });
+
+       // Support: IE<9
+       support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+       // Support: IE<10
+       // Check if getElementById returns elements by name
+       // The broken getElementById methods don't pick up programmatically-set names,
+       // so use a roundabout getElementsByName test
+       support.getById = assert(function( el ) {
+               docElem.appendChild( el ).id = expando;
+               return !document.getElementsByName || !document.getElementsByName( expando ).length;
+       });
+
+       // ID filter and find
+       if ( support.getById ) {
+               Expr.filter["ID"] = function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               return elem.getAttribute("id") === attrId;
+                       };
+               };
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+                               var elem = context.getElementById( id );
+                               return elem ? [ elem ] : [];
+                       }
+               };
+       } else {
+               Expr.filter["ID"] =  function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               var node = typeof elem.getAttributeNode !== "undefined" &&
+                                       elem.getAttributeNode("id");
+                               return node && node.value === attrId;
+                       };
+               };
+
+               // Support: IE 6 - 7 only
+               // getElementById is not reliable as a find shortcut
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+                               var node, i, elems,
+                                       elem = context.getElementById( id );
+
+                               if ( elem ) {
+
+                                       // Verify the id attribute
+                                       node = elem.getAttributeNode("id");
+                                       if ( node && node.value === id ) {
+                                               return [ elem ];
+                                       }
+
+                                       // Fall back on getElementsByName
+                                       elems = context.getElementsByName( id );
+                                       i = 0;
+                                       while ( (elem = elems[i++]) ) {
+                                               node = elem.getAttributeNode("id");
+                                               if ( node && node.value === id ) {
+                                                       return [ elem ];
+                                               }
+                                       }
+                               }
+
+                               return [];
+                       }
+               };
+       }
+
+       // Tag
+       Expr.find["TAG"] = support.getElementsByTagName ?
+               function( tag, context ) {
+                       if ( typeof context.getElementsByTagName !== "undefined" ) {
+                               return context.getElementsByTagName( tag );
+
+                       // DocumentFragment nodes don't have gEBTN
+                       } else if ( support.qsa ) {
+                               return context.querySelectorAll( tag );
+                       }
+               } :
+
+               function( tag, context ) {
+                       var elem,
+                               tmp = [],
+                               i = 0,
+                               // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+                               results = context.getElementsByTagName( tag );
+
+                       // Filter out possible comments
+                       if ( tag === "*" ) {
+                               while ( (elem = results[i++]) ) {
+                                       if ( elem.nodeType === 1 ) {
+                                               tmp.push( elem );
+                                       }
+                               }
+
+                               return tmp;
+                       }
+                       return results;
+               };
+
+       // Class
+       Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+               if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+                       return context.getElementsByClassName( className );
+               }
+       };
+
+       /* QSA/matchesSelector
+       ---------------------------------------------------------------------- */
+
+       // QSA and matchesSelector support
+
+       // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+       rbuggyMatches = [];
+
+       // qSa(:focus) reports false when true (Chrome 21)
+       // We allow this because of a bug in IE8/9 that throws an error
+       // whenever `document.activeElement` is accessed on an iframe
+       // So, we allow :focus to pass through QSA all the time to avoid the IE error
+       // See https://bugs.jquery.com/ticket/13378
+       rbuggyQSA = [];
+
+       if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+               // Build QSA regex
+               // Regex strategy adopted from Diego Perini
+               assert(function( el ) {
+                       // Select is set to empty string on purpose
+                       // This is to test IE's treatment of not explicitly
+                       // setting a boolean content attribute,
+                       // since its presence should be enough
+                       // https://bugs.jquery.com/ticket/12359
+                       docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+                               "<select id='" + expando + "-\r\\' msallowcapture=''>" +
+                               "<option selected=''></option></select>";
+
+                       // Support: IE8, Opera 11-12.16
+                       // Nothing should be selected when empty strings follow ^= or $= or *=
+                       // The test attribute must be unknown in Opera but "safe" for WinRT
+                       // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+                       if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+                               rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+                       }
+
+                       // Support: IE8
+                       // Boolean attributes and "value" are not treated correctly
+                       if ( !el.querySelectorAll("[selected]").length ) {
+                               rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+                       }
+
+                       // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+                       if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+                               rbuggyQSA.push("~=");
+                       }
+
+                       // Webkit/Opera - :checked should return selected option elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       // IE8 throws error here and will not see later tests
+                       if ( !el.querySelectorAll(":checked").length ) {
+                               rbuggyQSA.push(":checked");
+                       }
+
+                       // Support: Safari 8+, iOS 8+
+                       // https://bugs.webkit.org/show_bug.cgi?id=136851
+                       // In-page `selector#id sibling-combinator selector` fails
+                       if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+                               rbuggyQSA.push(".#.+[+~]");
+                       }
+               });
+
+               assert(function( el ) {
+                       el.innerHTML = "<a href='' disabled='disabled'></a>" +
+                               "<select disabled='disabled'><option/></select>";
+
+                       // Support: Windows 8 Native Apps
+                       // The type and name attributes are restricted during .innerHTML assignment
+                       var input = document.createElement("input");
+                       input.setAttribute( "type", "hidden" );
+                       el.appendChild( input ).setAttribute( "name", "D" );
+
+                       // Support: IE8
+                       // Enforce case-sensitivity of name attribute
+                       if ( el.querySelectorAll("[name=d]").length ) {
+                               rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+                       }
+
+                       // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+                       // IE8 throws error here and will not see later tests
+                       if ( el.querySelectorAll(":enabled").length !== 2 ) {
+                               rbuggyQSA.push( ":enabled", ":disabled" );
+                       }
+
+                       // Support: IE9-11+
+                       // IE's :disabled selector does not pick up the children of disabled fieldsets
+                       docElem.appendChild( el ).disabled = true;
+                       if ( el.querySelectorAll(":disabled").length !== 2 ) {
+                               rbuggyQSA.push( ":enabled", ":disabled" );
+                       }
+
+                       // Opera 10-11 does not throw on post-comma invalid pseudos
+                       el.querySelectorAll("*,:x");
+                       rbuggyQSA.push(",.*:");
+               });
+       }
+
+       if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+               docElem.webkitMatchesSelector ||
+               docElem.mozMatchesSelector ||
+               docElem.oMatchesSelector ||
+               docElem.msMatchesSelector) )) ) {
+
+               assert(function( el ) {
+                       // Check to see if it's possible to do matchesSelector
+                       // on a disconnected node (IE 9)
+                       support.disconnectedMatch = matches.call( el, "*" );
+
+                       // This should fail with an exception
+                       // Gecko does not error, returns false instead
+                       matches.call( el, "[s!='']:x" );
+                       rbuggyMatches.push( "!=", pseudos );
+               });
+       }
+
+       rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+       rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+       /* Contains
+       ---------------------------------------------------------------------- */
+       hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+       // Element contains another
+       // Purposefully self-exclusive
+       // As in, an element does not contain itself
+       contains = hasCompare || rnative.test( docElem.contains ) ?
+               function( a, b ) {
+                       var adown = a.nodeType === 9 ? a.documentElement : a,
+                               bup = b && b.parentNode;
+                       return a === bup || !!( bup && bup.nodeType === 1 && (
+                               adown.contains ?
+                                       adown.contains( bup ) :
+                                       a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+                       ));
+               } :
+               function( a, b ) {
+                       if ( b ) {
+                               while ( (b = b.parentNode) ) {
+                                       if ( b === a ) {
+                                               return true;
+                                       }
+                               }
+                       }
+                       return false;
+               };
+
+       /* Sorting
+       ---------------------------------------------------------------------- */
+
+       // Document order sorting
+       sortOrder = hasCompare ?
+       function( a, b ) {
+
+               // Flag for duplicate removal
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               // Sort on method existence if only one input has compareDocumentPosition
+               var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+               if ( compare ) {
+                       return compare;
+               }
+
+               // Calculate position if both inputs belong to the same document
+               compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+                       a.compareDocumentPosition( b ) :
+
+                       // Otherwise we know they are disconnected
+                       1;
+
+               // Disconnected nodes
+               if ( compare & 1 ||
+                       (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+                       // Choose the first element that is related to our preferred document
+                       if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+                               return -1;
+                       }
+                       if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+                               return 1;
+                       }
+
+                       // Maintain original order
+                       return sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+               }
+
+               return compare & 4 ? -1 : 1;
+       } :
+       function( a, b ) {
+               // Exit early if the nodes are identical
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               var cur,
+                       i = 0,
+                       aup = a.parentNode,
+                       bup = b.parentNode,
+                       ap = [ a ],
+                       bp = [ b ];
+
+               // Parentless nodes are either documents or disconnected
+               if ( !aup || !bup ) {
+                       return a === document ? -1 :
+                               b === document ? 1 :
+                               aup ? -1 :
+                               bup ? 1 :
+                               sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+
+               // If the nodes are siblings, we can do a quick check
+               } else if ( aup === bup ) {
+                       return siblingCheck( a, b );
+               }
+
+               // Otherwise we need full lists of their ancestors for comparison
+               cur = a;
+               while ( (cur = cur.parentNode) ) {
+                       ap.unshift( cur );
+               }
+               cur = b;
+               while ( (cur = cur.parentNode) ) {
+                       bp.unshift( cur );
+               }
+
+               // Walk down the tree looking for a discrepancy
+               while ( ap[i] === bp[i] ) {
+                       i++;
+               }
+
+               return i ?
+                       // Do a sibling check if the nodes have a common ancestor
+                       siblingCheck( ap[i], bp[i] ) :
+
+                       // Otherwise nodes in our document sort first
+                       ap[i] === preferredDoc ? -1 :
+                       bp[i] === preferredDoc ? 1 :
+                       0;
+       };
+
+       return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+       return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       // Make sure that attribute selectors are quoted
+       expr = expr.replace( rattributeQuotes, "='$1']" );
+
+       if ( support.matchesSelector && documentIsHTML &&
+               !compilerCache[ expr + " " ] &&
+               ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+               ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+               try {
+                       var ret = matches.call( elem, expr );
+
+                       // IE 9's matchesSelector returns false on disconnected nodes
+                       if ( ret || support.disconnectedMatch ||
+                                       // As well, disconnected nodes are said to be in a document
+                                       // fragment in IE 9
+                                       elem.document && elem.document.nodeType !== 11 ) {
+                               return ret;
+                       }
+               } catch (e) {}
+       }
+
+       return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+       // Set document vars if needed
+       if ( ( context.ownerDocument || context ) !== document ) {
+               setDocument( context );
+       }
+       return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       var fn = Expr.attrHandle[ name.toLowerCase() ],
+               // Don't get fooled by Object.prototype properties (jQuery #13807)
+               val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+                       fn( elem, name, !documentIsHTML ) :
+                       undefined;
+
+       return val !== undefined ?
+               val :
+               support.attributes || !documentIsHTML ?
+                       elem.getAttribute( name ) :
+                       (val = elem.getAttributeNode(name)) && val.specified ?
+                               val.value :
+                               null;
+};
+
+Sizzle.escape = function( sel ) {
+       return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+       throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+       var elem,
+               duplicates = [],
+               j = 0,
+               i = 0;
+
+       // Unless we *know* we can detect duplicates, assume their presence
+       hasDuplicate = !support.detectDuplicates;
+       sortInput = !support.sortStable && results.slice( 0 );
+       results.sort( sortOrder );
+
+       if ( hasDuplicate ) {
+               while ( (elem = results[i++]) ) {
+                       if ( elem === results[ i ] ) {
+                               j = duplicates.push( i );
+                       }
+               }
+               while ( j-- ) {
+                       results.splice( duplicates[ j ], 1 );
+               }
+       }
+
+       // Clear input after sorting to release objects
+       // See https://github.com/jquery/sizzle/pull/225
+       sortInput = null;
+
+       return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+       var node,
+               ret = "",
+               i = 0,
+               nodeType = elem.nodeType;
+
+       if ( !nodeType ) {
+               // If no nodeType, this is expected to be an array
+               while ( (node = elem[i++]) ) {
+                       // Do not traverse comment nodes
+                       ret += getText( node );
+               }
+       } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+               // Use textContent for elements
+               // innerText usage removed for consistency of new lines (jQuery #11153)
+               if ( typeof elem.textContent === "string" ) {
+                       return elem.textContent;
+               } else {
+                       // Traverse its children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               ret += getText( elem );
+                       }
+               }
+       } else if ( nodeType === 3 || nodeType === 4 ) {
+               return elem.nodeValue;
+       }
+       // Do not include comment or processing instruction nodes
+
+       return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+       // Can be adjusted by the user
+       cacheLength: 50,
+
+       createPseudo: markFunction,
+
+       match: matchExpr,
+
+       attrHandle: {},
+
+       find: {},
+
+       relative: {
+               ">": { dir: "parentNode", first: true },
+               " ": { dir: "parentNode" },
+               "+": { dir: "previousSibling", first: true },
+               "~": { dir: "previousSibling" }
+       },
+
+       preFilter: {
+               "ATTR": function( match ) {
+                       match[1] = match[1].replace( runescape, funescape );
+
+                       // Move the given value to match[3] whether quoted or unquoted
+                       match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+                       if ( match[2] === "~=" ) {
+                               match[3] = " " + match[3] + " ";
+                       }
+
+                       return match.slice( 0, 4 );
+               },
+
+               "CHILD": function( match ) {
+                       /* matches from matchExpr["CHILD"]
+                               1 type (only|nth|...)
+                               2 what (child|of-type)
+                               3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+                               4 xn-component of xn+y argument ([+-]?\d*n|)
+                               5 sign of xn-component
+                               6 x of xn-component
+                               7 sign of y-component
+                               8 y of y-component
+                       */
+                       match[1] = match[1].toLowerCase();
+
+                       if ( match[1].slice( 0, 3 ) === "nth" ) {
+                               // nth-* requires argument
+                               if ( !match[3] ) {
+                                       Sizzle.error( match[0] );
+                               }
+
+                               // numeric x and y parameters for Expr.filter.CHILD
+                               // remember that false/true cast respectively to 0/1
+                               match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+                               match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+                       // other types prohibit arguments
+                       } else if ( match[3] ) {
+                               Sizzle.error( match[0] );
+                       }
+
+                       return match;
+               },
+
+               "PSEUDO": function( match ) {
+                       var excess,
+                               unquoted = !match[6] && match[2];
+
+                       if ( matchExpr["CHILD"].test( match[0] ) ) {
+                               return null;
+                       }
+
+                       // Accept quoted arguments as-is
+                       if ( match[3] ) {
+                               match[2] = match[4] || match[5] || "";
+
+                       // Strip excess characters from unquoted arguments
+                       } else if ( unquoted && rpseudo.test( unquoted ) &&
+                               // Get excess from tokenize (recursively)
+                               (excess = tokenize( unquoted, true )) &&
+                               // advance to the next closing parenthesis
+                               (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+                               // excess is a negative index
+                               match[0] = match[0].slice( 0, excess );
+                               match[2] = unquoted.slice( 0, excess );
+                       }
+
+                       // Return only captures needed by the pseudo filter method (type and argument)
+                       return match.slice( 0, 3 );
+               }
+       },
+
+       filter: {
+
+               "TAG": function( nodeNameSelector ) {
+                       var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+                       return nodeNameSelector === "*" ?
+                               function() { return true; } :
+                               function( elem ) {
+                                       return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+                               };
+               },
+
+               "CLASS": function( className ) {
+                       var pattern = classCache[ className + " " ];
+
+                       return pattern ||
+                               (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+                               classCache( className, function( elem ) {
+                                       return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+                               });
+               },
+
+               "ATTR": function( name, operator, check ) {
+                       return function( elem ) {
+                               var result = Sizzle.attr( elem, name );
+
+                               if ( result == null ) {
+                                       return operator === "!=";
+                               }
+                               if ( !operator ) {
+                                       return true;
+                               }
+
+                               result += "";
+
+                               return operator === "=" ? result === check :
+                                       operator === "!=" ? result !== check :
+                                       operator === "^=" ? check && result.indexOf( check ) === 0 :
+                                       operator === "*=" ? check && result.indexOf( check ) > -1 :
+                                       operator === "$=" ? check && result.slice( -check.length ) === check :
+                                       operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+                                       operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+                                       false;
+                       };
+               },
+
+               "CHILD": function( type, what, argument, first, last ) {
+                       var simple = type.slice( 0, 3 ) !== "nth",
+                               forward = type.slice( -4 ) !== "last",
+                               ofType = what === "of-type";
+
+                       return first === 1 && last === 0 ?
+
+                               // Shortcut for :nth-*(n)
+                               function( elem ) {
+                                       return !!elem.parentNode;
+                               } :
+
+                               function( elem, context, xml ) {
+                                       var cache, uniqueCache, outerCache, node, nodeIndex, start,
+                                               dir = simple !== forward ? "nextSibling" : "previousSibling",
+                                               parent = elem.parentNode,
+                                               name = ofType && elem.nodeName.toLowerCase(),
+                                               useCache = !xml && !ofType,
+                                               diff = false;
+
+                                       if ( parent ) {
+
+                                               // :(first|last|only)-(child|of-type)
+                                               if ( simple ) {
+                                                       while ( dir ) {
+                                                               node = elem;
+                                                               while ( (node = node[ dir ]) ) {
+                                                                       if ( ofType ?
+                                                                               node.nodeName.toLowerCase() === name :
+                                                                               node.nodeType === 1 ) {
+
+                                                                               return false;
+                                                                       }
+                                                               }
+                                                               // Reverse direction for :only-* (if we haven't yet done so)
+                                                               start = dir = type === "only" && !start && "nextSibling";
+                                                       }
+                                                       return true;
+                                               }
+
+                                               start = [ forward ? parent.firstChild : parent.lastChild ];
+
+                                               // non-xml :nth-child(...) stores cache data on `parent`
+                                               if ( forward && useCache ) {
+
+                                                       // Seek `elem` from a previously-cached index
+
+                                                       // ...in a gzip-friendly way
+                                                       node = parent;
+                                                       outerCache = node[ expando ] || (node[ expando ] = {});
+
+                                                       // Support: IE <9 only
+                                                       // Defend against cloned attroperties (jQuery gh-1709)
+                                                       uniqueCache = outerCache[ node.uniqueID ] ||
+                                                               (outerCache[ node.uniqueID ] = {});
+
+                                                       cache = uniqueCache[ type ] || [];
+                                                       nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+                                                       diff = nodeIndex && cache[ 2 ];
+                                                       node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+                                                               // Fallback to seeking `elem` from the start
+                                                               (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                               // When found, cache indexes on `parent` and break
+                                                               if ( node.nodeType === 1 && ++diff && node === elem ) {
+                                                                       uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+                                                                       break;
+                                                               }
+                                                       }
+
+                                               } else {
+                                                       // Use previously-cached element index if available
+                                                       if ( useCache ) {
+                                                               // ...in a gzip-friendly way
+                                                               node = elem;
+                                                               outerCache = node[ expando ] || (node[ expando ] = {});
+
+                                                               // Support: IE <9 only
+                                                               // Defend against cloned attroperties (jQuery gh-1709)
+                                                               uniqueCache = outerCache[ node.uniqueID ] ||
+                                                                       (outerCache[ node.uniqueID ] = {});
+
+                                                               cache = uniqueCache[ type ] || [];
+                                                               nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+                                                               diff = nodeIndex;
+                                                       }
+
+                                                       // xml :nth-child(...)
+                                                       // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+                                                       if ( diff === false ) {
+                                                               // Use the same loop as above to seek `elem` from the start
+                                                               while ( (node = ++nodeIndex && node && node[ dir ] ||
+                                                                       (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                                       if ( ( ofType ?
+                                                                               node.nodeName.toLowerCase() === name :
+                                                                               node.nodeType === 1 ) &&
+                                                                               ++diff ) {
+
+                                                                               // Cache the index of each encountered element
+                                                                               if ( useCache ) {
+                                                                                       outerCache = node[ expando ] || (node[ expando ] = {});
+
+                                                                                       // Support: IE <9 only
+                                                                                       // Defend against cloned attroperties (jQuery gh-1709)
+                                                                                       uniqueCache = outerCache[ node.uniqueID ] ||
+                                                                                               (outerCache[ node.uniqueID ] = {});
+
+                                                                                       uniqueCache[ type ] = [ dirruns, diff ];
+                                                                               }
+
+                                                                               if ( node === elem ) {
+                                                                                       break;
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+
+                                               // Incorporate the offset, then check against cycle size
+                                               diff -= last;
+                                               return diff === first || ( diff % first === 0 && diff / first >= 0 );
+                                       }
+                               };
+               },
+
+               "PSEUDO": function( pseudo, argument ) {
+                       // pseudo-class names are case-insensitive
+                       // http://www.w3.org/TR/selectors/#pseudo-classes
+                       // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+                       // Remember that setFilters inherits from pseudos
+                       var args,
+                               fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+                                       Sizzle.error( "unsupported pseudo: " + pseudo );
+
+                       // The user may use createPseudo to indicate that
+                       // arguments are needed to create the filter function
+                       // just as Sizzle does
+                       if ( fn[ expando ] ) {
+                               return fn( argument );
+                       }
+
+                       // But maintain support for old signatures
+                       if ( fn.length > 1 ) {
+                               args = [ pseudo, pseudo, "", argument ];
+                               return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+                                       markFunction(function( seed, matches ) {
+                                               var idx,
+                                                       matched = fn( seed, argument ),
+                                                       i = matched.length;
+                                               while ( i-- ) {
+                                                       idx = indexOf( seed, matched[i] );
+                                                       seed[ idx ] = !( matches[ idx ] = matched[i] );
+                                               }
+                                       }) :
+                                       function( elem ) {
+                                               return fn( elem, 0, args );
+                                       };
+                       }
+
+                       return fn;
+               }
+       },
+
+       pseudos: {
+               // Potentially complex pseudos
+               "not": markFunction(function( selector ) {
+                       // Trim the selector passed to compile
+                       // to avoid treating leading and trailing
+                       // spaces as combinators
+                       var input = [],
+                               results = [],
+                               matcher = compile( selector.replace( rtrim, "$1" ) );
+
+                       return matcher[ expando ] ?
+                               markFunction(function( seed, matches, context, xml ) {
+                                       var elem,
+                                               unmatched = matcher( seed, null, xml, [] ),
+                                               i = seed.length;
+
+                                       // Match elements unmatched by `matcher`
+                                       while ( i-- ) {
+                                               if ( (elem = unmatched[i]) ) {
+                                                       seed[i] = !(matches[i] = elem);
+                                               }
+                                       }
+                               }) :
+                               function( elem, context, xml ) {
+                                       input[0] = elem;
+                                       matcher( input, null, xml, results );
+                                       // Don't keep the element (issue #299)
+                                       input[0] = null;
+                                       return !results.pop();
+                               };
+               }),
+
+               "has": markFunction(function( selector ) {
+                       return function( elem ) {
+                               return Sizzle( selector, elem ).length > 0;
+                       };
+               }),
+
+               "contains": markFunction(function( text ) {
+                       text = text.replace( runescape, funescape );
+                       return function( elem ) {
+                               return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+                       };
+               }),
+
+               // "Whether an element is represented by a :lang() selector
+               // is based solely on the element's language value
+               // being equal to the identifier C,
+               // or beginning with the identifier C immediately followed by "-".
+               // The matching of C against the element's language value is performed case-insensitively.
+               // The identifier C does not have to be a valid language name."
+               // http://www.w3.org/TR/selectors/#lang-pseudo
+               "lang": markFunction( function( lang ) {
+                       // lang value must be a valid identifier
+                       if ( !ridentifier.test(lang || "") ) {
+                               Sizzle.error( "unsupported lang: " + lang );
+                       }
+                       lang = lang.replace( runescape, funescape ).toLowerCase();
+                       return function( elem ) {
+                               var elemLang;
+                               do {
+                                       if ( (elemLang = documentIsHTML ?
+                                               elem.lang :
+                                               elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+                                               elemLang = elemLang.toLowerCase();
+                                               return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+                                       }
+                               } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+                               return false;
+                       };
+               }),
+
+               // Miscellaneous
+               "target": function( elem ) {
+                       var hash = window.location && window.location.hash;
+                       return hash && hash.slice( 1 ) === elem.id;
+               },
+
+               "root": function( elem ) {
+                       return elem === docElem;
+               },
+
+               "focus": function( elem ) {
+                       return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+               },
+
+               // Boolean properties
+               "enabled": createDisabledPseudo( false ),
+               "disabled": createDisabledPseudo( true ),
+
+               "checked": function( elem ) {
+                       // In CSS3, :checked should return both checked and selected elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       var nodeName = elem.nodeName.toLowerCase();
+                       return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+               },
+
+               "selected": function( elem ) {
+                       // Accessing this property makes selected-by-default
+                       // options in Safari work properly
+                       if ( elem.parentNode ) {
+                               elem.parentNode.selectedIndex;
+                       }
+
+                       return elem.selected === true;
+               },
+
+               // Contents
+               "empty": function( elem ) {
+                       // http://www.w3.org/TR/selectors/#empty-pseudo
+                       // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+                       //   but not by others (comment: 8; processing instruction: 7; etc.)
+                       // nodeType < 6 works because attributes (2) do not appear as children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               if ( elem.nodeType < 6 ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               },
+
+               "parent": function( elem ) {
+                       return !Expr.pseudos["empty"]( elem );
+               },
+
+               // Element/input types
+               "header": function( elem ) {
+                       return rheader.test( elem.nodeName );
+               },
+
+               "input": function( elem ) {
+                       return rinputs.test( elem.nodeName );
+               },
+
+               "button": function( elem ) {
+                       var name = elem.nodeName.toLowerCase();
+                       return name === "input" && elem.type === "button" || name === "button";
+               },
+
+               "text": function( elem ) {
+                       var attr;
+                       return elem.nodeName.toLowerCase() === "input" &&
+                               elem.type === "text" &&
+
+                               // Support: IE<8
+                               // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+                               ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+               },
+
+               // Position-in-collection
+               "first": createPositionalPseudo(function() {
+                       return [ 0 ];
+               }),
+
+               "last": createPositionalPseudo(function( matchIndexes, length ) {
+                       return [ length - 1 ];
+               }),
+
+               "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       return [ argument < 0 ? argument + length : argument ];
+               }),
+
+               "even": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 0;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "odd": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 1;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; --i >= 0; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; ++i < length; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               })
+       }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+       Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+       Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+       var matched, match, tokens, type,
+               soFar, groups, preFilters,
+               cached = tokenCache[ selector + " " ];
+
+       if ( cached ) {
+               return parseOnly ? 0 : cached.slice( 0 );
+       }
+
+       soFar = selector;
+       groups = [];
+       preFilters = Expr.preFilter;
+
+       while ( soFar ) {
+
+               // Comma and first run
+               if ( !matched || (match = rcomma.exec( soFar )) ) {
+                       if ( match ) {
+                               // Don't consume trailing commas as valid
+                               soFar = soFar.slice( match[0].length ) || soFar;
+                       }
+                       groups.push( (tokens = []) );
+               }
+
+               matched = false;
+
+               // Combinators
+               if ( (match = rcombinators.exec( soFar )) ) {
+                       matched = match.shift();
+                       tokens.push({
+                               value: matched,
+                               // Cast descendant combinators to space
+                               type: match[0].replace( rtrim, " " )
+                       });
+                       soFar = soFar.slice( matched.length );
+               }
+
+               // Filters
+               for ( type in Expr.filter ) {
+                       if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+                               (match = preFilters[ type ]( match ))) ) {
+                               matched = match.shift();
+                               tokens.push({
+                                       value: matched,
+                                       type: type,
+                                       matches: match
+                               });
+                               soFar = soFar.slice( matched.length );
+                       }
+               }
+
+               if ( !matched ) {
+                       break;
+               }
+       }
+
+       // Return the length of the invalid excess
+       // if we're just parsing
+       // Otherwise, throw an error or return tokens
+       return parseOnly ?
+               soFar.length :
+               soFar ?
+                       Sizzle.error( selector ) :
+                       // Cache the tokens
+                       tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+       var i = 0,
+               len = tokens.length,
+               selector = "";
+       for ( ; i < len; i++ ) {
+               selector += tokens[i].value;
+       }
+       return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+       var dir = combinator.dir,
+               skip = combinator.next,
+               key = skip || dir,
+               checkNonElements = base && key === "parentNode",
+               doneName = done++;
+
+       return combinator.first ?
+               // Check against closest ancestor/preceding element
+               function( elem, context, xml ) {
+                       while ( (elem = elem[ dir ]) ) {
+                               if ( elem.nodeType === 1 || checkNonElements ) {
+                                       return matcher( elem, context, xml );
+                               }
+                       }
+                       return false;
+               } :
+
+               // Check against all ancestor/preceding elements
+               function( elem, context, xml ) {
+                       var oldCache, uniqueCache, outerCache,
+                               newCache = [ dirruns, doneName ];
+
+                       // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+                       if ( xml ) {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               if ( matcher( elem, context, xml ) ) {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                       } else {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+                                               // Support: IE <9 only
+                                               // Defend against cloned attroperties (jQuery gh-1709)
+                                               uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+                                               if ( skip && skip === elem.nodeName.toLowerCase() ) {
+                                                       elem = elem[ dir ] || elem;
+                                               } else if ( (oldCache = uniqueCache[ key ]) &&
+                                                       oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+                                                       // Assign to newCache so results back-propagate to previous elements
+                                                       return (newCache[ 2 ] = oldCache[ 2 ]);
+                                               } else {
+                                                       // Reuse newcache so results back-propagate to previous elements
+                                                       uniqueCache[ key ] = newCache;
+
+                                                       // A match means we're done; a fail means we have to keep checking
+                                                       if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+                                                               return true;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       return false;
+               };
+}
+
+function elementMatcher( matchers ) {
+       return matchers.length > 1 ?
+               function( elem, context, xml ) {
+                       var i = matchers.length;
+                       while ( i-- ) {
+                               if ( !matchers[i]( elem, context, xml ) ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               } :
+               matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+       var i = 0,
+               len = contexts.length;
+       for ( ; i < len; i++ ) {
+               Sizzle( selector, contexts[i], results );
+       }
+       return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+       var elem,
+               newUnmatched = [],
+               i = 0,
+               len = unmatched.length,
+               mapped = map != null;
+
+       for ( ; i < len; i++ ) {
+               if ( (elem = unmatched[i]) ) {
+                       if ( !filter || filter( elem, context, xml ) ) {
+                               newUnmatched.push( elem );
+                               if ( mapped ) {
+                                       map.push( i );
+                               }
+                       }
+               }
+       }
+
+       return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+       if ( postFilter && !postFilter[ expando ] ) {
+               postFilter = setMatcher( postFilter );
+       }
+       if ( postFinder && !postFinder[ expando ] ) {
+               postFinder = setMatcher( postFinder, postSelector );
+       }
+       return markFunction(function( seed, results, context, xml ) {
+               var temp, i, elem,
+                       preMap = [],
+                       postMap = [],
+                       preexisting = results.length,
+
+                       // Get initial elements from seed or context
+                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+                       // Prefilter to get matcher input, preserving a map for seed-results synchronization
+                       matcherIn = preFilter && ( seed || !selector ) ?
+                               condense( elems, preMap, preFilter, context, xml ) :
+                               elems,
+
+                       matcherOut = matcher ?
+                               // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+                               postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+                                       // ...intermediate processing is necessary
+                                       [] :
+
+                                       // ...otherwise use results directly
+                                       results :
+                               matcherIn;
+
+               // Find primary matches
+               if ( matcher ) {
+                       matcher( matcherIn, matcherOut, context, xml );
+               }
+
+               // Apply postFilter
+               if ( postFilter ) {
+                       temp = condense( matcherOut, postMap );
+                       postFilter( temp, [], context, xml );
+
+                       // Un-match failing elements by moving them back to matcherIn
+                       i = temp.length;
+                       while ( i-- ) {
+                               if ( (elem = temp[i]) ) {
+                                       matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+                               }
+                       }
+               }
+
+               if ( seed ) {
+                       if ( postFinder || preFilter ) {
+                               if ( postFinder ) {
+                                       // Get the final matcherOut by condensing this intermediate into postFinder contexts
+                                       temp = [];
+                                       i = matcherOut.length;
+                                       while ( i-- ) {
+                                               if ( (elem = matcherOut[i]) ) {
+                                                       // Restore matcherIn since elem is not yet a final match
+                                                       temp.push( (matcherIn[i] = elem) );
+                                               }
+                                       }
+                                       postFinder( null, (matcherOut = []), temp, xml );
+                               }
+
+                               // Move matched elements from seed to results to keep them synchronized
+                               i = matcherOut.length;
+                               while ( i-- ) {
+                                       if ( (elem = matcherOut[i]) &&
+                                               (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+                                               seed[temp] = !(results[temp] = elem);
+                                       }
+                               }
+                       }
+
+               // Add elements to results, through postFinder if defined
+               } else {
+                       matcherOut = condense(
+                               matcherOut === results ?
+                                       matcherOut.splice( preexisting, matcherOut.length ) :
+                                       matcherOut
+                       );
+                       if ( postFinder ) {
+                               postFinder( null, results, matcherOut, xml );
+                       } else {
+                               push.apply( results, matcherOut );
+                       }
+               }
+       });
+}
+
+function matcherFromTokens( tokens ) {
+       var checkContext, matcher, j,
+               len = tokens.length,
+               leadingRelative = Expr.relative[ tokens[0].type ],
+               implicitRelative = leadingRelative || Expr.relative[" "],
+               i = leadingRelative ? 1 : 0,
+
+               // The foundational matcher ensures that elements are reachable from top-level context(s)
+               matchContext = addCombinator( function( elem ) {
+                       return elem === checkContext;
+               }, implicitRelative, true ),
+               matchAnyContext = addCombinator( function( elem ) {
+                       return indexOf( checkContext, elem ) > -1;
+               }, implicitRelative, true ),
+               matchers = [ function( elem, context, xml ) {
+                       var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+                               (checkContext = context).nodeType ?
+                                       matchContext( elem, context, xml ) :
+                                       matchAnyContext( elem, context, xml ) );
+                       // Avoid hanging onto element (issue #299)
+                       checkContext = null;
+                       return ret;
+               } ];
+
+       for ( ; i < len; i++ ) {
+               if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+                       matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+               } else {
+                       matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+                       // Return special upon seeing a positional matcher
+                       if ( matcher[ expando ] ) {
+                               // Find the next relative operator (if any) for proper handling
+                               j = ++i;
+                               for ( ; j < len; j++ ) {
+                                       if ( Expr.relative[ tokens[j].type ] ) {
+                                               break;
+                                       }
+                               }
+                               return setMatcher(
+                                       i > 1 && elementMatcher( matchers ),
+                                       i > 1 && toSelector(
+                                               // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+                                               tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+                                       ).replace( rtrim, "$1" ),
+                                       matcher,
+                                       i < j && matcherFromTokens( tokens.slice( i, j ) ),
+                                       j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+                                       j < len && toSelector( tokens )
+                               );
+                       }
+                       matchers.push( matcher );
+               }
+       }
+
+       return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+       var bySet = setMatchers.length > 0,
+               byElement = elementMatchers.length > 0,
+               superMatcher = function( seed, context, xml, results, outermost ) {
+                       var elem, j, matcher,
+                               matchedCount = 0,
+                               i = "0",
+                               unmatched = seed && [],
+                               setMatched = [],
+                               contextBackup = outermostContext,
+                               // We must always have either seed elements or outermost context
+                               elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+                               // Use integer dirruns iff this is the outermost matcher
+                               dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+                               len = elems.length;
+
+                       if ( outermost ) {
+                               outermostContext = context === document || context || outermost;
+                       }
+
+                       // Add elements passing elementMatchers directly to results
+                       // Support: IE<9, Safari
+                       // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+                       for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+                               if ( byElement && elem ) {
+                                       j = 0;
+                                       if ( !context && elem.ownerDocument !== document ) {
+                                               setDocument( elem );
+                                               xml = !documentIsHTML;
+                                       }
+                                       while ( (matcher = elementMatchers[j++]) ) {
+                                               if ( matcher( elem, context || document, xml) ) {
+                                                       results.push( elem );
+                                                       break;
+                                               }
+                                       }
+                                       if ( outermost ) {
+                                               dirruns = dirrunsUnique;
+                                       }
+                               }
+
+                               // Track unmatched elements for set filters
+                               if ( bySet ) {
+                                       // They will have gone through all possible matchers
+                                       if ( (elem = !matcher && elem) ) {
+                                               matchedCount--;
+                                       }
+
+                                       // Lengthen the array for every element, matched or not
+                                       if ( seed ) {
+                                               unmatched.push( elem );
+                                       }
+                               }
+                       }
+
+                       // `i` is now the count of elements visited above, and adding it to `matchedCount`
+                       // makes the latter nonnegative.
+                       matchedCount += i;
+
+                       // Apply set filters to unmatched elements
+                       // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+                       // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+                       // no element matchers and no seed.
+                       // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+                       // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+                       // numerically zero.
+                       if ( bySet && i !== matchedCount ) {
+                               j = 0;
+                               while ( (matcher = setMatchers[j++]) ) {
+                                       matcher( unmatched, setMatched, context, xml );
+                               }
+
+                               if ( seed ) {
+                                       // Reintegrate element matches to eliminate the need for sorting
+                                       if ( matchedCount > 0 ) {
+                                               while ( i-- ) {
+                                                       if ( !(unmatched[i] || setMatched[i]) ) {
+                                                               setMatched[i] = pop.call( results );
+                                                       }
+                                               }
+                                       }
+
+                                       // Discard index placeholder values to get only actual matches
+                                       setMatched = condense( setMatched );
+                               }
+
+                               // Add matches to results
+                               push.apply( results, setMatched );
+
+                               // Seedless set matches succeeding multiple successful matchers stipulate sorting
+                               if ( outermost && !seed && setMatched.length > 0 &&
+                                       ( matchedCount + setMatchers.length ) > 1 ) {
+
+                                       Sizzle.uniqueSort( results );
+                               }
+                       }
+
+                       // Override manipulation of globals by nested matchers
+                       if ( outermost ) {
+                               dirruns = dirrunsUnique;
+                               outermostContext = contextBackup;
+                       }
+
+                       return unmatched;
+               };
+
+       return bySet ?
+               markFunction( superMatcher ) :
+               superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+       var i,
+               setMatchers = [],
+               elementMatchers = [],
+               cached = compilerCache[ selector + " " ];
+
+       if ( !cached ) {
+               // Generate a function of recursive functions that can be used to check each element
+               if ( !match ) {
+                       match = tokenize( selector );
+               }
+               i = match.length;
+               while ( i-- ) {
+                       cached = matcherFromTokens( match[i] );
+                       if ( cached[ expando ] ) {
+                               setMatchers.push( cached );
+                       } else {
+                               elementMatchers.push( cached );
+                       }
+               }
+
+               // Cache the compiled function
+               cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+               // Save selector and tokenization
+               cached.selector = selector;
+       }
+       return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+       var i, tokens, token, type, find,
+               compiled = typeof selector === "function" && selector,
+               match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+       results = results || [];
+
+       // Try to minimize operations if there is only one selector in the list and no seed
+       // (the latter of which guarantees us context)
+       if ( match.length === 1 ) {
+
+               // Reduce context if the leading compound selector is an ID
+               tokens = match[0] = match[0].slice( 0 );
+               if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+                               context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+                       context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+                       if ( !context ) {
+                               return results;
+
+                       // Precompiled matchers will still verify ancestry, so step up a level
+                       } else if ( compiled ) {
+                               context = context.parentNode;
+                       }
+
+                       selector = selector.slice( tokens.shift().value.length );
+               }
+
+               // Fetch a seed set for right-to-left matching
+               i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+               while ( i-- ) {
+                       token = tokens[i];
+
+                       // Abort if we hit a combinator
+                       if ( Expr.relative[ (type = token.type) ] ) {
+                               break;
+                       }
+                       if ( (find = Expr.find[ type ]) ) {
+                               // Search, expanding context for leading sibling combinators
+                               if ( (seed = find(
+                                       token.matches[0].replace( runescape, funescape ),
+                                       rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+                               )) ) {
+
+                                       // If seed is empty or no tokens remain, we can return early
+                                       tokens.splice( i, 1 );
+                                       selector = seed.length && toSelector( tokens );
+                                       if ( !selector ) {
+                                               push.apply( results, seed );
+                                               return results;
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       // Compile and execute a filtering function if one is not provided
+       // Provide `match` to avoid retokenization if we modified the selector above
+       ( compiled || compile( selector, match ) )(
+               seed,
+               context,
+               !documentIsHTML,
+               results,
+               !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+       );
+       return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+       // Should return 1, but returns 4 (following)
+       return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+       el.innerHTML = "<a href='#'></a>";
+       return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+       addHandle( "type|href|height|width", function( elem, name, isXML ) {
+               if ( !isXML ) {
+                       return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+               }
+       });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+       el.innerHTML = "<input/>";
+       el.firstChild.setAttribute( "value", "" );
+       return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+       addHandle( "value", function( elem, name, isXML ) {
+               if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+                       return elem.defaultValue;
+               }
+       });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+       return el.getAttribute("disabled") == null;
+}) ) {
+       addHandle( booleans, function( elem, name, isXML ) {
+               var val;
+               if ( !isXML ) {
+                       return elem[ name ] === true ? name.toLowerCase() :
+                                       (val = elem.getAttributeNode( name )) && val.specified ?
+                                       val.value :
+                               null;
+               }
+       });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+       var matched = [],
+               truncate = until !== undefined;
+
+       while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+               if ( elem.nodeType === 1 ) {
+                       if ( truncate && jQuery( elem ).is( until ) ) {
+                               break;
+                       }
+                       matched.push( elem );
+               }
+       }
+       return matched;
+};
+
+
+var siblings = function( n, elem ) {
+       var matched = [];
+
+       for ( ; n; n = n.nextSibling ) {
+               if ( n.nodeType === 1 && n !== elem ) {
+                       matched.push( n );
+               }
+       }
+
+       return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+       if ( jQuery.isFunction( qualifier ) ) {
+               return jQuery.grep( elements, function( elem, i ) {
+                       return !!qualifier.call( elem, i, elem ) !== not;
+               } );
+       }
+
+       // Single element
+       if ( qualifier.nodeType ) {
+               return jQuery.grep( elements, function( elem ) {
+                       return ( elem === qualifier ) !== not;
+               } );
+       }
+
+       // Arraylike of elements (jQuery, arguments, Array)
+       if ( typeof qualifier !== "string" ) {
+               return jQuery.grep( elements, function( elem ) {
+                       return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+               } );
+       }
+
+       // Simple selector that can be filtered directly, removing non-Elements
+       if ( risSimple.test( qualifier ) ) {
+               return jQuery.filter( qualifier, elements, not );
+       }
+
+       // Complex selector, compare the two sets, removing non-Elements
+       qualifier = jQuery.filter( qualifier, elements );
+       return jQuery.grep( elements, function( elem ) {
+               return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+       } );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+       var elem = elems[ 0 ];
+
+       if ( not ) {
+               expr = ":not(" + expr + ")";
+       }
+
+       if ( elems.length === 1 && elem.nodeType === 1 ) {
+               return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+       }
+
+       return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+               return elem.nodeType === 1;
+       } ) );
+};
+
+jQuery.fn.extend( {
+       find: function( selector ) {
+               var i, ret,
+                       len = this.length,
+                       self = this;
+
+               if ( typeof selector !== "string" ) {
+                       return this.pushStack( jQuery( selector ).filter( function() {
+                               for ( i = 0; i < len; i++ ) {
+                                       if ( jQuery.contains( self[ i ], this ) ) {
+                                               return true;
+                                       }
+                               }
+                       } ) );
+               }
+
+               ret = this.pushStack( [] );
+
+               for ( i = 0; i < len; i++ ) {
+                       jQuery.find( selector, self[ i ], ret );
+               }
+
+               return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+       },
+       filter: function( selector ) {
+               return this.pushStack( winnow( this, selector || [], false ) );
+       },
+       not: function( selector ) {
+               return this.pushStack( winnow( this, selector || [], true ) );
+       },
+       is: function( selector ) {
+               return !!winnow(
+                       this,
+
+                       // If this is a positional/relative selector, check membership in the returned set
+                       // so $("p:first").is("p:last") won't return true for a doc with two "p".
+                       typeof selector === "string" && rneedsContext.test( selector ) ?
+                               jQuery( selector ) :
+                               selector || [],
+                       false
+               ).length;
+       }
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+       // A simple way to check for HTML strings
+       // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+       // Strict HTML recognition (#11290: must start with <)
+       // Shortcut simple #id case for speed
+       rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+       init = jQuery.fn.init = function( selector, context, root ) {
+               var match, elem;
+
+               // HANDLE: $(""), $(null), $(undefined), $(false)
+               if ( !selector ) {
+                       return this;
+               }
+
+               // Method init() accepts an alternate rootjQuery
+               // so migrate can support jQuery.sub (gh-2101)
+               root = root || rootjQuery;
+
+               // Handle HTML strings
+               if ( typeof selector === "string" ) {
+                       if ( selector[ 0 ] === "<" &&
+                               selector[ selector.length - 1 ] === ">" &&
+                               selector.length >= 3 ) {
+
+                               // Assume that strings that start and end with <> are HTML and skip the regex check
+                               match = [ null, selector, null ];
+
+                       } else {
+                               match = rquickExpr.exec( selector );
+                       }
+
+                       // Match html or make sure no context is specified for #id
+                       if ( match && ( match[ 1 ] || !context ) ) {
+
+                               // HANDLE: $(html) -> $(array)
+                               if ( match[ 1 ] ) {
+                                       context = context instanceof jQuery ? context[ 0 ] : context;
+
+                                       // Option to run scripts is true for back-compat
+                                       // Intentionally let the error be thrown if parseHTML is not present
+                                       jQuery.merge( this, jQuery.parseHTML(
+                                               match[ 1 ],
+                                               context && context.nodeType ? context.ownerDocument || context : document,
+                                               true
+                                       ) );
+
+                                       // HANDLE: $(html, props)
+                                       if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+                                               for ( match in context ) {
+
+                                                       // Properties of context are called as methods if possible
+                                                       if ( jQuery.isFunction( this[ match ] ) ) {
+                                                               this[ match ]( context[ match ] );
+
+                                                       // ...and otherwise set as attributes
+                                                       } else {
+                                                               this.attr( match, context[ match ] );
+                                                       }
+                                               }
+                                       }
+
+                                       return this;
+
+                               // HANDLE: $(#id)
+                               } else {
+                                       elem = document.getElementById( match[ 2 ] );
+
+                                       if ( elem ) {
+
+                                               // Inject the element directly into the jQuery object
+                                               this[ 0 ] = elem;
+                                               this.length = 1;
+                                       }
+                                       return this;
+                               }
+
+                       // HANDLE: $(expr, $(...))
+                       } else if ( !context || context.jquery ) {
+                               return ( context || root ).find( selector );
+
+                       // HANDLE: $(expr, context)
+                       // (which is just equivalent to: $(context).find(expr)
+                       } else {
+                               return this.constructor( context ).find( selector );
+                       }
+
+               // HANDLE: $(DOMElement)
+               } else if ( selector.nodeType ) {
+                       this[ 0 ] = selector;
+                       this.length = 1;
+                       return this;
+
+               // HANDLE: $(function)
+               // Shortcut for document ready
+               } else if ( jQuery.isFunction( selector ) ) {
+                       return root.ready !== undefined ?
+                               root.ready( selector ) :
+
+                               // Execute immediately if ready is not present
+                               selector( jQuery );
+               }
+
+               return jQuery.makeArray( selector, this );
+       };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+       // Methods guaranteed to produce a unique set when starting from a unique set
+       guaranteedUnique = {
+               children: true,
+               contents: true,
+               next: true,
+               prev: true
+       };
+
+jQuery.fn.extend( {
+       has: function( target ) {
+               var targets = jQuery( target, this ),
+                       l = targets.length;
+
+               return this.filter( function() {
+                       var i = 0;
+                       for ( ; i < l; i++ ) {
+                               if ( jQuery.contains( this, targets[ i ] ) ) {
+                                       return true;
+                               }
+                       }
+               } );
+       },
+
+       closest: function( selectors, context ) {
+               var cur,
+                       i = 0,
+                       l = this.length,
+                       matched = [],
+                       targets = typeof selectors !== "string" && jQuery( selectors );
+
+               // Positional selectors never match, since there's no _selection_ context
+               if ( !rneedsContext.test( selectors ) ) {
+                       for ( ; i < l; i++ ) {
+                               for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+                                       // Always skip document fragments
+                                       if ( cur.nodeType < 11 && ( targets ?
+                                               targets.index( cur ) > -1 :
+
+                                               // Don't pass non-elements to Sizzle
+                                               cur.nodeType === 1 &&
+                                                       jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+                                               matched.push( cur );
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+       },
+
+       // Determine the position of an element within the set
+       index: function( elem ) {
+
+               // No argument, return index in parent
+               if ( !elem ) {
+                       return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+               }
+
+               // Index in selector
+               if ( typeof elem === "string" ) {
+                       return indexOf.call( jQuery( elem ), this[ 0 ] );
+               }
+
+               // Locate the position of the desired element
+               return indexOf.call( this,
+
+                       // If it receives a jQuery object, the first element is used
+                       elem.jquery ? elem[ 0 ] : elem
+               );
+       },
+
+       add: function( selector, context ) {
+               return this.pushStack(
+                       jQuery.uniqueSort(
+                               jQuery.merge( this.get(), jQuery( selector, context ) )
+                       )
+               );
+       },
+
+       addBack: function( selector ) {
+               return this.add( selector == null ?
+                       this.prevObject : this.prevObject.filter( selector )
+               );
+       }
+} );
+
+function sibling( cur, dir ) {
+       while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+       return cur;
+}
+
+jQuery.each( {
+       parent: function( elem ) {
+               var parent = elem.parentNode;
+               return parent && parent.nodeType !== 11 ? parent : null;
+       },
+       parents: function( elem ) {
+               return dir( elem, "parentNode" );
+       },
+       parentsUntil: function( elem, i, until ) {
+               return dir( elem, "parentNode", until );
+       },
+       next: function( elem ) {
+               return sibling( elem, "nextSibling" );
+       },
+       prev: function( elem ) {
+               return sibling( elem, "previousSibling" );
+       },
+       nextAll: function( elem ) {
+               return dir( elem, "nextSibling" );
+       },
+       prevAll: function( elem ) {
+               return dir( elem, "previousSibling" );
+       },
+       nextUntil: function( elem, i, until ) {
+               return dir( elem, "nextSibling", until );
+       },
+       prevUntil: function( elem, i, until ) {
+               return dir( elem, "previousSibling", until );
+       },
+       siblings: function( elem ) {
+               return siblings( ( elem.parentNode || {} ).firstChild, elem );
+       },
+       children: function( elem ) {
+               return siblings( elem.firstChild );
+       },
+       contents: function( elem ) {
+               return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+       }
+}, function( name, fn ) {
+       jQuery.fn[ name ] = function( until, selector ) {
+               var matched = jQuery.map( this, fn, until );
+
+               if ( name.slice( -5 ) !== "Until" ) {
+                       selector = until;
+               }
+
+               if ( selector && typeof selector === "string" ) {
+                       matched = jQuery.filter( selector, matched );
+               }
+
+               if ( this.length > 1 ) {
+
+                       // Remove duplicates
+                       if ( !guaranteedUnique[ name ] ) {
+                               jQuery.uniqueSort( matched );
+                       }
+
+                       // Reverse order for parents* and prev-derivatives
+                       if ( rparentsprev.test( name ) ) {
+                               matched.reverse();
+                       }
+               }
+
+               return this.pushStack( matched );
+       };
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+       var object = {};
+       jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+               object[ flag ] = true;
+       } );
+       return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *     options: an optional list of space-separated options that will change how
+ *                     the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *     once:                   will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *     memory:                 will keep track of previous values and will call any callback added
+ *                                     after the list has been fired right away with the latest "memorized"
+ *                                     values (like a Deferred)
+ *
+ *     unique:                 will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *     stopOnFalse:    interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+       // Convert options from String-formatted to Object-formatted if needed
+       // (we check in cache first)
+       options = typeof options === "string" ?
+               createOptions( options ) :
+               jQuery.extend( {}, options );
+
+       var // Flag to know if list is currently firing
+               firing,
+
+               // Last fire value for non-forgettable lists
+               memory,
+
+               // Flag to know if list was already fired
+               fired,
+
+               // Flag to prevent firing
+               locked,
+
+               // Actual callback list
+               list = [],
+
+               // Queue of execution data for repeatable lists
+               queue = [],
+
+               // Index of currently firing callback (modified by add/remove as needed)
+               firingIndex = -1,
+
+               // Fire callbacks
+               fire = function() {
+
+                       // Enforce single-firing
+                       locked = options.once;
+
+                       // Execute callbacks for all pending executions,
+                       // respecting firingIndex overrides and runtime changes
+                       fired = firing = true;
+                       for ( ; queue.length; firingIndex = -1 ) {
+                               memory = queue.shift();
+                               while ( ++firingIndex < list.length ) {
+
+                                       // Run callback and check for early termination
+                                       if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+                                               options.stopOnFalse ) {
+
+                                               // Jump to end and forget the data so .add doesn't re-fire
+                                               firingIndex = list.length;
+                                               memory = false;
+                                       }
+                               }
+                       }
+
+                       // Forget the data if we're done with it
+                       if ( !options.memory ) {
+                               memory = false;
+                       }
+
+                       firing = false;
+
+                       // Clean up if we're done firing for good
+                       if ( locked ) {
+
+                               // Keep an empty list if we have data for future add calls
+                               if ( memory ) {
+                                       list = [];
+
+                               // Otherwise, this object is spent
+                               } else {
+                                       list = "";
+                               }
+                       }
+               },
+
+               // Actual Callbacks object
+               self = {
+
+                       // Add a callback or a collection of callbacks to the list
+                       add: function() {
+                               if ( list ) {
+
+                                       // If we have memory from a past run, we should fire after adding
+                                       if ( memory && !firing ) {
+                                               firingIndex = list.length - 1;
+                                               queue.push( memory );
+                                       }
+
+                                       ( function add( args ) {
+                                               jQuery.each( args, function( _, arg ) {
+                                                       if ( jQuery.isFunction( arg ) ) {
+                                                               if ( !options.unique || !self.has( arg ) ) {
+                                                                       list.push( arg );
+                                                               }
+                                                       } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+                                                               // Inspect recursively
+                                                               add( arg );
+                                                       }
+                                               } );
+                                       } )( arguments );
+
+                                       if ( memory && !firing ) {
+                                               fire();
+                                       }
+                               }
+                               return this;
+                       },
+
+                       // Remove a callback from the list
+                       remove: function() {
+                               jQuery.each( arguments, function( _, arg ) {
+                                       var index;
+                                       while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+                                               list.splice( index, 1 );
+
+                                               // Handle firing indexes
+                                               if ( index <= firingIndex ) {
+                                                       firingIndex--;
+                                               }
+                                       }
+                               } );
+                               return this;
+                       },
+
+                       // Check if a given callback is in the list.
+                       // If no argument is given, return whether or not list has callbacks attached.
+                       has: function( fn ) {
+                               return fn ?
+                                       jQuery.inArray( fn, list ) > -1 :
+                                       list.length > 0;
+                       },
+
+                       // Remove all callbacks from the list
+                       empty: function() {
+                               if ( list ) {
+                                       list = [];
+                               }
+                               return this;
+                       },
+
+                       // Disable .fire and .add
+                       // Abort any current/pending executions
+                       // Clear all callbacks and values
+                       disable: function() {
+                               locked = queue = [];
+                               list = memory = "";
+                               return this;
+                       },
+                       disabled: function() {
+                               return !list;
+                       },
+
+                       // Disable .fire
+                       // Also disable .add unless we have memory (since it would have no effect)
+                       // Abort any pending executions
+                       lock: function() {
+                               locked = queue = [];
+                               if ( !memory && !firing ) {
+                                       list = memory = "";
+                               }
+                               return this;
+                       },
+                       locked: function() {
+                               return !!locked;
+                       },
+
+                       // Call all callbacks with the given context and arguments
+                       fireWith: function( context, args ) {
+                               if ( !locked ) {
+                                       args = args || [];
+                                       args = [ context, args.slice ? args.slice() : args ];
+                                       queue.push( args );
+                                       if ( !firing ) {
+                                               fire();
+                                       }
+                               }
+                               return this;
+                       },
+
+                       // Call all the callbacks with the given arguments
+                       fire: function() {
+                               self.fireWith( this, arguments );
+                               return this;
+                       },
+
+                       // To know if the callbacks have already been called at least once
+                       fired: function() {
+                               return !!fired;
+                       }
+               };
+
+       return self;
+};
+
+
+function Identity( v ) {
+       return v;
+}
+function Thrower( ex ) {
+       throw ex;
+}
+
+function adoptValue( value, resolve, reject ) {
+       var method;
+
+       try {
+
+               // Check for promise aspect first to privilege synchronous behavior
+               if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+                       method.call( value ).done( resolve ).fail( reject );
+
+               // Other thenables
+               } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+                       method.call( value, resolve, reject );
+
+               // Other non-thenables
+               } else {
+
+                       // Support: Android 4.0 only
+                       // Strict mode functions invoked without .call/.apply get global-object context
+                       resolve.call( undefined, value );
+               }
+
+       // For Promises/A+, convert exceptions into rejections
+       // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+       // Deferred#then to conditionally suppress rejection.
+       } catch ( value ) {
+
+               // Support: Android 4.0 only
+               // Strict mode functions invoked without .call/.apply get global-object context
+               reject.call( undefined, value );
+       }
+}
+
+jQuery.extend( {
+
+       Deferred: function( func ) {
+               var tuples = [
+
+                               // action, add listener, callbacks,
+                               // ... .then handlers, argument index, [final state]
+                               [ "notify", "progress", jQuery.Callbacks( "memory" ),
+                                       jQuery.Callbacks( "memory" ), 2 ],
+                               [ "resolve", "done", jQuery.Callbacks( "once memory" ),
+                                       jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+                               [ "reject", "fail", jQuery.Callbacks( "once memory" ),
+                                       jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+                       ],
+                       state = "pending",
+                       promise = {
+                               state: function() {
+                                       return state;
+                               },
+                               always: function() {
+                                       deferred.done( arguments ).fail( arguments );
+                                       return this;
+                               },
+                               "catch": function( fn ) {
+                                       return promise.then( null, fn );
+                               },
+
+                               // Keep pipe for back-compat
+                               pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+                                       var fns = arguments;
+
+                                       return jQuery.Deferred( function( newDefer ) {
+                                               jQuery.each( tuples, function( i, tuple ) {
+
+                                                       // Map tuples (progress, done, fail) to arguments (done, fail, progress)
+                                                       var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+                                                       // deferred.progress(function() { bind to newDefer or newDefer.notify })
+                                                       // deferred.done(function() { bind to newDefer or newDefer.resolve })
+                                                       // deferred.fail(function() { bind to newDefer or newDefer.reject })
+                                                       deferred[ tuple[ 1 ] ]( function() {
+                                                               var returned = fn && fn.apply( this, arguments );
+                                                               if ( returned && jQuery.isFunction( returned.promise ) ) {
+                                                                       returned.promise()
+                                                                               .progress( newDefer.notify )
+                                                                               .done( newDefer.resolve )
+                                                                               .fail( newDefer.reject );
+                                                               } else {
+                                                                       newDefer[ tuple[ 0 ] + "With" ](
+                                                                               this,
+                                                                               fn ? [ returned ] : arguments
+                                                                       );
+                                                               }
+                                                       } );
+                                               } );
+                                               fns = null;
+                                       } ).promise();
+                               },
+                               then: function( onFulfilled, onRejected, onProgress ) {
+                                       var maxDepth = 0;
+                                       function resolve( depth, deferred, handler, special ) {
+                                               return function() {
+                                                       var that = this,
+                                                               args = arguments,
+                                                               mightThrow = function() {
+                                                                       var returned, then;
+
+                                                                       // Support: Promises/A+ section 2.3.3.3.3
+                                                                       // https://promisesaplus.com/#point-59
+                                                                       // Ignore double-resolution attempts
+                                                                       if ( depth < maxDepth ) {
+                                                                               return;
+                                                                       }
+
+                                                                       returned = handler.apply( that, args );
+
+                                                                       // Support: Promises/A+ section 2.3.1
+                                                                       // https://promisesaplus.com/#point-48
+                                                                       if ( returned === deferred.promise() ) {
+                                                                               throw new TypeError( "Thenable self-resolution" );
+                                                                       }
+
+                                                                       // Support: Promises/A+ sections 2.3.3.1, 3.5
+                                                                       // https://promisesaplus.com/#point-54
+                                                                       // https://promisesaplus.com/#point-75
+                                                                       // Retrieve `then` only once
+                                                                       then = returned &&
+
+                                                                               // Support: Promises/A+ section 2.3.4
+                                                                               // https://promisesaplus.com/#point-64
+                                                                               // Only check objects and functions for thenability
+                                                                               ( typeof returned === "object" ||
+                                                                                       typeof returned === "function" ) &&
+                                                                               returned.then;
+
+                                                                       // Handle a returned thenable
+                                                                       if ( jQuery.isFunction( then ) ) {
+
+                                                                               // Special processors (notify) just wait for resolution
+                                                                               if ( special ) {
+                                                                                       then.call(
+                                                                                               returned,
+                                                                                               resolve( maxDepth, deferred, Identity, special ),
+                                                                                               resolve( maxDepth, deferred, Thrower, special )
+                                                                                       );
+
+                                                                               // Normal processors (resolve) also hook into progress
+                                                                               } else {
+
+                                                                                       // ...and disregard older resolution values
+                                                                                       maxDepth++;
+
+                                                                                       then.call(
+                                                                                               returned,
+                                                                                               resolve( maxDepth, deferred, Identity, special ),
+                                                                                               resolve( maxDepth, deferred, Thrower, special ),
+                                                                                               resolve( maxDepth, deferred, Identity,
+                                                                                                       deferred.notifyWith )
+                                                                                       );
+                                                                               }
+
+                                                                       // Handle all other returned values
+                                                                       } else {
+
+                                                                               // Only substitute handlers pass on context
+                                                                               // and multiple values (non-spec behavior)
+                                                                               if ( handler !== Identity ) {
+                                                                                       that = undefined;
+                                                                                       args = [ returned ];
+                                                                               }
+
+                                                                               // Process the value(s)
+                                                                               // Default process is resolve
+                                                                               ( special || deferred.resolveWith )( that, args );
+                                                                       }
+                                                               },
+
+                                                               // Only normal processors (resolve) catch and reject exceptions
+                                                               process = special ?
+                                                                       mightThrow :
+                                                                       function() {
+                                                                               try {
+                                                                                       mightThrow();
+                                                                               } catch ( e ) {
+
+                                                                                       if ( jQuery.Deferred.exceptionHook ) {
+                                                                                               jQuery.Deferred.exceptionHook( e,
+                                                                                                       process.stackTrace );
+                                                                                       }
+
+                                                                                       // Support: Promises/A+ section 2.3.3.3.4.1
+                                                                                       // https://promisesaplus.com/#point-61
+                                                                                       // Ignore post-resolution exceptions
+                                                                                       if ( depth + 1 >= maxDepth ) {
+
+                                                                                               // Only substitute handlers pass on context
+                                                                                               // and multiple values (non-spec behavior)
+                                                                                               if ( handler !== Thrower ) {
+                                                                                                       that = undefined;
+                                                                                                       args = [ e ];
+                                                                                               }
+
+                                                                                               deferred.rejectWith( that, args );
+                                                                                       }
+                                                                               }
+                                                                       };
+
+                                                       // Support: Promises/A+ section 2.3.3.3.1
+                                                       // https://promisesaplus.com/#point-57
+                                                       // Re-resolve promises immediately to dodge false rejection from
+                                                       // subsequent errors
+                                                       if ( depth ) {
+                                                               process();
+                                                       } else {
+
+                                                               // Call an optional hook to record the stack, in case of exception
+                                                               // since it's otherwise lost when execution goes async
+                                                               if ( jQuery.Deferred.getStackHook ) {
+                                                                       process.stackTrace = jQuery.Deferred.getStackHook();
+                                                               }
+                                                               window.setTimeout( process );
+                                                       }
+                                               };
+                                       }
+
+                                       return jQuery.Deferred( function( newDefer ) {
+
+                                               // progress_handlers.add( ... )
+                                               tuples[ 0 ][ 3 ].add(
+                                                       resolve(
+                                                               0,
+                                                               newDefer,
+                                                               jQuery.isFunction( onProgress ) ?
+                                                                       onProgress :
+                                                                       Identity,
+                                                               newDefer.notifyWith
+                                                       )
+                                               );
+
+                                               // fulfilled_handlers.add( ... )
+                                               tuples[ 1 ][ 3 ].add(
+                                                       resolve(
+                                                               0,
+                                                               newDefer,
+                                                               jQuery.isFunction( onFulfilled ) ?
+                                                                       onFulfilled :
+                                                                       Identity
+                                                       )
+                                               );
+
+                                               // rejected_handlers.add( ... )
+                                               tuples[ 2 ][ 3 ].add(
+                                                       resolve(
+                                                               0,
+                                                               newDefer,
+                                                               jQuery.isFunction( onRejected ) ?
+                                                                       onRejected :
+                                                                       Thrower
+                                                       )
+                                               );
+                                       } ).promise();
+                               },
+
+                               // Get a promise for this deferred
+                               // If obj is provided, the promise aspect is added to the object
+                               promise: function( obj ) {
+                                       return obj != null ? jQuery.extend( obj, promise ) : promise;
+                               }
+                       },
+                       deferred = {};
+
+               // Add list-specific methods
+               jQuery.each( tuples, function( i, tuple ) {
+                       var list = tuple[ 2 ],
+                               stateString = tuple[ 5 ];
+
+                       // promise.progress = list.add
+                       // promise.done = list.add
+                       // promise.fail = list.add
+                       promise[ tuple[ 1 ] ] = list.add;
+
+                       // Handle state
+                       if ( stateString ) {
+                               list.add(
+                                       function() {
+
+                                               // state = "resolved" (i.e., fulfilled)
+                                               // state = "rejected"
+                                               state = stateString;
+                                       },
+
+                                       // rejected_callbacks.disable
+                                       // fulfilled_callbacks.disable
+                                       tuples[ 3 - i ][ 2 ].disable,
+
+                                       // progress_callbacks.lock
+                                       tuples[ 0 ][ 2 ].lock
+                               );
+                       }
+
+                       // progress_handlers.fire
+                       // fulfilled_handlers.fire
+                       // rejected_handlers.fire
+                       list.add( tuple[ 3 ].fire );
+
+                       // deferred.notify = function() { deferred.notifyWith(...) }
+                       // deferred.resolve = function() { deferred.resolveWith(...) }
+                       // deferred.reject = function() { deferred.rejectWith(...) }
+                       deferred[ tuple[ 0 ] ] = function() {
+                               deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+                               return this;
+                       };
+
+                       // deferred.notifyWith = list.fireWith
+                       // deferred.resolveWith = list.fireWith
+                       // deferred.rejectWith = list.fireWith
+                       deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+               } );
+
+               // Make the deferred a promise
+               promise.promise( deferred );
+
+               // Call given func if any
+               if ( func ) {
+                       func.call( deferred, deferred );
+               }
+
+               // All done!
+               return deferred;
+       },
+
+       // Deferred helper
+       when: function( singleValue ) {
+               var
+
+                       // count of uncompleted subordinates
+                       remaining = arguments.length,
+
+                       // count of unprocessed arguments
+                       i = remaining,
+
+                       // subordinate fulfillment data
+                       resolveContexts = Array( i ),
+                       resolveValues = slice.call( arguments ),
+
+                       // the master Deferred
+                       master = jQuery.Deferred(),
+
+                       // subordinate callback factory
+                       updateFunc = function( i ) {
+                               return function( value ) {
+                                       resolveContexts[ i ] = this;
+                                       resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+                                       if ( !( --remaining ) ) {
+                                               master.resolveWith( resolveContexts, resolveValues );
+                                       }
+                               };
+                       };
+
+               // Single- and empty arguments are adopted like Promise.resolve
+               if ( remaining <= 1 ) {
+                       adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
+
+                       // Use .then() to unwrap secondary thenables (cf. gh-3000)
+                       if ( master.state() === "pending" ||
+                               jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+                               return master.then();
+                       }
+               }
+
+               // Multiple arguments are aggregated like Promise.all array elements
+               while ( i-- ) {
+                       adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+               }
+
+               return master.promise();
+       }
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+       // Support: IE 8 - 9 only
+       // Console exists when dev tools are open, which can happen at any time
+       if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+               window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+       }
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+       window.setTimeout( function() {
+               throw error;
+       } );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+       readyList
+               .then( fn )
+
+               // Wrap jQuery.readyException in a function so that the lookup
+               // happens at the time of error handling instead of callback
+               // registration.
+               .catch( function( error ) {
+                       jQuery.readyException( error );
+               } );
+
+       return this;
+};
+
+jQuery.extend( {
+
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+
+       // A counter to track how many items to wait for before
+       // the ready event fires. See #6781
+       readyWait: 1,
+
+       // Hold (or release) the ready event
+       holdReady: function( hold ) {
+               if ( hold ) {
+                       jQuery.readyWait++;
+               } else {
+                       jQuery.ready( true );
+               }
+       },
+
+       // Handle when the DOM is ready
+       ready: function( wait ) {
+
+               // Abort if there are pending holds or we're already ready
+               if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+                       return;
+               }
+
+               // Remember that the DOM is ready
+               jQuery.isReady = true;
+
+               // If a normal DOM Ready event fired, decrement, and wait if need be
+               if ( wait !== true && --jQuery.readyWait > 0 ) {
+                       return;
+               }
+
+               // If there are functions bound, to execute
+               readyList.resolveWith( document, [ jQuery ] );
+       }
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+       document.removeEventListener( "DOMContentLoaded", completed );
+       window.removeEventListener( "load", completed );
+       jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+       ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+       // Handle it asynchronously to allow scripts the opportunity to delay ready
+       window.setTimeout( jQuery.ready );
+
+} else {
+
+       // Use the handy event callback
+       document.addEventListener( "DOMContentLoaded", completed );
+
+       // A fallback to window.onload, that will always work
+       window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+       var i = 0,
+               len = elems.length,
+               bulk = key == null;
+
+       // Sets many values
+       if ( jQuery.type( key ) === "object" ) {
+               chainable = true;
+               for ( i in key ) {
+                       access( elems, fn, i, key[ i ], true, emptyGet, raw );
+               }
+
+       // Sets one value
+       } else if ( value !== undefined ) {
+               chainable = true;
+
+               if ( !jQuery.isFunction( value ) ) {
+                       raw = true;
+               }
+
+               if ( bulk ) {
+
+                       // Bulk operations run against the entire set
+                       if ( raw ) {
+                               fn.call( elems, value );
+                               fn = null;
+
+                       // ...except when executing function values
+                       } else {
+                               bulk = fn;
+                               fn = function( elem, key, value ) {
+                                       return bulk.call( jQuery( elem ), value );
+                               };
+                       }
+               }
+
+               if ( fn ) {
+                       for ( ; i < len; i++ ) {
+                               fn(
+                                       elems[ i ], key, raw ?
+                                       value :
+                                       value.call( elems[ i ], i, fn( elems[ i ], key ) )
+                               );
+                       }
+               }
+       }
+
+       if ( chainable ) {
+               return elems;
+       }
+
+       // Gets
+       if ( bulk ) {
+               return fn.call( elems );
+       }
+
+       return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+       // Accepts only:
+       //  - Node
+       //    - Node.ELEMENT_NODE
+       //    - Node.DOCUMENT_NODE
+       //  - Object
+       //    - Any
+       return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+       this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+       cache: function( owner ) {
+
+               // Check if the owner object already has a cache
+               var value = owner[ this.expando ];
+
+               // If not, create one
+               if ( !value ) {
+                       value = {};
+
+                       // We can accept data for non-element nodes in modern browsers,
+                       // but we should not, see #8335.
+                       // Always return an empty object.
+                       if ( acceptData( owner ) ) {
+
+                               // If it is a node unlikely to be stringify-ed or looped over
+                               // use plain assignment
+                               if ( owner.nodeType ) {
+                                       owner[ this.expando ] = value;
+
+                               // Otherwise secure it in a non-enumerable property
+                               // configurable must be true to allow the property to be
+                               // deleted when data is removed
+                               } else {
+                                       Object.defineProperty( owner, this.expando, {
+                                               value: value,
+                                               configurable: true
+                                       } );
+                               }
+                       }
+               }
+
+               return value;
+       },
+       set: function( owner, data, value ) {
+               var prop,
+                       cache = this.cache( owner );
+
+               // Handle: [ owner, key, value ] args
+               // Always use camelCase key (gh-2257)
+               if ( typeof data === "string" ) {
+                       cache[ jQuery.camelCase( data ) ] = value;
+
+               // Handle: [ owner, { properties } ] args
+               } else {
+
+                       // Copy the properties one-by-one to the cache object
+                       for ( prop in data ) {
+                               cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+                       }
+               }
+               return cache;
+       },
+       get: function( owner, key ) {
+               return key === undefined ?
+                       this.cache( owner ) :
+
+                       // Always use camelCase key (gh-2257)
+                       owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+       },
+       access: function( owner, key, value ) {
+
+               // In cases where either:
+               //
+               //   1. No key was specified
+               //   2. A string key was specified, but no value provided
+               //
+               // Take the "read" path and allow the get method to determine
+               // which value to return, respectively either:
+               //
+               //   1. The entire cache object
+               //   2. The data stored at the key
+               //
+               if ( key === undefined ||
+                               ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+                       return this.get( owner, key );
+               }
+
+               // When the key is not a string, or both a key and value
+               // are specified, set or extend (existing objects) with either:
+               //
+               //   1. An object of properties
+               //   2. A key and value
+               //
+               this.set( owner, key, value );
+
+               // Since the "set" path can have two possible entry points
+               // return the expected data based on which path was taken[*]
+               return value !== undefined ? value : key;
+       },
+       remove: function( owner, key ) {
+               var i,
+                       cache = owner[ this.expando ];
+
+               if ( cache === undefined ) {
+                       return;
+               }
+
+               if ( key !== undefined ) {
+
+                       // Support array or space separated string of keys
+                       if ( jQuery.isArray( key ) ) {
+
+                               // If key is an array of keys...
+                               // We always set camelCase keys, so remove that.
+                               key = key.map( jQuery.camelCase );
+                       } else {
+                               key = jQuery.camelCase( key );
+
+                               // If a key with the spaces exists, use it.
+                               // Otherwise, create an array by matching non-whitespace
+                               key = key in cache ?
+                                       [ key ] :
+                                       ( key.match( rnothtmlwhite ) || [] );
+                       }
+
+                       i = key.length;
+
+                       while ( i-- ) {
+                               delete cache[ key[ i ] ];
+                       }
+               }
+
+               // Remove the expando if there's no more data
+               if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+                       // Support: Chrome <=35 - 45
+                       // Webkit & Blink performance suffers when deleting properties
+                       // from DOM nodes, so set to undefined instead
+                       // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+                       if ( owner.nodeType ) {
+                               owner[ this.expando ] = undefined;
+                       } else {
+                               delete owner[ this.expando ];
+                       }
+               }
+       },
+       hasData: function( owner ) {
+               var cache = owner[ this.expando ];
+               return cache !== undefined && !jQuery.isEmptyObject( cache );
+       }
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+//     Implementation Summary
+//
+//     1. Enforce API surface and semantic compatibility with 1.9.x branch
+//     2. Improve the module's maintainability by reducing the storage
+//             paths to a single mechanism.
+//     3. Use the same single mechanism to support "private" and "user" data.
+//     4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//     5. Avoid exposing implementation details on user objects (eg. expando properties)
+//     6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+       rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+       if ( data === "true" ) {
+               return true;
+       }
+
+       if ( data === "false" ) {
+               return false;
+       }
+
+       if ( data === "null" ) {
+               return null;
+       }
+
+       // Only convert to a number if it doesn't change the string
+       if ( data === +data + "" ) {
+               return +data;
+       }
+
+       if ( rbrace.test( data ) ) {
+               return JSON.parse( data );
+       }
+
+       return data;
+}
+
+function dataAttr( elem, key, data ) {
+       var name;
+
+       // If nothing was found internally, try to fetch any
+       // data from the HTML5 data-* attribute
+       if ( data === undefined && elem.nodeType === 1 ) {
+               name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+               data = elem.getAttribute( name );
+
+               if ( typeof data === "string" ) {
+                       try {
+                               data = getData( data );
+                       } catch ( e ) {}
+
+                       // Make sure we set the data so it isn't changed later
+                       dataUser.set( elem, key, data );
+               } else {
+                       data = undefined;
+               }
+       }
+       return data;
+}
+
+jQuery.extend( {
+       hasData: function( elem ) {
+               return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+       },
+
+       data: function( elem, name, data ) {
+               return dataUser.access( elem, name, data );
+       },
+
+       removeData: function( elem, name ) {
+               dataUser.remove( elem, name );
+       },
+
+       // TODO: Now that all calls to _data and _removeData have been replaced
+       // with direct calls to dataPriv methods, these can be deprecated.
+       _data: function( elem, name, data ) {
+               return dataPriv.access( elem, name, data );
+       },
+
+       _removeData: function( elem, name ) {
+               dataPriv.remove( elem, name );
+       }
+} );
+
+jQuery.fn.extend( {
+       data: function( key, value ) {
+               var i, name, data,
+                       elem = this[ 0 ],
+                       attrs = elem && elem.attributes;
+
+               // Gets all values
+               if ( key === undefined ) {
+                       if ( this.length ) {
+                               data = dataUser.get( elem );
+
+                               if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+                                       i = attrs.length;
+                                       while ( i-- ) {
+
+                                               // Support: IE 11 only
+                                               // The attrs elements can be null (#14894)
+                                               if ( attrs[ i ] ) {
+                                                       name = attrs[ i ].name;
+                                                       if ( name.indexOf( "data-" ) === 0 ) {
+                                                               name = jQuery.camelCase( name.slice( 5 ) );
+                                                               dataAttr( elem, name, data[ name ] );
+                                                       }
+                                               }
+                                       }
+                                       dataPriv.set( elem, "hasDataAttrs", true );
+                               }
+                       }
+
+                       return data;
+               }
+
+               // Sets multiple values
+               if ( typeof key === "object" ) {
+                       return this.each( function() {
+                               dataUser.set( this, key );
+                       } );
+               }
+
+               return access( this, function( value ) {
+                       var data;
+
+                       // The calling jQuery object (element matches) is not empty
+                       // (and therefore has an element appears at this[ 0 ]) and the
+                       // `value` parameter was not undefined. An empty jQuery object
+                       // will result in `undefined` for elem = this[ 0 ] which will
+                       // throw an exception if an attempt to read a data cache is made.
+                       if ( elem && value === undefined ) {
+
+                               // Attempt to get data from the cache
+                               // The key will always be camelCased in Data
+                               data = dataUser.get( elem, key );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // Attempt to "discover" the data in
+                               // HTML5 custom data-* attrs
+                               data = dataAttr( elem, key );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // We tried really hard, but the data doesn't exist.
+                               return;
+                       }
+
+                       // Set the data...
+                       this.each( function() {
+
+                               // We always store the camelCased key
+                               dataUser.set( this, key, value );
+                       } );
+               }, null, value, arguments.length > 1, null, true );
+       },
+
+       removeData: function( key ) {
+               return this.each( function() {
+                       dataUser.remove( this, key );
+               } );
+       }
+} );
+
+
+jQuery.extend( {
+       queue: function( elem, type, data ) {
+               var queue;
+
+               if ( elem ) {
+                       type = ( type || "fx" ) + "queue";
+                       queue = dataPriv.get( elem, type );
+
+                       // Speed up dequeue by getting out quickly if this is just a lookup
+                       if ( data ) {
+                               if ( !queue || jQuery.isArray( data ) ) {
+                                       queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+                               } else {
+                                       queue.push( data );
+                               }
+                       }
+                       return queue || [];
+               }
+       },
+
+       dequeue: function( elem, type ) {
+               type = type || "fx";
+
+               var queue = jQuery.queue( elem, type ),
+                       startLength = queue.length,
+                       fn = queue.shift(),
+                       hooks = jQuery._queueHooks( elem, type ),
+                       next = function() {
+                               jQuery.dequeue( elem, type );
+                       };
+
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if ( fn === "inprogress" ) {
+                       fn = queue.shift();
+                       startLength--;
+               }
+
+               if ( fn ) {
+
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if ( type === "fx" ) {
+                               queue.unshift( "inprogress" );
+                       }
+
+                       // Clear up the last queue stop function
+                       delete hooks.stop;
+                       fn.call( elem, next, hooks );
+               }
+
+               if ( !startLength && hooks ) {
+                       hooks.empty.fire();
+               }
+       },
+
+       // Not public - generate a queueHooks object, or return the current one
+       _queueHooks: function( elem, type ) {
+               var key = type + "queueHooks";
+               return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+                       empty: jQuery.Callbacks( "once memory" ).add( function() {
+                               dataPriv.remove( elem, [ type + "queue", key ] );
+                       } )
+               } );
+       }
+} );
+
+jQuery.fn.extend( {
+       queue: function( type, data ) {
+               var setter = 2;
+
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+                       setter--;
+               }
+
+               if ( arguments.length < setter ) {
+                       return jQuery.queue( this[ 0 ], type );
+               }
+
+               return data === undefined ?
+                       this :
+                       this.each( function() {
+                               var queue = jQuery.queue( this, type, data );
+
+                               // Ensure a hooks for this queue
+                               jQuery._queueHooks( this, type );
+
+                               if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+                                       jQuery.dequeue( this, type );
+                               }
+                       } );
+       },
+       dequeue: function( type ) {
+               return this.each( function() {
+                       jQuery.dequeue( this, type );
+               } );
+       },
+       clearQueue: function( type ) {
+               return this.queue( type || "fx", [] );
+       },
+
+       // Get a promise resolved when queues of a certain type
+       // are emptied (fx is the type by default)
+       promise: function( type, obj ) {
+               var tmp,
+                       count = 1,
+                       defer = jQuery.Deferred(),
+                       elements = this,
+                       i = this.length,
+                       resolve = function() {
+                               if ( !( --count ) ) {
+                                       defer.resolveWith( elements, [ elements ] );
+                               }
+                       };
+
+               if ( typeof type !== "string" ) {
+                       obj = type;
+                       type = undefined;
+               }
+               type = type || "fx";
+
+               while ( i-- ) {
+                       tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+                       if ( tmp && tmp.empty ) {
+                               count++;
+                               tmp.empty.add( resolve );
+                       }
+               }
+               resolve();
+               return defer.promise( obj );
+       }
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+               // isHiddenWithinTree might be called from jQuery#filter function;
+               // in that case, element will be second argument
+               elem = el || elem;
+
+               // Inline style trumps all
+               return elem.style.display === "none" ||
+                       elem.style.display === "" &&
+
+                       // Otherwise, check computed style
+                       // Support: Firefox <=43 - 45
+                       // Disconnected elements can have computed display: none, so first confirm that elem is
+                       // in the document.
+                       jQuery.contains( elem.ownerDocument, elem ) &&
+
+                       jQuery.css( elem, "display" ) === "none";
+       };
+
+var swap = function( elem, options, callback, args ) {
+       var ret, name,
+               old = {};
+
+       // Remember the old values, and insert the new ones
+       for ( name in options ) {
+               old[ name ] = elem.style[ name ];
+               elem.style[ name ] = options[ name ];
+       }
+
+       ret = callback.apply( elem, args || [] );
+
+       // Revert the old values
+       for ( name in options ) {
+               elem.style[ name ] = old[ name ];
+       }
+
+       return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+       var adjusted,
+               scale = 1,
+               maxIterations = 20,
+               currentValue = tween ?
+                       function() {
+                               return tween.cur();
+                       } :
+                       function() {
+                               return jQuery.css( elem, prop, "" );
+                       },
+               initial = currentValue(),
+               unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+               // Starting value computation is required for potential unit mismatches
+               initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+                       rcssNum.exec( jQuery.css( elem, prop ) );
+
+       if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+               // Trust units reported by jQuery.css
+               unit = unit || initialInUnit[ 3 ];
+
+               // Make sure we update the tween properties later on
+               valueParts = valueParts || [];
+
+               // Iteratively approximate from a nonzero starting point
+               initialInUnit = +initial || 1;
+
+               do {
+
+                       // If previous iteration zeroed out, double until we get *something*.
+                       // Use string for doubling so we don't accidentally see scale as unchanged below
+                       scale = scale || ".5";
+
+                       // Adjust and apply
+                       initialInUnit = initialInUnit / scale;
+                       jQuery.style( elem, prop, initialInUnit + unit );
+
+               // Update scale, tolerating zero or NaN from tween.cur()
+               // Break the loop if scale is unchanged or perfect, or if we've just had enough.
+               } while (
+                       scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+               );
+       }
+
+       if ( valueParts ) {
+               initialInUnit = +initialInUnit || +initial || 0;
+
+               // Apply relative offset (+=/-=) if specified
+               adjusted = valueParts[ 1 ] ?
+                       initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+                       +valueParts[ 2 ];
+               if ( tween ) {
+                       tween.unit = unit;
+                       tween.start = initialInUnit;
+                       tween.end = adjusted;
+               }
+       }
+       return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+       var temp,
+               doc = elem.ownerDocument,
+               nodeName = elem.nodeName,
+               display = defaultDisplayMap[ nodeName ];
+
+       if ( display ) {
+               return display;
+       }
+
+       temp = doc.body.appendChild( doc.createElement( nodeName ) );
+       display = jQuery.css( temp, "display" );
+
+       temp.parentNode.removeChild( temp );
+
+       if ( display === "none" ) {
+               display = "block";
+       }
+       defaultDisplayMap[ nodeName ] = display;
+
+       return display;
+}
+
+function showHide( elements, show ) {
+       var display, elem,
+               values = [],
+               index = 0,
+               length = elements.length;
+
+       // Determine new display value for elements that need to change
+       for ( ; index < length; index++ ) {
+               elem = elements[ index ];
+               if ( !elem.style ) {
+                       continue;
+               }
+
+               display = elem.style.display;
+               if ( show ) {
+
+                       // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+                       // check is required in this first loop unless we have a nonempty display value (either
+                       // inline or about-to-be-restored)
+                       if ( display === "none" ) {
+                               values[ index ] = dataPriv.get( elem, "display" ) || null;
+                               if ( !values[ index ] ) {
+                                       elem.style.display = "";
+                               }
+                       }
+                       if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+                               values[ index ] = getDefaultDisplay( elem );
+                       }
+               } else {
+                       if ( display !== "none" ) {
+                               values[ index ] = "none";
+
+                               // Remember what we're overwriting
+                               dataPriv.set( elem, "display", display );
+                       }
+               }
+       }
+
+       // Set the display of the elements in a second loop to avoid constant reflow
+       for ( index = 0; index < length; index++ ) {
+               if ( values[ index ] != null ) {
+                       elements[ index ].style.display = values[ index ];
+               }
+       }
+
+       return elements;
+}
+
+jQuery.fn.extend( {
+       show: function() {
+               return showHide( this, true );
+       },
+       hide: function() {
+               return showHide( this );
+       },
+       toggle: function( state ) {
+               if ( typeof state === "boolean" ) {
+                       return state ? this.show() : this.hide();
+               }
+
+               return this.each( function() {
+                       if ( isHiddenWithinTree( this ) ) {
+                               jQuery( this ).show();
+                       } else {
+                               jQuery( this ).hide();
+                       }
+               } );
+       }
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+       // Support: IE <=9 only
+       option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+       // XHTML parsers do not magically insert elements in the
+       // same way that tag soup parsers do. So we cannot shorten
+       // this by omitting <tbody> or other required elements.
+       thead: [ 1, "<table>", "</table>" ],
+       col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+       tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+       td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+       _default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+       // Support: IE <=9 - 11 only
+       // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+       var ret;
+
+       if ( typeof context.getElementsByTagName !== "undefined" ) {
+               ret = context.getElementsByTagName( tag || "*" );
+
+       } else if ( typeof context.querySelectorAll !== "undefined" ) {
+               ret = context.querySelectorAll( tag || "*" );
+
+       } else {
+               ret = [];
+       }
+
+       if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
+               return jQuery.merge( [ context ], ret );
+       }
+
+       return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+       var i = 0,
+               l = elems.length;
+
+       for ( ; i < l; i++ ) {
+               dataPriv.set(
+                       elems[ i ],
+                       "globalEval",
+                       !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+               );
+       }
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+       var elem, tmp, tag, wrap, contains, j,
+               fragment = context.createDocumentFragment(),
+               nodes = [],
+               i = 0,
+               l = elems.length;
+
+       for ( ; i < l; i++ ) {
+               elem = elems[ i ];
+
+               if ( elem || elem === 0 ) {
+
+                       // Add nodes directly
+                       if ( jQuery.type( elem ) === "object" ) {
+
+                               // Support: Android <=4.0 only, PhantomJS 1 only
+                               // push.apply(_, arraylike) throws on ancient WebKit
+                               jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+                       // Convert non-html into a text node
+                       } else if ( !rhtml.test( elem ) ) {
+                               nodes.push( context.createTextNode( elem ) );
+
+                       // Convert html into DOM nodes
+                       } else {
+                               tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+                               // Deserialize a standard representation
+                               tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+                               wrap = wrapMap[ tag ] || wrapMap._default;
+                               tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+                               // Descend through wrappers to the right content
+                               j = wrap[ 0 ];
+                               while ( j-- ) {
+                                       tmp = tmp.lastChild;
+                               }
+
+                               // Support: Android <=4.0 only, PhantomJS 1 only
+                               // push.apply(_, arraylike) throws on ancient WebKit
+                               jQuery.merge( nodes, tmp.childNodes );
+
+                               // Remember the top-level container
+                               tmp = fragment.firstChild;
+
+                               // Ensure the created nodes are orphaned (#12392)
+                               tmp.textContent = "";
+                       }
+               }
+       }
+
+       // Remove wrapper from fragment
+       fragment.textContent = "";
+
+       i = 0;
+       while ( ( elem = nodes[ i++ ] ) ) {
+
+               // Skip elements already in the context collection (trac-4087)
+               if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+                       if ( ignored ) {
+                               ignored.push( elem );
+                       }
+                       continue;
+               }
+
+               contains = jQuery.contains( elem.ownerDocument, elem );
+
+               // Append to fragment
+               tmp = getAll( fragment.appendChild( elem ), "script" );
+
+               // Preserve script evaluation history
+               if ( contains ) {
+                       setGlobalEval( tmp );
+               }
+
+               // Capture executables
+               if ( scripts ) {
+                       j = 0;
+                       while ( ( elem = tmp[ j++ ] ) ) {
+                               if ( rscriptType.test( elem.type || "" ) ) {
+                                       scripts.push( elem );
+                               }
+                       }
+               }
+       }
+
+       return fragment;
+}
+
+
+( function() {
+       var fragment = document.createDocumentFragment(),
+               div = fragment.appendChild( document.createElement( "div" ) ),
+               input = document.createElement( "input" );
+
+       // Support: Android 4.0 - 4.3 only
+       // Check state lost if the name is set (#11217)
+       // Support: Windows Web Apps (WWA)
+       // `name` and `type` must use .setAttribute for WWA (#14901)
+       input.setAttribute( "type", "radio" );
+       input.setAttribute( "checked", "checked" );
+       input.setAttribute( "name", "t" );
+
+       div.appendChild( input );
+
+       // Support: Android <=4.1 only
+       // Older WebKit doesn't clone checked state correctly in fragments
+       support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+       // Support: IE <=11 only
+       // Make sure textarea (and checkbox) defaultValue is properly cloned
+       div.innerHTML = "<textarea>x</textarea>";
+       support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+       rkeyEvent = /^key/,
+       rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+       rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+       return true;
+}
+
+function returnFalse() {
+       return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+       try {
+               return document.activeElement;
+       } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+       var origFn, type;
+
+       // Types can be a map of types/handlers
+       if ( typeof types === "object" ) {
+
+               // ( types-Object, selector, data )
+               if ( typeof selector !== "string" ) {
+
+                       // ( types-Object, data )
+                       data = data || selector;
+                       selector = undefined;
+               }
+               for ( type in types ) {
+                       on( elem, type, selector, data, types[ type ], one );
+               }
+               return elem;
+       }
+
+       if ( data == null && fn == null ) {
+
+               // ( types, fn )
+               fn = selector;
+               data = selector = undefined;
+       } else if ( fn == null ) {
+               if ( typeof selector === "string" ) {
+
+                       // ( types, selector, fn )
+                       fn = data;
+                       data = undefined;
+               } else {
+
+                       // ( types, data, fn )
+                       fn = data;
+                       data = selector;
+                       selector = undefined;
+               }
+       }
+       if ( fn === false ) {
+               fn = returnFalse;
+       } else if ( !fn ) {
+               return elem;
+       }
+
+       if ( one === 1 ) {
+               origFn = fn;
+               fn = function( event ) {
+
+                       // Can use an empty set, since event contains the info
+                       jQuery().off( event );
+                       return origFn.apply( this, arguments );
+               };
+
+               // Use same guid so caller can remove using origFn
+               fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+       }
+       return elem.each( function() {
+               jQuery.event.add( this, types, fn, data, selector );
+       } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+       global: {},
+
+       add: function( elem, types, handler, data, selector ) {
+
+               var handleObjIn, eventHandle, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = dataPriv.get( elem );
+
+               // Don't attach events to noData or text/comment nodes (but allow plain objects)
+               if ( !elemData ) {
+                       return;
+               }
+
+               // Caller can pass in an object of custom data in lieu of the handler
+               if ( handler.handler ) {
+                       handleObjIn = handler;
+                       handler = handleObjIn.handler;
+                       selector = handleObjIn.selector;
+               }
+
+               // Ensure that invalid selectors throw exceptions at attach time
+               // Evaluate against documentElement in case elem is a non-element node (e.g., document)
+               if ( selector ) {
+                       jQuery.find.matchesSelector( documentElement, selector );
+               }
+
+               // Make sure that the handler has a unique ID, used to find/remove it later
+               if ( !handler.guid ) {
+                       handler.guid = jQuery.guid++;
+               }
+
+               // Init the element's event structure and main handler, if this is the first
+               if ( !( events = elemData.events ) ) {
+                       events = elemData.events = {};
+               }
+               if ( !( eventHandle = elemData.handle ) ) {
+                       eventHandle = elemData.handle = function( e ) {
+
+                               // Discard the second event of a jQuery.event.trigger() and
+                               // when an event is called after a page has unloaded
+                               return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+                                       jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+                       };
+               }
+
+               // Handle multiple events separated by a space
+               types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[ t ] ) || [];
+                       type = origType = tmp[ 1 ];
+                       namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+                       // There *must* be a type, no attaching namespace-only handlers
+                       if ( !type ) {
+                               continue;
+                       }
+
+                       // If event changes its type, use the special event handlers for the changed type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // If selector defined, determine special event api type, otherwise given type
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+
+                       // Update special based on newly reset type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // handleObj is passed to all event handlers
+                       handleObj = jQuery.extend( {
+                               type: type,
+                               origType: origType,
+                               data: data,
+                               handler: handler,
+                               guid: handler.guid,
+                               selector: selector,
+                               needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+                               namespace: namespaces.join( "." )
+                       }, handleObjIn );
+
+                       // Init the event handler queue if we're the first
+                       if ( !( handlers = events[ type ] ) ) {
+                               handlers = events[ type ] = [];
+                               handlers.delegateCount = 0;
+
+                               // Only use addEventListener if the special events handler returns false
+                               if ( !special.setup ||
+                                       special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+                                       if ( elem.addEventListener ) {
+                                               elem.addEventListener( type, eventHandle );
+                                       }
+                               }
+                       }
+
+                       if ( special.add ) {
+                               special.add.call( elem, handleObj );
+
+                               if ( !handleObj.handler.guid ) {
+                                       handleObj.handler.guid = handler.guid;
+                               }
+                       }
+
+                       // Add to the element's handler list, delegates in front
+                       if ( selector ) {
+                               handlers.splice( handlers.delegateCount++, 0, handleObj );
+                       } else {
+                               handlers.push( handleObj );
+                       }
+
+                       // Keep track of which events have ever been used, for event optimization
+                       jQuery.event.global[ type ] = true;
+               }
+
+       },
+
+       // Detach an event or set of events from an element
+       remove: function( elem, types, handler, selector, mappedTypes ) {
+
+               var j, origCount, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+               if ( !elemData || !( events = elemData.events ) ) {
+                       return;
+               }
+
+               // Once for each type.namespace in types; type may be omitted
+               types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[ t ] ) || [];
+                       type = origType = tmp[ 1 ];
+                       namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+                       // Unbind all events (on this namespace, if provided) for the element
+                       if ( !type ) {
+                               for ( type in events ) {
+                                       jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+                               }
+                               continue;
+                       }
+
+                       special = jQuery.event.special[ type ] || {};
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+                       handlers = events[ type ] || [];
+                       tmp = tmp[ 2 ] &&
+                               new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+                       // Remove matching events
+                       origCount = j = handlers.length;
+                       while ( j-- ) {
+                               handleObj = handlers[ j ];
+
+                               if ( ( mappedTypes || origType === handleObj.origType ) &&
+                                       ( !handler || handler.guid === handleObj.guid ) &&
+                                       ( !tmp || tmp.test( handleObj.namespace ) ) &&
+                                       ( !selector || selector === handleObj.selector ||
+                                               selector === "**" && handleObj.selector ) ) {
+                                       handlers.splice( j, 1 );
+
+                                       if ( handleObj.selector ) {
+                                               handlers.delegateCount--;
+                                       }
+                                       if ( special.remove ) {
+                                               special.remove.call( elem, handleObj );
+                                       }
+                               }
+                       }
+
+                       // Remove generic event handler if we removed something and no more handlers exist
+                       // (avoids potential for endless recursion during removal of special event handlers)
+                       if ( origCount && !handlers.length ) {
+                               if ( !special.teardown ||
+                                       special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+                                       jQuery.removeEvent( elem, type, elemData.handle );
+                               }
+
+                               delete events[ type ];
+                       }
+               }
+
+               // Remove data and the expando if it's no longer used
+               if ( jQuery.isEmptyObject( events ) ) {
+                       dataPriv.remove( elem, "handle events" );
+               }
+       },
+
+       dispatch: function( nativeEvent ) {
+
+               // Make a writable jQuery.Event from the native event object
+               var event = jQuery.event.fix( nativeEvent );
+
+               var i, j, ret, matched, handleObj, handlerQueue,
+                       args = new Array( arguments.length ),
+                       handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+                       special = jQuery.event.special[ event.type ] || {};
+
+               // Use the fix-ed jQuery.Event rather than the (read-only) native event
+               args[ 0 ] = event;
+
+               for ( i = 1; i < arguments.length; i++ ) {
+                       args[ i ] = arguments[ i ];
+               }
+
+               event.delegateTarget = this;
+
+               // Call the preDispatch hook for the mapped type, and let it bail if desired
+               if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+                       return;
+               }
+
+               // Determine handlers
+               handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+               // Run delegates first; they may want to stop propagation beneath us
+               i = 0;
+               while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+                       event.currentTarget = matched.elem;
+
+                       j = 0;
+                       while ( ( handleObj = matched.handlers[ j++ ] ) &&
+                               !event.isImmediatePropagationStopped() ) {
+
+                               // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+                               // a subset or equal to those in the bound event (both can have no namespace).
+                               if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+                                       event.handleObj = handleObj;
+                                       event.data = handleObj.data;
+
+                                       ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+                                               handleObj.handler ).apply( matched.elem, args );
+
+                                       if ( ret !== undefined ) {
+                                               if ( ( event.result = ret ) === false ) {
+                                                       event.preventDefault();
+                                                       event.stopPropagation();
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               // Call the postDispatch hook for the mapped type
+               if ( special.postDispatch ) {
+                       special.postDispatch.call( this, event );
+               }
+
+               return event.result;
+       },
+
+       handlers: function( event, handlers ) {
+               var i, handleObj, sel, matchedHandlers, matchedSelectors,
+                       handlerQueue = [],
+                       delegateCount = handlers.delegateCount,
+                       cur = event.target;
+
+               // Find delegate handlers
+               if ( delegateCount &&
+
+                       // Support: IE <=9
+                       // Black-hole SVG <use> instance trees (trac-13180)
+                       cur.nodeType &&
+
+                       // Support: Firefox <=42
+                       // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+                       // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+                       // Support: IE 11 only
+                       // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+                       !( event.type === "click" && event.button >= 1 ) ) {
+
+                       for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+                               // Don't check non-elements (#13208)
+                               // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+                               if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+                                       matchedHandlers = [];
+                                       matchedSelectors = {};
+                                       for ( i = 0; i < delegateCount; i++ ) {
+                                               handleObj = handlers[ i ];
+
+                                               // Don't conflict with Object.prototype properties (#13203)
+                                               sel = handleObj.selector + " ";
+
+                                               if ( matchedSelectors[ sel ] === undefined ) {
+                                                       matchedSelectors[ sel ] = handleObj.needsContext ?
+                                                               jQuery( sel, this ).index( cur ) > -1 :
+                                                               jQuery.find( sel, this, null, [ cur ] ).length;
+                                               }
+                                               if ( matchedSelectors[ sel ] ) {
+                                                       matchedHandlers.push( handleObj );
+                                               }
+                                       }
+                                       if ( matchedHandlers.length ) {
+                                               handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+                                       }
+                               }
+                       }
+               }
+
+               // Add the remaining (directly-bound) handlers
+               cur = this;
+               if ( delegateCount < handlers.length ) {
+                       handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+               }
+
+               return handlerQueue;
+       },
+
+       addProp: function( name, hook ) {
+               Object.defineProperty( jQuery.Event.prototype, name, {
+                       enumerable: true,
+                       configurable: true,
+
+                       get: jQuery.isFunction( hook ) ?
+                               function() {
+                                       if ( this.originalEvent ) {
+                                                       return hook( this.originalEvent );
+                                       }
+                               } :
+                               function() {
+                                       if ( this.originalEvent ) {
+                                                       return this.originalEvent[ name ];
+                                       }
+                               },
+
+                       set: function( value ) {
+                               Object.defineProperty( this, name, {
+                                       enumerable: true,
+                                       configurable: true,
+                                       writable: true,
+                                       value: value
+                               } );
+                       }
+               } );
+       },
+
+       fix: function( originalEvent ) {
+               return originalEvent[ jQuery.expando ] ?
+                       originalEvent :
+                       new jQuery.Event( originalEvent );
+       },
+
+       special: {
+               load: {
+
+                       // Prevent triggered image.load events from bubbling to window.load
+                       noBubble: true
+               },
+               focus: {
+
+                       // Fire native event if possible so blur/focus sequence is correct
+                       trigger: function() {
+                               if ( this !== safeActiveElement() && this.focus ) {
+                                       this.focus();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusin"
+               },
+               blur: {
+                       trigger: function() {
+                               if ( this === safeActiveElement() && this.blur ) {
+                                       this.blur();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusout"
+               },
+               click: {
+
+                       // For checkbox, fire native event so checked state will be right
+                       trigger: function() {
+                               if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+                                       this.click();
+                                       return false;
+                               }
+                       },
+
+                       // For cross-browser consistency, don't fire native .click() on links
+                       _default: function( event ) {
+                               return jQuery.nodeName( event.target, "a" );
+                       }
+               },
+
+               beforeunload: {
+                       postDispatch: function( event ) {
+
+                               // Support: Firefox 20+
+                               // Firefox doesn't alert if the returnValue field is not set.
+                               if ( event.result !== undefined && event.originalEvent ) {
+                                       event.originalEvent.returnValue = event.result;
+                               }
+                       }
+               }
+       }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+       // This "if" is needed for plain objects
+       if ( elem.removeEventListener ) {
+               elem.removeEventListener( type, handle );
+       }
+};
+
+jQuery.Event = function( src, props ) {
+
+       // Allow instantiation without the 'new' keyword
+       if ( !( this instanceof jQuery.Event ) ) {
+               return new jQuery.Event( src, props );
+       }
+
+       // Event object
+       if ( src && src.type ) {
+               this.originalEvent = src;
+               this.type = src.type;
+
+               // Events bubbling up the document may have been marked as prevented
+               // by a handler lower down the tree; reflect the correct value.
+               this.isDefaultPrevented = src.defaultPrevented ||
+                               src.defaultPrevented === undefined &&
+
+                               // Support: Android <=2.3 only
+                               src.returnValue === false ?
+                       returnTrue :
+                       returnFalse;
+
+               // Create target properties
+               // Support: Safari <=6 - 7 only
+               // Target should not be a text node (#504, #13143)
+               this.target = ( src.target && src.target.nodeType === 3 ) ?
+                       src.target.parentNode :
+                       src.target;
+
+               this.currentTarget = src.currentTarget;
+               this.relatedTarget = src.relatedTarget;
+
+       // Event type
+       } else {
+               this.type = src;
+       }
+
+       // Put explicitly provided properties onto the event object
+       if ( props ) {
+               jQuery.extend( this, props );
+       }
+
+       // Create a timestamp if incoming event doesn't have one
+       this.timeStamp = src && src.timeStamp || jQuery.now();
+
+       // Mark it as fixed
+       this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+       constructor: jQuery.Event,
+       isDefaultPrevented: returnFalse,
+       isPropagationStopped: returnFalse,
+       isImmediatePropagationStopped: returnFalse,
+       isSimulated: false,
+
+       preventDefault: function() {
+               var e = this.originalEvent;
+
+               this.isDefaultPrevented = returnTrue;
+
+               if ( e && !this.isSimulated ) {
+                       e.preventDefault();
+               }
+       },
+       stopPropagation: function() {
+               var e = this.originalEvent;
+
+               this.isPropagationStopped = returnTrue;
+
+               if ( e && !this.isSimulated ) {
+                       e.stopPropagation();
+               }
+       },
+       stopImmediatePropagation: function() {
+               var e = this.originalEvent;
+
+               this.isImmediatePropagationStopped = returnTrue;
+
+               if ( e && !this.isSimulated ) {
+                       e.stopImmediatePropagation();
+               }
+
+               this.stopPropagation();
+       }
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+       altKey: true,
+       bubbles: true,
+       cancelable: true,
+       changedTouches: true,
+       ctrlKey: true,
+       detail: true,
+       eventPhase: true,
+       metaKey: true,
+       pageX: true,
+       pageY: true,
+       shiftKey: true,
+       view: true,
+       "char": true,
+       charCode: true,
+       key: true,
+       keyCode: true,
+       button: true,
+       buttons: true,
+       clientX: true,
+       clientY: true,
+       offsetX: true,
+       offsetY: true,
+       pointerId: true,
+       pointerType: true,
+       screenX: true,
+       screenY: true,
+       targetTouches: true,
+       toElement: true,
+       touches: true,
+
+       which: function( event ) {
+               var button = event.button;
+
+               // Add which for key events
+               if ( event.which == null && rkeyEvent.test( event.type ) ) {
+                       return event.charCode != null ? event.charCode : event.keyCode;
+               }
+
+               // Add which for click: 1 === left; 2 === middle; 3 === right
+               if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+                       if ( button & 1 ) {
+                               return 1;
+                       }
+
+                       if ( button & 2 ) {
+                               return 3;
+                       }
+
+                       if ( button & 4 ) {
+                               return 2;
+                       }
+
+                       return 0;
+               }
+
+               return event.which;
+       }
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+       mouseenter: "mouseover",
+       mouseleave: "mouseout",
+       pointerenter: "pointerover",
+       pointerleave: "pointerout"
+}, function( orig, fix ) {
+       jQuery.event.special[ orig ] = {
+               delegateType: fix,
+               bindType: fix,
+
+               handle: function( event ) {
+                       var ret,
+                               target = this,
+                               related = event.relatedTarget,
+                               handleObj = event.handleObj;
+
+                       // For mouseenter/leave call the handler if related is outside the target.
+                       // NB: No relatedTarget if the mouse left/entered the browser window
+                       if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+                               event.type = handleObj.origType;
+                               ret = handleObj.handler.apply( this, arguments );
+                               event.type = fix;
+                       }
+                       return ret;
+               }
+       };
+} );
+
+jQuery.fn.extend( {
+
+       on: function( types, selector, data, fn ) {
+               return on( this, types, selector, data, fn );
+       },
+       one: function( types, selector, data, fn ) {
+               return on( this, types, selector, data, fn, 1 );
+       },
+       off: function( types, selector, fn ) {
+               var handleObj, type;
+               if ( types && types.preventDefault && types.handleObj ) {
+
+                       // ( event )  dispatched jQuery.Event
+                       handleObj = types.handleObj;
+                       jQuery( types.delegateTarget ).off(
+                               handleObj.namespace ?
+                                       handleObj.origType + "." + handleObj.namespace :
+                                       handleObj.origType,
+                               handleObj.selector,
+                               handleObj.handler
+                       );
+                       return this;
+               }
+               if ( typeof types === "object" ) {
+
+                       // ( types-object [, selector] )
+                       for ( type in types ) {
+                               this.off( type, selector, types[ type ] );
+                       }
+                       return this;
+               }
+               if ( selector === false || typeof selector === "function" ) {
+
+                       // ( types [, fn] )
+                       fn = selector;
+                       selector = undefined;
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               }
+               return this.each( function() {
+                       jQuery.event.remove( this, types, fn, selector );
+               } );
+       }
+} );
+
+
+var
+
+       /* eslint-disable max-len */
+
+       // See https://github.com/eslint/eslint/issues/3229
+       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+       /* eslint-enable */
+
+       // Support: IE <=10 - 11, Edge 12 - 13
+       // In IE/Edge using regex groups here causes severe slowdowns.
+       // See https://connect.microsoft.com/IE/feedback/details/1736512/
+       rnoInnerhtml = /<script|<style|<link/i,
+
+       // checked="checked" or checked
+       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+       rscriptTypeMasked = /^true\/(.*)/,
+       rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+function manipulationTarget( elem, content ) {
+       if ( jQuery.nodeName( elem, "table" ) &&
+               jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+               return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
+       }
+
+       return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+       elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+       return elem;
+}
+function restoreScript( elem ) {
+       var match = rscriptTypeMasked.exec( elem.type );
+
+       if ( match ) {
+               elem.type = match[ 1 ];
+       } else {
+               elem.removeAttribute( "type" );
+       }
+
+       return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+       var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+       if ( dest.nodeType !== 1 ) {
+               return;
+       }
+
+       // 1. Copy private data: events, handlers, etc.
+       if ( dataPriv.hasData( src ) ) {
+               pdataOld = dataPriv.access( src );
+               pdataCur = dataPriv.set( dest, pdataOld );
+               events = pdataOld.events;
+
+               if ( events ) {
+                       delete pdataCur.handle;
+                       pdataCur.events = {};
+
+                       for ( type in events ) {
+                               for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+                                       jQuery.event.add( dest, type, events[ type ][ i ] );
+                               }
+                       }
+               }
+       }
+
+       // 2. Copy user data
+       if ( dataUser.hasData( src ) ) {
+               udataOld = dataUser.access( src );
+               udataCur = jQuery.extend( {}, udataOld );
+
+               dataUser.set( dest, udataCur );
+       }
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+       var nodeName = dest.nodeName.toLowerCase();
+
+       // Fails to persist the checked state of a cloned checkbox or radio button.
+       if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+               dest.checked = src.checked;
+
+       // Fails to return the selected option to the default selected state when cloning options
+       } else if ( nodeName === "input" || nodeName === "textarea" ) {
+               dest.defaultValue = src.defaultValue;
+       }
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+       // Flatten any nested arrays
+       args = concat.apply( [], args );
+
+       var fragment, first, scripts, hasScripts, node, doc,
+               i = 0,
+               l = collection.length,
+               iNoClone = l - 1,
+               value = args[ 0 ],
+               isFunction = jQuery.isFunction( value );
+
+       // We can't cloneNode fragments that contain checked, in WebKit
+       if ( isFunction ||
+                       ( l > 1 && typeof value === "string" &&
+                               !support.checkClone && rchecked.test( value ) ) ) {
+               return collection.each( function( index ) {
+                       var self = collection.eq( index );
+                       if ( isFunction ) {
+                               args[ 0 ] = value.call( this, index, self.html() );
+                       }
+                       domManip( self, args, callback, ignored );
+               } );
+       }
+
+       if ( l ) {
+               fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+               first = fragment.firstChild;
+
+               if ( fragment.childNodes.length === 1 ) {
+                       fragment = first;
+               }
+
+               // Require either new content or an interest in ignored elements to invoke the callback
+               if ( first || ignored ) {
+                       scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+                       hasScripts = scripts.length;
+
+                       // Use the original fragment for the last item
+                       // instead of the first because it can end up
+                       // being emptied incorrectly in certain situations (#8070).
+                       for ( ; i < l; i++ ) {
+                               node = fragment;
+
+                               if ( i !== iNoClone ) {
+                                       node = jQuery.clone( node, true, true );
+
+                                       // Keep references to cloned scripts for later restoration
+                                       if ( hasScripts ) {
+
+                                               // Support: Android <=4.0 only, PhantomJS 1 only
+                                               // push.apply(_, arraylike) throws on ancient WebKit
+                                               jQuery.merge( scripts, getAll( node, "script" ) );
+                                       }
+                               }
+
+                               callback.call( collection[ i ], node, i );
+                       }
+
+                       if ( hasScripts ) {
+                               doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+                               // Reenable scripts
+                               jQuery.map( scripts, restoreScript );
+
+                               // Evaluate executable scripts on first document insertion
+                               for ( i = 0; i < hasScripts; i++ ) {
+                                       node = scripts[ i ];
+                                       if ( rscriptType.test( node.type || "" ) &&
+                                               !dataPriv.access( node, "globalEval" ) &&
+                                               jQuery.contains( doc, node ) ) {
+
+                                               if ( node.src ) {
+
+                                                       // Optional AJAX dependency, but won't run scripts if not present
+                                                       if ( jQuery._evalUrl ) {
+                                                               jQuery._evalUrl( node.src );
+                                                       }
+                                               } else {
+                                                       DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return collection;
+}
+
+function remove( elem, selector, keepData ) {
+       var node,
+               nodes = selector ? jQuery.filter( selector, elem ) : elem,
+               i = 0;
+
+       for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+               if ( !keepData && node.nodeType === 1 ) {
+                       jQuery.cleanData( getAll( node ) );
+               }
+
+               if ( node.parentNode ) {
+                       if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+                               setGlobalEval( getAll( node, "script" ) );
+                       }
+                       node.parentNode.removeChild( node );
+               }
+       }
+
+       return elem;
+}
+
+jQuery.extend( {
+       htmlPrefilter: function( html ) {
+               return html.replace( rxhtmlTag, "<$1></$2>" );
+       },
+
+       clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+               var i, l, srcElements, destElements,
+                       clone = elem.cloneNode( true ),
+                       inPage = jQuery.contains( elem.ownerDocument, elem );
+
+               // Fix IE cloning issues
+               if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+                               !jQuery.isXMLDoc( elem ) ) {
+
+                       // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+                       destElements = getAll( clone );
+                       srcElements = getAll( elem );
+
+                       for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                               fixInput( srcElements[ i ], destElements[ i ] );
+                       }
+               }
+
+               // Copy the events from the original to the clone
+               if ( dataAndEvents ) {
+                       if ( deepDataAndEvents ) {
+                               srcElements = srcElements || getAll( elem );
+                               destElements = destElements || getAll( clone );
+
+                               for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                                       cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+                               }
+                       } else {
+                               cloneCopyEvent( elem, clone );
+                       }
+               }
+
+               // Preserve script evaluation history
+               destElements = getAll( clone, "script" );
+               if ( destElements.length > 0 ) {
+                       setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+               }
+
+               // Return the cloned set
+               return clone;
+       },
+
+       cleanData: function( elems ) {
+               var data, elem, type,
+                       special = jQuery.event.special,
+                       i = 0;
+
+               for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+                       if ( acceptData( elem ) ) {
+                               if ( ( data = elem[ dataPriv.expando ] ) ) {
+                                       if ( data.events ) {
+                                               for ( type in data.events ) {
+                                                       if ( special[ type ] ) {
+                                                               jQuery.event.remove( elem, type );
+
+                                                       // This is a shortcut to avoid jQuery.event.remove's overhead
+                                                       } else {
+                                                               jQuery.removeEvent( elem, type, data.handle );
+                                                       }
+                                               }
+                                       }
+
+                                       // Support: Chrome <=35 - 45+
+                                       // Assign undefined instead of using delete, see Data#remove
+                                       elem[ dataPriv.expando ] = undefined;
+                               }
+                               if ( elem[ dataUser.expando ] ) {
+
+                                       // Support: Chrome <=35 - 45+
+                                       // Assign undefined instead of using delete, see Data#remove
+                                       elem[ dataUser.expando ] = undefined;
+                               }
+                       }
+               }
+       }
+} );
+
+jQuery.fn.extend( {
+       detach: function( selector ) {
+               return remove( this, selector, true );
+       },
+
+       remove: function( selector ) {
+               return remove( this, selector );
+       },
+
+       text: function( value ) {
+               return access( this, function( value ) {
+                       return value === undefined ?
+                               jQuery.text( this ) :
+                               this.empty().each( function() {
+                                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                                               this.textContent = value;
+                                       }
+                               } );
+               }, null, value, arguments.length );
+       },
+
+       append: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.appendChild( elem );
+                       }
+               } );
+       },
+
+       prepend: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.insertBefore( elem, target.firstChild );
+                       }
+               } );
+       },
+
+       before: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this );
+                       }
+               } );
+       },
+
+       after: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this.nextSibling );
+                       }
+               } );
+       },
+
+       empty: function() {
+               var elem,
+                       i = 0;
+
+               for ( ; ( elem = this[ i ] ) != null; i++ ) {
+                       if ( elem.nodeType === 1 ) {
+
+                               // Prevent memory leaks
+                               jQuery.cleanData( getAll( elem, false ) );
+
+                               // Remove any remaining nodes
+                               elem.textContent = "";
+                       }
+               }
+
+               return this;
+       },
+
+       clone: function( dataAndEvents, deepDataAndEvents ) {
+               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+               deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+               return this.map( function() {
+                       return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+               } );
+       },
+
+       html: function( value ) {
+               return access( this, function( value ) {
+                       var elem = this[ 0 ] || {},
+                               i = 0,
+                               l = this.length;
+
+                       if ( value === undefined && elem.nodeType === 1 ) {
+                               return elem.innerHTML;
+                       }
+
+                       // See if we can take a shortcut and just use innerHTML
+                       if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+                               !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+                               value = jQuery.htmlPrefilter( value );
+
+                               try {
+                                       for ( ; i < l; i++ ) {
+                                               elem = this[ i ] || {};
+
+                                               // Remove element nodes and prevent memory leaks
+                                               if ( elem.nodeType === 1 ) {
+                                                       jQuery.cleanData( getAll( elem, false ) );
+                                                       elem.innerHTML = value;
+                                               }
+                                       }
+
+                                       elem = 0;
+
+                               // If using innerHTML throws an exception, use the fallback method
+                               } catch ( e ) {}
+                       }
+
+                       if ( elem ) {
+                               this.empty().append( value );
+                       }
+               }, null, value, arguments.length );
+       },
+
+       replaceWith: function() {
+               var ignored = [];
+
+               // Make the changes, replacing each non-ignored context element with the new content
+               return domManip( this, arguments, function( elem ) {
+                       var parent = this.parentNode;
+
+                       if ( jQuery.inArray( this, ignored ) < 0 ) {
+                               jQuery.cleanData( getAll( this ) );
+                               if ( parent ) {
+                                       parent.replaceChild( elem, this );
+                               }
+                       }
+
+               // Force callback invocation
+               }, ignored );
+       }
+} );
+
+jQuery.each( {
+       appendTo: "append",
+       prependTo: "prepend",
+       insertBefore: "before",
+       insertAfter: "after",
+       replaceAll: "replaceWith"
+}, function( name, original ) {
+       jQuery.fn[ name ] = function( selector ) {
+               var elems,
+                       ret = [],
+                       insert = jQuery( selector ),
+                       last = insert.length - 1,
+                       i = 0;
+
+               for ( ; i <= last; i++ ) {
+                       elems = i === last ? this : this.clone( true );
+                       jQuery( insert[ i ] )[ original ]( elems );
+
+                       // Support: Android <=4.0 only, PhantomJS 1 only
+                       // .get() because push.apply(_, arraylike) throws on ancient WebKit
+                       push.apply( ret, elems.get() );
+               }
+
+               return this.pushStack( ret );
+       };
+} );
+var rmargin = ( /^margin/ );
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+               // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+               // IE throws on elements created in popups
+               // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+               var view = elem.ownerDocument.defaultView;
+
+               if ( !view || !view.opener ) {
+                       view = window;
+               }
+
+               return view.getComputedStyle( elem );
+       };
+
+
+
+( function() {
+
+       // Executing both pixelPosition & boxSizingReliable tests require only one layout
+       // so they're executed at the same time to save the second computation.
+       function computeStyleTests() {
+
+               // This is a singleton, we need to execute it only once
+               if ( !div ) {
+                       return;
+               }
+
+               div.style.cssText =
+                       "box-sizing:border-box;" +
+                       "position:relative;display:block;" +
+                       "margin:auto;border:1px;padding:1px;" +
+                       "top:1%;width:50%";
+               div.innerHTML = "";
+               documentElement.appendChild( container );
+
+               var divStyle = window.getComputedStyle( div );
+               pixelPositionVal = divStyle.top !== "1%";
+
+               // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+               reliableMarginLeftVal = divStyle.marginLeft === "2px";
+               boxSizingReliableVal = divStyle.width === "4px";
+
+               // Support: Android 4.0 - 4.3 only
+               // Some styles come back with percentage values, even though they shouldn't
+               div.style.marginRight = "50%";
+               pixelMarginRightVal = divStyle.marginRight === "4px";
+
+               documentElement.removeChild( container );
+
+               // Nullify the div so it wouldn't be stored in the memory and
+               // it will also be a sign that checks already performed
+               div = null;
+       }
+
+       var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+               container = document.createElement( "div" ),
+               div = document.createElement( "div" );
+
+       // Finish early in limited (non-browser) environments
+       if ( !div.style ) {
+               return;
+       }
+
+       // Support: IE <=9 - 11 only
+       // Style of cloned element affects source element cloned (#8908)
+       div.style.backgroundClip = "content-box";
+       div.cloneNode( true ).style.backgroundClip = "";
+       support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+       container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+               "padding:0;margin-top:1px;position:absolute";
+       container.appendChild( div );
+
+       jQuery.extend( support, {
+               pixelPosition: function() {
+                       computeStyleTests();
+                       return pixelPositionVal;
+               },
+               boxSizingReliable: function() {
+                       computeStyleTests();
+                       return boxSizingReliableVal;
+               },
+               pixelMarginRight: function() {
+                       computeStyleTests();
+                       return pixelMarginRightVal;
+               },
+               reliableMarginLeft: function() {
+                       computeStyleTests();
+                       return reliableMarginLeftVal;
+               }
+       } );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+       var width, minWidth, maxWidth, ret,
+               style = elem.style;
+
+       computed = computed || getStyles( elem );
+
+       // Support: IE <=9 only
+       // getPropertyValue is only needed for .css('filter') (#12537)
+       if ( computed ) {
+               ret = computed.getPropertyValue( name ) || computed[ name ];
+
+               if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+                       ret = jQuery.style( elem, name );
+               }
+
+               // A tribute to the "awesome hack by Dean Edwards"
+               // Android Browser returns percentage for some values,
+               // but width seems to be reliably pixels.
+               // This is against the CSSOM draft spec:
+               // https://drafts.csswg.org/cssom/#resolved-values
+               if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+                       // Remember the original values
+                       width = style.width;
+                       minWidth = style.minWidth;
+                       maxWidth = style.maxWidth;
+
+                       // Put in the new values to get a computed value out
+                       style.minWidth = style.maxWidth = style.width = ret;
+                       ret = computed.width;
+
+                       // Revert the changed values
+                       style.width = width;
+                       style.minWidth = minWidth;
+                       style.maxWidth = maxWidth;
+               }
+       }
+
+       return ret !== undefined ?
+
+               // Support: IE <=9 - 11 only
+               // IE returns zIndex value as an integer.
+               ret + "" :
+               ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+       // Define the hook, we'll check on the first run if it's really needed.
+       return {
+               get: function() {
+                       if ( conditionFn() ) {
+
+                               // Hook not needed (or it's not possible to use it due
+                               // to missing dependency), remove it.
+                               delete this.get;
+                               return;
+                       }
+
+                       // Hook needed; redefine it so that the support test is not executed again.
+                       return ( this.get = hookFn ).apply( this, arguments );
+               }
+       };
+}
+
+
+var
+
+       // Swappable if display is none or starts with table
+       // except "table", "table-cell", or "table-caption"
+       // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+       rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+       cssNormalTransform = {
+               letterSpacing: "0",
+               fontWeight: "400"
+       },
+
+       cssPrefixes = [ "Webkit", "Moz", "ms" ],
+       emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+       // Shortcut for names that are not vendor prefixed
+       if ( name in emptyStyle ) {
+               return name;
+       }
+
+       // Check for vendor prefixed names
+       var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+               i = cssPrefixes.length;
+
+       while ( i-- ) {
+               name = cssPrefixes[ i ] + capName;
+               if ( name in emptyStyle ) {
+                       return name;
+               }
+       }
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+       // Any relative (+/-) values have already been
+       // normalized at this point
+       var matches = rcssNum.exec( value );
+       return matches ?
+
+               // Guard against undefined "subtract", e.g., when used as in cssHooks
+               Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+               value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+       var i,
+               val = 0;
+
+       // If we already have the right measurement, avoid augmentation
+       if ( extra === ( isBorderBox ? "border" : "content" ) ) {
+               i = 4;
+
+       // Otherwise initialize for horizontal or vertical properties
+       } else {
+               i = name === "width" ? 1 : 0;
+       }
+
+       for ( ; i < 4; i += 2 ) {
+
+               // Both box models exclude margin, so add it if we want it
+               if ( extra === "margin" ) {
+                       val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+               }
+
+               if ( isBorderBox ) {
+
+                       // border-box includes padding, so remove it if we want content
+                       if ( extra === "content" ) {
+                               val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+                       }
+
+                       // At this point, extra isn't border nor margin, so remove border
+                       if ( extra !== "margin" ) {
+                               val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               } else {
+
+                       // At this point, extra isn't content, so add padding
+                       val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+                       // At this point, extra isn't content nor padding, so add border
+                       if ( extra !== "padding" ) {
+                               val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               }
+       }
+
+       return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+       // Start with offset property, which is equivalent to the border-box value
+       var val,
+               valueIsBorderBox = true,
+               styles = getStyles( elem ),
+               isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+       // Support: IE <=11 only
+       // Running getBoundingClientRect on a disconnected node
+       // in IE throws an error.
+       if ( elem.getClientRects().length ) {
+               val = elem.getBoundingClientRect()[ name ];
+       }
+
+       // Some non-html elements return undefined for offsetWidth, so check for null/undefined
+       // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+       // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+       if ( val <= 0 || val == null ) {
+
+               // Fall back to computed then uncomputed css if necessary
+               val = curCSS( elem, name, styles );
+               if ( val < 0 || val == null ) {
+                       val = elem.style[ name ];
+               }
+
+               // Computed unit is not pixels. Stop here and return.
+               if ( rnumnonpx.test( val ) ) {
+                       return val;
+               }
+
+               // Check for style in case a browser which returns unreliable values
+               // for getComputedStyle silently falls back to the reliable elem.style
+               valueIsBorderBox = isBorderBox &&
+                       ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+               // Normalize "", auto, and prepare for extra
+               val = parseFloat( val ) || 0;
+       }
+
+       // Use the active box-sizing model to add/subtract irrelevant styles
+       return ( val +
+               augmentWidthOrHeight(
+                       elem,
+                       name,
+                       extra || ( isBorderBox ? "border" : "content" ),
+                       valueIsBorderBox,
+                       styles
+               )
+       ) + "px";
+}
+
+jQuery.extend( {
+
+       // Add in style property hooks for overriding the default
+       // behavior of getting and setting a style property
+       cssHooks: {
+               opacity: {
+                       get: function( elem, computed ) {
+                               if ( computed ) {
+
+                                       // We should always get a number back from opacity
+                                       var ret = curCSS( elem, "opacity" );
+                                       return ret === "" ? "1" : ret;
+                               }
+                       }
+               }
+       },
+
+       // Don't automatically add "px" to these possibly-unitless properties
+       cssNumber: {
+               "animationIterationCount": true,
+               "columnCount": true,
+               "fillOpacity": true,
+               "flexGrow": true,
+               "flexShrink": true,
+               "fontWeight": true,
+               "lineHeight": true,
+               "opacity": true,
+               "order": true,
+               "orphans": true,
+               "widows": true,
+               "zIndex": true,
+               "zoom": true
+       },
+
+       // Add in properties whose names you wish to fix before
+       // setting or getting the value
+       cssProps: {
+               "float": "cssFloat"
+       },
+
+       // Get and set the style property on a DOM Node
+       style: function( elem, name, value, extra ) {
+
+               // Don't set styles on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+                       return;
+               }
+
+               // Make sure that we're working with the right name
+               var ret, type, hooks,
+                       origName = jQuery.camelCase( name ),
+                       style = elem.style;
+
+               name = jQuery.cssProps[ origName ] ||
+                       ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+               // Gets hook for the prefixed version, then unprefixed version
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // Check if we're setting a value
+               if ( value !== undefined ) {
+                       type = typeof value;
+
+                       // Convert "+=" or "-=" to relative numbers (#7345)
+                       if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+                               value = adjustCSS( elem, name, ret );
+
+                               // Fixes bug #9237
+                               type = "number";
+                       }
+
+                       // Make sure that null and NaN values aren't set (#7116)
+                       if ( value == null || value !== value ) {
+                               return;
+                       }
+
+                       // If a number was passed in, add the unit (except for certain CSS properties)
+                       if ( type === "number" ) {
+                               value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+                       }
+
+                       // background-* props affect original clone's values
+                       if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+                               style[ name ] = "inherit";
+                       }
+
+                       // If a hook was provided, use that value, otherwise just set the specified value
+                       if ( !hooks || !( "set" in hooks ) ||
+                               ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+                               style[ name ] = value;
+                       }
+
+               } else {
+
+                       // If a hook was provided get the non-computed value from there
+                       if ( hooks && "get" in hooks &&
+                               ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+                               return ret;
+                       }
+
+                       // Otherwise just get the value from the style object
+                       return style[ name ];
+               }
+       },
+
+       css: function( elem, name, extra, styles ) {
+               var val, num, hooks,
+                       origName = jQuery.camelCase( name );
+
+               // Make sure that we're working with the right name
+               name = jQuery.cssProps[ origName ] ||
+                       ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+               // Try prefixed name followed by the unprefixed name
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // If a hook was provided get the computed value from there
+               if ( hooks && "get" in hooks ) {
+                       val = hooks.get( elem, true, extra );
+               }
+
+               // Otherwise, if a way to get the computed value exists, use that
+               if ( val === undefined ) {
+                       val = curCSS( elem, name, styles );
+               }
+
+               // Convert "normal" to computed value
+               if ( val === "normal" && name in cssNormalTransform ) {
+                       val = cssNormalTransform[ name ];
+               }
+
+               // Make numeric if forced or a qualifier was provided and val looks numeric
+               if ( extra === "" || extra ) {
+                       num = parseFloat( val );
+                       return extra === true || isFinite( num ) ? num || 0 : val;
+               }
+               return val;
+       }
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+       jQuery.cssHooks[ name ] = {
+               get: function( elem, computed, extra ) {
+                       if ( computed ) {
+
+                               // Certain elements can have dimension info if we invisibly show them
+                               // but it must have a current display style that would benefit
+                               return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+                                       // Support: Safari 8+
+                                       // Table columns in Safari have non-zero offsetWidth & zero
+                                       // getBoundingClientRect().width unless display is changed.
+                                       // Support: IE <=11 only
+                                       // Running getBoundingClientRect on a disconnected node
+                                       // in IE throws an error.
+                                       ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+                                               swap( elem, cssShow, function() {
+                                                       return getWidthOrHeight( elem, name, extra );
+                                               } ) :
+                                               getWidthOrHeight( elem, name, extra );
+                       }
+               },
+
+               set: function( elem, value, extra ) {
+                       var matches,
+                               styles = extra && getStyles( elem ),
+                               subtract = extra && augmentWidthOrHeight(
+                                       elem,
+                                       name,
+                                       extra,
+                                       jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+                                       styles
+                               );
+
+                       // Convert to pixels if value adjustment is needed
+                       if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+                               ( matches[ 3 ] || "px" ) !== "px" ) {
+
+                               elem.style[ name ] = value;
+                               value = jQuery.css( elem, name );
+                       }
+
+                       return setPositiveNumber( elem, value, subtract );
+               }
+       };
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+       function( elem, computed ) {
+               if ( computed ) {
+                       return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+                               elem.getBoundingClientRect().left -
+                                       swap( elem, { marginLeft: 0 }, function() {
+                                               return elem.getBoundingClientRect().left;
+                                       } )
+                               ) + "px";
+               }
+       }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+       margin: "",
+       padding: "",
+       border: "Width"
+}, function( prefix, suffix ) {
+       jQuery.cssHooks[ prefix + suffix ] = {
+               expand: function( value ) {
+                       var i = 0,
+                               expanded = {},
+
+                               // Assumes a single number if not a string
+                               parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+                       for ( ; i < 4; i++ ) {
+                               expanded[ prefix + cssExpand[ i ] + suffix ] =
+                                       parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+                       }
+
+                       return expanded;
+               }
+       };
+
+       if ( !rmargin.test( prefix ) ) {
+               jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+       }
+} );
+
+jQuery.fn.extend( {
+       css: function( name, value ) {
+               return access( this, function( elem, name, value ) {
+                       var styles, len,
+                               map = {},
+                               i = 0;
+
+                       if ( jQuery.isArray( name ) ) {
+                               styles = getStyles( elem );
+                               len = name.length;
+
+                               for ( ; i < len; i++ ) {
+                                       map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+                               }
+
+                               return map;
+                       }
+
+                       return value !== undefined ?
+                               jQuery.style( elem, name, value ) :
+                               jQuery.css( elem, name );
+               }, name, value, arguments.length > 1 );
+       }
+} );
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+       time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+       type = type || "fx";
+
+       return this.queue( type, function( next, hooks ) {
+               var timeout = window.setTimeout( next, time );
+               hooks.stop = function() {
+                       window.clearTimeout( timeout );
+               };
+       } );
+};
+
+
+( function() {
+       var input = document.createElement( "input" ),
+               select = document.createElement( "select" ),
+               opt = select.appendChild( document.createElement( "option" ) );
+
+       input.type = "checkbox";
+
+       // Support: Android <=4.3 only
+       // Default value for a checkbox should be "on"
+       support.checkOn = input.value !== "";
+
+       // Support: IE <=11 only
+       // Must access selectedIndex to make default options select
+       support.optSelected = opt.selected;
+
+       // Support: IE <=11 only
+       // An input loses its value after becoming a radio
+       input = document.createElement( "input" );
+       input.value = "t";
+       input.type = "radio";
+       support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+       attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+       attr: function( name, value ) {
+               return access( this, jQuery.attr, name, value, arguments.length > 1 );
+       },
+
+       removeAttr: function( name ) {
+               return this.each( function() {
+                       jQuery.removeAttr( this, name );
+               } );
+       }
+} );
+
+jQuery.extend( {
+       attr: function( elem, name, value ) {
+               var ret, hooks,
+                       nType = elem.nodeType;
+
+               // Don't get/set attributes on text, comment and attribute nodes
+               if ( nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               // Fallback to prop when attributes are not supported
+               if ( typeof elem.getAttribute === "undefined" ) {
+                       return jQuery.prop( elem, name, value );
+               }
+
+               // Attribute hooks are determined by the lowercase version
+               // Grab necessary hook if one is defined
+               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+                       hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+                               ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+               }
+
+               if ( value !== undefined ) {
+                       if ( value === null ) {
+                               jQuery.removeAttr( elem, name );
+                               return;
+                       }
+
+                       if ( hooks && "set" in hooks &&
+                               ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+                               return ret;
+                       }
+
+                       elem.setAttribute( name, value + "" );
+                       return value;
+               }
+
+               if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+                       return ret;
+               }
+
+               ret = jQuery.find.attr( elem, name );
+
+               // Non-existent attributes return null, we normalize to undefined
+               return ret == null ? undefined : ret;
+       },
+
+       attrHooks: {
+               type: {
+                       set: function( elem, value ) {
+                               if ( !support.radioValue && value === "radio" &&
+                                       jQuery.nodeName( elem, "input" ) ) {
+                                       var val = elem.value;
+                                       elem.setAttribute( "type", value );
+                                       if ( val ) {
+                                               elem.value = val;
+                                       }
+                                       return value;
+                               }
+                       }
+               }
+       },
+
+       removeAttr: function( elem, value ) {
+               var name,
+                       i = 0,
+
+                       // Attribute names can contain non-HTML whitespace characters
+                       // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+                       attrNames = value && value.match( rnothtmlwhite );
+
+               if ( attrNames && elem.nodeType === 1 ) {
+                       while ( ( name = attrNames[ i++ ] ) ) {
+                               elem.removeAttribute( name );
+                       }
+               }
+       }
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+       set: function( elem, value, name ) {
+               if ( value === false ) {
+
+                       // Remove boolean attributes when set to false
+                       jQuery.removeAttr( elem, name );
+               } else {
+                       elem.setAttribute( name, name );
+               }
+               return name;
+       }
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+       var getter = attrHandle[ name ] || jQuery.find.attr;
+
+       attrHandle[ name ] = function( elem, name, isXML ) {
+               var ret, handle,
+                       lowercaseName = name.toLowerCase();
+
+               if ( !isXML ) {
+
+                       // Avoid an infinite loop by temporarily removing this function from the getter
+                       handle = attrHandle[ lowercaseName ];
+                       attrHandle[ lowercaseName ] = ret;
+                       ret = getter( elem, name, isXML ) != null ?
+                               lowercaseName :
+                               null;
+                       attrHandle[ lowercaseName ] = handle;
+               }
+               return ret;
+       };
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+       rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+       prop: function( name, value ) {
+               return access( this, jQuery.prop, name, value, arguments.length > 1 );
+       },
+
+       removeProp: function( name ) {
+               return this.each( function() {
+                       delete this[ jQuery.propFix[ name ] || name ];
+               } );
+       }
+} );
+
+jQuery.extend( {
+       prop: function( elem, name, value ) {
+               var ret, hooks,
+                       nType = elem.nodeType;
+
+               // Don't get/set properties on text, comment and attribute nodes
+               if ( nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+                       // Fix name and attach hooks
+                       name = jQuery.propFix[ name ] || name;
+                       hooks = jQuery.propHooks[ name ];
+               }
+
+               if ( value !== undefined ) {
+                       if ( hooks && "set" in hooks &&
+                               ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+                               return ret;
+                       }
+
+                       return ( elem[ name ] = value );
+               }
+
+               if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+                       return ret;
+               }
+
+               return elem[ name ];
+       },
+
+       propHooks: {
+               tabIndex: {
+                       get: function( elem ) {
+
+                               // Support: IE <=9 - 11 only
+                               // elem.tabIndex doesn't always return the
+                               // correct value when it hasn't been explicitly set
+                               // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+                               // Use proper attribute retrieval(#12072)
+                               var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+                               if ( tabindex ) {
+                                       return parseInt( tabindex, 10 );
+                               }
+
+                               if (
+                                       rfocusable.test( elem.nodeName ) ||
+                                       rclickable.test( elem.nodeName ) &&
+                                       elem.href
+                               ) {
+                                       return 0;
+                               }
+
+                               return -1;
+                       }
+               }
+       },
+
+       propFix: {
+               "for": "htmlFor",
+               "class": "className"
+       }
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+       jQuery.propHooks.selected = {
+               get: function( elem ) {
+
+                       /* eslint no-unused-expressions: "off" */
+
+                       var parent = elem.parentNode;
+                       if ( parent && parent.parentNode ) {
+                               parent.parentNode.selectedIndex;
+                       }
+                       return null;
+               },
+               set: function( elem ) {
+
+                       /* eslint no-unused-expressions: "off" */
+
+                       var parent = elem.parentNode;
+                       if ( parent ) {
+                               parent.selectedIndex;
+
+                               if ( parent.parentNode ) {
+                                       parent.parentNode.selectedIndex;
+                               }
+                       }
+               }
+       };
+}
+
+jQuery.each( [
+       "tabIndex",
+       "readOnly",
+       "maxLength",
+       "cellSpacing",
+       "cellPadding",
+       "rowSpan",
+       "colSpan",
+       "useMap",
+       "frameBorder",
+       "contentEditable"
+], function() {
+       jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+       // Strip and collapse whitespace according to HTML spec
+       // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
+       function stripAndCollapse( value ) {
+               var tokens = value.match( rnothtmlwhite ) || [];
+               return tokens.join( " " );
+       }
+
+
+function getClass( elem ) {
+       return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+       addClass: function( value ) {
+               var classes, elem, cur, curValue, clazz, j, finalValue,
+                       i = 0;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each( function( j ) {
+                               jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+                       } );
+               }
+
+               if ( typeof value === "string" && value ) {
+                       classes = value.match( rnothtmlwhite ) || [];
+
+                       while ( ( elem = this[ i++ ] ) ) {
+                               curValue = getClass( elem );
+                               cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( ( clazz = classes[ j++ ] ) ) {
+                                               if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+                                                       cur += clazz + " ";
+                                               }
+                                       }
+
+                                       // Only assign if different to avoid unneeded rendering.
+                                       finalValue = stripAndCollapse( cur );
+                                       if ( curValue !== finalValue ) {
+                                               elem.setAttribute( "class", finalValue );
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       removeClass: function( value ) {
+               var classes, elem, cur, curValue, clazz, j, finalValue,
+                       i = 0;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each( function( j ) {
+                               jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+                       } );
+               }
+
+               if ( !arguments.length ) {
+                       return this.attr( "class", "" );
+               }
+
+               if ( typeof value === "string" && value ) {
+                       classes = value.match( rnothtmlwhite ) || [];
+
+                       while ( ( elem = this[ i++ ] ) ) {
+                               curValue = getClass( elem );
+
+                               // This expression is here for better compressibility (see addClass)
+                               cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( ( clazz = classes[ j++ ] ) ) {
+
+                                               // Remove *all* instances
+                                               while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+                                                       cur = cur.replace( " " + clazz + " ", " " );
+                                               }
+                                       }
+
+                                       // Only assign if different to avoid unneeded rendering.
+                                       finalValue = stripAndCollapse( cur );
+                                       if ( curValue !== finalValue ) {
+                                               elem.setAttribute( "class", finalValue );
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       toggleClass: function( value, stateVal ) {
+               var type = typeof value;
+
+               if ( typeof stateVal === "boolean" && type === "string" ) {
+                       return stateVal ? this.addClass( value ) : this.removeClass( value );
+               }
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each( function( i ) {
+                               jQuery( this ).toggleClass(
+                                       value.call( this, i, getClass( this ), stateVal ),
+                                       stateVal
+                               );
+                       } );
+               }
+
+               return this.each( function() {
+                       var className, i, self, classNames;
+
+                       if ( type === "string" ) {
+
+                               // Toggle individual class names
+                               i = 0;
+                               self = jQuery( this );
+                               classNames = value.match( rnothtmlwhite ) || [];
+
+                               while ( ( className = classNames[ i++ ] ) ) {
+
+                                       // Check each className given, space separated list
+                                       if ( self.hasClass( className ) ) {
+                                               self.removeClass( className );
+                                       } else {
+                                               self.addClass( className );
+                                       }
+                               }
+
+                       // Toggle whole class name
+                       } else if ( value === undefined || type === "boolean" ) {
+                               className = getClass( this );
+                               if ( className ) {
+
+                                       // Store className if set
+                                       dataPriv.set( this, "__className__", className );
+                               }
+
+                               // If the element has a class name or if we're passed `false`,
+                               // then remove the whole classname (if there was one, the above saved it).
+                               // Otherwise bring back whatever was previously saved (if anything),
+                               // falling back to the empty string if nothing was stored.
+                               if ( this.setAttribute ) {
+                                       this.setAttribute( "class",
+                                               className || value === false ?
+                                               "" :
+                                               dataPriv.get( this, "__className__" ) || ""
+                                       );
+                               }
+                       }
+               } );
+       },
+
+       hasClass: function( selector ) {
+               var className, elem,
+                       i = 0;
+
+               className = " " + selector + " ";
+               while ( ( elem = this[ i++ ] ) ) {
+                       if ( elem.nodeType === 1 &&
+                               ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+                                       return true;
+                       }
+               }
+
+               return false;
+       }
+} );
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+       val: function( value ) {
+               var hooks, ret, isFunction,
+                       elem = this[ 0 ];
+
+               if ( !arguments.length ) {
+                       if ( elem ) {
+                               hooks = jQuery.valHooks[ elem.type ] ||
+                                       jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+                               if ( hooks &&
+                                       "get" in hooks &&
+                                       ( ret = hooks.get( elem, "value" ) ) !== undefined
+                               ) {
+                                       return ret;
+                               }
+
+                               ret = elem.value;
+
+                               // Handle most common string cases
+                               if ( typeof ret === "string" ) {
+                                       return ret.replace( rreturn, "" );
+                               }
+
+                               // Handle cases where value is null/undef or number
+                               return ret == null ? "" : ret;
+                       }
+
+                       return;
+               }
+
+               isFunction = jQuery.isFunction( value );
+
+               return this.each( function( i ) {
+                       var val;
+
+                       if ( this.nodeType !== 1 ) {
+                               return;
+                       }
+
+                       if ( isFunction ) {
+                               val = value.call( this, i, jQuery( this ).val() );
+                       } else {
+                               val = value;
+                       }
+
+                       // Treat null/undefined as ""; convert numbers to string
+                       if ( val == null ) {
+                               val = "";
+
+                       } else if ( typeof val === "number" ) {
+                               val += "";
+
+                       } else if ( jQuery.isArray( val ) ) {
+                               val = jQuery.map( val, function( value ) {
+                                       return value == null ? "" : value + "";
+                               } );
+                       }
+
+                       hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+                       // If set returns undefined, fall back to normal setting
+                       if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+                               this.value = val;
+                       }
+               } );
+       }
+} );
+
+jQuery.extend( {
+       valHooks: {
+               option: {
+                       get: function( elem ) {
+
+                               var val = jQuery.find.attr( elem, "value" );
+                               return val != null ?
+                                       val :
+
+                                       // Support: IE <=10 - 11 only
+                                       // option.text throws exceptions (#14686, #14858)
+                                       // Strip and collapse whitespace
+                                       // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+                                       stripAndCollapse( jQuery.text( elem ) );
+                       }
+               },
+               select: {
+                       get: function( elem ) {
+                               var value, option, i,
+                                       options = elem.options,
+                                       index = elem.selectedIndex,
+                                       one = elem.type === "select-one",
+                                       values = one ? null : [],
+                                       max = one ? index + 1 : options.length;
+
+                               if ( index < 0 ) {
+                                       i = max;
+
+                               } else {
+                                       i = one ? index : 0;
+                               }
+
+                               // Loop through all the selected options
+                               for ( ; i < max; i++ ) {
+                                       option = options[ i ];
+
+                                       // Support: IE <=9 only
+                                       // IE8-9 doesn't update selected after form reset (#2551)
+                                       if ( ( option.selected || i === index ) &&
+
+                                                       // Don't return options that are disabled or in a disabled optgroup
+                                                       !option.disabled &&
+                                                       ( !option.parentNode.disabled ||
+                                                               !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+                                               // Get the specific value for the option
+                                               value = jQuery( option ).val();
+
+                                               // We don't need an array for one selects
+                                               if ( one ) {
+                                                       return value;
+                                               }
+
+                                               // Multi-Selects return an array
+                                               values.push( value );
+                                       }
+                               }
+
+                               return values;
+                       },
+
+                       set: function( elem, value ) {
+                               var optionSet, option,
+                                       options = elem.options,
+                                       values = jQuery.makeArray( value ),
+                                       i = options.length;
+
+                               while ( i-- ) {
+                                       option = options[ i ];
+
+                                       /* eslint-disable no-cond-assign */
+
+                                       if ( option.selected =
+                                               jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+                                       ) {
+                                               optionSet = true;
+                                       }
+
+                                       /* eslint-enable no-cond-assign */
+                               }
+
+                               // Force browsers to behave consistently when non-matching value is set
+                               if ( !optionSet ) {
+                                       elem.selectedIndex = -1;
+                               }
+                               return values;
+                       }
+               }
+       }
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+       jQuery.valHooks[ this ] = {
+               set: function( elem, value ) {
+                       if ( jQuery.isArray( value ) ) {
+                               return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+                       }
+               }
+       };
+       if ( !support.checkOn ) {
+               jQuery.valHooks[ this ].get = function( elem ) {
+                       return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+               };
+       }
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+       trigger: function( event, data, elem, onlyHandlers ) {
+
+               var i, cur, tmp, bubbleType, ontype, handle, special,
+                       eventPath = [ elem || document ],
+                       type = hasOwn.call( event, "type" ) ? event.type : event,
+                       namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+               cur = tmp = elem = elem || document;
+
+               // Don't do events on text and comment nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               // focus/blur morphs to focusin/out; ensure we're not firing them right now
+               if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+                       return;
+               }
+
+               if ( type.indexOf( "." ) > -1 ) {
+
+                       // Namespaced trigger; create a regexp to match event type in handle()
+                       namespaces = type.split( "." );
+                       type = namespaces.shift();
+                       namespaces.sort();
+               }
+               ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+               // Caller can pass in a jQuery.Event object, Object, or just an event type string
+               event = event[ jQuery.expando ] ?
+                       event :
+                       new jQuery.Event( type, typeof event === "object" && event );
+
+               // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+               event.isTrigger = onlyHandlers ? 2 : 3;
+               event.namespace = namespaces.join( "." );
+               event.rnamespace = event.namespace ?
+                       new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+                       null;
+
+               // Clean up the event in case it is being reused
+               event.result = undefined;
+               if ( !event.target ) {
+                       event.target = elem;
+               }
+
+               // Clone any incoming data and prepend the event, creating the handler arg list
+               data = data == null ?
+                       [ event ] :
+                       jQuery.makeArray( data, [ event ] );
+
+               // Allow special events to draw outside the lines
+               special = jQuery.event.special[ type ] || {};
+               if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+                       return;
+               }
+
+               // Determine event propagation path in advance, per W3C events spec (#9951)
+               // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+               if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+                       bubbleType = special.delegateType || type;
+                       if ( !rfocusMorph.test( bubbleType + type ) ) {
+                               cur = cur.parentNode;
+                       }
+                       for ( ; cur; cur = cur.parentNode ) {
+                               eventPath.push( cur );
+                               tmp = cur;
+                       }
+
+                       // Only add window if we got to document (e.g., not plain obj or detached DOM)
+                       if ( tmp === ( elem.ownerDocument || document ) ) {
+                               eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+                       }
+               }
+
+               // Fire handlers on the event path
+               i = 0;
+               while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+                       event.type = i > 1 ?
+                               bubbleType :
+                               special.bindType || type;
+
+                       // jQuery handler
+                       handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+                               dataPriv.get( cur, "handle" );
+                       if ( handle ) {
+                               handle.apply( cur, data );
+                       }
+
+                       // Native handler
+                       handle = ontype && cur[ ontype ];
+                       if ( handle && handle.apply && acceptData( cur ) ) {
+                               event.result = handle.apply( cur, data );
+                               if ( event.result === false ) {
+                                       event.preventDefault();
+                               }
+                       }
+               }
+               event.type = type;
+
+               // If nobody prevented the default action, do it now
+               if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+                       if ( ( !special._default ||
+                               special._default.apply( eventPath.pop(), data ) === false ) &&
+                               acceptData( elem ) ) {
+
+                               // Call a native DOM method on the target with the same name as the event.
+                               // Don't do default actions on window, that's where global variables be (#6170)
+                               if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+                                       // Don't re-trigger an onFOO event when we call its FOO() method
+                                       tmp = elem[ ontype ];
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = null;
+                                       }
+
+                                       // Prevent re-triggering of the same event, since we already bubbled it above
+                                       jQuery.event.triggered = type;
+                                       elem[ type ]();
+                                       jQuery.event.triggered = undefined;
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = tmp;
+                                       }
+                               }
+                       }
+               }
+
+               return event.result;
+       },
+
+       // Piggyback on a donor event to simulate a different one
+       // Used only for `focus(in | out)` events
+       simulate: function( type, elem, event ) {
+               var e = jQuery.extend(
+                       new jQuery.Event(),
+                       event,
+                       {
+                               type: type,
+                               isSimulated: true
+                       }
+               );
+
+               jQuery.event.trigger( e, null, elem );
+       }
+
+} );
+
+jQuery.fn.extend( {
+
+       trigger: function( type, data ) {
+               return this.each( function() {
+                       jQuery.event.trigger( type, data, this );
+               } );
+       },
+       triggerHandler: function( type, data ) {
+               var elem = this[ 0 ];
+               if ( elem ) {
+                       return jQuery.event.trigger( type, data, elem, true );
+               }
+       }
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+       "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+       "change select submit keydown keypress keyup contextmenu" ).split( " " ),
+       function( i, name ) {
+
+       // Handle event binding
+       jQuery.fn[ name ] = function( data, fn ) {
+               return arguments.length > 0 ?
+                       this.on( name, null, data, fn ) :
+                       this.trigger( name );
+       };
+} );
+
+jQuery.fn.extend( {
+       hover: function( fnOver, fnOut ) {
+               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+       }
+} );
+
+
+
+
+support.focusin = "onfocusin" in window;
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+       jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+               // Attach a single capturing handler on the document while someone wants focusin/focusout
+               var handler = function( event ) {
+                       jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+               };
+
+               jQuery.event.special[ fix ] = {
+                       setup: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = dataPriv.access( doc, fix );
+
+                               if ( !attaches ) {
+                                       doc.addEventListener( orig, handler, true );
+                               }
+                               dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+                       },
+                       teardown: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = dataPriv.access( doc, fix ) - 1;
+
+                               if ( !attaches ) {
+                                       doc.removeEventListener( orig, handler, true );
+                                       dataPriv.remove( doc, fix );
+
+                               } else {
+                                       dataPriv.access( doc, fix, attaches );
+                               }
+                       }
+               };
+       } );
+}
+
+
+var
+       rbracket = /\[\]$/,
+       rCRLF = /\r?\n/g,
+       rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+       rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+       var name;
+
+       if ( jQuery.isArray( obj ) ) {
+
+               // Serialize array item.
+               jQuery.each( obj, function( i, v ) {
+                       if ( traditional || rbracket.test( prefix ) ) {
+
+                               // Treat each array item as a scalar.
+                               add( prefix, v );
+
+                       } else {
+
+                               // Item is non-scalar (array or object), encode its numeric index.
+                               buildParams(
+                                       prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+                                       v,
+                                       traditional,
+                                       add
+                               );
+                       }
+               } );
+
+       } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+               // Serialize object item.
+               for ( name in obj ) {
+                       buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+               }
+
+       } else {
+
+               // Serialize scalar item.
+               add( prefix, obj );
+       }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+       var prefix,
+               s = [],
+               add = function( key, valueOrFunction ) {
+
+                       // If value is a function, invoke it and use its return value
+                       var value = jQuery.isFunction( valueOrFunction ) ?
+                               valueOrFunction() :
+                               valueOrFunction;
+
+                       s[ s.length ] = encodeURIComponent( key ) + "=" +
+                               encodeURIComponent( value == null ? "" : value );
+               };
+
+       // If an array was passed in, assume that it is an array of form elements.
+       if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+               // Serialize the form elements
+               jQuery.each( a, function() {
+                       add( this.name, this.value );
+               } );
+
+       } else {
+
+               // If traditional, encode the "old" way (the way 1.3.2 or older
+               // did it), otherwise encode params recursively.
+               for ( prefix in a ) {
+                       buildParams( prefix, a[ prefix ], traditional, add );
+               }
+       }
+
+       // Return the resulting serialization
+       return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+       serialize: function() {
+               return jQuery.param( this.serializeArray() );
+       },
+       serializeArray: function() {
+               return this.map( function() {
+
+                       // Can add propHook for "elements" to filter or add form elements
+                       var elements = jQuery.prop( this, "elements" );
+                       return elements ? jQuery.makeArray( elements ) : this;
+               } )
+               .filter( function() {
+                       var type = this.type;
+
+                       // Use .is( ":disabled" ) so that fieldset[disabled] works
+                       return this.name && !jQuery( this ).is( ":disabled" ) &&
+                               rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+                               ( this.checked || !rcheckableType.test( type ) );
+               } )
+               .map( function( i, elem ) {
+                       var val = jQuery( this ).val();
+
+                       if ( val == null ) {
+                               return null;
+                       }
+
+                       if ( jQuery.isArray( val ) ) {
+                               return jQuery.map( val, function( val ) {
+                                       return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+                               } );
+                       }
+
+                       return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+               } ).get();
+       }
+} );
+
+
+jQuery.fn.extend( {
+       wrapAll: function( html ) {
+               var wrap;
+
+               if ( this[ 0 ] ) {
+                       if ( jQuery.isFunction( html ) ) {
+                               html = html.call( this[ 0 ] );
+                       }
+
+                       // The elements to wrap the target around
+                       wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+                       if ( this[ 0 ].parentNode ) {
+                               wrap.insertBefore( this[ 0 ] );
+                       }
+
+                       wrap.map( function() {
+                               var elem = this;
+
+                               while ( elem.firstElementChild ) {
+                                       elem = elem.firstElementChild;
+                               }
+
+                               return elem;
+                       } ).append( this );
+               }
+
+               return this;
+       },
+
+       wrapInner: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each( function( i ) {
+                               jQuery( this ).wrapInner( html.call( this, i ) );
+                       } );
+               }
+
+               return this.each( function() {
+                       var self = jQuery( this ),
+                               contents = self.contents();
+
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
+
+                       } else {
+                               self.append( html );
+                       }
+               } );
+       },
+
+       wrap: function( html ) {
+               var isFunction = jQuery.isFunction( html );
+
+               return this.each( function( i ) {
+                       jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+               } );
+       },
+
+       unwrap: function( selector ) {
+               this.parent( selector ).not( "body" ).each( function() {
+                       jQuery( this ).replaceWith( this.childNodes );
+               } );
+               return this;
+       }
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+       return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+       return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+       var body = document.implementation.createHTMLDocument( "" ).body;
+       body.innerHTML = "<form></form><form></form>";
+       return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+       if ( typeof data !== "string" ) {
+               return [];
+       }
+       if ( typeof context === "boolean" ) {
+               keepScripts = context;
+               context = false;
+       }
+
+       var base, parsed, scripts;
+
+       if ( !context ) {
+
+               // Stop scripts or inline event handlers from being executed immediately
+               // by using document.implementation
+               if ( support.createHTMLDocument ) {
+                       context = document.implementation.createHTMLDocument( "" );
+
+                       // Set the base href for the created document
+                       // so any parsed elements with URLs
+                       // are based on the document's URL (gh-2965)
+                       base = context.createElement( "base" );
+                       base.href = document.location.href;
+                       context.head.appendChild( base );
+               } else {
+                       context = document;
+               }
+       }
+
+       parsed = rsingleTag.exec( data );
+       scripts = !keepScripts && [];
+
+       // Single tag
+       if ( parsed ) {
+               return [ context.createElement( parsed[ 1 ] ) ];
+       }
+
+       parsed = buildFragment( [ data ], context, scripts );
+
+       if ( scripts && scripts.length ) {
+               jQuery( scripts ).remove();
+       }
+
+       return jQuery.merge( [], parsed.childNodes );
+};
+
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+       return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+       setOffset: function( elem, options, i ) {
+               var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+                       position = jQuery.css( elem, "position" ),
+                       curElem = jQuery( elem ),
+                       props = {};
+
+               // Set position first, in-case top/left are set even on static elem
+               if ( position === "static" ) {
+                       elem.style.position = "relative";
+               }
+
+               curOffset = curElem.offset();
+               curCSSTop = jQuery.css( elem, "top" );
+               curCSSLeft = jQuery.css( elem, "left" );
+               calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+                       ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+               // Need to be able to calculate position if either
+               // top or left is auto and position is either absolute or fixed
+               if ( calculatePosition ) {
+                       curPosition = curElem.position();
+                       curTop = curPosition.top;
+                       curLeft = curPosition.left;
+
+               } else {
+                       curTop = parseFloat( curCSSTop ) || 0;
+                       curLeft = parseFloat( curCSSLeft ) || 0;
+               }
+
+               if ( jQuery.isFunction( options ) ) {
+
+                       // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+                       options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+               }
+
+               if ( options.top != null ) {
+                       props.top = ( options.top - curOffset.top ) + curTop;
+               }
+               if ( options.left != null ) {
+                       props.left = ( options.left - curOffset.left ) + curLeft;
+               }
+
+               if ( "using" in options ) {
+                       options.using.call( elem, props );
+
+               } else {
+                       curElem.css( props );
+               }
+       }
+};
+
+jQuery.fn.extend( {
+       offset: function( options ) {
+
+               // Preserve chaining for setter
+               if ( arguments.length ) {
+                       return options === undefined ?
+                               this :
+                               this.each( function( i ) {
+                                       jQuery.offset.setOffset( this, options, i );
+                               } );
+               }
+
+               var docElem, win, rect, doc,
+                       elem = this[ 0 ];
+
+               if ( !elem ) {
+                       return;
+               }
+
+               // Support: IE <=11 only
+               // Running getBoundingClientRect on a
+               // disconnected node in IE throws an error
+               if ( !elem.getClientRects().length ) {
+                       return { top: 0, left: 0 };
+               }
+
+               rect = elem.getBoundingClientRect();
+
+               // Make sure element is not hidden (display: none)
+               if ( rect.width || rect.height ) {
+                       doc = elem.ownerDocument;
+                       win = getWindow( doc );
+                       docElem = doc.documentElement;
+
+                       return {
+                               top: rect.top + win.pageYOffset - docElem.clientTop,
+                               left: rect.left + win.pageXOffset - docElem.clientLeft
+                       };
+               }
+
+               // Return zeros for disconnected and hidden elements (gh-2310)
+               return rect;
+       },
+
+       position: function() {
+               if ( !this[ 0 ] ) {
+                       return;
+               }
+
+               var offsetParent, offset,
+                       elem = this[ 0 ],
+                       parentOffset = { top: 0, left: 0 };
+
+               // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+               // because it is its only offset parent
+               if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+                       // Assume getBoundingClientRect is there when computed position is fixed
+                       offset = elem.getBoundingClientRect();
+
+               } else {
+
+                       // Get *real* offsetParent
+                       offsetParent = this.offsetParent();
+
+                       // Get correct offsets
+                       offset = this.offset();
+                       if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+                               parentOffset = offsetParent.offset();
+                       }
+
+                       // Add offsetParent borders
+                       parentOffset = {
+                               top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+                               left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+                       };
+               }
+
+               // Subtract parent offsets and element margins
+               return {
+                       top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+                       left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+               };
+       },
+
+       // This method will return documentElement in the following cases:
+       // 1) For the element inside the iframe without offsetParent, this method will return
+       //    documentElement of the parent window
+       // 2) For the hidden or detached element
+       // 3) For body or html element, i.e. in case of the html node - it will return itself
+       //
+       // but those exceptions were never presented as a real life use-cases
+       // and might be considered as more preferable results.
+       //
+       // This logic, however, is not guaranteed and can change at any point in the future
+       offsetParent: function() {
+               return this.map( function() {
+                       var offsetParent = this.offsetParent;
+
+                       while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+                               offsetParent = offsetParent.offsetParent;
+                       }
+
+                       return offsetParent || documentElement;
+               } );
+       }
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+       var top = "pageYOffset" === prop;
+
+       jQuery.fn[ method ] = function( val ) {
+               return access( this, function( elem, method, val ) {
+                       var win = getWindow( elem );
+
+                       if ( val === undefined ) {
+                               return win ? win[ prop ] : elem[ method ];
+                       }
+
+                       if ( win ) {
+                               win.scrollTo(
+                                       !top ? val : win.pageXOffset,
+                                       top ? val : win.pageYOffset
+                               );
+
+                       } else {
+                               elem[ method ] = val;
+                       }
+               }, method, val, arguments.length );
+       };
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+       jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+               function( elem, computed ) {
+                       if ( computed ) {
+                               computed = curCSS( elem, prop );
+
+                               // If curCSS returns percentage, fallback to offset
+                               return rnumnonpx.test( computed ) ?
+                                       jQuery( elem ).position()[ prop ] + "px" :
+                                       computed;
+                       }
+               }
+       );
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+       jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+               function( defaultExtra, funcName ) {
+
+               // Margin is only for outerHeight, outerWidth
+               jQuery.fn[ funcName ] = function( margin, value ) {
+                       var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+                               extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+                       return access( this, function( elem, type, value ) {
+                               var doc;
+
+                               if ( jQuery.isWindow( elem ) ) {
+
+                                       // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+                                       return funcName.indexOf( "outer" ) === 0 ?
+                                               elem[ "inner" + name ] :
+                                               elem.document.documentElement[ "client" + name ];
+                               }
+
+                               // Get document width or height
+                               if ( elem.nodeType === 9 ) {
+                                       doc = elem.documentElement;
+
+                                       // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+                                       // whichever is greatest
+                                       return Math.max(
+                                               elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+                                               elem.body[ "offset" + name ], doc[ "offset" + name ],
+                                               doc[ "client" + name ]
+                                       );
+                               }
+
+                               return value === undefined ?
+
+                                       // Get width or height on the element, requesting but not forcing parseFloat
+                                       jQuery.css( elem, type, extra ) :
+
+                                       // Set width or height on the element
+                                       jQuery.style( elem, type, value, extra );
+                       }, type, chainable ? margin : undefined, chainable );
+               };
+       } );
+} );
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+       define( "jquery", [], function() {
+               return jQuery;
+       } );
+}
+
+
+
+
+var
+
+       // Map over jQuery in case of overwrite
+       _jQuery = window.jQuery,
+
+       // Map over the $ in case of overwrite
+       _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+       if ( window.$ === jQuery ) {
+               window.$ = _$;
+       }
+
+       if ( deep && window.jQuery === jQuery ) {
+               window.jQuery = _jQuery;
+       }
+
+       return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+       window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+
+return jQuery;
+} );
diff --git a/js/jquery/dist/jquery.slim.min.js b/js/jquery/dist/jquery.slim.min.js
new file mode 100644 (file)
index 0000000..a240ca9
--- /dev/null
@@ -0,0 +1,4 @@
+/*! jQuery v3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,
+holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:X.test(a)?JSON.parse(a):a)}function $(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=Z(c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),$(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=$(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var _=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,aa=new RegExp("^(?:([+-])=|)("+_+")([a-z%]*)$","i"),ba=["Top","Right","Bottom","Left"],ca=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function ea(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&aa.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var fa={};function ga(a){var b,c=a.ownerDocument,d=a.nodeName,e=fa[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),fa[d]=e,e)}function ha(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ca(d)&&(e[f]=ga(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ha(this,!0)},hide:function(){return ha(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ca(this)?r(this).show():r(this).hide()})}});var ia=/^(?:checkbox|radio)$/i,ja=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var oa=/<|&#?\w+;/;function pa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(oa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ja.exec(f)||["",""])[1].toLowerCase(),i=la[h]||la._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==wa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===wa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ua:va,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:va,isPropagationStopped:va,isImmediatePropagationStopped:va,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ua,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ua,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ua,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&ra.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&sa.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return xa(this,a,b,c,d)},one:function(a,b,c,d){return xa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=va),this.each(function(){r.event.remove(this,a,c,b)})}});var ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/<script|<style|<link/i,Aa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ba=/^true\/(.*)/,Ca=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ha(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ia.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ia(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,ma(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Fa),l=0;l<i;l++)j=h[l],ka.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ca,""),k))}return a}function Ja(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(ma(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&na(ma(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(ya,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);if(b)if(c)for(f=f||ma(a),g=g||ma(h),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);else Ga(a,h);return g=ma(h,"script"),g.length>0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(ma(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ia(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(ma(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ka=/^margin/,La=new RegExp("^("+_+")(?!px)[a-z%]+$","i"),Ma=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",qa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,qa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Na(a,b,c){var d,e,f,g,h=a.style;return c=c||Ma(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&La.test(g)&&Ka.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Oa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Pa=/^(none|table(?!-c[ea]).+)/,Qa={position:"absolute",visibility:"hidden",display:"block"},Ra={letterSpacing:"0",fontWeight:"400"},Sa=["Webkit","Moz","ms"],Ta=d.createElement("div").style;function Ua(a){if(a in Ta)return a;var b=a[0].toUpperCase()+a.slice(1),c=Sa.length;while(c--)if(a=Sa[c]+b,a in Ta)return a}function Va(a,b,c){var d=aa.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Wa(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ba[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ba[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ba[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ba[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ba[f]+"Width",!0,e)));return g}function Xa(a,b,c){var d,e=!0,f=Ma(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Na(a,b,f),(d<0||null==d)&&(d=a.style[b]),La.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Wa(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Na(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=aa.exec(c))&&e[1]&&(c=ea(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Na(a,b,d)),"normal"===e&&b in Ra&&(e=Ra[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Pa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Xa(a,b,d):da(a,Qa,function(){return Xa(a,b,d)})},set:function(a,c,d){var e,f=d&&Ma(a),g=d&&Wa(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=aa.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Va(a,c,g)}}}),r.cssHooks.marginLeft=Oa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Na(a,"marginLeft"))||a.getBoundingClientRect().left-da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ba[d]+b]=f[d]||f[d-2]||f[0];return e}},Ka.test(a)||(r.cssHooks[a+b].set=Va)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=Ma(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}}),r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var Ya,Za=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?Ya:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),Ya={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=Za[b]||r.find.attr;Za[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=Za[g],Za[g]=e,e=null!=c(a,b,d)?g:null,Za[g]=f),e}});var $a=/^(?:input|select|textarea|button)$/i,_a=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):$a.test(a.nodeName)||_a.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function ab(a){var b=a.match(K)||[];return b.join(" ")}function bb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,bb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=bb(c),d=1===c.nodeType&&" "+ab(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=ab(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,bb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=bb(c),d=1===c.nodeType&&" "+ab(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=ab(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,bb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=bb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+ab(bb(c))+" ").indexOf(b)>-1)return!0;return!1}});var cb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(cb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:ab(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var db=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!db.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,db.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var eb=/\[\]$/,fb=/\r?\n/g,gb=/^(?:submit|button|image|reset|file)$/i,hb=/^(?:input|select|textarea|keygen)/i;function ib(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||eb.test(a)?d(a,e):ib(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d);
+});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)ib(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)ib(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&hb.test(this.nodeName)&&!gb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(fb,"\r\n")}}):{name:b.name,value:c.replace(fb,"\r\n")}}).get()}}),r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=pa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))};function jb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=jb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||qa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=jb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Oa(o.pixelPosition,function(a,c){if(c)return c=Na(a,b),La.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var kb=a.jQuery,lb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=lb),b&&a.jQuery===r&&(a.jQuery=kb),r},b||(a.jQuery=a.$=r),r});
diff --git a/js/jquery/dist/jquery.slim.min.map b/js/jquery/dist/jquery.slim.min.map
new file mode 100644 (file)
index 0000000..8054b99
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["jquery.slim.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","DOMEval","code","doc","script","createElement","text","head","appendChild","parentNode","removeChild","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","isNaN","parseFloat","proto","Ctor","isEmptyObject","globalEval","camelCase","string","nodeName","toLowerCase","isArrayLike","trim","makeArray","results","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","value","guid","proxy","tmp","args","now","Date","Symbol","iterator","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","childNodes","nodeType","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","targets","l","closest","index","prevAll","add","addBack","sibling","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","createOptions","object","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Identity","v","Thrower","ex","adoptValue","resolve","reject","method","promise","fail","then","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","readyWait","holdReady","hold","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","optgroup","tbody","tfoot","colgroup","caption","th","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","div","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","on","types","one","origFn","event","off","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","manipulationTarget","content","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","computeStyleTests","cssText","container","divStyle","pixelPositionVal","reliableMarginLeftVal","marginLeft","boxSizingReliableVal","width","marginRight","pixelMarginRightVal","backgroundClip","clearCloneStyle","pixelPosition","boxSizingReliable","pixelMarginRight","reliableMarginLeft","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","rdisplayswap","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","getClientRects","getBoundingClientRect","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","origName","isFinite","left","margin","padding","border","prefix","suffix","expand","expanded","parts","delay","time","fx","speeds","timeout","clearTimeout","opt","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","propHooks","tabindex","parseInt","for","class","stripAndCollapse","getClass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","triggerHandler","hover","fnOver","fnOut","focusin","attaches","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","wrapAll","firstElementChild","wrapInner","unwrap","hidden","visible","offsetWidth","offsetHeight","createHTMLDocument","implementation","keepScripts","parsed","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","rect","height","pageYOffset","clientTop","pageXOffset","clientLeft","offsetParent","parentOffset","scrollLeft","scrollTop","scrollTo","Height","Width","","defaultExtra","funcName","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.slim.min.js"}
\ No newline at end of file
diff --git a/js/jquery/external/sizzle/dist/sizzle.js b/js/jquery/external/sizzle/dist/sizzle.js
new file mode 100644 (file)
index 0000000..bfa0793
--- /dev/null
@@ -0,0 +1,2272 @@
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+       support,
+       Expr,
+       getText,
+       isXML,
+       tokenize,
+       compile,
+       select,
+       outermostContext,
+       sortInput,
+       hasDuplicate,
+
+       // Local document vars
+       setDocument,
+       document,
+       docElem,
+       documentIsHTML,
+       rbuggyQSA,
+       rbuggyMatches,
+       matches,
+       contains,
+
+       // Instance-specific data
+       expando = "sizzle" + 1 * new Date(),
+       preferredDoc = window.document,
+       dirruns = 0,
+       done = 0,
+       classCache = createCache(),
+       tokenCache = createCache(),
+       compilerCache = createCache(),
+       sortOrder = function( a, b ) {
+               if ( a === b ) {
+                       hasDuplicate = true;
+               }
+               return 0;
+       },
+
+       // Instance methods
+       hasOwn = ({}).hasOwnProperty,
+       arr = [],
+       pop = arr.pop,
+       push_native = arr.push,
+       push = arr.push,
+       slice = arr.slice,
+       // Use a stripped-down indexOf as it's faster than native
+       // https://jsperf.com/thor-indexof-vs-for/5
+       indexOf = function( list, elem ) {
+               var i = 0,
+                       len = list.length;
+               for ( ; i < len; i++ ) {
+                       if ( list[i] === elem ) {
+                               return i;
+                       }
+               }
+               return -1;
+       },
+
+       booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+       // Regular expressions
+
+       // http://www.w3.org/TR/css3-selectors/#whitespace
+       whitespace = "[\\x20\\t\\r\\n\\f]",
+
+       // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+       identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+       // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+       attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+               // Operator (capture 2)
+               "*([*^$|!~]?=)" + whitespace +
+               // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+               "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+               "*\\]",
+
+       pseudos = ":(" + identifier + ")(?:\\((" +
+               // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+               // 1. quoted (capture 3; capture 4 or capture 5)
+               "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+               // 2. simple (capture 6)
+               "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+               // 3. anything else (capture 2)
+               ".*" +
+               ")\\)|)",
+
+       // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+       rwhitespace = new RegExp( whitespace + "+", "g" ),
+       rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+       rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+       rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+       rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+       rpseudo = new RegExp( pseudos ),
+       ridentifier = new RegExp( "^" + identifier + "$" ),
+
+       matchExpr = {
+               "ID": new RegExp( "^#(" + identifier + ")" ),
+               "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+               "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+               "ATTR": new RegExp( "^" + attributes ),
+               "PSEUDO": new RegExp( "^" + pseudos ),
+               "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+                       "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+                       "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+               "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+               // For use in libraries implementing .is()
+               // We use this for POS matching in `select`
+               "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+                       whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+       },
+
+       rinputs = /^(?:input|select|textarea|button)$/i,
+       rheader = /^h\d$/i,
+
+       rnative = /^[^{]+\{\s*\[native \w/,
+
+       // Easily-parseable/retrievable ID or TAG or CLASS selectors
+       rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+       rsibling = /[+~]/,
+
+       // CSS escapes
+       // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+       runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+       funescape = function( _, escaped, escapedWhitespace ) {
+               var high = "0x" + escaped - 0x10000;
+               // NaN means non-codepoint
+               // Support: Firefox<24
+               // Workaround erroneous numeric interpretation of +"0x"
+               return high !== high || escapedWhitespace ?
+                       escaped :
+                       high < 0 ?
+                               // BMP codepoint
+                               String.fromCharCode( high + 0x10000 ) :
+                               // Supplemental Plane codepoint (surrogate pair)
+                               String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+       },
+
+       // CSS string/identifier serialization
+       // https://drafts.csswg.org/cssom/#common-serializing-idioms
+       rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+       fcssescape = function( ch, asCodePoint ) {
+               if ( asCodePoint ) {
+
+                       // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+                       if ( ch === "\0" ) {
+                               return "\uFFFD";
+                       }
+
+                       // Control characters and (dependent upon position) numbers get escaped as code points
+                       return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+               }
+
+               // Other potentially-special ASCII characters get backslash-escaped
+               return "\\" + ch;
+       },
+
+       // Used for iframes
+       // See setDocument()
+       // Removing the function wrapper causes a "Permission Denied"
+       // error in IE
+       unloadHandler = function() {
+               setDocument();
+       },
+
+       disabledAncestor = addCombinator(
+               function( elem ) {
+                       return elem.disabled === true && ("form" in elem || "label" in elem);
+               },
+               { dir: "parentNode", next: "legend" }
+       );
+
+// Optimize for push.apply( _, NodeList )
+try {
+       push.apply(
+               (arr = slice.call( preferredDoc.childNodes )),
+               preferredDoc.childNodes
+       );
+       // Support: Android<4.0
+       // Detect silently failing push.apply
+       arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+       push = { apply: arr.length ?
+
+               // Leverage slice if possible
+               function( target, els ) {
+                       push_native.apply( target, slice.call(els) );
+               } :
+
+               // Support: IE<9
+               // Otherwise append directly
+               function( target, els ) {
+                       var j = target.length,
+                               i = 0;
+                       // Can't trust NodeList.length
+                       while ( (target[j++] = els[i++]) ) {}
+                       target.length = j - 1;
+               }
+       };
+}
+
+function Sizzle( selector, context, results, seed ) {
+       var m, i, elem, nid, match, groups, newSelector,
+               newContext = context && context.ownerDocument,
+
+               // nodeType defaults to 9, since context defaults to document
+               nodeType = context ? context.nodeType : 9;
+
+       results = results || [];
+
+       // Return early from calls with invalid selector or context
+       if ( typeof selector !== "string" || !selector ||
+               nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+               return results;
+       }
+
+       // Try to shortcut find operations (as opposed to filters) in HTML documents
+       if ( !seed ) {
+
+               if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+                       setDocument( context );
+               }
+               context = context || document;
+
+               if ( documentIsHTML ) {
+
+                       // If the selector is sufficiently simple, try using a "get*By*" DOM method
+                       // (excepting DocumentFragment context, where the methods don't exist)
+                       if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+                               // ID selector
+                               if ( (m = match[1]) ) {
+
+                                       // Document context
+                                       if ( nodeType === 9 ) {
+                                               if ( (elem = context.getElementById( m )) ) {
+
+                                                       // Support: IE, Opera, Webkit
+                                                       // TODO: identify versions
+                                                       // getElementById can match elements by name instead of ID
+                                                       if ( elem.id === m ) {
+                                                               results.push( elem );
+                                                               return results;
+                                                       }
+                                               } else {
+                                                       return results;
+                                               }
+
+                                       // Element context
+                                       } else {
+
+                                               // Support: IE, Opera, Webkit
+                                               // TODO: identify versions
+                                               // getElementById can match elements by name instead of ID
+                                               if ( newContext && (elem = newContext.getElementById( m )) &&
+                                                       contains( context, elem ) &&
+                                                       elem.id === m ) {
+
+                                                       results.push( elem );
+                                                       return results;
+                                               }
+                                       }
+
+                               // Type selector
+                               } else if ( match[2] ) {
+                                       push.apply( results, context.getElementsByTagName( selector ) );
+                                       return results;
+
+                               // Class selector
+                               } else if ( (m = match[3]) && support.getElementsByClassName &&
+                                       context.getElementsByClassName ) {
+
+                                       push.apply( results, context.getElementsByClassName( m ) );
+                                       return results;
+                               }
+                       }
+
+                       // Take advantage of querySelectorAll
+                       if ( support.qsa &&
+                               !compilerCache[ selector + " " ] &&
+                               (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+                               if ( nodeType !== 1 ) {
+                                       newContext = context;
+                                       newSelector = selector;
+
+                               // qSA looks outside Element context, which is not what we want
+                               // Thanks to Andrew Dupont for this workaround technique
+                               // Support: IE <=8
+                               // Exclude object elements
+                               } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+                                       // Capture the context ID, setting it first if necessary
+                                       if ( (nid = context.getAttribute( "id" )) ) {
+                                               nid = nid.replace( rcssescape, fcssescape );
+                                       } else {
+                                               context.setAttribute( "id", (nid = expando) );
+                                       }
+
+                                       // Prefix every selector in the list
+                                       groups = tokenize( selector );
+                                       i = groups.length;
+                                       while ( i-- ) {
+                                               groups[i] = "#" + nid + " " + toSelector( groups[i] );
+                                       }
+                                       newSelector = groups.join( "," );
+
+                                       // Expand context for sibling selectors
+                                       newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+                                               context;
+                               }
+
+                               if ( newSelector ) {
+                                       try {
+                                               push.apply( results,
+                                                       newContext.querySelectorAll( newSelector )
+                                               );
+                                               return results;
+                                       } catch ( qsaError ) {
+                                       } finally {
+                                               if ( nid === expando ) {
+                                                       context.removeAttribute( "id" );
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       // All others
+       return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ *     property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *     deleting the oldest entry
+ */
+function createCache() {
+       var keys = [];
+
+       function cache( key, value ) {
+               // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+               if ( keys.push( key + " " ) > Expr.cacheLength ) {
+                       // Only keep the most recent entries
+                       delete cache[ keys.shift() ];
+               }
+               return (cache[ key + " " ] = value);
+       }
+       return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+       fn[ expando ] = true;
+       return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+       var el = document.createElement("fieldset");
+
+       try {
+               return !!fn( el );
+       } catch (e) {
+               return false;
+       } finally {
+               // Remove from its parent by default
+               if ( el.parentNode ) {
+                       el.parentNode.removeChild( el );
+               }
+               // release memory in IE
+               el = null;
+       }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+       var arr = attrs.split("|"),
+               i = arr.length;
+
+       while ( i-- ) {
+               Expr.attrHandle[ arr[i] ] = handler;
+       }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+       var cur = b && a,
+               diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+                       a.sourceIndex - b.sourceIndex;
+
+       // Use IE sourceIndex if available on both nodes
+       if ( diff ) {
+               return diff;
+       }
+
+       // Check if b follows a
+       if ( cur ) {
+               while ( (cur = cur.nextSibling) ) {
+                       if ( cur === b ) {
+                               return -1;
+                       }
+               }
+       }
+
+       return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return name === "input" && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return (name === "input" || name === "button") && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+       // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+       return function( elem ) {
+
+               // Only certain elements can match :enabled or :disabled
+               // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+               // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+               if ( "form" in elem ) {
+
+                       // Check for inherited disabledness on relevant non-disabled elements:
+                       // * listed form-associated elements in a disabled fieldset
+                       //   https://html.spec.whatwg.org/multipage/forms.html#category-listed
+                       //   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+                       // * option elements in a disabled optgroup
+                       //   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+                       // All such elements have a "form" property.
+                       if ( elem.parentNode && elem.disabled === false ) {
+
+                               // Option elements defer to a parent optgroup if present
+                               if ( "label" in elem ) {
+                                       if ( "label" in elem.parentNode ) {
+                                               return elem.parentNode.disabled === disabled;
+                                       } else {
+                                               return elem.disabled === disabled;
+                                       }
+                               }
+
+                               // Support: IE 6 - 11
+                               // Use the isDisabled shortcut property to check for disabled fieldset ancestors
+                               return elem.isDisabled === disabled ||
+
+                                       // Where there is no isDisabled, check manually
+                                       /* jshint -W018 */
+                                       elem.isDisabled !== !disabled &&
+                                               disabledAncestor( elem ) === disabled;
+                       }
+
+                       return elem.disabled === disabled;
+
+               // Try to winnow out elements that can't be disabled before trusting the disabled property.
+               // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+               // even exist on them, let alone have a boolean value.
+               } else if ( "label" in elem ) {
+                       return elem.disabled === disabled;
+               }
+
+               // Remaining elements are neither :enabled nor :disabled
+               return false;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+       return markFunction(function( argument ) {
+               argument = +argument;
+               return markFunction(function( seed, matches ) {
+                       var j,
+                               matchIndexes = fn( [], seed.length, argument ),
+                               i = matchIndexes.length;
+
+                       // Match elements found at the specified indexes
+                       while ( i-- ) {
+                               if ( seed[ (j = matchIndexes[i]) ] ) {
+                                       seed[j] = !(matches[j] = seed[j]);
+                               }
+                       }
+               });
+       });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+       return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833)
+       var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+       var hasCompare, subWindow,
+               doc = node ? node.ownerDocument || node : preferredDoc;
+
+       // Return early if doc is invalid or already selected
+       if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+               return document;
+       }
+
+       // Update global variables
+       document = doc;
+       docElem = document.documentElement;
+       documentIsHTML = !isXML( document );
+
+       // Support: IE 9-11, Edge
+       // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+       if ( preferredDoc !== document &&
+               (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+               // Support: IE 11, Edge
+               if ( subWindow.addEventListener ) {
+                       subWindow.addEventListener( "unload", unloadHandler, false );
+
+               // Support: IE 9 - 10 only
+               } else if ( subWindow.attachEvent ) {
+                       subWindow.attachEvent( "onunload", unloadHandler );
+               }
+       }
+
+       /* Attributes
+       ---------------------------------------------------------------------- */
+
+       // Support: IE<8
+       // Verify that getAttribute really returns attributes and not properties
+       // (excepting IE8 booleans)
+       support.attributes = assert(function( el ) {
+               el.className = "i";
+               return !el.getAttribute("className");
+       });
+
+       /* getElement(s)By*
+       ---------------------------------------------------------------------- */
+
+       // Check if getElementsByTagName("*") returns only elements
+       support.getElementsByTagName = assert(function( el ) {
+               el.appendChild( document.createComment("") );
+               return !el.getElementsByTagName("*").length;
+       });
+
+       // Support: IE<9
+       support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+       // Support: IE<10
+       // Check if getElementById returns elements by name
+       // The broken getElementById methods don't pick up programmatically-set names,
+       // so use a roundabout getElementsByName test
+       support.getById = assert(function( el ) {
+               docElem.appendChild( el ).id = expando;
+               return !document.getElementsByName || !document.getElementsByName( expando ).length;
+       });
+
+       // ID filter and find
+       if ( support.getById ) {
+               Expr.filter["ID"] = function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               return elem.getAttribute("id") === attrId;
+                       };
+               };
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+                               var elem = context.getElementById( id );
+                               return elem ? [ elem ] : [];
+                       }
+               };
+       } else {
+               Expr.filter["ID"] =  function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               var node = typeof elem.getAttributeNode !== "undefined" &&
+                                       elem.getAttributeNode("id");
+                               return node && node.value === attrId;
+                       };
+               };
+
+               // Support: IE 6 - 7 only
+               // getElementById is not reliable as a find shortcut
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+                               var node, i, elems,
+                                       elem = context.getElementById( id );
+
+                               if ( elem ) {
+
+                                       // Verify the id attribute
+                                       node = elem.getAttributeNode("id");
+                                       if ( node && node.value === id ) {
+                                               return [ elem ];
+                                       }
+
+                                       // Fall back on getElementsByName
+                                       elems = context.getElementsByName( id );
+                                       i = 0;
+                                       while ( (elem = elems[i++]) ) {
+                                               node = elem.getAttributeNode("id");
+                                               if ( node && node.value === id ) {
+                                                       return [ elem ];
+                                               }
+                                       }
+                               }
+
+                               return [];
+                       }
+               };
+       }
+
+       // Tag
+       Expr.find["TAG"] = support.getElementsByTagName ?
+               function( tag, context ) {
+                       if ( typeof context.getElementsByTagName !== "undefined" ) {
+                               return context.getElementsByTagName( tag );
+
+                       // DocumentFragment nodes don't have gEBTN
+                       } else if ( support.qsa ) {
+                               return context.querySelectorAll( tag );
+                       }
+               } :
+
+               function( tag, context ) {
+                       var elem,
+                               tmp = [],
+                               i = 0,
+                               // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+                               results = context.getElementsByTagName( tag );
+
+                       // Filter out possible comments
+                       if ( tag === "*" ) {
+                               while ( (elem = results[i++]) ) {
+                                       if ( elem.nodeType === 1 ) {
+                                               tmp.push( elem );
+                                       }
+                               }
+
+                               return tmp;
+                       }
+                       return results;
+               };
+
+       // Class
+       Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+               if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+                       return context.getElementsByClassName( className );
+               }
+       };
+
+       /* QSA/matchesSelector
+       ---------------------------------------------------------------------- */
+
+       // QSA and matchesSelector support
+
+       // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+       rbuggyMatches = [];
+
+       // qSa(:focus) reports false when true (Chrome 21)
+       // We allow this because of a bug in IE8/9 that throws an error
+       // whenever `document.activeElement` is accessed on an iframe
+       // So, we allow :focus to pass through QSA all the time to avoid the IE error
+       // See https://bugs.jquery.com/ticket/13378
+       rbuggyQSA = [];
+
+       if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+               // Build QSA regex
+               // Regex strategy adopted from Diego Perini
+               assert(function( el ) {
+                       // Select is set to empty string on purpose
+                       // This is to test IE's treatment of not explicitly
+                       // setting a boolean content attribute,
+                       // since its presence should be enough
+                       // https://bugs.jquery.com/ticket/12359
+                       docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+                               "<select id='" + expando + "-\r\\' msallowcapture=''>" +
+                               "<option selected=''></option></select>";
+
+                       // Support: IE8, Opera 11-12.16
+                       // Nothing should be selected when empty strings follow ^= or $= or *=
+                       // The test attribute must be unknown in Opera but "safe" for WinRT
+                       // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+                       if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+                               rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+                       }
+
+                       // Support: IE8
+                       // Boolean attributes and "value" are not treated correctly
+                       if ( !el.querySelectorAll("[selected]").length ) {
+                               rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+                       }
+
+                       // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+                       if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+                               rbuggyQSA.push("~=");
+                       }
+
+                       // Webkit/Opera - :checked should return selected option elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       // IE8 throws error here and will not see later tests
+                       if ( !el.querySelectorAll(":checked").length ) {
+                               rbuggyQSA.push(":checked");
+                       }
+
+                       // Support: Safari 8+, iOS 8+
+                       // https://bugs.webkit.org/show_bug.cgi?id=136851
+                       // In-page `selector#id sibling-combinator selector` fails
+                       if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+                               rbuggyQSA.push(".#.+[+~]");
+                       }
+               });
+
+               assert(function( el ) {
+                       el.innerHTML = "<a href='' disabled='disabled'></a>" +
+                               "<select disabled='disabled'><option/></select>";
+
+                       // Support: Windows 8 Native Apps
+                       // The type and name attributes are restricted during .innerHTML assignment
+                       var input = document.createElement("input");
+                       input.setAttribute( "type", "hidden" );
+                       el.appendChild( input ).setAttribute( "name", "D" );
+
+                       // Support: IE8
+                       // Enforce case-sensitivity of name attribute
+                       if ( el.querySelectorAll("[name=d]").length ) {
+                               rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+                       }
+
+                       // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+                       // IE8 throws error here and will not see later tests
+                       if ( el.querySelectorAll(":enabled").length !== 2 ) {
+                               rbuggyQSA.push( ":enabled", ":disabled" );
+                       }
+
+                       // Support: IE9-11+
+                       // IE's :disabled selector does not pick up the children of disabled fieldsets
+                       docElem.appendChild( el ).disabled = true;
+                       if ( el.querySelectorAll(":disabled").length !== 2 ) {
+                               rbuggyQSA.push( ":enabled", ":disabled" );
+                       }
+
+                       // Opera 10-11 does not throw on post-comma invalid pseudos
+                       el.querySelectorAll("*,:x");
+                       rbuggyQSA.push(",.*:");
+               });
+       }
+
+       if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+               docElem.webkitMatchesSelector ||
+               docElem.mozMatchesSelector ||
+               docElem.oMatchesSelector ||
+               docElem.msMatchesSelector) )) ) {
+
+               assert(function( el ) {
+                       // Check to see if it's possible to do matchesSelector
+                       // on a disconnected node (IE 9)
+                       support.disconnectedMatch = matches.call( el, "*" );
+
+                       // This should fail with an exception
+                       // Gecko does not error, returns false instead
+                       matches.call( el, "[s!='']:x" );
+                       rbuggyMatches.push( "!=", pseudos );
+               });
+       }
+
+       rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+       rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+       /* Contains
+       ---------------------------------------------------------------------- */
+       hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+       // Element contains another
+       // Purposefully self-exclusive
+       // As in, an element does not contain itself
+       contains = hasCompare || rnative.test( docElem.contains ) ?
+               function( a, b ) {
+                       var adown = a.nodeType === 9 ? a.documentElement : a,
+                               bup = b && b.parentNode;
+                       return a === bup || !!( bup && bup.nodeType === 1 && (
+                               adown.contains ?
+                                       adown.contains( bup ) :
+                                       a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+                       ));
+               } :
+               function( a, b ) {
+                       if ( b ) {
+                               while ( (b = b.parentNode) ) {
+                                       if ( b === a ) {
+                                               return true;
+                                       }
+                               }
+                       }
+                       return false;
+               };
+
+       /* Sorting
+       ---------------------------------------------------------------------- */
+
+       // Document order sorting
+       sortOrder = hasCompare ?
+       function( a, b ) {
+
+               // Flag for duplicate removal
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               // Sort on method existence if only one input has compareDocumentPosition
+               var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+               if ( compare ) {
+                       return compare;
+               }
+
+               // Calculate position if both inputs belong to the same document
+               compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+                       a.compareDocumentPosition( b ) :
+
+                       // Otherwise we know they are disconnected
+                       1;
+
+               // Disconnected nodes
+               if ( compare & 1 ||
+                       (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+                       // Choose the first element that is related to our preferred document
+                       if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+                               return -1;
+                       }
+                       if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+                               return 1;
+                       }
+
+                       // Maintain original order
+                       return sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+               }
+
+               return compare & 4 ? -1 : 1;
+       } :
+       function( a, b ) {
+               // Exit early if the nodes are identical
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               var cur,
+                       i = 0,
+                       aup = a.parentNode,
+                       bup = b.parentNode,
+                       ap = [ a ],
+                       bp = [ b ];
+
+               // Parentless nodes are either documents or disconnected
+               if ( !aup || !bup ) {
+                       return a === document ? -1 :
+                               b === document ? 1 :
+                               aup ? -1 :
+                               bup ? 1 :
+                               sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+
+               // If the nodes are siblings, we can do a quick check
+               } else if ( aup === bup ) {
+                       return siblingCheck( a, b );
+               }
+
+               // Otherwise we need full lists of their ancestors for comparison
+               cur = a;
+               while ( (cur = cur.parentNode) ) {
+                       ap.unshift( cur );
+               }
+               cur = b;
+               while ( (cur = cur.parentNode) ) {
+                       bp.unshift( cur );
+               }
+
+               // Walk down the tree looking for a discrepancy
+               while ( ap[i] === bp[i] ) {
+                       i++;
+               }
+
+               return i ?
+                       // Do a sibling check if the nodes have a common ancestor
+                       siblingCheck( ap[i], bp[i] ) :
+
+                       // Otherwise nodes in our document sort first
+                       ap[i] === preferredDoc ? -1 :
+                       bp[i] === preferredDoc ? 1 :
+                       0;
+       };
+
+       return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+       return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       // Make sure that attribute selectors are quoted
+       expr = expr.replace( rattributeQuotes, "='$1']" );
+
+       if ( support.matchesSelector && documentIsHTML &&
+               !compilerCache[ expr + " " ] &&
+               ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+               ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+               try {
+                       var ret = matches.call( elem, expr );
+
+                       // IE 9's matchesSelector returns false on disconnected nodes
+                       if ( ret || support.disconnectedMatch ||
+                                       // As well, disconnected nodes are said to be in a document
+                                       // fragment in IE 9
+                                       elem.document && elem.document.nodeType !== 11 ) {
+                               return ret;
+                       }
+               } catch (e) {}
+       }
+
+       return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+       // Set document vars if needed
+       if ( ( context.ownerDocument || context ) !== document ) {
+               setDocument( context );
+       }
+       return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       var fn = Expr.attrHandle[ name.toLowerCase() ],
+               // Don't get fooled by Object.prototype properties (jQuery #13807)
+               val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+                       fn( elem, name, !documentIsHTML ) :
+                       undefined;
+
+       return val !== undefined ?
+               val :
+               support.attributes || !documentIsHTML ?
+                       elem.getAttribute( name ) :
+                       (val = elem.getAttributeNode(name)) && val.specified ?
+                               val.value :
+                               null;
+};
+
+Sizzle.escape = function( sel ) {
+       return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+       throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+       var elem,
+               duplicates = [],
+               j = 0,
+               i = 0;
+
+       // Unless we *know* we can detect duplicates, assume their presence
+       hasDuplicate = !support.detectDuplicates;
+       sortInput = !support.sortStable && results.slice( 0 );
+       results.sort( sortOrder );
+
+       if ( hasDuplicate ) {
+               while ( (elem = results[i++]) ) {
+                       if ( elem === results[ i ] ) {
+                               j = duplicates.push( i );
+                       }
+               }
+               while ( j-- ) {
+                       results.splice( duplicates[ j ], 1 );
+               }
+       }
+
+       // Clear input after sorting to release objects
+       // See https://github.com/jquery/sizzle/pull/225
+       sortInput = null;
+
+       return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+       var node,
+               ret = "",
+               i = 0,
+               nodeType = elem.nodeType;
+
+       if ( !nodeType ) {
+               // If no nodeType, this is expected to be an array
+               while ( (node = elem[i++]) ) {
+                       // Do not traverse comment nodes
+                       ret += getText( node );
+               }
+       } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+               // Use textContent for elements
+               // innerText usage removed for consistency of new lines (jQuery #11153)
+               if ( typeof elem.textContent === "string" ) {
+                       return elem.textContent;
+               } else {
+                       // Traverse its children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               ret += getText( elem );
+                       }
+               }
+       } else if ( nodeType === 3 || nodeType === 4 ) {
+               return elem.nodeValue;
+       }
+       // Do not include comment or processing instruction nodes
+
+       return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+       // Can be adjusted by the user
+       cacheLength: 50,
+
+       createPseudo: markFunction,
+
+       match: matchExpr,
+
+       attrHandle: {},
+
+       find: {},
+
+       relative: {
+               ">": { dir: "parentNode", first: true },
+               " ": { dir: "parentNode" },
+               "+": { dir: "previousSibling", first: true },
+               "~": { dir: "previousSibling" }
+       },
+
+       preFilter: {
+               "ATTR": function( match ) {
+                       match[1] = match[1].replace( runescape, funescape );
+
+                       // Move the given value to match[3] whether quoted or unquoted
+                       match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+                       if ( match[2] === "~=" ) {
+                               match[3] = " " + match[3] + " ";
+                       }
+
+                       return match.slice( 0, 4 );
+               },
+
+               "CHILD": function( match ) {
+                       /* matches from matchExpr["CHILD"]
+                               1 type (only|nth|...)
+                               2 what (child|of-type)
+                               3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+                               4 xn-component of xn+y argument ([+-]?\d*n|)
+                               5 sign of xn-component
+                               6 x of xn-component
+                               7 sign of y-component
+                               8 y of y-component
+                       */
+                       match[1] = match[1].toLowerCase();
+
+                       if ( match[1].slice( 0, 3 ) === "nth" ) {
+                               // nth-* requires argument
+                               if ( !match[3] ) {
+                                       Sizzle.error( match[0] );
+                               }
+
+                               // numeric x and y parameters for Expr.filter.CHILD
+                               // remember that false/true cast respectively to 0/1
+                               match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+                               match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+                       // other types prohibit arguments
+                       } else if ( match[3] ) {
+                               Sizzle.error( match[0] );
+                       }
+
+                       return match;
+               },
+
+               "PSEUDO": function( match ) {
+                       var excess,
+                               unquoted = !match[6] && match[2];
+
+                       if ( matchExpr["CHILD"].test( match[0] ) ) {
+                               return null;
+                       }
+
+                       // Accept quoted arguments as-is
+                       if ( match[3] ) {
+                               match[2] = match[4] || match[5] || "";
+
+                       // Strip excess characters from unquoted arguments
+                       } else if ( unquoted && rpseudo.test( unquoted ) &&
+                               // Get excess from tokenize (recursively)
+                               (excess = tokenize( unquoted, true )) &&
+                               // advance to the next closing parenthesis
+                               (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+                               // excess is a negative index
+                               match[0] = match[0].slice( 0, excess );
+                               match[2] = unquoted.slice( 0, excess );
+                       }
+
+                       // Return only captures needed by the pseudo filter method (type and argument)
+                       return match.slice( 0, 3 );
+               }
+       },
+
+       filter: {
+
+               "TAG": function( nodeNameSelector ) {
+                       var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+                       return nodeNameSelector === "*" ?
+                               function() { return true; } :
+                               function( elem ) {
+                                       return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+                               };
+               },
+
+               "CLASS": function( className ) {
+                       var pattern = classCache[ className + " " ];
+
+                       return pattern ||
+                               (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+                               classCache( className, function( elem ) {
+                                       return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+                               });
+               },
+
+               "ATTR": function( name, operator, check ) {
+                       return function( elem ) {
+                               var result = Sizzle.attr( elem, name );
+
+                               if ( result == null ) {
+                                       return operator === "!=";
+                               }
+                               if ( !operator ) {
+                                       return true;
+                               }
+
+                               result += "";
+
+                               return operator === "=" ? result === check :
+                                       operator === "!=" ? result !== check :
+                                       operator === "^=" ? check && result.indexOf( check ) === 0 :
+                                       operator === "*=" ? check && result.indexOf( check ) > -1 :
+                                       operator === "$=" ? check && result.slice( -check.length ) === check :
+                                       operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+                                       operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+                                       false;
+                       };
+               },
+
+               "CHILD": function( type, what, argument, first, last ) {
+                       var simple = type.slice( 0, 3 ) !== "nth",
+                               forward = type.slice( -4 ) !== "last",
+                               ofType = what === "of-type";
+
+                       return first === 1 && last === 0 ?
+
+                               // Shortcut for :nth-*(n)
+                               function( elem ) {
+                                       return !!elem.parentNode;
+                               } :
+
+                               function( elem, context, xml ) {
+                                       var cache, uniqueCache, outerCache, node, nodeIndex, start,
+                                               dir = simple !== forward ? "nextSibling" : "previousSibling",
+                                               parent = elem.parentNode,
+                                               name = ofType && elem.nodeName.toLowerCase(),
+                                               useCache = !xml && !ofType,
+                                               diff = false;
+
+                                       if ( parent ) {
+
+                                               // :(first|last|only)-(child|of-type)
+                                               if ( simple ) {
+                                                       while ( dir ) {
+                                                               node = elem;
+                                                               while ( (node = node[ dir ]) ) {
+                                                                       if ( ofType ?
+                                                                               node.nodeName.toLowerCase() === name :
+                                                                               node.nodeType === 1 ) {
+
+                                                                               return false;
+                                                                       }
+                                                               }
+                                                               // Reverse direction for :only-* (if we haven't yet done so)
+                                                               start = dir = type === "only" && !start && "nextSibling";
+                                                       }
+                                                       return true;
+                                               }
+
+                                               start = [ forward ? parent.firstChild : parent.lastChild ];
+
+                                               // non-xml :nth-child(...) stores cache data on `parent`
+                                               if ( forward && useCache ) {
+
+                                                       // Seek `elem` from a previously-cached index
+
+                                                       // ...in a gzip-friendly way
+                                                       node = parent;
+                                                       outerCache = node[ expando ] || (node[ expando ] = {});
+
+                                                       // Support: IE <9 only
+                                                       // Defend against cloned attroperties (jQuery gh-1709)
+                                                       uniqueCache = outerCache[ node.uniqueID ] ||
+                                                               (outerCache[ node.uniqueID ] = {});
+
+                                                       cache = uniqueCache[ type ] || [];
+                                                       nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+                                                       diff = nodeIndex && cache[ 2 ];
+                                                       node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+                                                               // Fallback to seeking `elem` from the start
+                                                               (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                               // When found, cache indexes on `parent` and break
+                                                               if ( node.nodeType === 1 && ++diff && node === elem ) {
+                                                                       uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+                                                                       break;
+                                                               }
+                                                       }
+
+                                               } else {
+                                                       // Use previously-cached element index if available
+                                                       if ( useCache ) {
+                                                               // ...in a gzip-friendly way
+                                                               node = elem;
+                                                               outerCache = node[ expando ] || (node[ expando ] = {});
+
+                                                               // Support: IE <9 only
+                                                               // Defend against cloned attroperties (jQuery gh-1709)
+                                                               uniqueCache = outerCache[ node.uniqueID ] ||
+                                                                       (outerCache[ node.uniqueID ] = {});
+
+                                                               cache = uniqueCache[ type ] || [];
+                                                               nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+                                                               diff = nodeIndex;
+                                                       }
+
+                                                       // xml :nth-child(...)
+                                                       // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+                                                       if ( diff === false ) {
+                                                               // Use the same loop as above to seek `elem` from the start
+                                                               while ( (node = ++nodeIndex && node && node[ dir ] ||
+                                                                       (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                                       if ( ( ofType ?
+                                                                               node.nodeName.toLowerCase() === name :
+                                                                               node.nodeType === 1 ) &&
+                                                                               ++diff ) {
+
+                                                                               // Cache the index of each encountered element
+                                                                               if ( useCache ) {
+                                                                                       outerCache = node[ expando ] || (node[ expando ] = {});
+
+                                                                                       // Support: IE <9 only
+                                                                                       // Defend against cloned attroperties (jQuery gh-1709)
+                                                                                       uniqueCache = outerCache[ node.uniqueID ] ||
+                                                                                               (outerCache[ node.uniqueID ] = {});
+
+                                                                                       uniqueCache[ type ] = [ dirruns, diff ];
+                                                                               }
+
+                                                                               if ( node === elem ) {
+                                                                                       break;
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+
+                                               // Incorporate the offset, then check against cycle size
+                                               diff -= last;
+                                               return diff === first || ( diff % first === 0 && diff / first >= 0 );
+                                       }
+                               };
+               },
+
+               "PSEUDO": function( pseudo, argument ) {
+                       // pseudo-class names are case-insensitive
+                       // http://www.w3.org/TR/selectors/#pseudo-classes
+                       // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+                       // Remember that setFilters inherits from pseudos
+                       var args,
+                               fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+                                       Sizzle.error( "unsupported pseudo: " + pseudo );
+
+                       // The user may use createPseudo to indicate that
+                       // arguments are needed to create the filter function
+                       // just as Sizzle does
+                       if ( fn[ expando ] ) {
+                               return fn( argument );
+                       }
+
+                       // But maintain support for old signatures
+                       if ( fn.length > 1 ) {
+                               args = [ pseudo, pseudo, "", argument ];
+                               return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+                                       markFunction(function( seed, matches ) {
+                                               var idx,
+                                                       matched = fn( seed, argument ),
+                                                       i = matched.length;
+                                               while ( i-- ) {
+                                                       idx = indexOf( seed, matched[i] );
+                                                       seed[ idx ] = !( matches[ idx ] = matched[i] );
+                                               }
+                                       }) :
+                                       function( elem ) {
+                                               return fn( elem, 0, args );
+                                       };
+                       }
+
+                       return fn;
+               }
+       },
+
+       pseudos: {
+               // Potentially complex pseudos
+               "not": markFunction(function( selector ) {
+                       // Trim the selector passed to compile
+                       // to avoid treating leading and trailing
+                       // spaces as combinators
+                       var input = [],
+                               results = [],
+                               matcher = compile( selector.replace( rtrim, "$1" ) );
+
+                       return matcher[ expando ] ?
+                               markFunction(function( seed, matches, context, xml ) {
+                                       var elem,
+                                               unmatched = matcher( seed, null, xml, [] ),
+                                               i = seed.length;
+
+                                       // Match elements unmatched by `matcher`
+                                       while ( i-- ) {
+                                               if ( (elem = unmatched[i]) ) {
+                                                       seed[i] = !(matches[i] = elem);
+                                               }
+                                       }
+                               }) :
+                               function( elem, context, xml ) {
+                                       input[0] = elem;
+                                       matcher( input, null, xml, results );
+                                       // Don't keep the element (issue #299)
+                                       input[0] = null;
+                                       return !results.pop();
+                               };
+               }),
+
+               "has": markFunction(function( selector ) {
+                       return function( elem ) {
+                               return Sizzle( selector, elem ).length > 0;
+                       };
+               }),
+
+               "contains": markFunction(function( text ) {
+                       text = text.replace( runescape, funescape );
+                       return function( elem ) {
+                               return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+                       };
+               }),
+
+               // "Whether an element is represented by a :lang() selector
+               // is based solely on the element's language value
+               // being equal to the identifier C,
+               // or beginning with the identifier C immediately followed by "-".
+               // The matching of C against the element's language value is performed case-insensitively.
+               // The identifier C does not have to be a valid language name."
+               // http://www.w3.org/TR/selectors/#lang-pseudo
+               "lang": markFunction( function( lang ) {
+                       // lang value must be a valid identifier
+                       if ( !ridentifier.test(lang || "") ) {
+                               Sizzle.error( "unsupported lang: " + lang );
+                       }
+                       lang = lang.replace( runescape, funescape ).toLowerCase();
+                       return function( elem ) {
+                               var elemLang;
+                               do {
+                                       if ( (elemLang = documentIsHTML ?
+                                               elem.lang :
+                                               elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+                                               elemLang = elemLang.toLowerCase();
+                                               return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+                                       }
+                               } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+                               return false;
+                       };
+               }),
+
+               // Miscellaneous
+               "target": function( elem ) {
+                       var hash = window.location && window.location.hash;
+                       return hash && hash.slice( 1 ) === elem.id;
+               },
+
+               "root": function( elem ) {
+                       return elem === docElem;
+               },
+
+               "focus": function( elem ) {
+                       return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+               },
+
+               // Boolean properties
+               "enabled": createDisabledPseudo( false ),
+               "disabled": createDisabledPseudo( true ),
+
+               "checked": function( elem ) {
+                       // In CSS3, :checked should return both checked and selected elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       var nodeName = elem.nodeName.toLowerCase();
+                       return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+               },
+
+               "selected": function( elem ) {
+                       // Accessing this property makes selected-by-default
+                       // options in Safari work properly
+                       if ( elem.parentNode ) {
+                               elem.parentNode.selectedIndex;
+                       }
+
+                       return elem.selected === true;
+               },
+
+               // Contents
+               "empty": function( elem ) {
+                       // http://www.w3.org/TR/selectors/#empty-pseudo
+                       // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+                       //   but not by others (comment: 8; processing instruction: 7; etc.)
+                       // nodeType < 6 works because attributes (2) do not appear as children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               if ( elem.nodeType < 6 ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               },
+
+               "parent": function( elem ) {
+                       return !Expr.pseudos["empty"]( elem );
+               },
+
+               // Element/input types
+               "header": function( elem ) {
+                       return rheader.test( elem.nodeName );
+               },
+
+               "input": function( elem ) {
+                       return rinputs.test( elem.nodeName );
+               },
+
+               "button": function( elem ) {
+                       var name = elem.nodeName.toLowerCase();
+                       return name === "input" && elem.type === "button" || name === "button";
+               },
+
+               "text": function( elem ) {
+                       var attr;
+                       return elem.nodeName.toLowerCase() === "input" &&
+                               elem.type === "text" &&
+
+                               // Support: IE<8
+                               // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+                               ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+               },
+
+               // Position-in-collection
+               "first": createPositionalPseudo(function() {
+                       return [ 0 ];
+               }),
+
+               "last": createPositionalPseudo(function( matchIndexes, length ) {
+                       return [ length - 1 ];
+               }),
+
+               "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       return [ argument < 0 ? argument + length : argument ];
+               }),
+
+               "even": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 0;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "odd": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 1;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; --i >= 0; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; ++i < length; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               })
+       }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+       Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+       Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+       var matched, match, tokens, type,
+               soFar, groups, preFilters,
+               cached = tokenCache[ selector + " " ];
+
+       if ( cached ) {
+               return parseOnly ? 0 : cached.slice( 0 );
+       }
+
+       soFar = selector;
+       groups = [];
+       preFilters = Expr.preFilter;
+
+       while ( soFar ) {
+
+               // Comma and first run
+               if ( !matched || (match = rcomma.exec( soFar )) ) {
+                       if ( match ) {
+                               // Don't consume trailing commas as valid
+                               soFar = soFar.slice( match[0].length ) || soFar;
+                       }
+                       groups.push( (tokens = []) );
+               }
+
+               matched = false;
+
+               // Combinators
+               if ( (match = rcombinators.exec( soFar )) ) {
+                       matched = match.shift();
+                       tokens.push({
+                               value: matched,
+                               // Cast descendant combinators to space
+                               type: match[0].replace( rtrim, " " )
+                       });
+                       soFar = soFar.slice( matched.length );
+               }
+
+               // Filters
+               for ( type in Expr.filter ) {
+                       if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+                               (match = preFilters[ type ]( match ))) ) {
+                               matched = match.shift();
+                               tokens.push({
+                                       value: matched,
+                                       type: type,
+                                       matches: match
+                               });
+                               soFar = soFar.slice( matched.length );
+                       }
+               }
+
+               if ( !matched ) {
+                       break;
+               }
+       }
+
+       // Return the length of the invalid excess
+       // if we're just parsing
+       // Otherwise, throw an error or return tokens
+       return parseOnly ?
+               soFar.length :
+               soFar ?
+                       Sizzle.error( selector ) :
+                       // Cache the tokens
+                       tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+       var i = 0,
+               len = tokens.length,
+               selector = "";
+       for ( ; i < len; i++ ) {
+               selector += tokens[i].value;
+       }
+       return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+       var dir = combinator.dir,
+               skip = combinator.next,
+               key = skip || dir,
+               checkNonElements = base && key === "parentNode",
+               doneName = done++;
+
+       return combinator.first ?
+               // Check against closest ancestor/preceding element
+               function( elem, context, xml ) {
+                       while ( (elem = elem[ dir ]) ) {
+                               if ( elem.nodeType === 1 || checkNonElements ) {
+                                       return matcher( elem, context, xml );
+                               }
+                       }
+                       return false;
+               } :
+
+               // Check against all ancestor/preceding elements
+               function( elem, context, xml ) {
+                       var oldCache, uniqueCache, outerCache,
+                               newCache = [ dirruns, doneName ];
+
+                       // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+                       if ( xml ) {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               if ( matcher( elem, context, xml ) ) {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                       } else {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+                                               // Support: IE <9 only
+                                               // Defend against cloned attroperties (jQuery gh-1709)
+                                               uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+                                               if ( skip && skip === elem.nodeName.toLowerCase() ) {
+                                                       elem = elem[ dir ] || elem;
+                                               } else if ( (oldCache = uniqueCache[ key ]) &&
+                                                       oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+                                                       // Assign to newCache so results back-propagate to previous elements
+                                                       return (newCache[ 2 ] = oldCache[ 2 ]);
+                                               } else {
+                                                       // Reuse newcache so results back-propagate to previous elements
+                                                       uniqueCache[ key ] = newCache;
+
+                                                       // A match means we're done; a fail means we have to keep checking
+                                                       if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+                                                               return true;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       return false;
+               };
+}
+
+function elementMatcher( matchers ) {
+       return matchers.length > 1 ?
+               function( elem, context, xml ) {
+                       var i = matchers.length;
+                       while ( i-- ) {
+                               if ( !matchers[i]( elem, context, xml ) ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               } :
+               matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+       var i = 0,
+               len = contexts.length;
+       for ( ; i < len; i++ ) {
+               Sizzle( selector, contexts[i], results );
+       }
+       return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+       var elem,
+               newUnmatched = [],
+               i = 0,
+               len = unmatched.length,
+               mapped = map != null;
+
+       for ( ; i < len; i++ ) {
+               if ( (elem = unmatched[i]) ) {
+                       if ( !filter || filter( elem, context, xml ) ) {
+                               newUnmatched.push( elem );
+                               if ( mapped ) {
+                                       map.push( i );
+                               }
+                       }
+               }
+       }
+
+       return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+       if ( postFilter && !postFilter[ expando ] ) {
+               postFilter = setMatcher( postFilter );
+       }
+       if ( postFinder && !postFinder[ expando ] ) {
+               postFinder = setMatcher( postFinder, postSelector );
+       }
+       return markFunction(function( seed, results, context, xml ) {
+               var temp, i, elem,
+                       preMap = [],
+                       postMap = [],
+                       preexisting = results.length,
+
+                       // Get initial elements from seed or context
+                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+                       // Prefilter to get matcher input, preserving a map for seed-results synchronization
+                       matcherIn = preFilter && ( seed || !selector ) ?
+                               condense( elems, preMap, preFilter, context, xml ) :
+                               elems,
+
+                       matcherOut = matcher ?
+                               // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+                               postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+                                       // ...intermediate processing is necessary
+                                       [] :
+
+                                       // ...otherwise use results directly
+                                       results :
+                               matcherIn;
+
+               // Find primary matches
+               if ( matcher ) {
+                       matcher( matcherIn, matcherOut, context, xml );
+               }
+
+               // Apply postFilter
+               if ( postFilter ) {
+                       temp = condense( matcherOut, postMap );
+                       postFilter( temp, [], context, xml );
+
+                       // Un-match failing elements by moving them back to matcherIn
+                       i = temp.length;
+                       while ( i-- ) {
+                               if ( (elem = temp[i]) ) {
+                                       matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+                               }
+                       }
+               }
+
+               if ( seed ) {
+                       if ( postFinder || preFilter ) {
+                               if ( postFinder ) {
+                                       // Get the final matcherOut by condensing this intermediate into postFinder contexts
+                                       temp = [];
+                                       i = matcherOut.length;
+                                       while ( i-- ) {
+                                               if ( (elem = matcherOut[i]) ) {
+                                                       // Restore matcherIn since elem is not yet a final match
+                                                       temp.push( (matcherIn[i] = elem) );
+                                               }
+                                       }
+                                       postFinder( null, (matcherOut = []), temp, xml );
+                               }
+
+                               // Move matched elements from seed to results to keep them synchronized
+                               i = matcherOut.length;
+                               while ( i-- ) {
+                                       if ( (elem = matcherOut[i]) &&
+                                               (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+                                               seed[temp] = !(results[temp] = elem);
+                                       }
+                               }
+                       }
+
+               // Add elements to results, through postFinder if defined
+               } else {
+                       matcherOut = condense(
+                               matcherOut === results ?
+                                       matcherOut.splice( preexisting, matcherOut.length ) :
+                                       matcherOut
+                       );
+                       if ( postFinder ) {
+                               postFinder( null, results, matcherOut, xml );
+                       } else {
+                               push.apply( results, matcherOut );
+                       }
+               }
+       });
+}
+
+function matcherFromTokens( tokens ) {
+       var checkContext, matcher, j,
+               len = tokens.length,
+               leadingRelative = Expr.relative[ tokens[0].type ],
+               implicitRelative = leadingRelative || Expr.relative[" "],
+               i = leadingRelative ? 1 : 0,
+
+               // The foundational matcher ensures that elements are reachable from top-level context(s)
+               matchContext = addCombinator( function( elem ) {
+                       return elem === checkContext;
+               }, implicitRelative, true ),
+               matchAnyContext = addCombinator( function( elem ) {
+                       return indexOf( checkContext, elem ) > -1;
+               }, implicitRelative, true ),
+               matchers = [ function( elem, context, xml ) {
+                       var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+                               (checkContext = context).nodeType ?
+                                       matchContext( elem, context, xml ) :
+                                       matchAnyContext( elem, context, xml ) );
+                       // Avoid hanging onto element (issue #299)
+                       checkContext = null;
+                       return ret;
+               } ];
+
+       for ( ; i < len; i++ ) {
+               if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+                       matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+               } else {
+                       matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+                       // Return special upon seeing a positional matcher
+                       if ( matcher[ expando ] ) {
+                               // Find the next relative operator (if any) for proper handling
+                               j = ++i;
+                               for ( ; j < len; j++ ) {
+                                       if ( Expr.relative[ tokens[j].type ] ) {
+                                               break;
+                                       }
+                               }
+                               return setMatcher(
+                                       i > 1 && elementMatcher( matchers ),
+                                       i > 1 && toSelector(
+                                               // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+                                               tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+                                       ).replace( rtrim, "$1" ),
+                                       matcher,
+                                       i < j && matcherFromTokens( tokens.slice( i, j ) ),
+                                       j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+                                       j < len && toSelector( tokens )
+                               );
+                       }
+                       matchers.push( matcher );
+               }
+       }
+
+       return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+       var bySet = setMatchers.length > 0,
+               byElement = elementMatchers.length > 0,
+               superMatcher = function( seed, context, xml, results, outermost ) {
+                       var elem, j, matcher,
+                               matchedCount = 0,
+                               i = "0",
+                               unmatched = seed && [],
+                               setMatched = [],
+                               contextBackup = outermostContext,
+                               // We must always have either seed elements or outermost context
+                               elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+                               // Use integer dirruns iff this is the outermost matcher
+                               dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+                               len = elems.length;
+
+                       if ( outermost ) {
+                               outermostContext = context === document || context || outermost;
+                       }
+
+                       // Add elements passing elementMatchers directly to results
+                       // Support: IE<9, Safari
+                       // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+                       for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+                               if ( byElement && elem ) {
+                                       j = 0;
+                                       if ( !context && elem.ownerDocument !== document ) {
+                                               setDocument( elem );
+                                               xml = !documentIsHTML;
+                                       }
+                                       while ( (matcher = elementMatchers[j++]) ) {
+                                               if ( matcher( elem, context || document, xml) ) {
+                                                       results.push( elem );
+                                                       break;
+                                               }
+                                       }
+                                       if ( outermost ) {
+                                               dirruns = dirrunsUnique;
+                                       }
+                               }
+
+                               // Track unmatched elements for set filters
+                               if ( bySet ) {
+                                       // They will have gone through all possible matchers
+                                       if ( (elem = !matcher && elem) ) {
+                                               matchedCount--;
+                                       }
+
+                                       // Lengthen the array for every element, matched or not
+                                       if ( seed ) {
+                                               unmatched.push( elem );
+                                       }
+                               }
+                       }
+
+                       // `i` is now the count of elements visited above, and adding it to `matchedCount`
+                       // makes the latter nonnegative.
+                       matchedCount += i;
+
+                       // Apply set filters to unmatched elements
+                       // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+                       // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+                       // no element matchers and no seed.
+                       // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+                       // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+                       // numerically zero.
+                       if ( bySet && i !== matchedCount ) {
+                               j = 0;
+                               while ( (matcher = setMatchers[j++]) ) {
+                                       matcher( unmatched, setMatched, context, xml );
+                               }
+
+                               if ( seed ) {
+                                       // Reintegrate element matches to eliminate the need for sorting
+                                       if ( matchedCount > 0 ) {
+                                               while ( i-- ) {
+                                                       if ( !(unmatched[i] || setMatched[i]) ) {
+                                                               setMatched[i] = pop.call( results );
+                                                       }
+                                               }
+                                       }
+
+                                       // Discard index placeholder values to get only actual matches
+                                       setMatched = condense( setMatched );
+                               }
+
+                               // Add matches to results
+                               push.apply( results, setMatched );
+
+                               // Seedless set matches succeeding multiple successful matchers stipulate sorting
+                               if ( outermost && !seed && setMatched.length > 0 &&
+                                       ( matchedCount + setMatchers.length ) > 1 ) {
+
+                                       Sizzle.uniqueSort( results );
+                               }
+                       }
+
+                       // Override manipulation of globals by nested matchers
+                       if ( outermost ) {
+                               dirruns = dirrunsUnique;
+                               outermostContext = contextBackup;
+                       }
+
+                       return unmatched;
+               };
+
+       return bySet ?
+               markFunction( superMatcher ) :
+               superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+       var i,
+               setMatchers = [],
+               elementMatchers = [],
+               cached = compilerCache[ selector + " " ];
+
+       if ( !cached ) {
+               // Generate a function of recursive functions that can be used to check each element
+               if ( !match ) {
+                       match = tokenize( selector );
+               }
+               i = match.length;
+               while ( i-- ) {
+                       cached = matcherFromTokens( match[i] );
+                       if ( cached[ expando ] ) {
+                               setMatchers.push( cached );
+                       } else {
+                               elementMatchers.push( cached );
+                       }
+               }
+
+               // Cache the compiled function
+               cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+               // Save selector and tokenization
+               cached.selector = selector;
+       }
+       return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+       var i, tokens, token, type, find,
+               compiled = typeof selector === "function" && selector,
+               match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+       results = results || [];
+
+       // Try to minimize operations if there is only one selector in the list and no seed
+       // (the latter of which guarantees us context)
+       if ( match.length === 1 ) {
+
+               // Reduce context if the leading compound selector is an ID
+               tokens = match[0] = match[0].slice( 0 );
+               if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+                               context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+                       context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+                       if ( !context ) {
+                               return results;
+
+                       // Precompiled matchers will still verify ancestry, so step up a level
+                       } else if ( compiled ) {
+                               context = context.parentNode;
+                       }
+
+                       selector = selector.slice( tokens.shift().value.length );
+               }
+
+               // Fetch a seed set for right-to-left matching
+               i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+               while ( i-- ) {
+                       token = tokens[i];
+
+                       // Abort if we hit a combinator
+                       if ( Expr.relative[ (type = token.type) ] ) {
+                               break;
+                       }
+                       if ( (find = Expr.find[ type ]) ) {
+                               // Search, expanding context for leading sibling combinators
+                               if ( (seed = find(
+                                       token.matches[0].replace( runescape, funescape ),
+                                       rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+                               )) ) {
+
+                                       // If seed is empty or no tokens remain, we can return early
+                                       tokens.splice( i, 1 );
+                                       selector = seed.length && toSelector( tokens );
+                                       if ( !selector ) {
+                                               push.apply( results, seed );
+                                               return results;
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       // Compile and execute a filtering function if one is not provided
+       // Provide `match` to avoid retokenization if we modified the selector above
+       ( compiled || compile( selector, match ) )(
+               seed,
+               context,
+               !documentIsHTML,
+               results,
+               !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+       );
+       return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+       // Should return 1, but returns 4 (following)
+       return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+       el.innerHTML = "<a href='#'></a>";
+       return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+       addHandle( "type|href|height|width", function( elem, name, isXML ) {
+               if ( !isXML ) {
+                       return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+               }
+       });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+       el.innerHTML = "<input/>";
+       el.firstChild.setAttribute( "value", "" );
+       return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+       addHandle( "value", function( elem, name, isXML ) {
+               if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+                       return elem.defaultValue;
+               }
+       });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+       return el.getAttribute("disabled") == null;
+}) ) {
+       addHandle( booleans, function( elem, name, isXML ) {
+               var val;
+               if ( !isXML ) {
+                       return elem[ name ] === true ? name.toLowerCase() :
+                                       (val = elem.getAttributeNode( name )) && val.specified ?
+                                       val.value :
+                               null;
+               }
+       });
+}
+
+// EXPOSE
+var _sizzle = window.Sizzle;
+
+Sizzle.noConflict = function() {
+       if ( window.Sizzle === Sizzle ) {
+               window.Sizzle = _sizzle;
+       }
+
+       return Sizzle;
+};
+
+if ( typeof define === "function" && define.amd ) {
+       define(function() { return Sizzle; });
+// Sizzle requires that there be a global window in Common-JS like environments
+} else if ( typeof module !== "undefined" && module.exports ) {
+       module.exports = Sizzle;
+} else {
+       window.Sizzle = Sizzle;
+}
+// EXPOSE
+
+})( window );
diff --git a/js/jquery/external/sizzle/dist/sizzle.min.js b/js/jquery/external/sizzle/dist/sizzle.min.js
new file mode 100644 (file)
index 0000000..be03278
--- /dev/null
@@ -0,0 +1,3 @@
+/*! Sizzle v2.3.3 | (c) jQuery Foundation, Inc. | jquery.org/license */
+!function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null});var Aa=a.Sizzle;ga.noConflict=function(){return a.Sizzle===ga&&(a.Sizzle=Aa),ga},"function"==typeof define&&define.amd?define(function(){return ga}):"undefined"!=typeof module&&module.exports?module.exports=ga:a.Sizzle=ga}(window);
+//# sourceMappingURL=sizzle.min.map
\ No newline at end of file
diff --git a/js/jquery/external/sizzle/dist/sizzle.min.map b/js/jquery/external/sizzle/dist/sizzle.min.map
new file mode 100644 (file)
index 0000000..031c1b7
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","toString","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","toLowerCase","getAttribute","replace","setAttribute","toSelector","join","testContext","parentNode","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","el","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","type","name","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","subWindow","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","elems","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","val","undefined","specified","escape","sel","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","last","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","defaultValue","_sizzle","noConflict","define","amd","module","exports"],"mappings":"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","file":"sizzle.min.js"}
\ No newline at end of file
diff --git a/js/jquery/src/ajax.js b/js/jquery/src/ajax.js
new file mode 100644 (file)
index 0000000..36f707d
--- /dev/null
@@ -0,0 +1,855 @@
+define( [
+       "./core",
+       "./var/document",
+       "./var/rnothtmlwhite",
+       "./ajax/var/location",
+       "./ajax/var/nonce",
+       "./ajax/var/rquery",
+
+       "./core/init",
+       "./ajax/parseXML",
+       "./event/trigger",
+       "./deferred",
+       "./serialize" // jQuery.param
+], function( jQuery, document, rnothtmlwhite, location, nonce, rquery ) {
+
+"use strict";
+
+var
+       r20 = /%20/g,
+       rhash = /#.*$/,
+       rantiCache = /([?&])_=[^&]*/,
+       rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+       // #7653, #8125, #8152: local protocol detection
+       rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+       rnoContent = /^(?:GET|HEAD)$/,
+       rprotocol = /^\/\//,
+
+       /* Prefilters
+        * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+        * 2) These are called:
+        *    - BEFORE asking for a transport
+        *    - AFTER param serialization (s.data is a string if s.processData is true)
+        * 3) key is the dataType
+        * 4) the catchall symbol "*" can be used
+        * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+        */
+       prefilters = {},
+
+       /* Transports bindings
+        * 1) key is the dataType
+        * 2) the catchall symbol "*" can be used
+        * 3) selection will start with transport dataType and THEN go to "*" if needed
+        */
+       transports = {},
+
+       // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+       allTypes = "*/".concat( "*" ),
+
+       // Anchor tag for parsing the document origin
+       originAnchor = document.createElement( "a" );
+       originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+       // dataTypeExpression is optional and defaults to "*"
+       return function( dataTypeExpression, func ) {
+
+               if ( typeof dataTypeExpression !== "string" ) {
+                       func = dataTypeExpression;
+                       dataTypeExpression = "*";
+               }
+
+               var dataType,
+                       i = 0,
+                       dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
+
+               if ( jQuery.isFunction( func ) ) {
+
+                       // For each dataType in the dataTypeExpression
+                       while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+                               // Prepend if requested
+                               if ( dataType[ 0 ] === "+" ) {
+                                       dataType = dataType.slice( 1 ) || "*";
+                                       ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+                               // Otherwise append
+                               } else {
+                                       ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+                               }
+                       }
+               }
+       };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+       var inspected = {},
+               seekingTransport = ( structure === transports );
+
+       function inspect( dataType ) {
+               var selected;
+               inspected[ dataType ] = true;
+               jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+                       var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+                       if ( typeof dataTypeOrTransport === "string" &&
+                               !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+                               options.dataTypes.unshift( dataTypeOrTransport );
+                               inspect( dataTypeOrTransport );
+                               return false;
+                       } else if ( seekingTransport ) {
+                               return !( selected = dataTypeOrTransport );
+                       }
+               } );
+               return selected;
+       }
+
+       return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+       var key, deep,
+               flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+       for ( key in src ) {
+               if ( src[ key ] !== undefined ) {
+                       ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+               }
+       }
+       if ( deep ) {
+               jQuery.extend( true, target, deep );
+       }
+
+       return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+       var ct, type, finalDataType, firstDataType,
+               contents = s.contents,
+               dataTypes = s.dataTypes;
+
+       // Remove auto dataType and get content-type in the process
+       while ( dataTypes[ 0 ] === "*" ) {
+               dataTypes.shift();
+               if ( ct === undefined ) {
+                       ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+               }
+       }
+
+       // Check if we're dealing with a known content-type
+       if ( ct ) {
+               for ( type in contents ) {
+                       if ( contents[ type ] && contents[ type ].test( ct ) ) {
+                               dataTypes.unshift( type );
+                               break;
+                       }
+               }
+       }
+
+       // Check to see if we have a response for the expected dataType
+       if ( dataTypes[ 0 ] in responses ) {
+               finalDataType = dataTypes[ 0 ];
+       } else {
+
+               // Try convertible dataTypes
+               for ( type in responses ) {
+                       if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+                               finalDataType = type;
+                               break;
+                       }
+                       if ( !firstDataType ) {
+                               firstDataType = type;
+                       }
+               }
+
+               // Or just use first one
+               finalDataType = finalDataType || firstDataType;
+       }
+
+       // If we found a dataType
+       // We add the dataType to the list if needed
+       // and return the corresponding response
+       if ( finalDataType ) {
+               if ( finalDataType !== dataTypes[ 0 ] ) {
+                       dataTypes.unshift( finalDataType );
+               }
+               return responses[ finalDataType ];
+       }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+       var conv2, current, conv, tmp, prev,
+               converters = {},
+
+               // Work with a copy of dataTypes in case we need to modify it for conversion
+               dataTypes = s.dataTypes.slice();
+
+       // Create converters map with lowercased keys
+       if ( dataTypes[ 1 ] ) {
+               for ( conv in s.converters ) {
+                       converters[ conv.toLowerCase() ] = s.converters[ conv ];
+               }
+       }
+
+       current = dataTypes.shift();
+
+       // Convert to each sequential dataType
+       while ( current ) {
+
+               if ( s.responseFields[ current ] ) {
+                       jqXHR[ s.responseFields[ current ] ] = response;
+               }
+
+               // Apply the dataFilter if provided
+               if ( !prev && isSuccess && s.dataFilter ) {
+                       response = s.dataFilter( response, s.dataType );
+               }
+
+               prev = current;
+               current = dataTypes.shift();
+
+               if ( current ) {
+
+                       // There's only work to do if current dataType is non-auto
+                       if ( current === "*" ) {
+
+                               current = prev;
+
+                       // Convert response if prev dataType is non-auto and differs from current
+                       } else if ( prev !== "*" && prev !== current ) {
+
+                               // Seek a direct converter
+                               conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+                               // If none found, seek a pair
+                               if ( !conv ) {
+                                       for ( conv2 in converters ) {
+
+                                               // If conv2 outputs current
+                                               tmp = conv2.split( " " );
+                                               if ( tmp[ 1 ] === current ) {
+
+                                                       // If prev can be converted to accepted input
+                                                       conv = converters[ prev + " " + tmp[ 0 ] ] ||
+                                                               converters[ "* " + tmp[ 0 ] ];
+                                                       if ( conv ) {
+
+                                                               // Condense equivalence converters
+                                                               if ( conv === true ) {
+                                                                       conv = converters[ conv2 ];
+
+                                                               // Otherwise, insert the intermediate dataType
+                                                               } else if ( converters[ conv2 ] !== true ) {
+                                                                       current = tmp[ 0 ];
+                                                                       dataTypes.unshift( tmp[ 1 ] );
+                                                               }
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               // Apply converter (if not an equivalence)
+                               if ( conv !== true ) {
+
+                                       // Unless errors are allowed to bubble, catch and return them
+                                       if ( conv && s.throws ) {
+                                               response = conv( response );
+                                       } else {
+                                               try {
+                                                       response = conv( response );
+                                               } catch ( e ) {
+                                                       return {
+                                                               state: "parsererror",
+                                                               error: conv ? e : "No conversion from " + prev + " to " + current
+                                                       };
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+       // Counter for holding the number of active queries
+       active: 0,
+
+       // Last-Modified header cache for next request
+       lastModified: {},
+       etag: {},
+
+       ajaxSettings: {
+               url: location.href,
+               type: "GET",
+               isLocal: rlocalProtocol.test( location.protocol ),
+               global: true,
+               processData: true,
+               async: true,
+               contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+               /*
+               timeout: 0,
+               data: null,
+               dataType: null,
+               username: null,
+               password: null,
+               cache: null,
+               throws: false,
+               traditional: false,
+               headers: {},
+               */
+
+               accepts: {
+                       "*": allTypes,
+                       text: "text/plain",
+                       html: "text/html",
+                       xml: "application/xml, text/xml",
+                       json: "application/json, text/javascript"
+               },
+
+               contents: {
+                       xml: /\bxml\b/,
+                       html: /\bhtml/,
+                       json: /\bjson\b/
+               },
+
+               responseFields: {
+                       xml: "responseXML",
+                       text: "responseText",
+                       json: "responseJSON"
+               },
+
+               // Data converters
+               // Keys separate source (or catchall "*") and destination types with a single space
+               converters: {
+
+                       // Convert anything to text
+                       "* text": String,
+
+                       // Text to html (true = no transformation)
+                       "text html": true,
+
+                       // Evaluate text as a json expression
+                       "text json": JSON.parse,
+
+                       // Parse text as xml
+                       "text xml": jQuery.parseXML
+               },
+
+               // For options that shouldn't be deep extended:
+               // you can add your own custom options here if
+               // and when you create one that shouldn't be
+               // deep extended (see ajaxExtend)
+               flatOptions: {
+                       url: true,
+                       context: true
+               }
+       },
+
+       // Creates a full fledged settings object into target
+       // with both ajaxSettings and settings fields.
+       // If target is omitted, writes into ajaxSettings.
+       ajaxSetup: function( target, settings ) {
+               return settings ?
+
+                       // Building a settings object
+                       ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+                       // Extending ajaxSettings
+                       ajaxExtend( jQuery.ajaxSettings, target );
+       },
+
+       ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+       ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+       // Main method
+       ajax: function( url, options ) {
+
+               // If url is an object, simulate pre-1.5 signature
+               if ( typeof url === "object" ) {
+                       options = url;
+                       url = undefined;
+               }
+
+               // Force options to be an object
+               options = options || {};
+
+               var transport,
+
+                       // URL without anti-cache param
+                       cacheURL,
+
+                       // Response headers
+                       responseHeadersString,
+                       responseHeaders,
+
+                       // timeout handle
+                       timeoutTimer,
+
+                       // Url cleanup var
+                       urlAnchor,
+
+                       // Request state (becomes false upon send and true upon completion)
+                       completed,
+
+                       // To know if global events are to be dispatched
+                       fireGlobals,
+
+                       // Loop variable
+                       i,
+
+                       // uncached part of the url
+                       uncached,
+
+                       // Create the final options object
+                       s = jQuery.ajaxSetup( {}, options ),
+
+                       // Callbacks context
+                       callbackContext = s.context || s,
+
+                       // Context for global events is callbackContext if it is a DOM node or jQuery collection
+                       globalEventContext = s.context &&
+                               ( callbackContext.nodeType || callbackContext.jquery ) ?
+                                       jQuery( callbackContext ) :
+                                       jQuery.event,
+
+                       // Deferreds
+                       deferred = jQuery.Deferred(),
+                       completeDeferred = jQuery.Callbacks( "once memory" ),
+
+                       // Status-dependent callbacks
+                       statusCode = s.statusCode || {},
+
+                       // Headers (they are sent all at once)
+                       requestHeaders = {},
+                       requestHeadersNames = {},
+
+                       // Default abort message
+                       strAbort = "canceled",
+
+                       // Fake xhr
+                       jqXHR = {
+                               readyState: 0,
+
+                               // Builds headers hashtable if needed
+                               getResponseHeader: function( key ) {
+                                       var match;
+                                       if ( completed ) {
+                                               if ( !responseHeaders ) {
+                                                       responseHeaders = {};
+                                                       while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+                                                               responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+                                                       }
+                                               }
+                                               match = responseHeaders[ key.toLowerCase() ];
+                                       }
+                                       return match == null ? null : match;
+                               },
+
+                               // Raw string
+                               getAllResponseHeaders: function() {
+                                       return completed ? responseHeadersString : null;
+                               },
+
+                               // Caches the header
+                               setRequestHeader: function( name, value ) {
+                                       if ( completed == null ) {
+                                               name = requestHeadersNames[ name.toLowerCase() ] =
+                                                       requestHeadersNames[ name.toLowerCase() ] || name;
+                                               requestHeaders[ name ] = value;
+                                       }
+                                       return this;
+                               },
+
+                               // Overrides response content-type header
+                               overrideMimeType: function( type ) {
+                                       if ( completed == null ) {
+                                               s.mimeType = type;
+                                       }
+                                       return this;
+                               },
+
+                               // Status-dependent callbacks
+                               statusCode: function( map ) {
+                                       var code;
+                                       if ( map ) {
+                                               if ( completed ) {
+
+                                                       // Execute the appropriate callbacks
+                                                       jqXHR.always( map[ jqXHR.status ] );
+                                               } else {
+
+                                                       // Lazy-add the new callbacks in a way that preserves old ones
+                                                       for ( code in map ) {
+                                                               statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+                                                       }
+                                               }
+                                       }
+                                       return this;
+                               },
+
+                               // Cancel the request
+                               abort: function( statusText ) {
+                                       var finalText = statusText || strAbort;
+                                       if ( transport ) {
+                                               transport.abort( finalText );
+                                       }
+                                       done( 0, finalText );
+                                       return this;
+                               }
+                       };
+
+               // Attach deferreds
+               deferred.promise( jqXHR );
+
+               // Add protocol if not provided (prefilters might expect it)
+               // Handle falsy url in the settings object (#10093: consistency with old signature)
+               // We also use the url parameter if available
+               s.url = ( ( url || s.url || location.href ) + "" )
+                       .replace( rprotocol, location.protocol + "//" );
+
+               // Alias method option to type as per ticket #12004
+               s.type = options.method || options.type || s.method || s.type;
+
+               // Extract dataTypes list
+               s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
+
+               // A cross-domain request is in order when the origin doesn't match the current origin.
+               if ( s.crossDomain == null ) {
+                       urlAnchor = document.createElement( "a" );
+
+                       // Support: IE <=8 - 11, Edge 12 - 13
+                       // IE throws exception on accessing the href property if url is malformed,
+                       // e.g. http://example.com:80x/
+                       try {
+                               urlAnchor.href = s.url;
+
+                               // Support: IE <=8 - 11 only
+                               // Anchor's host property isn't correctly set when s.url is relative
+                               urlAnchor.href = urlAnchor.href;
+                               s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+                                       urlAnchor.protocol + "//" + urlAnchor.host;
+                       } catch ( e ) {
+
+                               // If there is an error parsing the URL, assume it is crossDomain,
+                               // it can be rejected by the transport if it is invalid
+                               s.crossDomain = true;
+                       }
+               }
+
+               // Convert data if not already a string
+               if ( s.data && s.processData && typeof s.data !== "string" ) {
+                       s.data = jQuery.param( s.data, s.traditional );
+               }
+
+               // Apply prefilters
+               inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+               // If request was aborted inside a prefilter, stop there
+               if ( completed ) {
+                       return jqXHR;
+               }
+
+               // We can fire global events as of now if asked to
+               // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+               fireGlobals = jQuery.event && s.global;
+
+               // Watch for a new set of requests
+               if ( fireGlobals && jQuery.active++ === 0 ) {
+                       jQuery.event.trigger( "ajaxStart" );
+               }
+
+               // Uppercase the type
+               s.type = s.type.toUpperCase();
+
+               // Determine if request has content
+               s.hasContent = !rnoContent.test( s.type );
+
+               // Save the URL in case we're toying with the If-Modified-Since
+               // and/or If-None-Match header later on
+               // Remove hash to simplify url manipulation
+               cacheURL = s.url.replace( rhash, "" );
+
+               // More options handling for requests with no content
+               if ( !s.hasContent ) {
+
+                       // Remember the hash so we can put it back
+                       uncached = s.url.slice( cacheURL.length );
+
+                       // If data is available, append data to url
+                       if ( s.data ) {
+                               cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+                               // #9682: remove data so that it's not used in an eventual retry
+                               delete s.data;
+                       }
+
+                       // Add or update anti-cache param if needed
+                       if ( s.cache === false ) {
+                               cacheURL = cacheURL.replace( rantiCache, "$1" );
+                               uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+                       }
+
+                       // Put hash and anti-cache on the URL that will be requested (gh-1732)
+                       s.url = cacheURL + uncached;
+
+               // Change '%20' to '+' if this is encoded form body content (gh-2658)
+               } else if ( s.data && s.processData &&
+                       ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+                       s.data = s.data.replace( r20, "+" );
+               }
+
+               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+               if ( s.ifModified ) {
+                       if ( jQuery.lastModified[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+                       }
+                       if ( jQuery.etag[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+                       }
+               }
+
+               // Set the correct header, if data is being sent
+               if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+                       jqXHR.setRequestHeader( "Content-Type", s.contentType );
+               }
+
+               // Set the Accepts header for the server, depending on the dataType
+               jqXHR.setRequestHeader(
+                       "Accept",
+                       s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+                               s.accepts[ s.dataTypes[ 0 ] ] +
+                                       ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+                               s.accepts[ "*" ]
+               );
+
+               // Check for headers option
+               for ( i in s.headers ) {
+                       jqXHR.setRequestHeader( i, s.headers[ i ] );
+               }
+
+               // Allow custom headers/mimetypes and early abort
+               if ( s.beforeSend &&
+                       ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+                       // Abort if not done already and return
+                       return jqXHR.abort();
+               }
+
+               // Aborting is no longer a cancellation
+               strAbort = "abort";
+
+               // Install callbacks on deferreds
+               completeDeferred.add( s.complete );
+               jqXHR.done( s.success );
+               jqXHR.fail( s.error );
+
+               // Get transport
+               transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+               // If no transport, we auto-abort
+               if ( !transport ) {
+                       done( -1, "No Transport" );
+               } else {
+                       jqXHR.readyState = 1;
+
+                       // Send global event
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+                       }
+
+                       // If request was aborted inside ajaxSend, stop there
+                       if ( completed ) {
+                               return jqXHR;
+                       }
+
+                       // Timeout
+                       if ( s.async && s.timeout > 0 ) {
+                               timeoutTimer = window.setTimeout( function() {
+                                       jqXHR.abort( "timeout" );
+                               }, s.timeout );
+                       }
+
+                       try {
+                               completed = false;
+                               transport.send( requestHeaders, done );
+                       } catch ( e ) {
+
+                               // Rethrow post-completion exceptions
+                               if ( completed ) {
+                                       throw e;
+                               }
+
+                               // Propagate others as results
+                               done( -1, e );
+                       }
+               }
+
+               // Callback for when everything is done
+               function done( status, nativeStatusText, responses, headers ) {
+                       var isSuccess, success, error, response, modified,
+                               statusText = nativeStatusText;
+
+                       // Ignore repeat invocations
+                       if ( completed ) {
+                               return;
+                       }
+
+                       completed = true;
+
+                       // Clear timeout if it exists
+                       if ( timeoutTimer ) {
+                               window.clearTimeout( timeoutTimer );
+                       }
+
+                       // Dereference transport for early garbage collection
+                       // (no matter how long the jqXHR object will be used)
+                       transport = undefined;
+
+                       // Cache response headers
+                       responseHeadersString = headers || "";
+
+                       // Set readyState
+                       jqXHR.readyState = status > 0 ? 4 : 0;
+
+                       // Determine if successful
+                       isSuccess = status >= 200 && status < 300 || status === 304;
+
+                       // Get response data
+                       if ( responses ) {
+                               response = ajaxHandleResponses( s, jqXHR, responses );
+                       }
+
+                       // Convert no matter what (that way responseXXX fields are always set)
+                       response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+                       // If successful, handle type chaining
+                       if ( isSuccess ) {
+
+                               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+                               if ( s.ifModified ) {
+                                       modified = jqXHR.getResponseHeader( "Last-Modified" );
+                                       if ( modified ) {
+                                               jQuery.lastModified[ cacheURL ] = modified;
+                                       }
+                                       modified = jqXHR.getResponseHeader( "etag" );
+                                       if ( modified ) {
+                                               jQuery.etag[ cacheURL ] = modified;
+                                       }
+                               }
+
+                               // if no content
+                               if ( status === 204 || s.type === "HEAD" ) {
+                                       statusText = "nocontent";
+
+                               // if not modified
+                               } else if ( status === 304 ) {
+                                       statusText = "notmodified";
+
+                               // If we have data, let's convert it
+                               } else {
+                                       statusText = response.state;
+                                       success = response.data;
+                                       error = response.error;
+                                       isSuccess = !error;
+                               }
+                       } else {
+
+                               // Extract error from statusText and normalize for non-aborts
+                               error = statusText;
+                               if ( status || !statusText ) {
+                                       statusText = "error";
+                                       if ( status < 0 ) {
+                                               status = 0;
+                                       }
+                               }
+                       }
+
+                       // Set data for the fake xhr object
+                       jqXHR.status = status;
+                       jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+                       // Success/Error
+                       if ( isSuccess ) {
+                               deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+                       } else {
+                               deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+                       }
+
+                       // Status-dependent callbacks
+                       jqXHR.statusCode( statusCode );
+                       statusCode = undefined;
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+                                       [ jqXHR, s, isSuccess ? success : error ] );
+                       }
+
+                       // Complete
+                       completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+                               // Handle the global AJAX counter
+                               if ( !( --jQuery.active ) ) {
+                                       jQuery.event.trigger( "ajaxStop" );
+                               }
+                       }
+               }
+
+               return jqXHR;
+       },
+
+       getJSON: function( url, data, callback ) {
+               return jQuery.get( url, data, callback, "json" );
+       },
+
+       getScript: function( url, callback ) {
+               return jQuery.get( url, undefined, callback, "script" );
+       }
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+       jQuery[ method ] = function( url, data, callback, type ) {
+
+               // Shift arguments if data argument was omitted
+               if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
+                       callback = data;
+                       data = undefined;
+               }
+
+               // The url can be an options object (which then must have .url)
+               return jQuery.ajax( jQuery.extend( {
+                       url: url,
+                       type: method,
+                       dataType: type,
+                       data: data,
+                       success: callback
+               }, jQuery.isPlainObject( url ) && url ) );
+       };
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/ajax/jsonp.js b/js/jquery/src/ajax/jsonp.js
new file mode 100644 (file)
index 0000000..8c406e7
--- /dev/null
@@ -0,0 +1,102 @@
+define( [
+       "../core",
+       "./var/nonce",
+       "./var/rquery",
+       "../ajax"
+], function( jQuery, nonce, rquery ) {
+
+"use strict";
+
+var oldCallbacks = [],
+       rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+       jsonp: "callback",
+       jsonpCallback: function() {
+               var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+               this[ callback ] = true;
+               return callback;
+       }
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+       var callbackName, overwritten, responseContainer,
+               jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+                       "url" :
+                       typeof s.data === "string" &&
+                               ( s.contentType || "" )
+                                       .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+                               rjsonp.test( s.data ) && "data"
+               );
+
+       // Handle iff the expected data type is "jsonp" or we have a parameter to set
+       if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+               // Get callback name, remembering preexisting value associated with it
+               callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+                       s.jsonpCallback() :
+                       s.jsonpCallback;
+
+               // Insert callback into url or form data
+               if ( jsonProp ) {
+                       s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+               } else if ( s.jsonp !== false ) {
+                       s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+               }
+
+               // Use data converter to retrieve json after script execution
+               s.converters[ "script json" ] = function() {
+                       if ( !responseContainer ) {
+                               jQuery.error( callbackName + " was not called" );
+                       }
+                       return responseContainer[ 0 ];
+               };
+
+               // Force json dataType
+               s.dataTypes[ 0 ] = "json";
+
+               // Install callback
+               overwritten = window[ callbackName ];
+               window[ callbackName ] = function() {
+                       responseContainer = arguments;
+               };
+
+               // Clean-up function (fires after converters)
+               jqXHR.always( function() {
+
+                       // If previous value didn't exist - remove it
+                       if ( overwritten === undefined ) {
+                               jQuery( window ).removeProp( callbackName );
+
+                       // Otherwise restore preexisting value
+                       } else {
+                               window[ callbackName ] = overwritten;
+                       }
+
+                       // Save back as free
+                       if ( s[ callbackName ] ) {
+
+                               // Make sure that re-using the options doesn't screw things around
+                               s.jsonpCallback = originalSettings.jsonpCallback;
+
+                               // Save the callback name for future use
+                               oldCallbacks.push( callbackName );
+                       }
+
+                       // Call if it was a function and we have a response
+                       if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+                               overwritten( responseContainer[ 0 ] );
+                       }
+
+                       responseContainer = overwritten = undefined;
+               } );
+
+               // Delegate to script
+               return "script";
+       }
+} );
+
+} );
diff --git a/js/jquery/src/ajax/load.js b/js/jquery/src/ajax/load.js
new file mode 100644 (file)
index 0000000..3ce3a5a
--- /dev/null
@@ -0,0 +1,76 @@
+define( [
+       "../core",
+       "../core/stripAndCollapse",
+       "../core/parseHTML",
+       "../ajax",
+       "../traversing",
+       "../manipulation",
+       "../selector"
+], function( jQuery, stripAndCollapse ) {
+
+"use strict";
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+       var selector, type, response,
+               self = this,
+               off = url.indexOf( " " );
+
+       if ( off > -1 ) {
+               selector = stripAndCollapse( url.slice( off ) );
+               url = url.slice( 0, off );
+       }
+
+       // If it's a function
+       if ( jQuery.isFunction( params ) ) {
+
+               // We assume that it's the callback
+               callback = params;
+               params = undefined;
+
+       // Otherwise, build a param string
+       } else if ( params && typeof params === "object" ) {
+               type = "POST";
+       }
+
+       // If we have elements to modify, make the request
+       if ( self.length > 0 ) {
+               jQuery.ajax( {
+                       url: url,
+
+                       // If "type" variable is undefined, then "GET" method will be used.
+                       // Make value of this field explicit since
+                       // user can override it through ajaxSetup method
+                       type: type || "GET",
+                       dataType: "html",
+                       data: params
+               } ).done( function( responseText ) {
+
+                       // Save response for use in complete callback
+                       response = arguments;
+
+                       self.html( selector ?
+
+                               // If a selector was specified, locate the right elements in a dummy div
+                               // Exclude scripts to avoid IE 'Permission Denied' errors
+                               jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+                               // Otherwise use the full result
+                               responseText );
+
+               // If the request succeeds, this function gets "data", "status", "jqXHR"
+               // but they are ignored because response was set above.
+               // If it fails, this function gets "jqXHR", "status", "error"
+               } ).always( callback && function( jqXHR, status ) {
+                       self.each( function() {
+                               callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+                       } );
+               } );
+       }
+
+       return this;
+};
+
+} );
diff --git a/js/jquery/src/ajax/parseJSON.js b/js/jquery/src/ajax/parseJSON.js
new file mode 100644 (file)
index 0000000..11918b0
--- /dev/null
@@ -0,0 +1,13 @@
+define( [
+       "../core"
+], function( jQuery ) {
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+       return JSON.parse( data + "" );
+};
+
+return jQuery.parseJSON;
+
+} );
diff --git a/js/jquery/src/ajax/parseXML.js b/js/jquery/src/ajax/parseXML.js
new file mode 100644 (file)
index 0000000..acf7ab2
--- /dev/null
@@ -0,0 +1,30 @@
+define( [
+       "../core"
+], function( jQuery ) {
+
+"use strict";
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+       var xml;
+       if ( !data || typeof data !== "string" ) {
+               return null;
+       }
+
+       // Support: IE 9 - 11 only
+       // IE throws on parseFromString with invalid input.
+       try {
+               xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+       } catch ( e ) {
+               xml = undefined;
+       }
+
+       if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+               jQuery.error( "Invalid XML: " + data );
+       }
+       return xml;
+};
+
+return jQuery.parseXML;
+
+} );
diff --git a/js/jquery/src/ajax/script.js b/js/jquery/src/ajax/script.js
new file mode 100644 (file)
index 0000000..6e0d21e
--- /dev/null
@@ -0,0 +1,77 @@
+define( [
+       "../core",
+       "../var/document",
+       "../ajax"
+], function( jQuery, document ) {
+
+"use strict";
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+       if ( s.crossDomain ) {
+               s.contents.script = false;
+       }
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+       accepts: {
+               script: "text/javascript, application/javascript, " +
+                       "application/ecmascript, application/x-ecmascript"
+       },
+       contents: {
+               script: /\b(?:java|ecma)script\b/
+       },
+       converters: {
+               "text script": function( text ) {
+                       jQuery.globalEval( text );
+                       return text;
+               }
+       }
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+       if ( s.cache === undefined ) {
+               s.cache = false;
+       }
+       if ( s.crossDomain ) {
+               s.type = "GET";
+       }
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+       // This transport only deals with cross domain requests
+       if ( s.crossDomain ) {
+               var script, callback;
+               return {
+                       send: function( _, complete ) {
+                               script = jQuery( "<script>" ).prop( {
+                                       charset: s.scriptCharset,
+                                       src: s.url
+                               } ).on(
+                                       "load error",
+                                       callback = function( evt ) {
+                                               script.remove();
+                                               callback = null;
+                                               if ( evt ) {
+                                                       complete( evt.type === "error" ? 404 : 200, evt.type );
+                                               }
+                                       }
+                               );
+
+                               // Use native DOM manipulation to avoid our domManip AJAX trickery
+                               document.head.appendChild( script[ 0 ] );
+                       },
+                       abort: function() {
+                               if ( callback ) {
+                                       callback();
+                               }
+                       }
+               };
+       }
+} );
+
+} );
diff --git a/js/jquery/src/ajax/var/location.js b/js/jquery/src/ajax/var/location.js
new file mode 100644 (file)
index 0000000..4171d18
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return window.location;
+} );
diff --git a/js/jquery/src/ajax/var/nonce.js b/js/jquery/src/ajax/var/nonce.js
new file mode 100644 (file)
index 0000000..6e23708
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "../../core"
+], function( jQuery ) {
+       "use strict";
+
+       return jQuery.now();
+} );
diff --git a/js/jquery/src/ajax/var/rquery.js b/js/jquery/src/ajax/var/rquery.js
new file mode 100644 (file)
index 0000000..06fc374
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return ( /\?/ );
+} );
diff --git a/js/jquery/src/ajax/xhr.js b/js/jquery/src/ajax/xhr.js
new file mode 100644 (file)
index 0000000..33dafb0
--- /dev/null
@@ -0,0 +1,169 @@
+define( [
+       "../core",
+       "../var/support",
+       "../ajax"
+], function( jQuery, support ) {
+
+"use strict";
+
+jQuery.ajaxSettings.xhr = function() {
+       try {
+               return new window.XMLHttpRequest();
+       } catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+               // File protocol always yields status code 0, assume 200
+               0: 200,
+
+               // Support: IE <=9 only
+               // #1450: sometimes IE returns 1223 when it should be 204
+               1223: 204
+       },
+       xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+       var callback, errorCallback;
+
+       // Cross domain only allowed if supported through XMLHttpRequest
+       if ( support.cors || xhrSupported && !options.crossDomain ) {
+               return {
+                       send: function( headers, complete ) {
+                               var i,
+                                       xhr = options.xhr();
+
+                               xhr.open(
+                                       options.type,
+                                       options.url,
+                                       options.async,
+                                       options.username,
+                                       options.password
+                               );
+
+                               // Apply custom fields if provided
+                               if ( options.xhrFields ) {
+                                       for ( i in options.xhrFields ) {
+                                               xhr[ i ] = options.xhrFields[ i ];
+                                       }
+                               }
+
+                               // Override mime type if needed
+                               if ( options.mimeType && xhr.overrideMimeType ) {
+                                       xhr.overrideMimeType( options.mimeType );
+                               }
+
+                               // X-Requested-With header
+                               // For cross-domain requests, seeing as conditions for a preflight are
+                               // akin to a jigsaw puzzle, we simply never set it to be sure.
+                               // (it can always be set on a per-request basis or even using ajaxSetup)
+                               // For same-domain requests, won't change header if already provided.
+                               if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+                                       headers[ "X-Requested-With" ] = "XMLHttpRequest";
+                               }
+
+                               // Set headers
+                               for ( i in headers ) {
+                                       xhr.setRequestHeader( i, headers[ i ] );
+                               }
+
+                               // Callback
+                               callback = function( type ) {
+                                       return function() {
+                                               if ( callback ) {
+                                                       callback = errorCallback = xhr.onload =
+                                                               xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+
+                                                       if ( type === "abort" ) {
+                                                               xhr.abort();
+                                                       } else if ( type === "error" ) {
+
+                                                               // Support: IE <=9 only
+                                                               // On a manual native abort, IE9 throws
+                                                               // errors on any property access that is not readyState
+                                                               if ( typeof xhr.status !== "number" ) {
+                                                                       complete( 0, "error" );
+                                                               } else {
+                                                                       complete(
+
+                                                                               // File: protocol always yields status 0; see #8605, #14207
+                                                                               xhr.status,
+                                                                               xhr.statusText
+                                                                       );
+                                                               }
+                                                       } else {
+                                                               complete(
+                                                                       xhrSuccessStatus[ xhr.status ] || xhr.status,
+                                                                       xhr.statusText,
+
+                                                                       // Support: IE <=9 only
+                                                                       // IE9 has no XHR2 but throws on binary (trac-11426)
+                                                                       // For XHR2 non-text, let the caller handle it (gh-2498)
+                                                                       ( xhr.responseType || "text" ) !== "text"  ||
+                                                                       typeof xhr.responseText !== "string" ?
+                                                                               { binary: xhr.response } :
+                                                                               { text: xhr.responseText },
+                                                                       xhr.getAllResponseHeaders()
+                                                               );
+                                                       }
+                                               }
+                                       };
+                               };
+
+                               // Listen to events
+                               xhr.onload = callback();
+                               errorCallback = xhr.onerror = callback( "error" );
+
+                               // Support: IE 9 only
+                               // Use onreadystatechange to replace onabort
+                               // to handle uncaught aborts
+                               if ( xhr.onabort !== undefined ) {
+                                       xhr.onabort = errorCallback;
+                               } else {
+                                       xhr.onreadystatechange = function() {
+
+                                               // Check readyState before timeout as it changes
+                                               if ( xhr.readyState === 4 ) {
+
+                                                       // Allow onerror to be called first,
+                                                       // but that will not handle a native abort
+                                                       // Also, save errorCallback to a variable
+                                                       // as xhr.onerror cannot be accessed
+                                                       window.setTimeout( function() {
+                                                               if ( callback ) {
+                                                                       errorCallback();
+                                                               }
+                                                       } );
+                                               }
+                                       };
+                               }
+
+                               // Create the abort callback
+                               callback = callback( "abort" );
+
+                               try {
+
+                                       // Do send the request (this may raise an exception)
+                                       xhr.send( options.hasContent && options.data || null );
+                               } catch ( e ) {
+
+                                       // #14683: Only rethrow if this hasn't been notified as an error yet
+                                       if ( callback ) {
+                                               throw e;
+                                       }
+                               }
+                       },
+
+                       abort: function() {
+                               if ( callback ) {
+                                       callback();
+                               }
+                       }
+               };
+       }
+} );
+
+} );
diff --git a/js/jquery/src/attributes.js b/js/jquery/src/attributes.js
new file mode 100644 (file)
index 0000000..2d801e5
--- /dev/null
@@ -0,0 +1,13 @@
+define( [
+       "./core",
+       "./attributes/attr",
+       "./attributes/prop",
+       "./attributes/classes",
+       "./attributes/val"
+], function( jQuery ) {
+
+"use strict";
+
+// Return jQuery for attributes-only inclusion
+return jQuery;
+} );
diff --git a/js/jquery/src/attributes/attr.js b/js/jquery/src/attributes/attr.js
new file mode 100644 (file)
index 0000000..2d9c76f
--- /dev/null
@@ -0,0 +1,140 @@
+define( [
+       "../core",
+       "../core/access",
+       "./support",
+       "../var/rnothtmlwhite",
+       "../selector"
+], function( jQuery, access, support, rnothtmlwhite ) {
+
+"use strict";
+
+var boolHook,
+       attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+       attr: function( name, value ) {
+               return access( this, jQuery.attr, name, value, arguments.length > 1 );
+       },
+
+       removeAttr: function( name ) {
+               return this.each( function() {
+                       jQuery.removeAttr( this, name );
+               } );
+       }
+} );
+
+jQuery.extend( {
+       attr: function( elem, name, value ) {
+               var ret, hooks,
+                       nType = elem.nodeType;
+
+               // Don't get/set attributes on text, comment and attribute nodes
+               if ( nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               // Fallback to prop when attributes are not supported
+               if ( typeof elem.getAttribute === "undefined" ) {
+                       return jQuery.prop( elem, name, value );
+               }
+
+               // Attribute hooks are determined by the lowercase version
+               // Grab necessary hook if one is defined
+               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+                       hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+                               ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+               }
+
+               if ( value !== undefined ) {
+                       if ( value === null ) {
+                               jQuery.removeAttr( elem, name );
+                               return;
+                       }
+
+                       if ( hooks && "set" in hooks &&
+                               ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+                               return ret;
+                       }
+
+                       elem.setAttribute( name, value + "" );
+                       return value;
+               }
+
+               if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+                       return ret;
+               }
+
+               ret = jQuery.find.attr( elem, name );
+
+               // Non-existent attributes return null, we normalize to undefined
+               return ret == null ? undefined : ret;
+       },
+
+       attrHooks: {
+               type: {
+                       set: function( elem, value ) {
+                               if ( !support.radioValue && value === "radio" &&
+                                       jQuery.nodeName( elem, "input" ) ) {
+                                       var val = elem.value;
+                                       elem.setAttribute( "type", value );
+                                       if ( val ) {
+                                               elem.value = val;
+                                       }
+                                       return value;
+                               }
+                       }
+               }
+       },
+
+       removeAttr: function( elem, value ) {
+               var name,
+                       i = 0,
+
+                       // Attribute names can contain non-HTML whitespace characters
+                       // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+                       attrNames = value && value.match( rnothtmlwhite );
+
+               if ( attrNames && elem.nodeType === 1 ) {
+                       while ( ( name = attrNames[ i++ ] ) ) {
+                               elem.removeAttribute( name );
+                       }
+               }
+       }
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+       set: function( elem, value, name ) {
+               if ( value === false ) {
+
+                       // Remove boolean attributes when set to false
+                       jQuery.removeAttr( elem, name );
+               } else {
+                       elem.setAttribute( name, name );
+               }
+               return name;
+       }
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+       var getter = attrHandle[ name ] || jQuery.find.attr;
+
+       attrHandle[ name ] = function( elem, name, isXML ) {
+               var ret, handle,
+                       lowercaseName = name.toLowerCase();
+
+               if ( !isXML ) {
+
+                       // Avoid an infinite loop by temporarily removing this function from the getter
+                       handle = attrHandle[ lowercaseName ];
+                       attrHandle[ lowercaseName ] = ret;
+                       ret = getter( elem, name, isXML ) != null ?
+                               lowercaseName :
+                               null;
+                       attrHandle[ lowercaseName ] = handle;
+               }
+               return ret;
+       };
+} );
+
+} );
diff --git a/js/jquery/src/attributes/classes.js b/js/jquery/src/attributes/classes.js
new file mode 100644 (file)
index 0000000..23b4cd6
--- /dev/null
@@ -0,0 +1,174 @@
+define( [
+       "../core",
+       "../core/stripAndCollapse",
+       "../var/rnothtmlwhite",
+       "../data/var/dataPriv",
+       "../core/init"
+], function( jQuery, stripAndCollapse, rnothtmlwhite, dataPriv ) {
+
+"use strict";
+
+function getClass( elem ) {
+       return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+       addClass: function( value ) {
+               var classes, elem, cur, curValue, clazz, j, finalValue,
+                       i = 0;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each( function( j ) {
+                               jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+                       } );
+               }
+
+               if ( typeof value === "string" && value ) {
+                       classes = value.match( rnothtmlwhite ) || [];
+
+                       while ( ( elem = this[ i++ ] ) ) {
+                               curValue = getClass( elem );
+                               cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( ( clazz = classes[ j++ ] ) ) {
+                                               if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+                                                       cur += clazz + " ";
+                                               }
+                                       }
+
+                                       // Only assign if different to avoid unneeded rendering.
+                                       finalValue = stripAndCollapse( cur );
+                                       if ( curValue !== finalValue ) {
+                                               elem.setAttribute( "class", finalValue );
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       removeClass: function( value ) {
+               var classes, elem, cur, curValue, clazz, j, finalValue,
+                       i = 0;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each( function( j ) {
+                               jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+                       } );
+               }
+
+               if ( !arguments.length ) {
+                       return this.attr( "class", "" );
+               }
+
+               if ( typeof value === "string" && value ) {
+                       classes = value.match( rnothtmlwhite ) || [];
+
+                       while ( ( elem = this[ i++ ] ) ) {
+                               curValue = getClass( elem );
+
+                               // This expression is here for better compressibility (see addClass)
+                               cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( ( clazz = classes[ j++ ] ) ) {
+
+                                               // Remove *all* instances
+                                               while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+                                                       cur = cur.replace( " " + clazz + " ", " " );
+                                               }
+                                       }
+
+                                       // Only assign if different to avoid unneeded rendering.
+                                       finalValue = stripAndCollapse( cur );
+                                       if ( curValue !== finalValue ) {
+                                               elem.setAttribute( "class", finalValue );
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       toggleClass: function( value, stateVal ) {
+               var type = typeof value;
+
+               if ( typeof stateVal === "boolean" && type === "string" ) {
+                       return stateVal ? this.addClass( value ) : this.removeClass( value );
+               }
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each( function( i ) {
+                               jQuery( this ).toggleClass(
+                                       value.call( this, i, getClass( this ), stateVal ),
+                                       stateVal
+                               );
+                       } );
+               }
+
+               return this.each( function() {
+                       var className, i, self, classNames;
+
+                       if ( type === "string" ) {
+
+                               // Toggle individual class names
+                               i = 0;
+                               self = jQuery( this );
+                               classNames = value.match( rnothtmlwhite ) || [];
+
+                               while ( ( className = classNames[ i++ ] ) ) {
+
+                                       // Check each className given, space separated list
+                                       if ( self.hasClass( className ) ) {
+                                               self.removeClass( className );
+                                       } else {
+                                               self.addClass( className );
+                                       }
+                               }
+
+                       // Toggle whole class name
+                       } else if ( value === undefined || type === "boolean" ) {
+                               className = getClass( this );
+                               if ( className ) {
+
+                                       // Store className if set
+                                       dataPriv.set( this, "__className__", className );
+                               }
+
+                               // If the element has a class name or if we're passed `false`,
+                               // then remove the whole classname (if there was one, the above saved it).
+                               // Otherwise bring back whatever was previously saved (if anything),
+                               // falling back to the empty string if nothing was stored.
+                               if ( this.setAttribute ) {
+                                       this.setAttribute( "class",
+                                               className || value === false ?
+                                               "" :
+                                               dataPriv.get( this, "__className__" ) || ""
+                                       );
+                               }
+                       }
+               } );
+       },
+
+       hasClass: function( selector ) {
+               var className, elem,
+                       i = 0;
+
+               className = " " + selector + " ";
+               while ( ( elem = this[ i++ ] ) ) {
+                       if ( elem.nodeType === 1 &&
+                               ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+                                       return true;
+                       }
+               }
+
+               return false;
+       }
+} );
+
+} );
diff --git a/js/jquery/src/attributes/prop.js b/js/jquery/src/attributes/prop.js
new file mode 100644 (file)
index 0000000..49ac244
--- /dev/null
@@ -0,0 +1,143 @@
+define( [
+       "../core",
+       "../core/access",
+       "./support",
+       "../selector"
+], function( jQuery, access, support ) {
+
+"use strict";
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+       rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+       prop: function( name, value ) {
+               return access( this, jQuery.prop, name, value, arguments.length > 1 );
+       },
+
+       removeProp: function( name ) {
+               return this.each( function() {
+                       delete this[ jQuery.propFix[ name ] || name ];
+               } );
+       }
+} );
+
+jQuery.extend( {
+       prop: function( elem, name, value ) {
+               var ret, hooks,
+                       nType = elem.nodeType;
+
+               // Don't get/set properties on text, comment and attribute nodes
+               if ( nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+                       // Fix name and attach hooks
+                       name = jQuery.propFix[ name ] || name;
+                       hooks = jQuery.propHooks[ name ];
+               }
+
+               if ( value !== undefined ) {
+                       if ( hooks && "set" in hooks &&
+                               ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+                               return ret;
+                       }
+
+                       return ( elem[ name ] = value );
+               }
+
+               if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+                       return ret;
+               }
+
+               return elem[ name ];
+       },
+
+       propHooks: {
+               tabIndex: {
+                       get: function( elem ) {
+
+                               // Support: IE <=9 - 11 only
+                               // elem.tabIndex doesn't always return the
+                               // correct value when it hasn't been explicitly set
+                               // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+                               // Use proper attribute retrieval(#12072)
+                               var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+                               if ( tabindex ) {
+                                       return parseInt( tabindex, 10 );
+                               }
+
+                               if (
+                                       rfocusable.test( elem.nodeName ) ||
+                                       rclickable.test( elem.nodeName ) &&
+                                       elem.href
+                               ) {
+                                       return 0;
+                               }
+
+                               return -1;
+                       }
+               }
+       },
+
+       propFix: {
+               "for": "htmlFor",
+               "class": "className"
+       }
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+       jQuery.propHooks.selected = {
+               get: function( elem ) {
+
+                       /* eslint no-unused-expressions: "off" */
+
+                       var parent = elem.parentNode;
+                       if ( parent && parent.parentNode ) {
+                               parent.parentNode.selectedIndex;
+                       }
+                       return null;
+               },
+               set: function( elem ) {
+
+                       /* eslint no-unused-expressions: "off" */
+
+                       var parent = elem.parentNode;
+                       if ( parent ) {
+                               parent.selectedIndex;
+
+                               if ( parent.parentNode ) {
+                                       parent.parentNode.selectedIndex;
+                               }
+                       }
+               }
+       };
+}
+
+jQuery.each( [
+       "tabIndex",
+       "readOnly",
+       "maxLength",
+       "cellSpacing",
+       "cellPadding",
+       "rowSpan",
+       "colSpan",
+       "useMap",
+       "frameBorder",
+       "contentEditable"
+], function() {
+       jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+} );
diff --git a/js/jquery/src/attributes/support.js b/js/jquery/src/attributes/support.js
new file mode 100644 (file)
index 0000000..af60e96
--- /dev/null
@@ -0,0 +1,33 @@
+define( [
+       "../var/document",
+       "../var/support"
+], function( document, support ) {
+
+"use strict";
+
+( function() {
+       var input = document.createElement( "input" ),
+               select = document.createElement( "select" ),
+               opt = select.appendChild( document.createElement( "option" ) );
+
+       input.type = "checkbox";
+
+       // Support: Android <=4.3 only
+       // Default value for a checkbox should be "on"
+       support.checkOn = input.value !== "";
+
+       // Support: IE <=11 only
+       // Must access selectedIndex to make default options select
+       support.optSelected = opt.selected;
+
+       // Support: IE <=11 only
+       // An input loses its value after becoming a radio
+       input = document.createElement( "input" );
+       input.value = "t";
+       input.type = "radio";
+       support.radioValue = input.value === "t";
+} )();
+
+return support;
+
+} );
diff --git a/js/jquery/src/attributes/val.js b/js/jquery/src/attributes/val.js
new file mode 100644 (file)
index 0000000..fbf4069
--- /dev/null
@@ -0,0 +1,188 @@
+define( [
+       "../core",
+       "../core/stripAndCollapse",
+       "./support",
+       "../core/init"
+], function( jQuery, stripAndCollapse, support ) {
+
+"use strict";
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+       val: function( value ) {
+               var hooks, ret, isFunction,
+                       elem = this[ 0 ];
+
+               if ( !arguments.length ) {
+                       if ( elem ) {
+                               hooks = jQuery.valHooks[ elem.type ] ||
+                                       jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+                               if ( hooks &&
+                                       "get" in hooks &&
+                                       ( ret = hooks.get( elem, "value" ) ) !== undefined
+                               ) {
+                                       return ret;
+                               }
+
+                               ret = elem.value;
+
+                               // Handle most common string cases
+                               if ( typeof ret === "string" ) {
+                                       return ret.replace( rreturn, "" );
+                               }
+
+                               // Handle cases where value is null/undef or number
+                               return ret == null ? "" : ret;
+                       }
+
+                       return;
+               }
+
+               isFunction = jQuery.isFunction( value );
+
+               return this.each( function( i ) {
+                       var val;
+
+                       if ( this.nodeType !== 1 ) {
+                               return;
+                       }
+
+                       if ( isFunction ) {
+                               val = value.call( this, i, jQuery( this ).val() );
+                       } else {
+                               val = value;
+                       }
+
+                       // Treat null/undefined as ""; convert numbers to string
+                       if ( val == null ) {
+                               val = "";
+
+                       } else if ( typeof val === "number" ) {
+                               val += "";
+
+                       } else if ( jQuery.isArray( val ) ) {
+                               val = jQuery.map( val, function( value ) {
+                                       return value == null ? "" : value + "";
+                               } );
+                       }
+
+                       hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+                       // If set returns undefined, fall back to normal setting
+                       if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+                               this.value = val;
+                       }
+               } );
+       }
+} );
+
+jQuery.extend( {
+       valHooks: {
+               option: {
+                       get: function( elem ) {
+
+                               var val = jQuery.find.attr( elem, "value" );
+                               return val != null ?
+                                       val :
+
+                                       // Support: IE <=10 - 11 only
+                                       // option.text throws exceptions (#14686, #14858)
+                                       // Strip and collapse whitespace
+                                       // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+                                       stripAndCollapse( jQuery.text( elem ) );
+                       }
+               },
+               select: {
+                       get: function( elem ) {
+                               var value, option, i,
+                                       options = elem.options,
+                                       index = elem.selectedIndex,
+                                       one = elem.type === "select-one",
+                                       values = one ? null : [],
+                                       max = one ? index + 1 : options.length;
+
+                               if ( index < 0 ) {
+                                       i = max;
+
+                               } else {
+                                       i = one ? index : 0;
+                               }
+
+                               // Loop through all the selected options
+                               for ( ; i < max; i++ ) {
+                                       option = options[ i ];
+
+                                       // Support: IE <=9 only
+                                       // IE8-9 doesn't update selected after form reset (#2551)
+                                       if ( ( option.selected || i === index ) &&
+
+                                                       // Don't return options that are disabled or in a disabled optgroup
+                                                       !option.disabled &&
+                                                       ( !option.parentNode.disabled ||
+                                                               !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+                                               // Get the specific value for the option
+                                               value = jQuery( option ).val();
+
+                                               // We don't need an array for one selects
+                                               if ( one ) {
+                                                       return value;
+                                               }
+
+                                               // Multi-Selects return an array
+                                               values.push( value );
+                                       }
+                               }
+
+                               return values;
+                       },
+
+                       set: function( elem, value ) {
+                               var optionSet, option,
+                                       options = elem.options,
+                                       values = jQuery.makeArray( value ),
+                                       i = options.length;
+
+                               while ( i-- ) {
+                                       option = options[ i ];
+
+                                       /* eslint-disable no-cond-assign */
+
+                                       if ( option.selected =
+                                               jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+                                       ) {
+                                               optionSet = true;
+                                       }
+
+                                       /* eslint-enable no-cond-assign */
+                               }
+
+                               // Force browsers to behave consistently when non-matching value is set
+                               if ( !optionSet ) {
+                                       elem.selectedIndex = -1;
+                               }
+                               return values;
+                       }
+               }
+       }
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+       jQuery.valHooks[ this ] = {
+               set: function( elem, value ) {
+                       if ( jQuery.isArray( value ) ) {
+                               return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+                       }
+               }
+       };
+       if ( !support.checkOn ) {
+               jQuery.valHooks[ this ].get = function( elem ) {
+                       return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+               };
+       }
+} );
+
+} );
diff --git a/js/jquery/src/callbacks.js b/js/jquery/src/callbacks.js
new file mode 100644 (file)
index 0000000..a6d4df0
--- /dev/null
@@ -0,0 +1,234 @@
+define( [
+       "./core",
+       "./var/rnothtmlwhite"
+], function( jQuery, rnothtmlwhite ) {
+
+"use strict";
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+       var object = {};
+       jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+               object[ flag ] = true;
+       } );
+       return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *     options: an optional list of space-separated options that will change how
+ *                     the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *     once:                   will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *     memory:                 will keep track of previous values and will call any callback added
+ *                                     after the list has been fired right away with the latest "memorized"
+ *                                     values (like a Deferred)
+ *
+ *     unique:                 will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *     stopOnFalse:    interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+       // Convert options from String-formatted to Object-formatted if needed
+       // (we check in cache first)
+       options = typeof options === "string" ?
+               createOptions( options ) :
+               jQuery.extend( {}, options );
+
+       var // Flag to know if list is currently firing
+               firing,
+
+               // Last fire value for non-forgettable lists
+               memory,
+
+               // Flag to know if list was already fired
+               fired,
+
+               // Flag to prevent firing
+               locked,
+
+               // Actual callback list
+               list = [],
+
+               // Queue of execution data for repeatable lists
+               queue = [],
+
+               // Index of currently firing callback (modified by add/remove as needed)
+               firingIndex = -1,
+
+               // Fire callbacks
+               fire = function() {
+
+                       // Enforce single-firing
+                       locked = options.once;
+
+                       // Execute callbacks for all pending executions,
+                       // respecting firingIndex overrides and runtime changes
+                       fired = firing = true;
+                       for ( ; queue.length; firingIndex = -1 ) {
+                               memory = queue.shift();
+                               while ( ++firingIndex < list.length ) {
+
+                                       // Run callback and check for early termination
+                                       if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+                                               options.stopOnFalse ) {
+
+                                               // Jump to end and forget the data so .add doesn't re-fire
+                                               firingIndex = list.length;
+                                               memory = false;
+                                       }
+                               }
+                       }
+
+                       // Forget the data if we're done with it
+                       if ( !options.memory ) {
+                               memory = false;
+                       }
+
+                       firing = false;
+
+                       // Clean up if we're done firing for good
+                       if ( locked ) {
+
+                               // Keep an empty list if we have data for future add calls
+                               if ( memory ) {
+                                       list = [];
+
+                               // Otherwise, this object is spent
+                               } else {
+                                       list = "";
+                               }
+                       }
+               },
+
+               // Actual Callbacks object
+               self = {
+
+                       // Add a callback or a collection of callbacks to the list
+                       add: function() {
+                               if ( list ) {
+
+                                       // If we have memory from a past run, we should fire after adding
+                                       if ( memory && !firing ) {
+                                               firingIndex = list.length - 1;
+                                               queue.push( memory );
+                                       }
+
+                                       ( function add( args ) {
+                                               jQuery.each( args, function( _, arg ) {
+                                                       if ( jQuery.isFunction( arg ) ) {
+                                                               if ( !options.unique || !self.has( arg ) ) {
+                                                                       list.push( arg );
+                                                               }
+                                                       } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+                                                               // Inspect recursively
+                                                               add( arg );
+                                                       }
+                                               } );
+                                       } )( arguments );
+
+                                       if ( memory && !firing ) {
+                                               fire();
+                                       }
+                               }
+                               return this;
+                       },
+
+                       // Remove a callback from the list
+                       remove: function() {
+                               jQuery.each( arguments, function( _, arg ) {
+                                       var index;
+                                       while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+                                               list.splice( index, 1 );
+
+                                               // Handle firing indexes
+                                               if ( index <= firingIndex ) {
+                                                       firingIndex--;
+                                               }
+                                       }
+                               } );
+                               return this;
+                       },
+
+                       // Check if a given callback is in the list.
+                       // If no argument is given, return whether or not list has callbacks attached.
+                       has: function( fn ) {
+                               return fn ?
+                                       jQuery.inArray( fn, list ) > -1 :
+                                       list.length > 0;
+                       },
+
+                       // Remove all callbacks from the list
+                       empty: function() {
+                               if ( list ) {
+                                       list = [];
+                               }
+                               return this;
+                       },
+
+                       // Disable .fire and .add
+                       // Abort any current/pending executions
+                       // Clear all callbacks and values
+                       disable: function() {
+                               locked = queue = [];
+                               list = memory = "";
+                               return this;
+                       },
+                       disabled: function() {
+                               return !list;
+                       },
+
+                       // Disable .fire
+                       // Also disable .add unless we have memory (since it would have no effect)
+                       // Abort any pending executions
+                       lock: function() {
+                               locked = queue = [];
+                               if ( !memory && !firing ) {
+                                       list = memory = "";
+                               }
+                               return this;
+                       },
+                       locked: function() {
+                               return !!locked;
+                       },
+
+                       // Call all callbacks with the given context and arguments
+                       fireWith: function( context, args ) {
+                               if ( !locked ) {
+                                       args = args || [];
+                                       args = [ context, args.slice ? args.slice() : args ];
+                                       queue.push( args );
+                                       if ( !firing ) {
+                                               fire();
+                                       }
+                               }
+                               return this;
+                       },
+
+                       // Call all the callbacks with the given arguments
+                       fire: function() {
+                               self.fireWith( this, arguments );
+                               return this;
+                       },
+
+                       // To know if the callbacks have already been called at least once
+                       fired: function() {
+                               return !!fired;
+                       }
+               };
+
+       return self;
+};
+
+return jQuery;
+} );
diff --git a/js/jquery/src/core.js b/js/jquery/src/core.js
new file mode 100644 (file)
index 0000000..4c8a4ab
--- /dev/null
@@ -0,0 +1,482 @@
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+define( [
+       "./var/arr",
+       "./var/document",
+       "./var/getProto",
+       "./var/slice",
+       "./var/concat",
+       "./var/push",
+       "./var/indexOf",
+       "./var/class2type",
+       "./var/toString",
+       "./var/hasOwn",
+       "./var/fnToString",
+       "./var/ObjectFunctionString",
+       "./var/support",
+       "./core/DOMEval"
+], function( arr, document, getProto, slice, concat, push, indexOf,
+       class2type, toString, hasOwn, fnToString, ObjectFunctionString,
+       support, DOMEval ) {
+
+"use strict";
+
+var
+       version = "3.1.1",
+
+       // Define a local copy of jQuery
+       jQuery = function( selector, context ) {
+
+               // The jQuery object is actually just the init constructor 'enhanced'
+               // Need init if jQuery is called (just allow error to be thrown if not included)
+               return new jQuery.fn.init( selector, context );
+       },
+
+       // Support: Android <=4.0 only
+       // Make sure we trim BOM and NBSP
+       rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+       // Matches dashed string for camelizing
+       rmsPrefix = /^-ms-/,
+       rdashAlpha = /-([a-z])/g,
+
+       // Used by jQuery.camelCase as callback to replace()
+       fcamelCase = function( all, letter ) {
+               return letter.toUpperCase();
+       };
+
+jQuery.fn = jQuery.prototype = {
+
+       // The current version of jQuery being used
+       jquery: version,
+
+       constructor: jQuery,
+
+       // The default length of a jQuery object is 0
+       length: 0,
+
+       toArray: function() {
+               return slice.call( this );
+       },
+
+       // Get the Nth element in the matched element set OR
+       // Get the whole matched element set as a clean array
+       get: function( num ) {
+
+               // Return all the elements in a clean array
+               if ( num == null ) {
+                       return slice.call( this );
+               }
+
+               // Return just the one element from the set
+               return num < 0 ? this[ num + this.length ] : this[ num ];
+       },
+
+       // Take an array of elements and push it onto the stack
+       // (returning the new matched element set)
+       pushStack: function( elems ) {
+
+               // Build a new jQuery matched element set
+               var ret = jQuery.merge( this.constructor(), elems );
+
+               // Add the old object onto the stack (as a reference)
+               ret.prevObject = this;
+
+               // Return the newly-formed element set
+               return ret;
+       },
+
+       // Execute a callback for every element in the matched set.
+       each: function( callback ) {
+               return jQuery.each( this, callback );
+       },
+
+       map: function( callback ) {
+               return this.pushStack( jQuery.map( this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               } ) );
+       },
+
+       slice: function() {
+               return this.pushStack( slice.apply( this, arguments ) );
+       },
+
+       first: function() {
+               return this.eq( 0 );
+       },
+
+       last: function() {
+               return this.eq( -1 );
+       },
+
+       eq: function( i ) {
+               var len = this.length,
+                       j = +i + ( i < 0 ? len : 0 );
+               return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+       },
+
+       end: function() {
+               return this.prevObject || this.constructor();
+       },
+
+       // For internal use only.
+       // Behaves like an Array's method, not like a jQuery method.
+       push: push,
+       sort: arr.sort,
+       splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+       var options, name, src, copy, copyIsArray, clone,
+               target = arguments[ 0 ] || {},
+               i = 1,
+               length = arguments.length,
+               deep = false;
+
+       // Handle a deep copy situation
+       if ( typeof target === "boolean" ) {
+               deep = target;
+
+               // Skip the boolean and the target
+               target = arguments[ i ] || {};
+               i++;
+       }
+
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+               target = {};
+       }
+
+       // Extend jQuery itself if only one argument is passed
+       if ( i === length ) {
+               target = this;
+               i--;
+       }
+
+       for ( ; i < length; i++ ) {
+
+               // Only deal with non-null/undefined values
+               if ( ( options = arguments[ i ] ) != null ) {
+
+                       // Extend the base object
+                       for ( name in options ) {
+                               src = target[ name ];
+                               copy = options[ name ];
+
+                               // Prevent never-ending loop
+                               if ( target === copy ) {
+                                       continue;
+                               }
+
+                               // Recurse if we're merging plain objects or arrays
+                               if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+                                       ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
+
+                                       if ( copyIsArray ) {
+                                               copyIsArray = false;
+                                               clone = src && jQuery.isArray( src ) ? src : [];
+
+                                       } else {
+                                               clone = src && jQuery.isPlainObject( src ) ? src : {};
+                                       }
+
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
+
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
+                               }
+                       }
+               }
+       }
+
+       // Return the modified object
+       return target;
+};
+
+jQuery.extend( {
+
+       // Unique for each copy of jQuery on the page
+       expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+       // Assume jQuery is ready without the ready module
+       isReady: true,
+
+       error: function( msg ) {
+               throw new Error( msg );
+       },
+
+       noop: function() {},
+
+       isFunction: function( obj ) {
+               return jQuery.type( obj ) === "function";
+       },
+
+       isArray: Array.isArray,
+
+       isWindow: function( obj ) {
+               return obj != null && obj === obj.window;
+       },
+
+       isNumeric: function( obj ) {
+
+               // As of jQuery 3.0, isNumeric is limited to
+               // strings and numbers (primitives or objects)
+               // that can be coerced to finite numbers (gh-2662)
+               var type = jQuery.type( obj );
+               return ( type === "number" || type === "string" ) &&
+
+                       // parseFloat NaNs numeric-cast false positives ("")
+                       // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+                       // subtraction forces infinities to NaN
+                       !isNaN( obj - parseFloat( obj ) );
+       },
+
+       isPlainObject: function( obj ) {
+               var proto, Ctor;
+
+               // Detect obvious negatives
+               // Use toString instead of jQuery.type to catch host objects
+               if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+                       return false;
+               }
+
+               proto = getProto( obj );
+
+               // Objects with no prototype (e.g., `Object.create( null )`) are plain
+               if ( !proto ) {
+                       return true;
+               }
+
+               // Objects with prototype are plain iff they were constructed by a global Object function
+               Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+               return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+       },
+
+       isEmptyObject: function( obj ) {
+
+               /* eslint-disable no-unused-vars */
+               // See https://github.com/eslint/eslint/issues/6125
+               var name;
+
+               for ( name in obj ) {
+                       return false;
+               }
+               return true;
+       },
+
+       type: function( obj ) {
+               if ( obj == null ) {
+                       return obj + "";
+               }
+
+               // Support: Android <=2.3 only (functionish RegExp)
+               return typeof obj === "object" || typeof obj === "function" ?
+                       class2type[ toString.call( obj ) ] || "object" :
+                       typeof obj;
+       },
+
+       // Evaluates a script in a global context
+       globalEval: function( code ) {
+               DOMEval( code );
+       },
+
+       // Convert dashed to camelCase; used by the css and data modules
+       // Support: IE <=9 - 11, Edge 12 - 13
+       // Microsoft forgot to hump their vendor prefix (#9572)
+       camelCase: function( string ) {
+               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+       },
+
+       nodeName: function( elem, name ) {
+               return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+       },
+
+       each: function( obj, callback ) {
+               var length, i = 0;
+
+               if ( isArrayLike( obj ) ) {
+                       length = obj.length;
+                       for ( ; i < length; i++ ) {
+                               if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+                                       break;
+                               }
+                       }
+               } else {
+                       for ( i in obj ) {
+                               if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+                                       break;
+                               }
+                       }
+               }
+
+               return obj;
+       },
+
+       // Support: Android <=4.0 only
+       trim: function( text ) {
+               return text == null ?
+                       "" :
+                       ( text + "" ).replace( rtrim, "" );
+       },
+
+       // results is for internal usage only
+       makeArray: function( arr, results ) {
+               var ret = results || [];
+
+               if ( arr != null ) {
+                       if ( isArrayLike( Object( arr ) ) ) {
+                               jQuery.merge( ret,
+                                       typeof arr === "string" ?
+                                       [ arr ] : arr
+                               );
+                       } else {
+                               push.call( ret, arr );
+                       }
+               }
+
+               return ret;
+       },
+
+       inArray: function( elem, arr, i ) {
+               return arr == null ? -1 : indexOf.call( arr, elem, i );
+       },
+
+       // Support: Android <=4.0 only, PhantomJS 1 only
+       // push.apply(_, arraylike) throws on ancient WebKit
+       merge: function( first, second ) {
+               var len = +second.length,
+                       j = 0,
+                       i = first.length;
+
+               for ( ; j < len; j++ ) {
+                       first[ i++ ] = second[ j ];
+               }
+
+               first.length = i;
+
+               return first;
+       },
+
+       grep: function( elems, callback, invert ) {
+               var callbackInverse,
+                       matches = [],
+                       i = 0,
+                       length = elems.length,
+                       callbackExpect = !invert;
+
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( ; i < length; i++ ) {
+                       callbackInverse = !callback( elems[ i ], i );
+                       if ( callbackInverse !== callbackExpect ) {
+                               matches.push( elems[ i ] );
+                       }
+               }
+
+               return matches;
+       },
+
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var length, value,
+                       i = 0,
+                       ret = [];
+
+               // Go through the array, translating each of the items to their new values
+               if ( isArrayLike( elems ) ) {
+                       length = elems.length;
+                       for ( ; i < length; i++ ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+
+               // Go through every key on the object,
+               } else {
+                       for ( i in elems ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+               }
+
+               // Flatten any nested arrays
+               return concat.apply( [], ret );
+       },
+
+       // A global GUID counter for objects
+       guid: 1,
+
+       // Bind a function to a context, optionally partially applying any
+       // arguments.
+       proxy: function( fn, context ) {
+               var tmp, args, proxy;
+
+               if ( typeof context === "string" ) {
+                       tmp = fn[ context ];
+                       context = fn;
+                       fn = tmp;
+               }
+
+               // Quick check to determine if target is callable, in the spec
+               // this throws a TypeError, but we will just return undefined.
+               if ( !jQuery.isFunction( fn ) ) {
+                       return undefined;
+               }
+
+               // Simulated bind
+               args = slice.call( arguments, 2 );
+               proxy = function() {
+                       return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+               };
+
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+               return proxy;
+       },
+
+       now: Date.now,
+
+       // jQuery.support is not used in Core but other projects attach their
+       // properties to it so it needs to exist.
+       support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+       jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+       class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+       // Support: real iOS 8.2 only (not reproducible in simulator)
+       // `in` check used to prevent JIT error (gh-2145)
+       // hasOwn isn't used here due to false negatives
+       // regarding Nodelist length in IE
+       var length = !!obj && "length" in obj && obj.length,
+               type = jQuery.type( obj );
+
+       if ( type === "function" || jQuery.isWindow( obj ) ) {
+               return false;
+       }
+
+       return type === "array" || length === 0 ||
+               typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+
+return jQuery;
+} );
diff --git a/js/jquery/src/core/DOMEval.js b/js/jquery/src/core/DOMEval.js
new file mode 100644 (file)
index 0000000..c49c12e
--- /dev/null
@@ -0,0 +1,16 @@
+define( [
+       "../var/document"
+], function( document ) {
+       "use strict";
+
+       function DOMEval( code, doc ) {
+               doc = doc || document;
+
+               var script = doc.createElement( "script" );
+
+               script.text = code;
+               doc.head.appendChild( script ).parentNode.removeChild( script );
+       }
+
+       return DOMEval;
+} );
diff --git a/js/jquery/src/core/access.js b/js/jquery/src/core/access.js
new file mode 100644 (file)
index 0000000..86cdbc7
--- /dev/null
@@ -0,0 +1,70 @@
+define( [
+       "../core"
+], function( jQuery ) {
+
+"use strict";
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+       var i = 0,
+               len = elems.length,
+               bulk = key == null;
+
+       // Sets many values
+       if ( jQuery.type( key ) === "object" ) {
+               chainable = true;
+               for ( i in key ) {
+                       access( elems, fn, i, key[ i ], true, emptyGet, raw );
+               }
+
+       // Sets one value
+       } else if ( value !== undefined ) {
+               chainable = true;
+
+               if ( !jQuery.isFunction( value ) ) {
+                       raw = true;
+               }
+
+               if ( bulk ) {
+
+                       // Bulk operations run against the entire set
+                       if ( raw ) {
+                               fn.call( elems, value );
+                               fn = null;
+
+                       // ...except when executing function values
+                       } else {
+                               bulk = fn;
+                               fn = function( elem, key, value ) {
+                                       return bulk.call( jQuery( elem ), value );
+                               };
+                       }
+               }
+
+               if ( fn ) {
+                       for ( ; i < len; i++ ) {
+                               fn(
+                                       elems[ i ], key, raw ?
+                                       value :
+                                       value.call( elems[ i ], i, fn( elems[ i ], key ) )
+                               );
+                       }
+               }
+       }
+
+       if ( chainable ) {
+               return elems;
+       }
+
+       // Gets
+       if ( bulk ) {
+               return fn.call( elems );
+       }
+
+       return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+
+return access;
+
+} );
diff --git a/js/jquery/src/core/init.js b/js/jquery/src/core/init.js
new file mode 100644 (file)
index 0000000..19a3c7c
--- /dev/null
@@ -0,0 +1,127 @@
+// Initialize a jQuery object
+define( [
+       "../core",
+       "../var/document",
+       "./var/rsingleTag",
+       "../traversing/findFilter"
+], function( jQuery, document, rsingleTag ) {
+
+"use strict";
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+       // A simple way to check for HTML strings
+       // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+       // Strict HTML recognition (#11290: must start with <)
+       // Shortcut simple #id case for speed
+       rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+       init = jQuery.fn.init = function( selector, context, root ) {
+               var match, elem;
+
+               // HANDLE: $(""), $(null), $(undefined), $(false)
+               if ( !selector ) {
+                       return this;
+               }
+
+               // Method init() accepts an alternate rootjQuery
+               // so migrate can support jQuery.sub (gh-2101)
+               root = root || rootjQuery;
+
+               // Handle HTML strings
+               if ( typeof selector === "string" ) {
+                       if ( selector[ 0 ] === "<" &&
+                               selector[ selector.length - 1 ] === ">" &&
+                               selector.length >= 3 ) {
+
+                               // Assume that strings that start and end with <> are HTML and skip the regex check
+                               match = [ null, selector, null ];
+
+                       } else {
+                               match = rquickExpr.exec( selector );
+                       }
+
+                       // Match html or make sure no context is specified for #id
+                       if ( match && ( match[ 1 ] || !context ) ) {
+
+                               // HANDLE: $(html) -> $(array)
+                               if ( match[ 1 ] ) {
+                                       context = context instanceof jQuery ? context[ 0 ] : context;
+
+                                       // Option to run scripts is true for back-compat
+                                       // Intentionally let the error be thrown if parseHTML is not present
+                                       jQuery.merge( this, jQuery.parseHTML(
+                                               match[ 1 ],
+                                               context && context.nodeType ? context.ownerDocument || context : document,
+                                               true
+                                       ) );
+
+                                       // HANDLE: $(html, props)
+                                       if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+                                               for ( match in context ) {
+
+                                                       // Properties of context are called as methods if possible
+                                                       if ( jQuery.isFunction( this[ match ] ) ) {
+                                                               this[ match ]( context[ match ] );
+
+                                                       // ...and otherwise set as attributes
+                                                       } else {
+                                                               this.attr( match, context[ match ] );
+                                                       }
+                                               }
+                                       }
+
+                                       return this;
+
+                               // HANDLE: $(#id)
+                               } else {
+                                       elem = document.getElementById( match[ 2 ] );
+
+                                       if ( elem ) {
+
+                                               // Inject the element directly into the jQuery object
+                                               this[ 0 ] = elem;
+                                               this.length = 1;
+                                       }
+                                       return this;
+                               }
+
+                       // HANDLE: $(expr, $(...))
+                       } else if ( !context || context.jquery ) {
+                               return ( context || root ).find( selector );
+
+                       // HANDLE: $(expr, context)
+                       // (which is just equivalent to: $(context).find(expr)
+                       } else {
+                               return this.constructor( context ).find( selector );
+                       }
+
+               // HANDLE: $(DOMElement)
+               } else if ( selector.nodeType ) {
+                       this[ 0 ] = selector;
+                       this.length = 1;
+                       return this;
+
+               // HANDLE: $(function)
+               // Shortcut for document ready
+               } else if ( jQuery.isFunction( selector ) ) {
+                       return root.ready !== undefined ?
+                               root.ready( selector ) :
+
+                               // Execute immediately if ready is not present
+                               selector( jQuery );
+               }
+
+               return jQuery.makeArray( selector, this );
+       };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+return init;
+
+} );
diff --git a/js/jquery/src/core/parseHTML.js b/js/jquery/src/core/parseHTML.js
new file mode 100644 (file)
index 0000000..21ff6bf
--- /dev/null
@@ -0,0 +1,65 @@
+define( [
+       "../core",
+       "../var/document",
+       "./var/rsingleTag",
+       "../manipulation/buildFragment",
+
+       // This is the only module that needs core/support
+       "./support"
+], function( jQuery, document, rsingleTag, buildFragment, support ) {
+
+"use strict";
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+       if ( typeof data !== "string" ) {
+               return [];
+       }
+       if ( typeof context === "boolean" ) {
+               keepScripts = context;
+               context = false;
+       }
+
+       var base, parsed, scripts;
+
+       if ( !context ) {
+
+               // Stop scripts or inline event handlers from being executed immediately
+               // by using document.implementation
+               if ( support.createHTMLDocument ) {
+                       context = document.implementation.createHTMLDocument( "" );
+
+                       // Set the base href for the created document
+                       // so any parsed elements with URLs
+                       // are based on the document's URL (gh-2965)
+                       base = context.createElement( "base" );
+                       base.href = document.location.href;
+                       context.head.appendChild( base );
+               } else {
+                       context = document;
+               }
+       }
+
+       parsed = rsingleTag.exec( data );
+       scripts = !keepScripts && [];
+
+       // Single tag
+       if ( parsed ) {
+               return [ context.createElement( parsed[ 1 ] ) ];
+       }
+
+       parsed = buildFragment( [ data ], context, scripts );
+
+       if ( scripts && scripts.length ) {
+               jQuery( scripts ).remove();
+       }
+
+       return jQuery.merge( [], parsed.childNodes );
+};
+
+return jQuery.parseHTML;
+
+} );
diff --git a/js/jquery/src/core/ready-no-deferred.js b/js/jquery/src/core/ready-no-deferred.js
new file mode 100644 (file)
index 0000000..02d6014
--- /dev/null
@@ -0,0 +1,105 @@
+define( [
+       "../core",
+       "../var/document"
+], function( jQuery, document ) {
+
+"use strict";
+
+var readyCallbacks = [],
+       whenReady = function( fn ) {
+               readyCallbacks.push( fn );
+       },
+       executeReady = function( fn ) {
+
+               // Prevent errors from freezing future callback execution (gh-1823)
+               // Not backwards-compatible as this does not execute sync
+               window.setTimeout( function() {
+                       fn.call( document, jQuery );
+               } );
+       };
+
+jQuery.fn.ready = function( fn ) {
+       whenReady( fn );
+       return this;
+};
+
+jQuery.extend( {
+
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+
+       // A counter to track how many items to wait for before
+       // the ready event fires. See #6781
+       readyWait: 1,
+
+       // Hold (or release) the ready event
+       holdReady: function( hold ) {
+               if ( hold ) {
+                       jQuery.readyWait++;
+               } else {
+                       jQuery.ready( true );
+               }
+       },
+
+       ready: function( wait ) {
+
+               // Abort if there are pending holds or we're already ready
+               if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+                       return;
+               }
+
+               // Remember that the DOM is ready
+               jQuery.isReady = true;
+
+               // If a normal DOM Ready event fired, decrement, and wait if need be
+               if ( wait !== true && --jQuery.readyWait > 0 ) {
+                       return;
+               }
+
+               whenReady = function( fn ) {
+                       readyCallbacks.push( fn );
+
+                       while ( readyCallbacks.length ) {
+                               fn = readyCallbacks.shift();
+                               if ( jQuery.isFunction( fn ) ) {
+                                       executeReady( fn );
+                               }
+                       }
+               };
+
+               whenReady();
+       }
+} );
+
+// Make jQuery.ready Promise consumable (gh-1778)
+jQuery.ready.then = jQuery.fn.ready;
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+       document.removeEventListener( "DOMContentLoaded", completed );
+       window.removeEventListener( "load", completed );
+       jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE9-10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+       ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+       // Handle it asynchronously to allow scripts the opportunity to delay ready
+       window.setTimeout( jQuery.ready );
+
+} else {
+
+       // Use the handy event callback
+       document.addEventListener( "DOMContentLoaded", completed );
+
+       // A fallback to window.onload, that will always work
+       window.addEventListener( "load", completed );
+}
+
+} );
diff --git a/js/jquery/src/core/ready.js b/js/jquery/src/core/ready.js
new file mode 100644 (file)
index 0000000..53b1b2d
--- /dev/null
@@ -0,0 +1,95 @@
+define( [
+       "../core",
+       "../var/document",
+       "../core/readyException",
+       "../deferred"
+], function( jQuery, document ) {
+
+"use strict";
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+       readyList
+               .then( fn )
+
+               // Wrap jQuery.readyException in a function so that the lookup
+               // happens at the time of error handling instead of callback
+               // registration.
+               .catch( function( error ) {
+                       jQuery.readyException( error );
+               } );
+
+       return this;
+};
+
+jQuery.extend( {
+
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+
+       // A counter to track how many items to wait for before
+       // the ready event fires. See #6781
+       readyWait: 1,
+
+       // Hold (or release) the ready event
+       holdReady: function( hold ) {
+               if ( hold ) {
+                       jQuery.readyWait++;
+               } else {
+                       jQuery.ready( true );
+               }
+       },
+
+       // Handle when the DOM is ready
+       ready: function( wait ) {
+
+               // Abort if there are pending holds or we're already ready
+               if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+                       return;
+               }
+
+               // Remember that the DOM is ready
+               jQuery.isReady = true;
+
+               // If a normal DOM Ready event fired, decrement, and wait if need be
+               if ( wait !== true && --jQuery.readyWait > 0 ) {
+                       return;
+               }
+
+               // If there are functions bound, to execute
+               readyList.resolveWith( document, [ jQuery ] );
+       }
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+       document.removeEventListener( "DOMContentLoaded", completed );
+       window.removeEventListener( "load", completed );
+       jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+       ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+       // Handle it asynchronously to allow scripts the opportunity to delay ready
+       window.setTimeout( jQuery.ready );
+
+} else {
+
+       // Use the handy event callback
+       document.addEventListener( "DOMContentLoaded", completed );
+
+       // A fallback to window.onload, that will always work
+       window.addEventListener( "load", completed );
+}
+
+} );
diff --git a/js/jquery/src/core/readyException.js b/js/jquery/src/core/readyException.js
new file mode 100644 (file)
index 0000000..72bdd90
--- /dev/null
@@ -0,0 +1,13 @@
+define( [
+       "../core"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.readyException = function( error ) {
+       window.setTimeout( function() {
+               throw error;
+       } );
+};
+
+} );
diff --git a/js/jquery/src/core/stripAndCollapse.js b/js/jquery/src/core/stripAndCollapse.js
new file mode 100644 (file)
index 0000000..ccad660
--- /dev/null
@@ -0,0 +1,14 @@
+define( [
+       "../var/rnothtmlwhite"
+], function( rnothtmlwhite ) {
+       "use strict";
+
+       // Strip and collapse whitespace according to HTML spec
+       // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
+       function stripAndCollapse( value ) {
+               var tokens = value.match( rnothtmlwhite ) || [];
+               return tokens.join( " " );
+       }
+
+       return stripAndCollapse;
+} );
diff --git a/js/jquery/src/core/support.js b/js/jquery/src/core/support.js
new file mode 100644 (file)
index 0000000..13ae02f
--- /dev/null
@@ -0,0 +1,20 @@
+define( [
+       "../var/document",
+       "../var/support"
+], function( document, support ) {
+
+"use strict";
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+       var body = document.implementation.createHTMLDocument( "" ).body;
+       body.innerHTML = "<form></form><form></form>";
+       return body.childNodes.length === 2;
+} )();
+
+return support;
+} );
diff --git a/js/jquery/src/core/var/rsingleTag.js b/js/jquery/src/core/var/rsingleTag.js
new file mode 100644 (file)
index 0000000..4d6e8a0
--- /dev/null
@@ -0,0 +1,6 @@
+define( function() {
+       "use strict";
+
+       // Match a standalone tag
+       return ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+} );
diff --git a/js/jquery/src/css.js b/js/jquery/src/css.js
new file mode 100644 (file)
index 0000000..5e44511
--- /dev/null
@@ -0,0 +1,426 @@
+define( [
+       "./core",
+       "./var/pnum",
+       "./core/access",
+       "./css/var/rmargin",
+       "./var/document",
+       "./var/rcssNum",
+       "./css/var/rnumnonpx",
+       "./css/var/cssExpand",
+       "./css/var/getStyles",
+       "./css/var/swap",
+       "./css/curCSS",
+       "./css/adjustCSS",
+       "./css/addGetHookIf",
+       "./css/support",
+
+       "./core/init",
+       "./core/ready",
+       "./selector" // contains
+], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand,
+       getStyles, swap, curCSS, adjustCSS, addGetHookIf, support ) {
+
+"use strict";
+
+var
+
+       // Swappable if display is none or starts with table
+       // except "table", "table-cell", or "table-caption"
+       // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+       rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+       cssNormalTransform = {
+               letterSpacing: "0",
+               fontWeight: "400"
+       },
+
+       cssPrefixes = [ "Webkit", "Moz", "ms" ],
+       emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+       // Shortcut for names that are not vendor prefixed
+       if ( name in emptyStyle ) {
+               return name;
+       }
+
+       // Check for vendor prefixed names
+       var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+               i = cssPrefixes.length;
+
+       while ( i-- ) {
+               name = cssPrefixes[ i ] + capName;
+               if ( name in emptyStyle ) {
+                       return name;
+               }
+       }
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+       // Any relative (+/-) values have already been
+       // normalized at this point
+       var matches = rcssNum.exec( value );
+       return matches ?
+
+               // Guard against undefined "subtract", e.g., when used as in cssHooks
+               Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+               value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+       var i,
+               val = 0;
+
+       // If we already have the right measurement, avoid augmentation
+       if ( extra === ( isBorderBox ? "border" : "content" ) ) {
+               i = 4;
+
+       // Otherwise initialize for horizontal or vertical properties
+       } else {
+               i = name === "width" ? 1 : 0;
+       }
+
+       for ( ; i < 4; i += 2 ) {
+
+               // Both box models exclude margin, so add it if we want it
+               if ( extra === "margin" ) {
+                       val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+               }
+
+               if ( isBorderBox ) {
+
+                       // border-box includes padding, so remove it if we want content
+                       if ( extra === "content" ) {
+                               val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+                       }
+
+                       // At this point, extra isn't border nor margin, so remove border
+                       if ( extra !== "margin" ) {
+                               val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               } else {
+
+                       // At this point, extra isn't content, so add padding
+                       val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+                       // At this point, extra isn't content nor padding, so add border
+                       if ( extra !== "padding" ) {
+                               val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               }
+       }
+
+       return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+       // Start with offset property, which is equivalent to the border-box value
+       var val,
+               valueIsBorderBox = true,
+               styles = getStyles( elem ),
+               isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+       // Support: IE <=11 only
+       // Running getBoundingClientRect on a disconnected node
+       // in IE throws an error.
+       if ( elem.getClientRects().length ) {
+               val = elem.getBoundingClientRect()[ name ];
+       }
+
+       // Some non-html elements return undefined for offsetWidth, so check for null/undefined
+       // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+       // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+       if ( val <= 0 || val == null ) {
+
+               // Fall back to computed then uncomputed css if necessary
+               val = curCSS( elem, name, styles );
+               if ( val < 0 || val == null ) {
+                       val = elem.style[ name ];
+               }
+
+               // Computed unit is not pixels. Stop here and return.
+               if ( rnumnonpx.test( val ) ) {
+                       return val;
+               }
+
+               // Check for style in case a browser which returns unreliable values
+               // for getComputedStyle silently falls back to the reliable elem.style
+               valueIsBorderBox = isBorderBox &&
+                       ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+               // Normalize "", auto, and prepare for extra
+               val = parseFloat( val ) || 0;
+       }
+
+       // Use the active box-sizing model to add/subtract irrelevant styles
+       return ( val +
+               augmentWidthOrHeight(
+                       elem,
+                       name,
+                       extra || ( isBorderBox ? "border" : "content" ),
+                       valueIsBorderBox,
+                       styles
+               )
+       ) + "px";
+}
+
+jQuery.extend( {
+
+       // Add in style property hooks for overriding the default
+       // behavior of getting and setting a style property
+       cssHooks: {
+               opacity: {
+                       get: function( elem, computed ) {
+                               if ( computed ) {
+
+                                       // We should always get a number back from opacity
+                                       var ret = curCSS( elem, "opacity" );
+                                       return ret === "" ? "1" : ret;
+                               }
+                       }
+               }
+       },
+
+       // Don't automatically add "px" to these possibly-unitless properties
+       cssNumber: {
+               "animationIterationCount": true,
+               "columnCount": true,
+               "fillOpacity": true,
+               "flexGrow": true,
+               "flexShrink": true,
+               "fontWeight": true,
+               "lineHeight": true,
+               "opacity": true,
+               "order": true,
+               "orphans": true,
+               "widows": true,
+               "zIndex": true,
+               "zoom": true
+       },
+
+       // Add in properties whose names you wish to fix before
+       // setting or getting the value
+       cssProps: {
+               "float": "cssFloat"
+       },
+
+       // Get and set the style property on a DOM Node
+       style: function( elem, name, value, extra ) {
+
+               // Don't set styles on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+                       return;
+               }
+
+               // Make sure that we're working with the right name
+               var ret, type, hooks,
+                       origName = jQuery.camelCase( name ),
+                       style = elem.style;
+
+               name = jQuery.cssProps[ origName ] ||
+                       ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+               // Gets hook for the prefixed version, then unprefixed version
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // Check if we're setting a value
+               if ( value !== undefined ) {
+                       type = typeof value;
+
+                       // Convert "+=" or "-=" to relative numbers (#7345)
+                       if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+                               value = adjustCSS( elem, name, ret );
+
+                               // Fixes bug #9237
+                               type = "number";
+                       }
+
+                       // Make sure that null and NaN values aren't set (#7116)
+                       if ( value == null || value !== value ) {
+                               return;
+                       }
+
+                       // If a number was passed in, add the unit (except for certain CSS properties)
+                       if ( type === "number" ) {
+                               value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+                       }
+
+                       // background-* props affect original clone's values
+                       if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+                               style[ name ] = "inherit";
+                       }
+
+                       // If a hook was provided, use that value, otherwise just set the specified value
+                       if ( !hooks || !( "set" in hooks ) ||
+                               ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+                               style[ name ] = value;
+                       }
+
+               } else {
+
+                       // If a hook was provided get the non-computed value from there
+                       if ( hooks && "get" in hooks &&
+                               ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+                               return ret;
+                       }
+
+                       // Otherwise just get the value from the style object
+                       return style[ name ];
+               }
+       },
+
+       css: function( elem, name, extra, styles ) {
+               var val, num, hooks,
+                       origName = jQuery.camelCase( name );
+
+               // Make sure that we're working with the right name
+               name = jQuery.cssProps[ origName ] ||
+                       ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+               // Try prefixed name followed by the unprefixed name
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // If a hook was provided get the computed value from there
+               if ( hooks && "get" in hooks ) {
+                       val = hooks.get( elem, true, extra );
+               }
+
+               // Otherwise, if a way to get the computed value exists, use that
+               if ( val === undefined ) {
+                       val = curCSS( elem, name, styles );
+               }
+
+               // Convert "normal" to computed value
+               if ( val === "normal" && name in cssNormalTransform ) {
+                       val = cssNormalTransform[ name ];
+               }
+
+               // Make numeric if forced or a qualifier was provided and val looks numeric
+               if ( extra === "" || extra ) {
+                       num = parseFloat( val );
+                       return extra === true || isFinite( num ) ? num || 0 : val;
+               }
+               return val;
+       }
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+       jQuery.cssHooks[ name ] = {
+               get: function( elem, computed, extra ) {
+                       if ( computed ) {
+
+                               // Certain elements can have dimension info if we invisibly show them
+                               // but it must have a current display style that would benefit
+                               return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+                                       // Support: Safari 8+
+                                       // Table columns in Safari have non-zero offsetWidth & zero
+                                       // getBoundingClientRect().width unless display is changed.
+                                       // Support: IE <=11 only
+                                       // Running getBoundingClientRect on a disconnected node
+                                       // in IE throws an error.
+                                       ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+                                               swap( elem, cssShow, function() {
+                                                       return getWidthOrHeight( elem, name, extra );
+                                               } ) :
+                                               getWidthOrHeight( elem, name, extra );
+                       }
+               },
+
+               set: function( elem, value, extra ) {
+                       var matches,
+                               styles = extra && getStyles( elem ),
+                               subtract = extra && augmentWidthOrHeight(
+                                       elem,
+                                       name,
+                                       extra,
+                                       jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+                                       styles
+                               );
+
+                       // Convert to pixels if value adjustment is needed
+                       if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+                               ( matches[ 3 ] || "px" ) !== "px" ) {
+
+                               elem.style[ name ] = value;
+                               value = jQuery.css( elem, name );
+                       }
+
+                       return setPositiveNumber( elem, value, subtract );
+               }
+       };
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+       function( elem, computed ) {
+               if ( computed ) {
+                       return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+                               elem.getBoundingClientRect().left -
+                                       swap( elem, { marginLeft: 0 }, function() {
+                                               return elem.getBoundingClientRect().left;
+                                       } )
+                               ) + "px";
+               }
+       }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+       margin: "",
+       padding: "",
+       border: "Width"
+}, function( prefix, suffix ) {
+       jQuery.cssHooks[ prefix + suffix ] = {
+               expand: function( value ) {
+                       var i = 0,
+                               expanded = {},
+
+                               // Assumes a single number if not a string
+                               parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+                       for ( ; i < 4; i++ ) {
+                               expanded[ prefix + cssExpand[ i ] + suffix ] =
+                                       parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+                       }
+
+                       return expanded;
+               }
+       };
+
+       if ( !rmargin.test( prefix ) ) {
+               jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+       }
+} );
+
+jQuery.fn.extend( {
+       css: function( name, value ) {
+               return access( this, function( elem, name, value ) {
+                       var styles, len,
+                               map = {},
+                               i = 0;
+
+                       if ( jQuery.isArray( name ) ) {
+                               styles = getStyles( elem );
+                               len = name.length;
+
+                               for ( ; i < len; i++ ) {
+                                       map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+                               }
+
+                               return map;
+                       }
+
+                       return value !== undefined ?
+                               jQuery.style( elem, name, value ) :
+                               jQuery.css( elem, name );
+               }, name, value, arguments.length > 1 );
+       }
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/css/addGetHookIf.js b/js/jquery/src/css/addGetHookIf.js
new file mode 100644 (file)
index 0000000..e4bb49a
--- /dev/null
@@ -0,0 +1,26 @@
+define( function() {
+
+"use strict";
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+       // Define the hook, we'll check on the first run if it's really needed.
+       return {
+               get: function() {
+                       if ( conditionFn() ) {
+
+                               // Hook not needed (or it's not possible to use it due
+                               // to missing dependency), remove it.
+                               delete this.get;
+                               return;
+                       }
+
+                       // Hook needed; redefine it so that the support test is not executed again.
+                       return ( this.get = hookFn ).apply( this, arguments );
+               }
+       };
+}
+
+return addGetHookIf;
+
+} );
diff --git a/js/jquery/src/css/adjustCSS.js b/js/jquery/src/css/adjustCSS.js
new file mode 100644 (file)
index 0000000..ded3a16
--- /dev/null
@@ -0,0 +1,71 @@
+define( [
+       "../core",
+       "../var/rcssNum"
+], function( jQuery, rcssNum ) {
+
+"use strict";
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+       var adjusted,
+               scale = 1,
+               maxIterations = 20,
+               currentValue = tween ?
+                       function() {
+                               return tween.cur();
+                       } :
+                       function() {
+                               return jQuery.css( elem, prop, "" );
+                       },
+               initial = currentValue(),
+               unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+               // Starting value computation is required for potential unit mismatches
+               initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+                       rcssNum.exec( jQuery.css( elem, prop ) );
+
+       if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+               // Trust units reported by jQuery.css
+               unit = unit || initialInUnit[ 3 ];
+
+               // Make sure we update the tween properties later on
+               valueParts = valueParts || [];
+
+               // Iteratively approximate from a nonzero starting point
+               initialInUnit = +initial || 1;
+
+               do {
+
+                       // If previous iteration zeroed out, double until we get *something*.
+                       // Use string for doubling so we don't accidentally see scale as unchanged below
+                       scale = scale || ".5";
+
+                       // Adjust and apply
+                       initialInUnit = initialInUnit / scale;
+                       jQuery.style( elem, prop, initialInUnit + unit );
+
+               // Update scale, tolerating zero or NaN from tween.cur()
+               // Break the loop if scale is unchanged or perfect, or if we've just had enough.
+               } while (
+                       scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+               );
+       }
+
+       if ( valueParts ) {
+               initialInUnit = +initialInUnit || +initial || 0;
+
+               // Apply relative offset (+=/-=) if specified
+               adjusted = valueParts[ 1 ] ?
+                       initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+                       +valueParts[ 2 ];
+               if ( tween ) {
+                       tween.unit = unit;
+                       tween.start = initialInUnit;
+                       tween.end = adjusted;
+               }
+       }
+       return adjusted;
+}
+
+return adjustCSS;
+} );
diff --git a/js/jquery/src/css/curCSS.js b/js/jquery/src/css/curCSS.js
new file mode 100644 (file)
index 0000000..313da42
--- /dev/null
@@ -0,0 +1,59 @@
+define( [
+       "../core",
+       "./var/rnumnonpx",
+       "./var/rmargin",
+       "./var/getStyles",
+       "./support",
+       "../selector" // Get jQuery.contains
+], function( jQuery, rnumnonpx, rmargin, getStyles, support ) {
+
+"use strict";
+
+function curCSS( elem, name, computed ) {
+       var width, minWidth, maxWidth, ret,
+               style = elem.style;
+
+       computed = computed || getStyles( elem );
+
+       // Support: IE <=9 only
+       // getPropertyValue is only needed for .css('filter') (#12537)
+       if ( computed ) {
+               ret = computed.getPropertyValue( name ) || computed[ name ];
+
+               if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+                       ret = jQuery.style( elem, name );
+               }
+
+               // A tribute to the "awesome hack by Dean Edwards"
+               // Android Browser returns percentage for some values,
+               // but width seems to be reliably pixels.
+               // This is against the CSSOM draft spec:
+               // https://drafts.csswg.org/cssom/#resolved-values
+               if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+                       // Remember the original values
+                       width = style.width;
+                       minWidth = style.minWidth;
+                       maxWidth = style.maxWidth;
+
+                       // Put in the new values to get a computed value out
+                       style.minWidth = style.maxWidth = style.width = ret;
+                       ret = computed.width;
+
+                       // Revert the changed values
+                       style.width = width;
+                       style.minWidth = minWidth;
+                       style.maxWidth = maxWidth;
+               }
+       }
+
+       return ret !== undefined ?
+
+               // Support: IE <=9 - 11 only
+               // IE returns zIndex value as an integer.
+               ret + "" :
+               ret;
+}
+
+return curCSS;
+} );
diff --git a/js/jquery/src/css/defaultDisplay.js b/js/jquery/src/css/defaultDisplay.js
new file mode 100644 (file)
index 0000000..b1fb577
--- /dev/null
@@ -0,0 +1,72 @@
+define( [
+       "../core",
+       "../var/document",
+       "../manipulation" // appendTo
+], function( jQuery, document ) {
+
+var iframe,
+       elemdisplay = {
+
+               // Support: Firefox
+               // We have to pre-define these values for FF (#10227)
+               HTML: "block",
+               BODY: "block"
+       };
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+       var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+               display = jQuery.css( elem[ 0 ], "display" );
+
+       // We don't have any data stored on the element,
+       // so use "detach" method as fast way to get rid of the element
+       elem.detach();
+
+       return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+       var doc = document,
+               display = elemdisplay[ nodeName ];
+
+       if ( !display ) {
+               display = actualDisplay( nodeName, doc );
+
+               // If the simple way fails, read from inside an iframe
+               if ( display === "none" || !display ) {
+
+                       // Use the already-created iframe if possible
+                       iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) )
+                               .appendTo( doc.documentElement );
+
+                       // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+                       doc = iframe[ 0 ].contentDocument;
+
+                       // Support: IE
+                       doc.write();
+                       doc.close();
+
+                       display = actualDisplay( nodeName, doc );
+                       iframe.detach();
+               }
+
+               // Store the correct default display
+               elemdisplay[ nodeName ] = display;
+       }
+
+       return display;
+}
+
+return defaultDisplay;
+} );
diff --git a/js/jquery/src/css/hiddenVisibleSelectors.js b/js/jquery/src/css/hiddenVisibleSelectors.js
new file mode 100644 (file)
index 0000000..d7a9339
--- /dev/null
@@ -0,0 +1,15 @@
+define( [
+       "../core",
+       "../selector"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+       return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+       return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+} );
diff --git a/js/jquery/src/css/showHide.js b/js/jquery/src/css/showHide.js
new file mode 100644 (file)
index 0000000..3eeafef
--- /dev/null
@@ -0,0 +1,105 @@
+define( [
+       "../core",
+       "../data/var/dataPriv",
+       "../css/var/isHiddenWithinTree"
+], function( jQuery, dataPriv, isHiddenWithinTree ) {
+
+"use strict";
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+       var temp,
+               doc = elem.ownerDocument,
+               nodeName = elem.nodeName,
+               display = defaultDisplayMap[ nodeName ];
+
+       if ( display ) {
+               return display;
+       }
+
+       temp = doc.body.appendChild( doc.createElement( nodeName ) );
+       display = jQuery.css( temp, "display" );
+
+       temp.parentNode.removeChild( temp );
+
+       if ( display === "none" ) {
+               display = "block";
+       }
+       defaultDisplayMap[ nodeName ] = display;
+
+       return display;
+}
+
+function showHide( elements, show ) {
+       var display, elem,
+               values = [],
+               index = 0,
+               length = elements.length;
+
+       // Determine new display value for elements that need to change
+       for ( ; index < length; index++ ) {
+               elem = elements[ index ];
+               if ( !elem.style ) {
+                       continue;
+               }
+
+               display = elem.style.display;
+               if ( show ) {
+
+                       // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+                       // check is required in this first loop unless we have a nonempty display value (either
+                       // inline or about-to-be-restored)
+                       if ( display === "none" ) {
+                               values[ index ] = dataPriv.get( elem, "display" ) || null;
+                               if ( !values[ index ] ) {
+                                       elem.style.display = "";
+                               }
+                       }
+                       if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+                               values[ index ] = getDefaultDisplay( elem );
+                       }
+               } else {
+                       if ( display !== "none" ) {
+                               values[ index ] = "none";
+
+                               // Remember what we're overwriting
+                               dataPriv.set( elem, "display", display );
+                       }
+               }
+       }
+
+       // Set the display of the elements in a second loop to avoid constant reflow
+       for ( index = 0; index < length; index++ ) {
+               if ( values[ index ] != null ) {
+                       elements[ index ].style.display = values[ index ];
+               }
+       }
+
+       return elements;
+}
+
+jQuery.fn.extend( {
+       show: function() {
+               return showHide( this, true );
+       },
+       hide: function() {
+               return showHide( this );
+       },
+       toggle: function( state ) {
+               if ( typeof state === "boolean" ) {
+                       return state ? this.show() : this.hide();
+               }
+
+               return this.each( function() {
+                       if ( isHiddenWithinTree( this ) ) {
+                               jQuery( this ).show();
+                       } else {
+                               jQuery( this ).hide();
+                       }
+               } );
+       }
+} );
+
+return showHide;
+} );
diff --git a/js/jquery/src/css/support.js b/js/jquery/src/css/support.js
new file mode 100644 (file)
index 0000000..883d0e5
--- /dev/null
@@ -0,0 +1,89 @@
+define( [
+       "../core",
+       "../var/document",
+       "../var/documentElement",
+       "../var/support"
+], function( jQuery, document, documentElement, support ) {
+
+"use strict";
+
+( function() {
+
+       // Executing both pixelPosition & boxSizingReliable tests require only one layout
+       // so they're executed at the same time to save the second computation.
+       function computeStyleTests() {
+
+               // This is a singleton, we need to execute it only once
+               if ( !div ) {
+                       return;
+               }
+
+               div.style.cssText =
+                       "box-sizing:border-box;" +
+                       "position:relative;display:block;" +
+                       "margin:auto;border:1px;padding:1px;" +
+                       "top:1%;width:50%";
+               div.innerHTML = "";
+               documentElement.appendChild( container );
+
+               var divStyle = window.getComputedStyle( div );
+               pixelPositionVal = divStyle.top !== "1%";
+
+               // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+               reliableMarginLeftVal = divStyle.marginLeft === "2px";
+               boxSizingReliableVal = divStyle.width === "4px";
+
+               // Support: Android 4.0 - 4.3 only
+               // Some styles come back with percentage values, even though they shouldn't
+               div.style.marginRight = "50%";
+               pixelMarginRightVal = divStyle.marginRight === "4px";
+
+               documentElement.removeChild( container );
+
+               // Nullify the div so it wouldn't be stored in the memory and
+               // it will also be a sign that checks already performed
+               div = null;
+       }
+
+       var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+               container = document.createElement( "div" ),
+               div = document.createElement( "div" );
+
+       // Finish early in limited (non-browser) environments
+       if ( !div.style ) {
+               return;
+       }
+
+       // Support: IE <=9 - 11 only
+       // Style of cloned element affects source element cloned (#8908)
+       div.style.backgroundClip = "content-box";
+       div.cloneNode( true ).style.backgroundClip = "";
+       support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+       container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+               "padding:0;margin-top:1px;position:absolute";
+       container.appendChild( div );
+
+       jQuery.extend( support, {
+               pixelPosition: function() {
+                       computeStyleTests();
+                       return pixelPositionVal;
+               },
+               boxSizingReliable: function() {
+                       computeStyleTests();
+                       return boxSizingReliableVal;
+               },
+               pixelMarginRight: function() {
+                       computeStyleTests();
+                       return pixelMarginRightVal;
+               },
+               reliableMarginLeft: function() {
+                       computeStyleTests();
+                       return reliableMarginLeftVal;
+               }
+       } );
+} )();
+
+return support;
+
+} );
diff --git a/js/jquery/src/css/var/cssExpand.js b/js/jquery/src/css/var/cssExpand.js
new file mode 100644 (file)
index 0000000..dd2007c
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return [ "Top", "Right", "Bottom", "Left" ];
+} );
diff --git a/js/jquery/src/css/var/getStyles.js b/js/jquery/src/css/var/getStyles.js
new file mode 100644 (file)
index 0000000..0b893ac
--- /dev/null
@@ -0,0 +1,17 @@
+define( function() {
+       "use strict";
+
+       return function( elem ) {
+
+               // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+               // IE throws on elements created in popups
+               // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+               var view = elem.ownerDocument.defaultView;
+
+               if ( !view || !view.opener ) {
+                       view = window;
+               }
+
+               return view.getComputedStyle( elem );
+       };
+} );
diff --git a/js/jquery/src/css/var/isHidden.js b/js/jquery/src/css/var/isHidden.js
new file mode 100644 (file)
index 0000000..7997eff
--- /dev/null
@@ -0,0 +1,16 @@
+define( [
+       "../../core",
+       "../../selector"
+
+       // css is assumed
+], function( jQuery ) {
+
+       return function( elem, el ) {
+
+               // isHidden might be called from jQuery#filter function;
+               // in that case, element will be second argument
+               elem = el || elem;
+               return jQuery.css( elem, "display" ) === "none" ||
+                       !jQuery.contains( elem.ownerDocument, elem );
+       };
+} );
diff --git a/js/jquery/src/css/var/isHiddenWithinTree.js b/js/jquery/src/css/var/isHiddenWithinTree.js
new file mode 100644 (file)
index 0000000..3cfb93e
--- /dev/null
@@ -0,0 +1,34 @@
+define( [
+       "../../core",
+       "../../selector"
+
+       // css is assumed
+], function( jQuery ) {
+       "use strict";
+
+       // isHiddenWithinTree reports if an element has a non-"none" display style (inline and/or
+       // through the CSS cascade), which is useful in deciding whether or not to make it visible.
+       // It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:
+       // * A hidden ancestor does not force an element to be classified as hidden.
+       // * Being disconnected from the document does not force an element to be classified as hidden.
+       // These differences improve the behavior of .toggle() et al. when applied to elements that are
+       // detached or contained within hidden ancestors (gh-2404, gh-2863).
+       return function( elem, el ) {
+
+               // isHiddenWithinTree might be called from jQuery#filter function;
+               // in that case, element will be second argument
+               elem = el || elem;
+
+               // Inline style trumps all
+               return elem.style.display === "none" ||
+                       elem.style.display === "" &&
+
+                       // Otherwise, check computed style
+                       // Support: Firefox <=43 - 45
+                       // Disconnected elements can have computed display: none, so first confirm that elem is
+                       // in the document.
+                       jQuery.contains( elem.ownerDocument, elem ) &&
+
+                       jQuery.css( elem, "display" ) === "none";
+       };
+} );
diff --git a/js/jquery/src/css/var/rmargin.js b/js/jquery/src/css/var/rmargin.js
new file mode 100644 (file)
index 0000000..0fbfbd8
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return ( /^margin/ );
+} );
diff --git a/js/jquery/src/css/var/rnumnonpx.js b/js/jquery/src/css/var/rnumnonpx.js
new file mode 100644 (file)
index 0000000..056cda7
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "../../var/pnum"
+], function( pnum ) {
+       "use strict";
+
+       return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+} );
diff --git a/js/jquery/src/css/var/swap.js b/js/jquery/src/css/var/swap.js
new file mode 100644 (file)
index 0000000..1a9556b
--- /dev/null
@@ -0,0 +1,26 @@
+define( function() {
+
+"use strict";
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+return function( elem, options, callback, args ) {
+       var ret, name,
+               old = {};
+
+       // Remember the old values, and insert the new ones
+       for ( name in options ) {
+               old[ name ] = elem.style[ name ];
+               elem.style[ name ] = options[ name ];
+       }
+
+       ret = callback.apply( elem, args || [] );
+
+       // Revert the old values
+       for ( name in options ) {
+               elem.style[ name ] = old[ name ];
+       }
+
+       return ret;
+};
+
+} );
diff --git a/js/jquery/src/data.js b/js/jquery/src/data.js
new file mode 100644 (file)
index 0000000..087ce4e
--- /dev/null
@@ -0,0 +1,179 @@
+define( [
+       "./core",
+       "./core/access",
+       "./data/var/dataPriv",
+       "./data/var/dataUser"
+], function( jQuery, access, dataPriv, dataUser ) {
+
+"use strict";
+
+//     Implementation Summary
+//
+//     1. Enforce API surface and semantic compatibility with 1.9.x branch
+//     2. Improve the module's maintainability by reducing the storage
+//             paths to a single mechanism.
+//     3. Use the same single mechanism to support "private" and "user" data.
+//     4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//     5. Avoid exposing implementation details on user objects (eg. expando properties)
+//     6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+       rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+       if ( data === "true" ) {
+               return true;
+       }
+
+       if ( data === "false" ) {
+               return false;
+       }
+
+       if ( data === "null" ) {
+               return null;
+       }
+
+       // Only convert to a number if it doesn't change the string
+       if ( data === +data + "" ) {
+               return +data;
+       }
+
+       if ( rbrace.test( data ) ) {
+               return JSON.parse( data );
+       }
+
+       return data;
+}
+
+function dataAttr( elem, key, data ) {
+       var name;
+
+       // If nothing was found internally, try to fetch any
+       // data from the HTML5 data-* attribute
+       if ( data === undefined && elem.nodeType === 1 ) {
+               name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+               data = elem.getAttribute( name );
+
+               if ( typeof data === "string" ) {
+                       try {
+                               data = getData( data );
+                       } catch ( e ) {}
+
+                       // Make sure we set the data so it isn't changed later
+                       dataUser.set( elem, key, data );
+               } else {
+                       data = undefined;
+               }
+       }
+       return data;
+}
+
+jQuery.extend( {
+       hasData: function( elem ) {
+               return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+       },
+
+       data: function( elem, name, data ) {
+               return dataUser.access( elem, name, data );
+       },
+
+       removeData: function( elem, name ) {
+               dataUser.remove( elem, name );
+       },
+
+       // TODO: Now that all calls to _data and _removeData have been replaced
+       // with direct calls to dataPriv methods, these can be deprecated.
+       _data: function( elem, name, data ) {
+               return dataPriv.access( elem, name, data );
+       },
+
+       _removeData: function( elem, name ) {
+               dataPriv.remove( elem, name );
+       }
+} );
+
+jQuery.fn.extend( {
+       data: function( key, value ) {
+               var i, name, data,
+                       elem = this[ 0 ],
+                       attrs = elem && elem.attributes;
+
+               // Gets all values
+               if ( key === undefined ) {
+                       if ( this.length ) {
+                               data = dataUser.get( elem );
+
+                               if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+                                       i = attrs.length;
+                                       while ( i-- ) {
+
+                                               // Support: IE 11 only
+                                               // The attrs elements can be null (#14894)
+                                               if ( attrs[ i ] ) {
+                                                       name = attrs[ i ].name;
+                                                       if ( name.indexOf( "data-" ) === 0 ) {
+                                                               name = jQuery.camelCase( name.slice( 5 ) );
+                                                               dataAttr( elem, name, data[ name ] );
+                                                       }
+                                               }
+                                       }
+                                       dataPriv.set( elem, "hasDataAttrs", true );
+                               }
+                       }
+
+                       return data;
+               }
+
+               // Sets multiple values
+               if ( typeof key === "object" ) {
+                       return this.each( function() {
+                               dataUser.set( this, key );
+                       } );
+               }
+
+               return access( this, function( value ) {
+                       var data;
+
+                       // The calling jQuery object (element matches) is not empty
+                       // (and therefore has an element appears at this[ 0 ]) and the
+                       // `value` parameter was not undefined. An empty jQuery object
+                       // will result in `undefined` for elem = this[ 0 ] which will
+                       // throw an exception if an attempt to read a data cache is made.
+                       if ( elem && value === undefined ) {
+
+                               // Attempt to get data from the cache
+                               // The key will always be camelCased in Data
+                               data = dataUser.get( elem, key );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // Attempt to "discover" the data in
+                               // HTML5 custom data-* attrs
+                               data = dataAttr( elem, key );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // We tried really hard, but the data doesn't exist.
+                               return;
+                       }
+
+                       // Set the data...
+                       this.each( function() {
+
+                               // We always store the camelCased key
+                               dataUser.set( this, key, value );
+                       } );
+               }, null, value, arguments.length > 1, null, true );
+       },
+
+       removeData: function( key ) {
+               return this.each( function() {
+                       dataUser.remove( this, key );
+               } );
+       }
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/data/Data.js b/js/jquery/src/data/Data.js
new file mode 100644 (file)
index 0000000..43ae016
--- /dev/null
@@ -0,0 +1,161 @@
+define( [
+       "../core",
+       "../var/rnothtmlwhite",
+       "./var/acceptData"
+], function( jQuery, rnothtmlwhite, acceptData ) {
+
+"use strict";
+
+function Data() {
+       this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+       cache: function( owner ) {
+
+               // Check if the owner object already has a cache
+               var value = owner[ this.expando ];
+
+               // If not, create one
+               if ( !value ) {
+                       value = {};
+
+                       // We can accept data for non-element nodes in modern browsers,
+                       // but we should not, see #8335.
+                       // Always return an empty object.
+                       if ( acceptData( owner ) ) {
+
+                               // If it is a node unlikely to be stringify-ed or looped over
+                               // use plain assignment
+                               if ( owner.nodeType ) {
+                                       owner[ this.expando ] = value;
+
+                               // Otherwise secure it in a non-enumerable property
+                               // configurable must be true to allow the property to be
+                               // deleted when data is removed
+                               } else {
+                                       Object.defineProperty( owner, this.expando, {
+                                               value: value,
+                                               configurable: true
+                                       } );
+                               }
+                       }
+               }
+
+               return value;
+       },
+       set: function( owner, data, value ) {
+               var prop,
+                       cache = this.cache( owner );
+
+               // Handle: [ owner, key, value ] args
+               // Always use camelCase key (gh-2257)
+               if ( typeof data === "string" ) {
+                       cache[ jQuery.camelCase( data ) ] = value;
+
+               // Handle: [ owner, { properties } ] args
+               } else {
+
+                       // Copy the properties one-by-one to the cache object
+                       for ( prop in data ) {
+                               cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+                       }
+               }
+               return cache;
+       },
+       get: function( owner, key ) {
+               return key === undefined ?
+                       this.cache( owner ) :
+
+                       // Always use camelCase key (gh-2257)
+                       owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+       },
+       access: function( owner, key, value ) {
+
+               // In cases where either:
+               //
+               //   1. No key was specified
+               //   2. A string key was specified, but no value provided
+               //
+               // Take the "read" path and allow the get method to determine
+               // which value to return, respectively either:
+               //
+               //   1. The entire cache object
+               //   2. The data stored at the key
+               //
+               if ( key === undefined ||
+                               ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+                       return this.get( owner, key );
+               }
+
+               // When the key is not a string, or both a key and value
+               // are specified, set or extend (existing objects) with either:
+               //
+               //   1. An object of properties
+               //   2. A key and value
+               //
+               this.set( owner, key, value );
+
+               // Since the "set" path can have two possible entry points
+               // return the expected data based on which path was taken[*]
+               return value !== undefined ? value : key;
+       },
+       remove: function( owner, key ) {
+               var i,
+                       cache = owner[ this.expando ];
+
+               if ( cache === undefined ) {
+                       return;
+               }
+
+               if ( key !== undefined ) {
+
+                       // Support array or space separated string of keys
+                       if ( jQuery.isArray( key ) ) {
+
+                               // If key is an array of keys...
+                               // We always set camelCase keys, so remove that.
+                               key = key.map( jQuery.camelCase );
+                       } else {
+                               key = jQuery.camelCase( key );
+
+                               // If a key with the spaces exists, use it.
+                               // Otherwise, create an array by matching non-whitespace
+                               key = key in cache ?
+                                       [ key ] :
+                                       ( key.match( rnothtmlwhite ) || [] );
+                       }
+
+                       i = key.length;
+
+                       while ( i-- ) {
+                               delete cache[ key[ i ] ];
+                       }
+               }
+
+               // Remove the expando if there's no more data
+               if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+                       // Support: Chrome <=35 - 45
+                       // Webkit & Blink performance suffers when deleting properties
+                       // from DOM nodes, so set to undefined instead
+                       // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+                       if ( owner.nodeType ) {
+                               owner[ this.expando ] = undefined;
+                       } else {
+                               delete owner[ this.expando ];
+                       }
+               }
+       },
+       hasData: function( owner ) {
+               var cache = owner[ this.expando ];
+               return cache !== undefined && !jQuery.isEmptyObject( cache );
+       }
+};
+
+return Data;
+} );
diff --git a/js/jquery/src/data/var/acceptData.js b/js/jquery/src/data/var/acceptData.js
new file mode 100644 (file)
index 0000000..e00f753
--- /dev/null
@@ -0,0 +1,19 @@
+define( function() {
+
+"use strict";
+
+/**
+ * Determines whether an object can have data
+ */
+return function( owner ) {
+
+       // Accepts only:
+       //  - Node
+       //    - Node.ELEMENT_NODE
+       //    - Node.DOCUMENT_NODE
+       //  - Object
+       //    - Any
+       return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+} );
diff --git a/js/jquery/src/data/var/dataPriv.js b/js/jquery/src/data/var/dataPriv.js
new file mode 100644 (file)
index 0000000..72713c8
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "../Data"
+], function( Data ) {
+       "use strict";
+
+       return new Data();
+} );
diff --git a/js/jquery/src/data/var/dataUser.js b/js/jquery/src/data/var/dataUser.js
new file mode 100644 (file)
index 0000000..72713c8
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "../Data"
+], function( Data ) {
+       "use strict";
+
+       return new Data();
+} );
diff --git a/js/jquery/src/deferred.js b/js/jquery/src/deferred.js
new file mode 100644 (file)
index 0000000..8139515
--- /dev/null
@@ -0,0 +1,389 @@
+define( [
+       "./core",
+       "./var/slice",
+       "./callbacks"
+], function( jQuery, slice ) {
+
+"use strict";
+
+function Identity( v ) {
+       return v;
+}
+function Thrower( ex ) {
+       throw ex;
+}
+
+function adoptValue( value, resolve, reject ) {
+       var method;
+
+       try {
+
+               // Check for promise aspect first to privilege synchronous behavior
+               if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+                       method.call( value ).done( resolve ).fail( reject );
+
+               // Other thenables
+               } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+                       method.call( value, resolve, reject );
+
+               // Other non-thenables
+               } else {
+
+                       // Support: Android 4.0 only
+                       // Strict mode functions invoked without .call/.apply get global-object context
+                       resolve.call( undefined, value );
+               }
+
+       // For Promises/A+, convert exceptions into rejections
+       // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+       // Deferred#then to conditionally suppress rejection.
+       } catch ( value ) {
+
+               // Support: Android 4.0 only
+               // Strict mode functions invoked without .call/.apply get global-object context
+               reject.call( undefined, value );
+       }
+}
+
+jQuery.extend( {
+
+       Deferred: function( func ) {
+               var tuples = [
+
+                               // action, add listener, callbacks,
+                               // ... .then handlers, argument index, [final state]
+                               [ "notify", "progress", jQuery.Callbacks( "memory" ),
+                                       jQuery.Callbacks( "memory" ), 2 ],
+                               [ "resolve", "done", jQuery.Callbacks( "once memory" ),
+                                       jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+                               [ "reject", "fail", jQuery.Callbacks( "once memory" ),
+                                       jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+                       ],
+                       state = "pending",
+                       promise = {
+                               state: function() {
+                                       return state;
+                               },
+                               always: function() {
+                                       deferred.done( arguments ).fail( arguments );
+                                       return this;
+                               },
+                               "catch": function( fn ) {
+                                       return promise.then( null, fn );
+                               },
+
+                               // Keep pipe for back-compat
+                               pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+                                       var fns = arguments;
+
+                                       return jQuery.Deferred( function( newDefer ) {
+                                               jQuery.each( tuples, function( i, tuple ) {
+
+                                                       // Map tuples (progress, done, fail) to arguments (done, fail, progress)
+                                                       var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+                                                       // deferred.progress(function() { bind to newDefer or newDefer.notify })
+                                                       // deferred.done(function() { bind to newDefer or newDefer.resolve })
+                                                       // deferred.fail(function() { bind to newDefer or newDefer.reject })
+                                                       deferred[ tuple[ 1 ] ]( function() {
+                                                               var returned = fn && fn.apply( this, arguments );
+                                                               if ( returned && jQuery.isFunction( returned.promise ) ) {
+                                                                       returned.promise()
+                                                                               .progress( newDefer.notify )
+                                                                               .done( newDefer.resolve )
+                                                                               .fail( newDefer.reject );
+                                                               } else {
+                                                                       newDefer[ tuple[ 0 ] + "With" ](
+                                                                               this,
+                                                                               fn ? [ returned ] : arguments
+                                                                       );
+                                                               }
+                                                       } );
+                                               } );
+                                               fns = null;
+                                       } ).promise();
+                               },
+                               then: function( onFulfilled, onRejected, onProgress ) {
+                                       var maxDepth = 0;
+                                       function resolve( depth, deferred, handler, special ) {
+                                               return function() {
+                                                       var that = this,
+                                                               args = arguments,
+                                                               mightThrow = function() {
+                                                                       var returned, then;
+
+                                                                       // Support: Promises/A+ section 2.3.3.3.3
+                                                                       // https://promisesaplus.com/#point-59
+                                                                       // Ignore double-resolution attempts
+                                                                       if ( depth < maxDepth ) {
+                                                                               return;
+                                                                       }
+
+                                                                       returned = handler.apply( that, args );
+
+                                                                       // Support: Promises/A+ section 2.3.1
+                                                                       // https://promisesaplus.com/#point-48
+                                                                       if ( returned === deferred.promise() ) {
+                                                                               throw new TypeError( "Thenable self-resolution" );
+                                                                       }
+
+                                                                       // Support: Promises/A+ sections 2.3.3.1, 3.5
+                                                                       // https://promisesaplus.com/#point-54
+                                                                       // https://promisesaplus.com/#point-75
+                                                                       // Retrieve `then` only once
+                                                                       then = returned &&
+
+                                                                               // Support: Promises/A+ section 2.3.4
+                                                                               // https://promisesaplus.com/#point-64
+                                                                               // Only check objects and functions for thenability
+                                                                               ( typeof returned === "object" ||
+                                                                                       typeof returned === "function" ) &&
+                                                                               returned.then;
+
+                                                                       // Handle a returned thenable
+                                                                       if ( jQuery.isFunction( then ) ) {
+
+                                                                               // Special processors (notify) just wait for resolution
+                                                                               if ( special ) {
+                                                                                       then.call(
+                                                                                               returned,
+                                                                                               resolve( maxDepth, deferred, Identity, special ),
+                                                                                               resolve( maxDepth, deferred, Thrower, special )
+                                                                                       );
+
+                                                                               // Normal processors (resolve) also hook into progress
+                                                                               } else {
+
+                                                                                       // ...and disregard older resolution values
+                                                                                       maxDepth++;
+
+                                                                                       then.call(
+                                                                                               returned,
+                                                                                               resolve( maxDepth, deferred, Identity, special ),
+                                                                                               resolve( maxDepth, deferred, Thrower, special ),
+                                                                                               resolve( maxDepth, deferred, Identity,
+                                                                                                       deferred.notifyWith )
+                                                                                       );
+                                                                               }
+
+                                                                       // Handle all other returned values
+                                                                       } else {
+
+                                                                               // Only substitute handlers pass on context
+                                                                               // and multiple values (non-spec behavior)
+                                                                               if ( handler !== Identity ) {
+                                                                                       that = undefined;
+                                                                                       args = [ returned ];
+                                                                               }
+
+                                                                               // Process the value(s)
+                                                                               // Default process is resolve
+                                                                               ( special || deferred.resolveWith )( that, args );
+                                                                       }
+                                                               },
+
+                                                               // Only normal processors (resolve) catch and reject exceptions
+                                                               process = special ?
+                                                                       mightThrow :
+                                                                       function() {
+                                                                               try {
+                                                                                       mightThrow();
+                                                                               } catch ( e ) {
+
+                                                                                       if ( jQuery.Deferred.exceptionHook ) {
+                                                                                               jQuery.Deferred.exceptionHook( e,
+                                                                                                       process.stackTrace );
+                                                                                       }
+
+                                                                                       // Support: Promises/A+ section 2.3.3.3.4.1
+                                                                                       // https://promisesaplus.com/#point-61
+                                                                                       // Ignore post-resolution exceptions
+                                                                                       if ( depth + 1 >= maxDepth ) {
+
+                                                                                               // Only substitute handlers pass on context
+                                                                                               // and multiple values (non-spec behavior)
+                                                                                               if ( handler !== Thrower ) {
+                                                                                                       that = undefined;
+                                                                                                       args = [ e ];
+                                                                                               }
+
+                                                                                               deferred.rejectWith( that, args );
+                                                                                       }
+                                                                               }
+                                                                       };
+
+                                                       // Support: Promises/A+ section 2.3.3.3.1
+                                                       // https://promisesaplus.com/#point-57
+                                                       // Re-resolve promises immediately to dodge false rejection from
+                                                       // subsequent errors
+                                                       if ( depth ) {
+                                                               process();
+                                                       } else {
+
+                                                               // Call an optional hook to record the stack, in case of exception
+                                                               // since it's otherwise lost when execution goes async
+                                                               if ( jQuery.Deferred.getStackHook ) {
+                                                                       process.stackTrace = jQuery.Deferred.getStackHook();
+                                                               }
+                                                               window.setTimeout( process );
+                                                       }
+                                               };
+                                       }
+
+                                       return jQuery.Deferred( function( newDefer ) {
+
+                                               // progress_handlers.add( ... )
+                                               tuples[ 0 ][ 3 ].add(
+                                                       resolve(
+                                                               0,
+                                                               newDefer,
+                                                               jQuery.isFunction( onProgress ) ?
+                                                                       onProgress :
+                                                                       Identity,
+                                                               newDefer.notifyWith
+                                                       )
+                                               );
+
+                                               // fulfilled_handlers.add( ... )
+                                               tuples[ 1 ][ 3 ].add(
+                                                       resolve(
+                                                               0,
+                                                               newDefer,
+                                                               jQuery.isFunction( onFulfilled ) ?
+                                                                       onFulfilled :
+                                                                       Identity
+                                                       )
+                                               );
+
+                                               // rejected_handlers.add( ... )
+                                               tuples[ 2 ][ 3 ].add(
+                                                       resolve(
+                                                               0,
+                                                               newDefer,
+                                                               jQuery.isFunction( onRejected ) ?
+                                                                       onRejected :
+                                                                       Thrower
+                                                       )
+                                               );
+                                       } ).promise();
+                               },
+
+                               // Get a promise for this deferred
+                               // If obj is provided, the promise aspect is added to the object
+                               promise: function( obj ) {
+                                       return obj != null ? jQuery.extend( obj, promise ) : promise;
+                               }
+                       },
+                       deferred = {};
+
+               // Add list-specific methods
+               jQuery.each( tuples, function( i, tuple ) {
+                       var list = tuple[ 2 ],
+                               stateString = tuple[ 5 ];
+
+                       // promise.progress = list.add
+                       // promise.done = list.add
+                       // promise.fail = list.add
+                       promise[ tuple[ 1 ] ] = list.add;
+
+                       // Handle state
+                       if ( stateString ) {
+                               list.add(
+                                       function() {
+
+                                               // state = "resolved" (i.e., fulfilled)
+                                               // state = "rejected"
+                                               state = stateString;
+                                       },
+
+                                       // rejected_callbacks.disable
+                                       // fulfilled_callbacks.disable
+                                       tuples[ 3 - i ][ 2 ].disable,
+
+                                       // progress_callbacks.lock
+                                       tuples[ 0 ][ 2 ].lock
+                               );
+                       }
+
+                       // progress_handlers.fire
+                       // fulfilled_handlers.fire
+                       // rejected_handlers.fire
+                       list.add( tuple[ 3 ].fire );
+
+                       // deferred.notify = function() { deferred.notifyWith(...) }
+                       // deferred.resolve = function() { deferred.resolveWith(...) }
+                       // deferred.reject = function() { deferred.rejectWith(...) }
+                       deferred[ tuple[ 0 ] ] = function() {
+                               deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+                               return this;
+                       };
+
+                       // deferred.notifyWith = list.fireWith
+                       // deferred.resolveWith = list.fireWith
+                       // deferred.rejectWith = list.fireWith
+                       deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+               } );
+
+               // Make the deferred a promise
+               promise.promise( deferred );
+
+               // Call given func if any
+               if ( func ) {
+                       func.call( deferred, deferred );
+               }
+
+               // All done!
+               return deferred;
+       },
+
+       // Deferred helper
+       when: function( singleValue ) {
+               var
+
+                       // count of uncompleted subordinates
+                       remaining = arguments.length,
+
+                       // count of unprocessed arguments
+                       i = remaining,
+
+                       // subordinate fulfillment data
+                       resolveContexts = Array( i ),
+                       resolveValues = slice.call( arguments ),
+
+                       // the master Deferred
+                       master = jQuery.Deferred(),
+
+                       // subordinate callback factory
+                       updateFunc = function( i ) {
+                               return function( value ) {
+                                       resolveContexts[ i ] = this;
+                                       resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+                                       if ( !( --remaining ) ) {
+                                               master.resolveWith( resolveContexts, resolveValues );
+                                       }
+                               };
+                       };
+
+               // Single- and empty arguments are adopted like Promise.resolve
+               if ( remaining <= 1 ) {
+                       adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
+
+                       // Use .then() to unwrap secondary thenables (cf. gh-3000)
+                       if ( master.state() === "pending" ||
+                               jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+                               return master.then();
+                       }
+               }
+
+               // Multiple arguments are aggregated like Promise.all array elements
+               while ( i-- ) {
+                       adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+               }
+
+               return master.promise();
+       }
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/deferred/exceptionHook.js b/js/jquery/src/deferred/exceptionHook.js
new file mode 100644 (file)
index 0000000..6dbdc85
--- /dev/null
@@ -0,0 +1,21 @@
+define( [
+       "../core",
+       "../deferred"
+], function( jQuery ) {
+
+"use strict";
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+       // Support: IE 8 - 9 only
+       // Console exists when dev tools are open, which can happen at any time
+       if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+               window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+       }
+};
+
+} );
diff --git a/js/jquery/src/deprecated.js b/js/jquery/src/deprecated.js
new file mode 100644 (file)
index 0000000..9fcc6b7
--- /dev/null
@@ -0,0 +1,30 @@
+define( [
+       "./core"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.fn.extend( {
+
+       bind: function( types, data, fn ) {
+               return this.on( types, null, data, fn );
+       },
+       unbind: function( types, fn ) {
+               return this.off( types, null, fn );
+       },
+
+       delegate: function( selector, types, data, fn ) {
+               return this.on( types, selector, data, fn );
+       },
+       undelegate: function( selector, types, fn ) {
+
+               // ( namespace ) or ( selector, types [, fn] )
+               return arguments.length === 1 ?
+                       this.off( selector, "**" ) :
+                       this.off( types, selector || "**", fn );
+       }
+} );
+
+jQuery.parseJSON = JSON.parse;
+
+} );
diff --git a/js/jquery/src/dimensions.js b/js/jquery/src/dimensions.js
new file mode 100644 (file)
index 0000000..46e7b1c
--- /dev/null
@@ -0,0 +1,56 @@
+define( [
+       "./core",
+       "./core/access",
+       "./css"
+], function( jQuery, access ) {
+
+"use strict";
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+       jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+               function( defaultExtra, funcName ) {
+
+               // Margin is only for outerHeight, outerWidth
+               jQuery.fn[ funcName ] = function( margin, value ) {
+                       var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+                               extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+                       return access( this, function( elem, type, value ) {
+                               var doc;
+
+                               if ( jQuery.isWindow( elem ) ) {
+
+                                       // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+                                       return funcName.indexOf( "outer" ) === 0 ?
+                                               elem[ "inner" + name ] :
+                                               elem.document.documentElement[ "client" + name ];
+                               }
+
+                               // Get document width or height
+                               if ( elem.nodeType === 9 ) {
+                                       doc = elem.documentElement;
+
+                                       // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+                                       // whichever is greatest
+                                       return Math.max(
+                                               elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+                                               elem.body[ "offset" + name ], doc[ "offset" + name ],
+                                               doc[ "client" + name ]
+                                       );
+                               }
+
+                               return value === undefined ?
+
+                                       // Get width or height on the element, requesting but not forcing parseFloat
+                                       jQuery.css( elem, type, extra ) :
+
+                                       // Set width or height on the element
+                                       jQuery.style( elem, type, value, extra );
+                       }, type, chainable ? margin : undefined, chainable );
+               };
+       } );
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/effects.js b/js/jquery/src/effects.js
new file mode 100644 (file)
index 0000000..68af96c
--- /dev/null
@@ -0,0 +1,693 @@
+define( [
+       "./core",
+       "./var/document",
+       "./var/rcssNum",
+       "./var/rnothtmlwhite",
+       "./css/var/cssExpand",
+       "./css/var/isHiddenWithinTree",
+       "./css/var/swap",
+       "./css/adjustCSS",
+       "./data/var/dataPriv",
+       "./css/showHide",
+
+       "./core/init",
+       "./queue",
+       "./deferred",
+       "./traversing",
+       "./manipulation",
+       "./css",
+       "./effects/Tween"
+], function( jQuery, document, rcssNum, rnothtmlwhite, cssExpand, isHiddenWithinTree, swap,
+       adjustCSS, dataPriv, showHide ) {
+
+"use strict";
+
+var
+       fxNow, timerId,
+       rfxtypes = /^(?:toggle|show|hide)$/,
+       rrun = /queueHooks$/;
+
+function raf() {
+       if ( timerId ) {
+               window.requestAnimationFrame( raf );
+               jQuery.fx.tick();
+       }
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+       window.setTimeout( function() {
+               fxNow = undefined;
+       } );
+       return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+       var which,
+               i = 0,
+               attrs = { height: type };
+
+       // If we include width, step value is 1 to do all cssExpand values,
+       // otherwise step value is 2 to skip over Left and Right
+       includeWidth = includeWidth ? 1 : 0;
+       for ( ; i < 4; i += 2 - includeWidth ) {
+               which = cssExpand[ i ];
+               attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+       }
+
+       if ( includeWidth ) {
+               attrs.opacity = attrs.width = type;
+       }
+
+       return attrs;
+}
+
+function createTween( value, prop, animation ) {
+       var tween,
+               collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+               index = 0,
+               length = collection.length;
+       for ( ; index < length; index++ ) {
+               if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+                       // We're done with this property
+                       return tween;
+               }
+       }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+       var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+               isBox = "width" in props || "height" in props,
+               anim = this,
+               orig = {},
+               style = elem.style,
+               hidden = elem.nodeType && isHiddenWithinTree( elem ),
+               dataShow = dataPriv.get( elem, "fxshow" );
+
+       // Queue-skipping animations hijack the fx hooks
+       if ( !opts.queue ) {
+               hooks = jQuery._queueHooks( elem, "fx" );
+               if ( hooks.unqueued == null ) {
+                       hooks.unqueued = 0;
+                       oldfire = hooks.empty.fire;
+                       hooks.empty.fire = function() {
+                               if ( !hooks.unqueued ) {
+                                       oldfire();
+                               }
+                       };
+               }
+               hooks.unqueued++;
+
+               anim.always( function() {
+
+                       // Ensure the complete handler is called before this completes
+                       anim.always( function() {
+                               hooks.unqueued--;
+                               if ( !jQuery.queue( elem, "fx" ).length ) {
+                                       hooks.empty.fire();
+                               }
+                       } );
+               } );
+       }
+
+       // Detect show/hide animations
+       for ( prop in props ) {
+               value = props[ prop ];
+               if ( rfxtypes.test( value ) ) {
+                       delete props[ prop ];
+                       toggle = toggle || value === "toggle";
+                       if ( value === ( hidden ? "hide" : "show" ) ) {
+
+                               // Pretend to be hidden if this is a "show" and
+                               // there is still data from a stopped show/hide
+                               if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+                                       hidden = true;
+
+                               // Ignore all other no-op show/hide data
+                               } else {
+                                       continue;
+                               }
+                       }
+                       orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+               }
+       }
+
+       // Bail out if this is a no-op like .hide().hide()
+       propTween = !jQuery.isEmptyObject( props );
+       if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+               return;
+       }
+
+       // Restrict "overflow" and "display" styles during box animations
+       if ( isBox && elem.nodeType === 1 ) {
+
+               // Support: IE <=9 - 11, Edge 12 - 13
+               // Record all 3 overflow attributes because IE does not infer the shorthand
+               // from identically-valued overflowX and overflowY
+               opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+               // Identify a display type, preferring old show/hide data over the CSS cascade
+               restoreDisplay = dataShow && dataShow.display;
+               if ( restoreDisplay == null ) {
+                       restoreDisplay = dataPriv.get( elem, "display" );
+               }
+               display = jQuery.css( elem, "display" );
+               if ( display === "none" ) {
+                       if ( restoreDisplay ) {
+                               display = restoreDisplay;
+                       } else {
+
+                               // Get nonempty value(s) by temporarily forcing visibility
+                               showHide( [ elem ], true );
+                               restoreDisplay = elem.style.display || restoreDisplay;
+                               display = jQuery.css( elem, "display" );
+                               showHide( [ elem ] );
+                       }
+               }
+
+               // Animate inline elements as inline-block
+               if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+                       if ( jQuery.css( elem, "float" ) === "none" ) {
+
+                               // Restore the original display value at the end of pure show/hide animations
+                               if ( !propTween ) {
+                                       anim.done( function() {
+                                               style.display = restoreDisplay;
+                                       } );
+                                       if ( restoreDisplay == null ) {
+                                               display = style.display;
+                                               restoreDisplay = display === "none" ? "" : display;
+                                       }
+                               }
+                               style.display = "inline-block";
+                       }
+               }
+       }
+
+       if ( opts.overflow ) {
+               style.overflow = "hidden";
+               anim.always( function() {
+                       style.overflow = opts.overflow[ 0 ];
+                       style.overflowX = opts.overflow[ 1 ];
+                       style.overflowY = opts.overflow[ 2 ];
+               } );
+       }
+
+       // Implement show/hide animations
+       propTween = false;
+       for ( prop in orig ) {
+
+               // General show/hide setup for this element animation
+               if ( !propTween ) {
+                       if ( dataShow ) {
+                               if ( "hidden" in dataShow ) {
+                                       hidden = dataShow.hidden;
+                               }
+                       } else {
+                               dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+                       }
+
+                       // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+                       if ( toggle ) {
+                               dataShow.hidden = !hidden;
+                       }
+
+                       // Show elements before animating them
+                       if ( hidden ) {
+                               showHide( [ elem ], true );
+                       }
+
+                       /* eslint-disable no-loop-func */
+
+                       anim.done( function() {
+
+                       /* eslint-enable no-loop-func */
+
+                               // The final step of a "hide" animation is actually hiding the element
+                               if ( !hidden ) {
+                                       showHide( [ elem ] );
+                               }
+                               dataPriv.remove( elem, "fxshow" );
+                               for ( prop in orig ) {
+                                       jQuery.style( elem, prop, orig[ prop ] );
+                               }
+                       } );
+               }
+
+               // Per-property setup
+               propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+               if ( !( prop in dataShow ) ) {
+                       dataShow[ prop ] = propTween.start;
+                       if ( hidden ) {
+                               propTween.end = propTween.start;
+                               propTween.start = 0;
+                       }
+               }
+       }
+}
+
+function propFilter( props, specialEasing ) {
+       var index, name, easing, value, hooks;
+
+       // camelCase, specialEasing and expand cssHook pass
+       for ( index in props ) {
+               name = jQuery.camelCase( index );
+               easing = specialEasing[ name ];
+               value = props[ index ];
+               if ( jQuery.isArray( value ) ) {
+                       easing = value[ 1 ];
+                       value = props[ index ] = value[ 0 ];
+               }
+
+               if ( index !== name ) {
+                       props[ name ] = value;
+                       delete props[ index ];
+               }
+
+               hooks = jQuery.cssHooks[ name ];
+               if ( hooks && "expand" in hooks ) {
+                       value = hooks.expand( value );
+                       delete props[ name ];
+
+                       // Not quite $.extend, this won't overwrite existing keys.
+                       // Reusing 'index' because we have the correct "name"
+                       for ( index in value ) {
+                               if ( !( index in props ) ) {
+                                       props[ index ] = value[ index ];
+                                       specialEasing[ index ] = easing;
+                               }
+                       }
+               } else {
+                       specialEasing[ name ] = easing;
+               }
+       }
+}
+
+function Animation( elem, properties, options ) {
+       var result,
+               stopped,
+               index = 0,
+               length = Animation.prefilters.length,
+               deferred = jQuery.Deferred().always( function() {
+
+                       // Don't match elem in the :animated selector
+                       delete tick.elem;
+               } ),
+               tick = function() {
+                       if ( stopped ) {
+                               return false;
+                       }
+                       var currentTime = fxNow || createFxNow(),
+                               remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+                               // Support: Android 2.3 only
+                               // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+                               temp = remaining / animation.duration || 0,
+                               percent = 1 - temp,
+                               index = 0,
+                               length = animation.tweens.length;
+
+                       for ( ; index < length; index++ ) {
+                               animation.tweens[ index ].run( percent );
+                       }
+
+                       deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+                       if ( percent < 1 && length ) {
+                               return remaining;
+                       } else {
+                               deferred.resolveWith( elem, [ animation ] );
+                               return false;
+                       }
+               },
+               animation = deferred.promise( {
+                       elem: elem,
+                       props: jQuery.extend( {}, properties ),
+                       opts: jQuery.extend( true, {
+                               specialEasing: {},
+                               easing: jQuery.easing._default
+                       }, options ),
+                       originalProperties: properties,
+                       originalOptions: options,
+                       startTime: fxNow || createFxNow(),
+                       duration: options.duration,
+                       tweens: [],
+                       createTween: function( prop, end ) {
+                               var tween = jQuery.Tween( elem, animation.opts, prop, end,
+                                               animation.opts.specialEasing[ prop ] || animation.opts.easing );
+                               animation.tweens.push( tween );
+                               return tween;
+                       },
+                       stop: function( gotoEnd ) {
+                               var index = 0,
+
+                                       // If we are going to the end, we want to run all the tweens
+                                       // otherwise we skip this part
+                                       length = gotoEnd ? animation.tweens.length : 0;
+                               if ( stopped ) {
+                                       return this;
+                               }
+                               stopped = true;
+                               for ( ; index < length; index++ ) {
+                                       animation.tweens[ index ].run( 1 );
+                               }
+
+                               // Resolve when we played the last frame; otherwise, reject
+                               if ( gotoEnd ) {
+                                       deferred.notifyWith( elem, [ animation, 1, 0 ] );
+                                       deferred.resolveWith( elem, [ animation, gotoEnd ] );
+                               } else {
+                                       deferred.rejectWith( elem, [ animation, gotoEnd ] );
+                               }
+                               return this;
+                       }
+               } ),
+               props = animation.props;
+
+       propFilter( props, animation.opts.specialEasing );
+
+       for ( ; index < length; index++ ) {
+               result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+               if ( result ) {
+                       if ( jQuery.isFunction( result.stop ) ) {
+                               jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+                                       jQuery.proxy( result.stop, result );
+                       }
+                       return result;
+               }
+       }
+
+       jQuery.map( props, createTween, animation );
+
+       if ( jQuery.isFunction( animation.opts.start ) ) {
+               animation.opts.start.call( elem, animation );
+       }
+
+       jQuery.fx.timer(
+               jQuery.extend( tick, {
+                       elem: elem,
+                       anim: animation,
+                       queue: animation.opts.queue
+               } )
+       );
+
+       // attach callbacks from options
+       return animation.progress( animation.opts.progress )
+               .done( animation.opts.done, animation.opts.complete )
+               .fail( animation.opts.fail )
+               .always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+       tweeners: {
+               "*": [ function( prop, value ) {
+                       var tween = this.createTween( prop, value );
+                       adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+                       return tween;
+               } ]
+       },
+
+       tweener: function( props, callback ) {
+               if ( jQuery.isFunction( props ) ) {
+                       callback = props;
+                       props = [ "*" ];
+               } else {
+                       props = props.match( rnothtmlwhite );
+               }
+
+               var prop,
+                       index = 0,
+                       length = props.length;
+
+               for ( ; index < length; index++ ) {
+                       prop = props[ index ];
+                       Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+                       Animation.tweeners[ prop ].unshift( callback );
+               }
+       },
+
+       prefilters: [ defaultPrefilter ],
+
+       prefilter: function( callback, prepend ) {
+               if ( prepend ) {
+                       Animation.prefilters.unshift( callback );
+               } else {
+                       Animation.prefilters.push( callback );
+               }
+       }
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+       var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+               complete: fn || !fn && easing ||
+                       jQuery.isFunction( speed ) && speed,
+               duration: speed,
+               easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+       };
+
+       // Go to the end state if fx are off or if document is hidden
+       if ( jQuery.fx.off || document.hidden ) {
+               opt.duration = 0;
+
+       } else {
+               if ( typeof opt.duration !== "number" ) {
+                       if ( opt.duration in jQuery.fx.speeds ) {
+                               opt.duration = jQuery.fx.speeds[ opt.duration ];
+
+                       } else {
+                               opt.duration = jQuery.fx.speeds._default;
+                       }
+               }
+       }
+
+       // Normalize opt.queue - true/undefined/null -> "fx"
+       if ( opt.queue == null || opt.queue === true ) {
+               opt.queue = "fx";
+       }
+
+       // Queueing
+       opt.old = opt.complete;
+
+       opt.complete = function() {
+               if ( jQuery.isFunction( opt.old ) ) {
+                       opt.old.call( this );
+               }
+
+               if ( opt.queue ) {
+                       jQuery.dequeue( this, opt.queue );
+               }
+       };
+
+       return opt;
+};
+
+jQuery.fn.extend( {
+       fadeTo: function( speed, to, easing, callback ) {
+
+               // Show any hidden elements after setting opacity to 0
+               return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+                       // Animate to the value specified
+                       .end().animate( { opacity: to }, speed, easing, callback );
+       },
+       animate: function( prop, speed, easing, callback ) {
+               var empty = jQuery.isEmptyObject( prop ),
+                       optall = jQuery.speed( speed, easing, callback ),
+                       doAnimation = function() {
+
+                               // Operate on a copy of prop so per-property easing won't be lost
+                               var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+                               // Empty animations, or finishing resolves immediately
+                               if ( empty || dataPriv.get( this, "finish" ) ) {
+                                       anim.stop( true );
+                               }
+                       };
+                       doAnimation.finish = doAnimation;
+
+               return empty || optall.queue === false ?
+                       this.each( doAnimation ) :
+                       this.queue( optall.queue, doAnimation );
+       },
+       stop: function( type, clearQueue, gotoEnd ) {
+               var stopQueue = function( hooks ) {
+                       var stop = hooks.stop;
+                       delete hooks.stop;
+                       stop( gotoEnd );
+               };
+
+               if ( typeof type !== "string" ) {
+                       gotoEnd = clearQueue;
+                       clearQueue = type;
+                       type = undefined;
+               }
+               if ( clearQueue && type !== false ) {
+                       this.queue( type || "fx", [] );
+               }
+
+               return this.each( function() {
+                       var dequeue = true,
+                               index = type != null && type + "queueHooks",
+                               timers = jQuery.timers,
+                               data = dataPriv.get( this );
+
+                       if ( index ) {
+                               if ( data[ index ] && data[ index ].stop ) {
+                                       stopQueue( data[ index ] );
+                               }
+                       } else {
+                               for ( index in data ) {
+                                       if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+                                               stopQueue( data[ index ] );
+                                       }
+                               }
+                       }
+
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this &&
+                                       ( type == null || timers[ index ].queue === type ) ) {
+
+                                       timers[ index ].anim.stop( gotoEnd );
+                                       dequeue = false;
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // Start the next in the queue if the last step wasn't forced.
+                       // Timers currently will call their complete callbacks, which
+                       // will dequeue but only if they were gotoEnd.
+                       if ( dequeue || !gotoEnd ) {
+                               jQuery.dequeue( this, type );
+                       }
+               } );
+       },
+       finish: function( type ) {
+               if ( type !== false ) {
+                       type = type || "fx";
+               }
+               return this.each( function() {
+                       var index,
+                               data = dataPriv.get( this ),
+                               queue = data[ type + "queue" ],
+                               hooks = data[ type + "queueHooks" ],
+                               timers = jQuery.timers,
+                               length = queue ? queue.length : 0;
+
+                       // Enable finishing flag on private data
+                       data.finish = true;
+
+                       // Empty the queue first
+                       jQuery.queue( this, type, [] );
+
+                       if ( hooks && hooks.stop ) {
+                               hooks.stop.call( this, true );
+                       }
+
+                       // Look for any active animations, and finish them
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+                                       timers[ index ].anim.stop( true );
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // Look for any animations in the old queue and finish them
+                       for ( index = 0; index < length; index++ ) {
+                               if ( queue[ index ] && queue[ index ].finish ) {
+                                       queue[ index ].finish.call( this );
+                               }
+                       }
+
+                       // Turn off finishing flag
+                       delete data.finish;
+               } );
+       }
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+       var cssFn = jQuery.fn[ name ];
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return speed == null || typeof speed === "boolean" ?
+                       cssFn.apply( this, arguments ) :
+                       this.animate( genFx( name, true ), speed, easing, callback );
+       };
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+       slideDown: genFx( "show" ),
+       slideUp: genFx( "hide" ),
+       slideToggle: genFx( "toggle" ),
+       fadeIn: { opacity: "show" },
+       fadeOut: { opacity: "hide" },
+       fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return this.animate( props, speed, easing, callback );
+       };
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+       var timer,
+               i = 0,
+               timers = jQuery.timers;
+
+       fxNow = jQuery.now();
+
+       for ( ; i < timers.length; i++ ) {
+               timer = timers[ i ];
+
+               // Checks the timer has not already been removed
+               if ( !timer() && timers[ i ] === timer ) {
+                       timers.splice( i--, 1 );
+               }
+       }
+
+       if ( !timers.length ) {
+               jQuery.fx.stop();
+       }
+       fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+       jQuery.timers.push( timer );
+       if ( timer() ) {
+               jQuery.fx.start();
+       } else {
+               jQuery.timers.pop();
+       }
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+       if ( !timerId ) {
+               timerId = window.requestAnimationFrame ?
+                       window.requestAnimationFrame( raf ) :
+                       window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
+       }
+};
+
+jQuery.fx.stop = function() {
+       if ( window.cancelAnimationFrame ) {
+               window.cancelAnimationFrame( timerId );
+       } else {
+               window.clearInterval( timerId );
+       }
+
+       timerId = null;
+};
+
+jQuery.fx.speeds = {
+       slow: 600,
+       fast: 200,
+
+       // Default speed
+       _default: 400
+};
+
+return jQuery;
+} );
diff --git a/js/jquery/src/effects/Tween.js b/js/jquery/src/effects/Tween.js
new file mode 100644 (file)
index 0000000..43eb8fa
--- /dev/null
@@ -0,0 +1,123 @@
+define( [
+       "../core",
+       "../css"
+], function( jQuery ) {
+
+"use strict";
+
+function Tween( elem, options, prop, end, easing ) {
+       return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+       constructor: Tween,
+       init: function( elem, options, prop, end, easing, unit ) {
+               this.elem = elem;
+               this.prop = prop;
+               this.easing = easing || jQuery.easing._default;
+               this.options = options;
+               this.start = this.now = this.cur();
+               this.end = end;
+               this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+       },
+       cur: function() {
+               var hooks = Tween.propHooks[ this.prop ];
+
+               return hooks && hooks.get ?
+                       hooks.get( this ) :
+                       Tween.propHooks._default.get( this );
+       },
+       run: function( percent ) {
+               var eased,
+                       hooks = Tween.propHooks[ this.prop ];
+
+               if ( this.options.duration ) {
+                       this.pos = eased = jQuery.easing[ this.easing ](
+                               percent, this.options.duration * percent, 0, 1, this.options.duration
+                       );
+               } else {
+                       this.pos = eased = percent;
+               }
+               this.now = ( this.end - this.start ) * eased + this.start;
+
+               if ( this.options.step ) {
+                       this.options.step.call( this.elem, this.now, this );
+               }
+
+               if ( hooks && hooks.set ) {
+                       hooks.set( this );
+               } else {
+                       Tween.propHooks._default.set( this );
+               }
+               return this;
+       }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+       _default: {
+               get: function( tween ) {
+                       var result;
+
+                       // Use a property on the element directly when it is not a DOM element,
+                       // or when there is no matching style property that exists.
+                       if ( tween.elem.nodeType !== 1 ||
+                               tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+                               return tween.elem[ tween.prop ];
+                       }
+
+                       // Passing an empty string as a 3rd parameter to .css will automatically
+                       // attempt a parseFloat and fallback to a string if the parse fails.
+                       // Simple values such as "10px" are parsed to Float;
+                       // complex values such as "rotate(1rad)" are returned as-is.
+                       result = jQuery.css( tween.elem, tween.prop, "" );
+
+                       // Empty strings, null, undefined and "auto" are converted to 0.
+                       return !result || result === "auto" ? 0 : result;
+               },
+               set: function( tween ) {
+
+                       // Use step hook for back compat.
+                       // Use cssHook if its there.
+                       // Use .style if available and use plain properties where available.
+                       if ( jQuery.fx.step[ tween.prop ] ) {
+                               jQuery.fx.step[ tween.prop ]( tween );
+                       } else if ( tween.elem.nodeType === 1 &&
+                               ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+                                       jQuery.cssHooks[ tween.prop ] ) ) {
+                               jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+                       } else {
+                               tween.elem[ tween.prop ] = tween.now;
+                       }
+               }
+       }
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+       set: function( tween ) {
+               if ( tween.elem.nodeType && tween.elem.parentNode ) {
+                       tween.elem[ tween.prop ] = tween.now;
+               }
+       }
+};
+
+jQuery.easing = {
+       linear: function( p ) {
+               return p;
+       },
+       swing: function( p ) {
+               return 0.5 - Math.cos( p * Math.PI ) / 2;
+       },
+       _default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+} );
diff --git a/js/jquery/src/effects/animatedSelector.js b/js/jquery/src/effects/animatedSelector.js
new file mode 100644 (file)
index 0000000..24c1bfb
--- /dev/null
@@ -0,0 +1,15 @@
+define( [
+       "../core",
+       "../selector",
+       "../effects"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.expr.pseudos.animated = function( elem ) {
+       return jQuery.grep( jQuery.timers, function( fn ) {
+               return elem === fn.elem;
+       } ).length;
+};
+
+} );
diff --git a/js/jquery/src/event.js b/js/jquery/src/event.js
new file mode 100644 (file)
index 0000000..ab2c63c
--- /dev/null
@@ -0,0 +1,745 @@
+define( [
+       "./core",
+       "./var/document",
+       "./var/documentElement",
+       "./var/rnothtmlwhite",
+       "./var/slice",
+       "./data/var/dataPriv",
+
+       "./core/init",
+       "./selector"
+], function( jQuery, document, documentElement, rnothtmlwhite, slice, dataPriv ) {
+
+"use strict";
+
+var
+       rkeyEvent = /^key/,
+       rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+       rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+       return true;
+}
+
+function returnFalse() {
+       return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+       try {
+               return document.activeElement;
+       } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+       var origFn, type;
+
+       // Types can be a map of types/handlers
+       if ( typeof types === "object" ) {
+
+               // ( types-Object, selector, data )
+               if ( typeof selector !== "string" ) {
+
+                       // ( types-Object, data )
+                       data = data || selector;
+                       selector = undefined;
+               }
+               for ( type in types ) {
+                       on( elem, type, selector, data, types[ type ], one );
+               }
+               return elem;
+       }
+
+       if ( data == null && fn == null ) {
+
+               // ( types, fn )
+               fn = selector;
+               data = selector = undefined;
+       } else if ( fn == null ) {
+               if ( typeof selector === "string" ) {
+
+                       // ( types, selector, fn )
+                       fn = data;
+                       data = undefined;
+               } else {
+
+                       // ( types, data, fn )
+                       fn = data;
+                       data = selector;
+                       selector = undefined;
+               }
+       }
+       if ( fn === false ) {
+               fn = returnFalse;
+       } else if ( !fn ) {
+               return elem;
+       }
+
+       if ( one === 1 ) {
+               origFn = fn;
+               fn = function( event ) {
+
+                       // Can use an empty set, since event contains the info
+                       jQuery().off( event );
+                       return origFn.apply( this, arguments );
+               };
+
+               // Use same guid so caller can remove using origFn
+               fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+       }
+       return elem.each( function() {
+               jQuery.event.add( this, types, fn, data, selector );
+       } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+       global: {},
+
+       add: function( elem, types, handler, data, selector ) {
+
+               var handleObjIn, eventHandle, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = dataPriv.get( elem );
+
+               // Don't attach events to noData or text/comment nodes (but allow plain objects)
+               if ( !elemData ) {
+                       return;
+               }
+
+               // Caller can pass in an object of custom data in lieu of the handler
+               if ( handler.handler ) {
+                       handleObjIn = handler;
+                       handler = handleObjIn.handler;
+                       selector = handleObjIn.selector;
+               }
+
+               // Ensure that invalid selectors throw exceptions at attach time
+               // Evaluate against documentElement in case elem is a non-element node (e.g., document)
+               if ( selector ) {
+                       jQuery.find.matchesSelector( documentElement, selector );
+               }
+
+               // Make sure that the handler has a unique ID, used to find/remove it later
+               if ( !handler.guid ) {
+                       handler.guid = jQuery.guid++;
+               }
+
+               // Init the element's event structure and main handler, if this is the first
+               if ( !( events = elemData.events ) ) {
+                       events = elemData.events = {};
+               }
+               if ( !( eventHandle = elemData.handle ) ) {
+                       eventHandle = elemData.handle = function( e ) {
+
+                               // Discard the second event of a jQuery.event.trigger() and
+                               // when an event is called after a page has unloaded
+                               return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+                                       jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+                       };
+               }
+
+               // Handle multiple events separated by a space
+               types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[ t ] ) || [];
+                       type = origType = tmp[ 1 ];
+                       namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+                       // There *must* be a type, no attaching namespace-only handlers
+                       if ( !type ) {
+                               continue;
+                       }
+
+                       // If event changes its type, use the special event handlers for the changed type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // If selector defined, determine special event api type, otherwise given type
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+
+                       // Update special based on newly reset type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // handleObj is passed to all event handlers
+                       handleObj = jQuery.extend( {
+                               type: type,
+                               origType: origType,
+                               data: data,
+                               handler: handler,
+                               guid: handler.guid,
+                               selector: selector,
+                               needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+                               namespace: namespaces.join( "." )
+                       }, handleObjIn );
+
+                       // Init the event handler queue if we're the first
+                       if ( !( handlers = events[ type ] ) ) {
+                               handlers = events[ type ] = [];
+                               handlers.delegateCount = 0;
+
+                               // Only use addEventListener if the special events handler returns false
+                               if ( !special.setup ||
+                                       special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+                                       if ( elem.addEventListener ) {
+                                               elem.addEventListener( type, eventHandle );
+                                       }
+                               }
+                       }
+
+                       if ( special.add ) {
+                               special.add.call( elem, handleObj );
+
+                               if ( !handleObj.handler.guid ) {
+                                       handleObj.handler.guid = handler.guid;
+                               }
+                       }
+
+                       // Add to the element's handler list, delegates in front
+                       if ( selector ) {
+                               handlers.splice( handlers.delegateCount++, 0, handleObj );
+                       } else {
+                               handlers.push( handleObj );
+                       }
+
+                       // Keep track of which events have ever been used, for event optimization
+                       jQuery.event.global[ type ] = true;
+               }
+
+       },
+
+       // Detach an event or set of events from an element
+       remove: function( elem, types, handler, selector, mappedTypes ) {
+
+               var j, origCount, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+               if ( !elemData || !( events = elemData.events ) ) {
+                       return;
+               }
+
+               // Once for each type.namespace in types; type may be omitted
+               types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[ t ] ) || [];
+                       type = origType = tmp[ 1 ];
+                       namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+                       // Unbind all events (on this namespace, if provided) for the element
+                       if ( !type ) {
+                               for ( type in events ) {
+                                       jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+                               }
+                               continue;
+                       }
+
+                       special = jQuery.event.special[ type ] || {};
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+                       handlers = events[ type ] || [];
+                       tmp = tmp[ 2 ] &&
+                               new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+                       // Remove matching events
+                       origCount = j = handlers.length;
+                       while ( j-- ) {
+                               handleObj = handlers[ j ];
+
+                               if ( ( mappedTypes || origType === handleObj.origType ) &&
+                                       ( !handler || handler.guid === handleObj.guid ) &&
+                                       ( !tmp || tmp.test( handleObj.namespace ) ) &&
+                                       ( !selector || selector === handleObj.selector ||
+                                               selector === "**" && handleObj.selector ) ) {
+                                       handlers.splice( j, 1 );
+
+                                       if ( handleObj.selector ) {
+                                               handlers.delegateCount--;
+                                       }
+                                       if ( special.remove ) {
+                                               special.remove.call( elem, handleObj );
+                                       }
+                               }
+                       }
+
+                       // Remove generic event handler if we removed something and no more handlers exist
+                       // (avoids potential for endless recursion during removal of special event handlers)
+                       if ( origCount && !handlers.length ) {
+                               if ( !special.teardown ||
+                                       special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+                                       jQuery.removeEvent( elem, type, elemData.handle );
+                               }
+
+                               delete events[ type ];
+                       }
+               }
+
+               // Remove data and the expando if it's no longer used
+               if ( jQuery.isEmptyObject( events ) ) {
+                       dataPriv.remove( elem, "handle events" );
+               }
+       },
+
+       dispatch: function( nativeEvent ) {
+
+               // Make a writable jQuery.Event from the native event object
+               var event = jQuery.event.fix( nativeEvent );
+
+               var i, j, ret, matched, handleObj, handlerQueue,
+                       args = new Array( arguments.length ),
+                       handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+                       special = jQuery.event.special[ event.type ] || {};
+
+               // Use the fix-ed jQuery.Event rather than the (read-only) native event
+               args[ 0 ] = event;
+
+               for ( i = 1; i < arguments.length; i++ ) {
+                       args[ i ] = arguments[ i ];
+               }
+
+               event.delegateTarget = this;
+
+               // Call the preDispatch hook for the mapped type, and let it bail if desired
+               if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+                       return;
+               }
+
+               // Determine handlers
+               handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+               // Run delegates first; they may want to stop propagation beneath us
+               i = 0;
+               while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+                       event.currentTarget = matched.elem;
+
+                       j = 0;
+                       while ( ( handleObj = matched.handlers[ j++ ] ) &&
+                               !event.isImmediatePropagationStopped() ) {
+
+                               // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+                               // a subset or equal to those in the bound event (both can have no namespace).
+                               if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+                                       event.handleObj = handleObj;
+                                       event.data = handleObj.data;
+
+                                       ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+                                               handleObj.handler ).apply( matched.elem, args );
+
+                                       if ( ret !== undefined ) {
+                                               if ( ( event.result = ret ) === false ) {
+                                                       event.preventDefault();
+                                                       event.stopPropagation();
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               // Call the postDispatch hook for the mapped type
+               if ( special.postDispatch ) {
+                       special.postDispatch.call( this, event );
+               }
+
+               return event.result;
+       },
+
+       handlers: function( event, handlers ) {
+               var i, handleObj, sel, matchedHandlers, matchedSelectors,
+                       handlerQueue = [],
+                       delegateCount = handlers.delegateCount,
+                       cur = event.target;
+
+               // Find delegate handlers
+               if ( delegateCount &&
+
+                       // Support: IE <=9
+                       // Black-hole SVG <use> instance trees (trac-13180)
+                       cur.nodeType &&
+
+                       // Support: Firefox <=42
+                       // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+                       // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+                       // Support: IE 11 only
+                       // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+                       !( event.type === "click" && event.button >= 1 ) ) {
+
+                       for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+                               // Don't check non-elements (#13208)
+                               // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+                               if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+                                       matchedHandlers = [];
+                                       matchedSelectors = {};
+                                       for ( i = 0; i < delegateCount; i++ ) {
+                                               handleObj = handlers[ i ];
+
+                                               // Don't conflict with Object.prototype properties (#13203)
+                                               sel = handleObj.selector + " ";
+
+                                               if ( matchedSelectors[ sel ] === undefined ) {
+                                                       matchedSelectors[ sel ] = handleObj.needsContext ?
+                                                               jQuery( sel, this ).index( cur ) > -1 :
+                                                               jQuery.find( sel, this, null, [ cur ] ).length;
+                                               }
+                                               if ( matchedSelectors[ sel ] ) {
+                                                       matchedHandlers.push( handleObj );
+                                               }
+                                       }
+                                       if ( matchedHandlers.length ) {
+                                               handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+                                       }
+                               }
+                       }
+               }
+
+               // Add the remaining (directly-bound) handlers
+               cur = this;
+               if ( delegateCount < handlers.length ) {
+                       handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+               }
+
+               return handlerQueue;
+       },
+
+       addProp: function( name, hook ) {
+               Object.defineProperty( jQuery.Event.prototype, name, {
+                       enumerable: true,
+                       configurable: true,
+
+                       get: jQuery.isFunction( hook ) ?
+                               function() {
+                                       if ( this.originalEvent ) {
+                                                       return hook( this.originalEvent );
+                                       }
+                               } :
+                               function() {
+                                       if ( this.originalEvent ) {
+                                                       return this.originalEvent[ name ];
+                                       }
+                               },
+
+                       set: function( value ) {
+                               Object.defineProperty( this, name, {
+                                       enumerable: true,
+                                       configurable: true,
+                                       writable: true,
+                                       value: value
+                               } );
+                       }
+               } );
+       },
+
+       fix: function( originalEvent ) {
+               return originalEvent[ jQuery.expando ] ?
+                       originalEvent :
+                       new jQuery.Event( originalEvent );
+       },
+
+       special: {
+               load: {
+
+                       // Prevent triggered image.load events from bubbling to window.load
+                       noBubble: true
+               },
+               focus: {
+
+                       // Fire native event if possible so blur/focus sequence is correct
+                       trigger: function() {
+                               if ( this !== safeActiveElement() && this.focus ) {
+                                       this.focus();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusin"
+               },
+               blur: {
+                       trigger: function() {
+                               if ( this === safeActiveElement() && this.blur ) {
+                                       this.blur();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusout"
+               },
+               click: {
+
+                       // For checkbox, fire native event so checked state will be right
+                       trigger: function() {
+                               if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+                                       this.click();
+                                       return false;
+                               }
+                       },
+
+                       // For cross-browser consistency, don't fire native .click() on links
+                       _default: function( event ) {
+                               return jQuery.nodeName( event.target, "a" );
+                       }
+               },
+
+               beforeunload: {
+                       postDispatch: function( event ) {
+
+                               // Support: Firefox 20+
+                               // Firefox doesn't alert if the returnValue field is not set.
+                               if ( event.result !== undefined && event.originalEvent ) {
+                                       event.originalEvent.returnValue = event.result;
+                               }
+                       }
+               }
+       }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+       // This "if" is needed for plain objects
+       if ( elem.removeEventListener ) {
+               elem.removeEventListener( type, handle );
+       }
+};
+
+jQuery.Event = function( src, props ) {
+
+       // Allow instantiation without the 'new' keyword
+       if ( !( this instanceof jQuery.Event ) ) {
+               return new jQuery.Event( src, props );
+       }
+
+       // Event object
+       if ( src && src.type ) {
+               this.originalEvent = src;
+               this.type = src.type;
+
+               // Events bubbling up the document may have been marked as prevented
+               // by a handler lower down the tree; reflect the correct value.
+               this.isDefaultPrevented = src.defaultPrevented ||
+                               src.defaultPrevented === undefined &&
+
+                               // Support: Android <=2.3 only
+                               src.returnValue === false ?
+                       returnTrue :
+                       returnFalse;
+
+               // Create target properties
+               // Support: Safari <=6 - 7 only
+               // Target should not be a text node (#504, #13143)
+               this.target = ( src.target && src.target.nodeType === 3 ) ?
+                       src.target.parentNode :
+                       src.target;
+
+               this.currentTarget = src.currentTarget;
+               this.relatedTarget = src.relatedTarget;
+
+       // Event type
+       } else {
+               this.type = src;
+       }
+
+       // Put explicitly provided properties onto the event object
+       if ( props ) {
+               jQuery.extend( this, props );
+       }
+
+       // Create a timestamp if incoming event doesn't have one
+       this.timeStamp = src && src.timeStamp || jQuery.now();
+
+       // Mark it as fixed
+       this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+       constructor: jQuery.Event,
+       isDefaultPrevented: returnFalse,
+       isPropagationStopped: returnFalse,
+       isImmediatePropagationStopped: returnFalse,
+       isSimulated: false,
+
+       preventDefault: function() {
+               var e = this.originalEvent;
+
+               this.isDefaultPrevented = returnTrue;
+
+               if ( e && !this.isSimulated ) {
+                       e.preventDefault();
+               }
+       },
+       stopPropagation: function() {
+               var e = this.originalEvent;
+
+               this.isPropagationStopped = returnTrue;
+
+               if ( e && !this.isSimulated ) {
+                       e.stopPropagation();
+               }
+       },
+       stopImmediatePropagation: function() {
+               var e = this.originalEvent;
+
+               this.isImmediatePropagationStopped = returnTrue;
+
+               if ( e && !this.isSimulated ) {
+                       e.stopImmediatePropagation();
+               }
+
+               this.stopPropagation();
+       }
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+       altKey: true,
+       bubbles: true,
+       cancelable: true,
+       changedTouches: true,
+       ctrlKey: true,
+       detail: true,
+       eventPhase: true,
+       metaKey: true,
+       pageX: true,
+       pageY: true,
+       shiftKey: true,
+       view: true,
+       "char": true,
+       charCode: true,
+       key: true,
+       keyCode: true,
+       button: true,
+       buttons: true,
+       clientX: true,
+       clientY: true,
+       offsetX: true,
+       offsetY: true,
+       pointerId: true,
+       pointerType: true,
+       screenX: true,
+       screenY: true,
+       targetTouches: true,
+       toElement: true,
+       touches: true,
+
+       which: function( event ) {
+               var button = event.button;
+
+               // Add which for key events
+               if ( event.which == null && rkeyEvent.test( event.type ) ) {
+                       return event.charCode != null ? event.charCode : event.keyCode;
+               }
+
+               // Add which for click: 1 === left; 2 === middle; 3 === right
+               if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+                       if ( button & 1 ) {
+                               return 1;
+                       }
+
+                       if ( button & 2 ) {
+                               return 3;
+                       }
+
+                       if ( button & 4 ) {
+                               return 2;
+                       }
+
+                       return 0;
+               }
+
+               return event.which;
+       }
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+       mouseenter: "mouseover",
+       mouseleave: "mouseout",
+       pointerenter: "pointerover",
+       pointerleave: "pointerout"
+}, function( orig, fix ) {
+       jQuery.event.special[ orig ] = {
+               delegateType: fix,
+               bindType: fix,
+
+               handle: function( event ) {
+                       var ret,
+                               target = this,
+                               related = event.relatedTarget,
+                               handleObj = event.handleObj;
+
+                       // For mouseenter/leave call the handler if related is outside the target.
+                       // NB: No relatedTarget if the mouse left/entered the browser window
+                       if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+                               event.type = handleObj.origType;
+                               ret = handleObj.handler.apply( this, arguments );
+                               event.type = fix;
+                       }
+                       return ret;
+               }
+       };
+} );
+
+jQuery.fn.extend( {
+
+       on: function( types, selector, data, fn ) {
+               return on( this, types, selector, data, fn );
+       },
+       one: function( types, selector, data, fn ) {
+               return on( this, types, selector, data, fn, 1 );
+       },
+       off: function( types, selector, fn ) {
+               var handleObj, type;
+               if ( types && types.preventDefault && types.handleObj ) {
+
+                       // ( event )  dispatched jQuery.Event
+                       handleObj = types.handleObj;
+                       jQuery( types.delegateTarget ).off(
+                               handleObj.namespace ?
+                                       handleObj.origType + "." + handleObj.namespace :
+                                       handleObj.origType,
+                               handleObj.selector,
+                               handleObj.handler
+                       );
+                       return this;
+               }
+               if ( typeof types === "object" ) {
+
+                       // ( types-object [, selector] )
+                       for ( type in types ) {
+                               this.off( type, selector, types[ type ] );
+                       }
+                       return this;
+               }
+               if ( selector === false || typeof selector === "function" ) {
+
+                       // ( types [, fn] )
+                       fn = selector;
+                       selector = undefined;
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               }
+               return this.each( function() {
+                       jQuery.event.remove( this, types, fn, selector );
+               } );
+       }
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/event/ajax.js b/js/jquery/src/event/ajax.js
new file mode 100644 (file)
index 0000000..500b36c
--- /dev/null
@@ -0,0 +1,22 @@
+define( [
+       "../core",
+       "../event"
+], function( jQuery ) {
+
+"use strict";
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+       "ajaxStart",
+       "ajaxStop",
+       "ajaxComplete",
+       "ajaxError",
+       "ajaxSuccess",
+       "ajaxSend"
+], function( i, type ) {
+       jQuery.fn[ type ] = function( fn ) {
+               return this.on( type, fn );
+       };
+} );
+
+} );
diff --git a/js/jquery/src/event/alias.js b/js/jquery/src/event/alias.js
new file mode 100644 (file)
index 0000000..863c94a
--- /dev/null
@@ -0,0 +1,29 @@
+define( [
+       "../core",
+
+       "../event",
+       "./trigger"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+       "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+       "change select submit keydown keypress keyup contextmenu" ).split( " " ),
+       function( i, name ) {
+
+       // Handle event binding
+       jQuery.fn[ name ] = function( data, fn ) {
+               return arguments.length > 0 ?
+                       this.on( name, null, data, fn ) :
+                       this.trigger( name );
+       };
+} );
+
+jQuery.fn.extend( {
+       hover: function( fnOver, fnOut ) {
+               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+       }
+} );
+
+} );
diff --git a/js/jquery/src/event/focusin.js b/js/jquery/src/event/focusin.js
new file mode 100644 (file)
index 0000000..7faef29
--- /dev/null
@@ -0,0 +1,55 @@
+define( [
+       "../core",
+       "../data/var/dataPriv",
+       "./support",
+
+       "../event",
+       "./trigger"
+], function( jQuery, dataPriv, support ) {
+
+"use strict";
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+       jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+               // Attach a single capturing handler on the document while someone wants focusin/focusout
+               var handler = function( event ) {
+                       jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+               };
+
+               jQuery.event.special[ fix ] = {
+                       setup: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = dataPriv.access( doc, fix );
+
+                               if ( !attaches ) {
+                                       doc.addEventListener( orig, handler, true );
+                               }
+                               dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+                       },
+                       teardown: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = dataPriv.access( doc, fix ) - 1;
+
+                               if ( !attaches ) {
+                                       doc.removeEventListener( orig, handler, true );
+                                       dataPriv.remove( doc, fix );
+
+                               } else {
+                                       dataPriv.access( doc, fix, attaches );
+                               }
+                       }
+               };
+       } );
+}
+
+return jQuery;
+} );
diff --git a/js/jquery/src/event/support.js b/js/jquery/src/event/support.js
new file mode 100644 (file)
index 0000000..e3db9ad
--- /dev/null
@@ -0,0 +1,11 @@
+define( [
+       "../var/support"
+], function( support ) {
+
+"use strict";
+
+support.focusin = "onfocusin" in window;
+
+return support;
+
+} );
diff --git a/js/jquery/src/event/trigger.js b/js/jquery/src/event/trigger.js
new file mode 100644 (file)
index 0000000..ef39137
--- /dev/null
@@ -0,0 +1,185 @@
+define( [
+       "../core",
+       "../var/document",
+       "../data/var/dataPriv",
+       "../data/var/acceptData",
+       "../var/hasOwn",
+
+       "../event"
+], function( jQuery, document, dataPriv, acceptData, hasOwn ) {
+
+"use strict";
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+       trigger: function( event, data, elem, onlyHandlers ) {
+
+               var i, cur, tmp, bubbleType, ontype, handle, special,
+                       eventPath = [ elem || document ],
+                       type = hasOwn.call( event, "type" ) ? event.type : event,
+                       namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+               cur = tmp = elem = elem || document;
+
+               // Don't do events on text and comment nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               // focus/blur morphs to focusin/out; ensure we're not firing them right now
+               if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+                       return;
+               }
+
+               if ( type.indexOf( "." ) > -1 ) {
+
+                       // Namespaced trigger; create a regexp to match event type in handle()
+                       namespaces = type.split( "." );
+                       type = namespaces.shift();
+                       namespaces.sort();
+               }
+               ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+               // Caller can pass in a jQuery.Event object, Object, or just an event type string
+               event = event[ jQuery.expando ] ?
+                       event :
+                       new jQuery.Event( type, typeof event === "object" && event );
+
+               // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+               event.isTrigger = onlyHandlers ? 2 : 3;
+               event.namespace = namespaces.join( "." );
+               event.rnamespace = event.namespace ?
+                       new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+                       null;
+
+               // Clean up the event in case it is being reused
+               event.result = undefined;
+               if ( !event.target ) {
+                       event.target = elem;
+               }
+
+               // Clone any incoming data and prepend the event, creating the handler arg list
+               data = data == null ?
+                       [ event ] :
+                       jQuery.makeArray( data, [ event ] );
+
+               // Allow special events to draw outside the lines
+               special = jQuery.event.special[ type ] || {};
+               if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+                       return;
+               }
+
+               // Determine event propagation path in advance, per W3C events spec (#9951)
+               // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+               if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+                       bubbleType = special.delegateType || type;
+                       if ( !rfocusMorph.test( bubbleType + type ) ) {
+                               cur = cur.parentNode;
+                       }
+                       for ( ; cur; cur = cur.parentNode ) {
+                               eventPath.push( cur );
+                               tmp = cur;
+                       }
+
+                       // Only add window if we got to document (e.g., not plain obj or detached DOM)
+                       if ( tmp === ( elem.ownerDocument || document ) ) {
+                               eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+                       }
+               }
+
+               // Fire handlers on the event path
+               i = 0;
+               while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+                       event.type = i > 1 ?
+                               bubbleType :
+                               special.bindType || type;
+
+                       // jQuery handler
+                       handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+                               dataPriv.get( cur, "handle" );
+                       if ( handle ) {
+                               handle.apply( cur, data );
+                       }
+
+                       // Native handler
+                       handle = ontype && cur[ ontype ];
+                       if ( handle && handle.apply && acceptData( cur ) ) {
+                               event.result = handle.apply( cur, data );
+                               if ( event.result === false ) {
+                                       event.preventDefault();
+                               }
+                       }
+               }
+               event.type = type;
+
+               // If nobody prevented the default action, do it now
+               if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+                       if ( ( !special._default ||
+                               special._default.apply( eventPath.pop(), data ) === false ) &&
+                               acceptData( elem ) ) {
+
+                               // Call a native DOM method on the target with the same name as the event.
+                               // Don't do default actions on window, that's where global variables be (#6170)
+                               if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+                                       // Don't re-trigger an onFOO event when we call its FOO() method
+                                       tmp = elem[ ontype ];
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = null;
+                                       }
+
+                                       // Prevent re-triggering of the same event, since we already bubbled it above
+                                       jQuery.event.triggered = type;
+                                       elem[ type ]();
+                                       jQuery.event.triggered = undefined;
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = tmp;
+                                       }
+                               }
+                       }
+               }
+
+               return event.result;
+       },
+
+       // Piggyback on a donor event to simulate a different one
+       // Used only for `focus(in | out)` events
+       simulate: function( type, elem, event ) {
+               var e = jQuery.extend(
+                       new jQuery.Event(),
+                       event,
+                       {
+                               type: type,
+                               isSimulated: true
+                       }
+               );
+
+               jQuery.event.trigger( e, null, elem );
+       }
+
+} );
+
+jQuery.fn.extend( {
+
+       trigger: function( type, data ) {
+               return this.each( function() {
+                       jQuery.event.trigger( type, data, this );
+               } );
+       },
+       triggerHandler: function( type, data ) {
+               var elem = this[ 0 ];
+               if ( elem ) {
+                       return jQuery.event.trigger( type, data, elem, true );
+               }
+       }
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/exports/amd.js b/js/jquery/src/exports/amd.js
new file mode 100644 (file)
index 0000000..cbb1ef5
--- /dev/null
@@ -0,0 +1,26 @@
+define( [
+       "../core"
+], function( jQuery ) {
+
+"use strict";
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+       define( "jquery", [], function() {
+               return jQuery;
+       } );
+}
+
+} );
diff --git a/js/jquery/src/exports/global.js b/js/jquery/src/exports/global.js
new file mode 100644 (file)
index 0000000..460b56e
--- /dev/null
@@ -0,0 +1,34 @@
+define( [
+       "../core"
+], function( jQuery, noGlobal ) {
+
+"use strict";
+
+var
+
+       // Map over jQuery in case of overwrite
+       _jQuery = window.jQuery,
+
+       // Map over the $ in case of overwrite
+       _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+       if ( window.$ === jQuery ) {
+               window.$ = _$;
+       }
+
+       if ( deep && window.jQuery === jQuery ) {
+               window.jQuery = _jQuery;
+       }
+
+       return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+       window.jQuery = window.$ = jQuery;
+}
+
+} );
diff --git a/js/jquery/src/intro.js b/js/jquery/src/intro.js
new file mode 100644 (file)
index 0000000..aab47c2
--- /dev/null
@@ -0,0 +1,44 @@
+/*!
+ * jQuery JavaScript Library v@VERSION
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: @DATE
+ */
+
+(function( global, factory ) {
+
+       if ( typeof module === "object" && typeof module.exports === "object" ) {
+               // For CommonJS and CommonJS-like environments where a proper `window`
+               // is present, execute the factory and get jQuery.
+               // For environments that do not have a `window` with a `document`
+               // (such as Node.js), expose a factory as module.exports.
+               // This accentuates the need for the creation of a real `window`.
+               // e.g. var jQuery = require("jquery")(window);
+               // See ticket #14549 for more info.
+               module.exports = global.document ?
+                       factory( global, true ) :
+                       function( w ) {
+                               if ( !w.document ) {
+                                       throw new Error( "jQuery requires a window with a document" );
+                               }
+                               return factory( w );
+                       };
+       } else {
+               factory( global );
+       }
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//"use strict";
diff --git a/js/jquery/src/jquery.js b/js/jquery/src/jquery.js
new file mode 100644 (file)
index 0000000..52fc87d
--- /dev/null
@@ -0,0 +1,41 @@
+define( [
+       "./core",
+       "./selector",
+       "./traversing",
+       "./callbacks",
+       "./deferred",
+       "./deferred/exceptionHook",
+       "./core/ready",
+       "./data",
+       "./queue",
+       "./queue/delay",
+       "./attributes",
+       "./event",
+       "./event/alias",
+       "./event/focusin",
+       "./manipulation",
+       "./manipulation/_evalUrl",
+       "./wrap",
+       "./css",
+       "./css/hiddenVisibleSelectors",
+       "./serialize",
+       "./ajax",
+       "./ajax/xhr",
+       "./ajax/script",
+       "./ajax/jsonp",
+       "./ajax/load",
+       "./event/ajax",
+       "./effects",
+       "./effects/animatedSelector",
+       "./offset",
+       "./dimensions",
+       "./deprecated",
+       "./exports/amd",
+       "./exports/global"
+], function( jQuery ) {
+
+"use strict";
+
+return jQuery;
+
+} );
diff --git a/js/jquery/src/manipulation.js b/js/jquery/src/manipulation.js
new file mode 100644 (file)
index 0000000..9b4f5e4
--- /dev/null
@@ -0,0 +1,486 @@
+define( [
+       "./core",
+       "./var/concat",
+       "./var/push",
+       "./core/access",
+       "./manipulation/var/rcheckableType",
+       "./manipulation/var/rtagName",
+       "./manipulation/var/rscriptType",
+       "./manipulation/wrapMap",
+       "./manipulation/getAll",
+       "./manipulation/setGlobalEval",
+       "./manipulation/buildFragment",
+       "./manipulation/support",
+
+       "./data/var/dataPriv",
+       "./data/var/dataUser",
+       "./data/var/acceptData",
+       "./core/DOMEval",
+
+       "./core/init",
+       "./traversing",
+       "./selector",
+       "./event"
+], function( jQuery, concat, push, access,
+       rcheckableType, rtagName, rscriptType,
+       wrapMap, getAll, setGlobalEval, buildFragment, support,
+       dataPriv, dataUser, acceptData, DOMEval ) {
+
+"use strict";
+
+var
+
+       /* eslint-disable max-len */
+
+       // See https://github.com/eslint/eslint/issues/3229
+       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+       /* eslint-enable */
+
+       // Support: IE <=10 - 11, Edge 12 - 13
+       // In IE/Edge using regex groups here causes severe slowdowns.
+       // See https://connect.microsoft.com/IE/feedback/details/1736512/
+       rnoInnerhtml = /<script|<style|<link/i,
+
+       // checked="checked" or checked
+       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+       rscriptTypeMasked = /^true\/(.*)/,
+       rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+function manipulationTarget( elem, content ) {
+       if ( jQuery.nodeName( elem, "table" ) &&
+               jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+               return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
+       }
+
+       return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+       elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+       return elem;
+}
+function restoreScript( elem ) {
+       var match = rscriptTypeMasked.exec( elem.type );
+
+       if ( match ) {
+               elem.type = match[ 1 ];
+       } else {
+               elem.removeAttribute( "type" );
+       }
+
+       return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+       var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+       if ( dest.nodeType !== 1 ) {
+               return;
+       }
+
+       // 1. Copy private data: events, handlers, etc.
+       if ( dataPriv.hasData( src ) ) {
+               pdataOld = dataPriv.access( src );
+               pdataCur = dataPriv.set( dest, pdataOld );
+               events = pdataOld.events;
+
+               if ( events ) {
+                       delete pdataCur.handle;
+                       pdataCur.events = {};
+
+                       for ( type in events ) {
+                               for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+                                       jQuery.event.add( dest, type, events[ type ][ i ] );
+                               }
+                       }
+               }
+       }
+
+       // 2. Copy user data
+       if ( dataUser.hasData( src ) ) {
+               udataOld = dataUser.access( src );
+               udataCur = jQuery.extend( {}, udataOld );
+
+               dataUser.set( dest, udataCur );
+       }
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+       var nodeName = dest.nodeName.toLowerCase();
+
+       // Fails to persist the checked state of a cloned checkbox or radio button.
+       if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+               dest.checked = src.checked;
+
+       // Fails to return the selected option to the default selected state when cloning options
+       } else if ( nodeName === "input" || nodeName === "textarea" ) {
+               dest.defaultValue = src.defaultValue;
+       }
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+       // Flatten any nested arrays
+       args = concat.apply( [], args );
+
+       var fragment, first, scripts, hasScripts, node, doc,
+               i = 0,
+               l = collection.length,
+               iNoClone = l - 1,
+               value = args[ 0 ],
+               isFunction = jQuery.isFunction( value );
+
+       // We can't cloneNode fragments that contain checked, in WebKit
+       if ( isFunction ||
+                       ( l > 1 && typeof value === "string" &&
+                               !support.checkClone && rchecked.test( value ) ) ) {
+               return collection.each( function( index ) {
+                       var self = collection.eq( index );
+                       if ( isFunction ) {
+                               args[ 0 ] = value.call( this, index, self.html() );
+                       }
+                       domManip( self, args, callback, ignored );
+               } );
+       }
+
+       if ( l ) {
+               fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+               first = fragment.firstChild;
+
+               if ( fragment.childNodes.length === 1 ) {
+                       fragment = first;
+               }
+
+               // Require either new content or an interest in ignored elements to invoke the callback
+               if ( first || ignored ) {
+                       scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+                       hasScripts = scripts.length;
+
+                       // Use the original fragment for the last item
+                       // instead of the first because it can end up
+                       // being emptied incorrectly in certain situations (#8070).
+                       for ( ; i < l; i++ ) {
+                               node = fragment;
+
+                               if ( i !== iNoClone ) {
+                                       node = jQuery.clone( node, true, true );
+
+                                       // Keep references to cloned scripts for later restoration
+                                       if ( hasScripts ) {
+
+                                               // Support: Android <=4.0 only, PhantomJS 1 only
+                                               // push.apply(_, arraylike) throws on ancient WebKit
+                                               jQuery.merge( scripts, getAll( node, "script" ) );
+                                       }
+                               }
+
+                               callback.call( collection[ i ], node, i );
+                       }
+
+                       if ( hasScripts ) {
+                               doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+                               // Reenable scripts
+                               jQuery.map( scripts, restoreScript );
+
+                               // Evaluate executable scripts on first document insertion
+                               for ( i = 0; i < hasScripts; i++ ) {
+                                       node = scripts[ i ];
+                                       if ( rscriptType.test( node.type || "" ) &&
+                                               !dataPriv.access( node, "globalEval" ) &&
+                                               jQuery.contains( doc, node ) ) {
+
+                                               if ( node.src ) {
+
+                                                       // Optional AJAX dependency, but won't run scripts if not present
+                                                       if ( jQuery._evalUrl ) {
+                                                               jQuery._evalUrl( node.src );
+                                                       }
+                                               } else {
+                                                       DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return collection;
+}
+
+function remove( elem, selector, keepData ) {
+       var node,
+               nodes = selector ? jQuery.filter( selector, elem ) : elem,
+               i = 0;
+
+       for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+               if ( !keepData && node.nodeType === 1 ) {
+                       jQuery.cleanData( getAll( node ) );
+               }
+
+               if ( node.parentNode ) {
+                       if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+                               setGlobalEval( getAll( node, "script" ) );
+                       }
+                       node.parentNode.removeChild( node );
+               }
+       }
+
+       return elem;
+}
+
+jQuery.extend( {
+       htmlPrefilter: function( html ) {
+               return html.replace( rxhtmlTag, "<$1></$2>" );
+       },
+
+       clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+               var i, l, srcElements, destElements,
+                       clone = elem.cloneNode( true ),
+                       inPage = jQuery.contains( elem.ownerDocument, elem );
+
+               // Fix IE cloning issues
+               if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+                               !jQuery.isXMLDoc( elem ) ) {
+
+                       // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+                       destElements = getAll( clone );
+                       srcElements = getAll( elem );
+
+                       for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                               fixInput( srcElements[ i ], destElements[ i ] );
+                       }
+               }
+
+               // Copy the events from the original to the clone
+               if ( dataAndEvents ) {
+                       if ( deepDataAndEvents ) {
+                               srcElements = srcElements || getAll( elem );
+                               destElements = destElements || getAll( clone );
+
+                               for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                                       cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+                               }
+                       } else {
+                               cloneCopyEvent( elem, clone );
+                       }
+               }
+
+               // Preserve script evaluation history
+               destElements = getAll( clone, "script" );
+               if ( destElements.length > 0 ) {
+                       setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+               }
+
+               // Return the cloned set
+               return clone;
+       },
+
+       cleanData: function( elems ) {
+               var data, elem, type,
+                       special = jQuery.event.special,
+                       i = 0;
+
+               for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+                       if ( acceptData( elem ) ) {
+                               if ( ( data = elem[ dataPriv.expando ] ) ) {
+                                       if ( data.events ) {
+                                               for ( type in data.events ) {
+                                                       if ( special[ type ] ) {
+                                                               jQuery.event.remove( elem, type );
+
+                                                       // This is a shortcut to avoid jQuery.event.remove's overhead
+                                                       } else {
+                                                               jQuery.removeEvent( elem, type, data.handle );
+                                                       }
+                                               }
+                                       }
+
+                                       // Support: Chrome <=35 - 45+
+                                       // Assign undefined instead of using delete, see Data#remove
+                                       elem[ dataPriv.expando ] = undefined;
+                               }
+                               if ( elem[ dataUser.expando ] ) {
+
+                                       // Support: Chrome <=35 - 45+
+                                       // Assign undefined instead of using delete, see Data#remove
+                                       elem[ dataUser.expando ] = undefined;
+                               }
+                       }
+               }
+       }
+} );
+
+jQuery.fn.extend( {
+       detach: function( selector ) {
+               return remove( this, selector, true );
+       },
+
+       remove: function( selector ) {
+               return remove( this, selector );
+       },
+
+       text: function( value ) {
+               return access( this, function( value ) {
+                       return value === undefined ?
+                               jQuery.text( this ) :
+                               this.empty().each( function() {
+                                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                                               this.textContent = value;
+                                       }
+                               } );
+               }, null, value, arguments.length );
+       },
+
+       append: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.appendChild( elem );
+                       }
+               } );
+       },
+
+       prepend: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.insertBefore( elem, target.firstChild );
+                       }
+               } );
+       },
+
+       before: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this );
+                       }
+               } );
+       },
+
+       after: function() {
+               return domManip( this, arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this.nextSibling );
+                       }
+               } );
+       },
+
+       empty: function() {
+               var elem,
+                       i = 0;
+
+               for ( ; ( elem = this[ i ] ) != null; i++ ) {
+                       if ( elem.nodeType === 1 ) {
+
+                               // Prevent memory leaks
+                               jQuery.cleanData( getAll( elem, false ) );
+
+                               // Remove any remaining nodes
+                               elem.textContent = "";
+                       }
+               }
+
+               return this;
+       },
+
+       clone: function( dataAndEvents, deepDataAndEvents ) {
+               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+               deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+               return this.map( function() {
+                       return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+               } );
+       },
+
+       html: function( value ) {
+               return access( this, function( value ) {
+                       var elem = this[ 0 ] || {},
+                               i = 0,
+                               l = this.length;
+
+                       if ( value === undefined && elem.nodeType === 1 ) {
+                               return elem.innerHTML;
+                       }
+
+                       // See if we can take a shortcut and just use innerHTML
+                       if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+                               !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+                               value = jQuery.htmlPrefilter( value );
+
+                               try {
+                                       for ( ; i < l; i++ ) {
+                                               elem = this[ i ] || {};
+
+                                               // Remove element nodes and prevent memory leaks
+                                               if ( elem.nodeType === 1 ) {
+                                                       jQuery.cleanData( getAll( elem, false ) );
+                                                       elem.innerHTML = value;
+                                               }
+                                       }
+
+                                       elem = 0;
+
+                               // If using innerHTML throws an exception, use the fallback method
+                               } catch ( e ) {}
+                       }
+
+                       if ( elem ) {
+                               this.empty().append( value );
+                       }
+               }, null, value, arguments.length );
+       },
+
+       replaceWith: function() {
+               var ignored = [];
+
+               // Make the changes, replacing each non-ignored context element with the new content
+               return domManip( this, arguments, function( elem ) {
+                       var parent = this.parentNode;
+
+                       if ( jQuery.inArray( this, ignored ) < 0 ) {
+                               jQuery.cleanData( getAll( this ) );
+                               if ( parent ) {
+                                       parent.replaceChild( elem, this );
+                               }
+                       }
+
+               // Force callback invocation
+               }, ignored );
+       }
+} );
+
+jQuery.each( {
+       appendTo: "append",
+       prependTo: "prepend",
+       insertBefore: "before",
+       insertAfter: "after",
+       replaceAll: "replaceWith"
+}, function( name, original ) {
+       jQuery.fn[ name ] = function( selector ) {
+               var elems,
+                       ret = [],
+                       insert = jQuery( selector ),
+                       last = insert.length - 1,
+                       i = 0;
+
+               for ( ; i <= last; i++ ) {
+                       elems = i === last ? this : this.clone( true );
+                       jQuery( insert[ i ] )[ original ]( elems );
+
+                       // Support: Android <=4.0 only, PhantomJS 1 only
+                       // .get() because push.apply(_, arraylike) throws on ancient WebKit
+                       push.apply( ret, elems.get() );
+               }
+
+               return this.pushStack( ret );
+       };
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/manipulation/_evalUrl.js b/js/jquery/src/manipulation/_evalUrl.js
new file mode 100644 (file)
index 0000000..f9ec702
--- /dev/null
@@ -0,0 +1,23 @@
+define( [
+       "../ajax"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery._evalUrl = function( url ) {
+       return jQuery.ajax( {
+               url: url,
+
+               // Make this explicit, since user can override this through ajaxSetup (#11264)
+               type: "GET",
+               dataType: "script",
+               cache: true,
+               async: false,
+               global: false,
+               "throws": true
+       } );
+};
+
+return jQuery._evalUrl;
+
+} );
diff --git a/js/jquery/src/manipulation/buildFragment.js b/js/jquery/src/manipulation/buildFragment.js
new file mode 100644 (file)
index 0000000..bcb5085
--- /dev/null
@@ -0,0 +1,104 @@
+define( [
+       "../core",
+       "./var/rtagName",
+       "./var/rscriptType",
+       "./wrapMap",
+       "./getAll",
+       "./setGlobalEval"
+], function( jQuery, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
+
+"use strict";
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+       var elem, tmp, tag, wrap, contains, j,
+               fragment = context.createDocumentFragment(),
+               nodes = [],
+               i = 0,
+               l = elems.length;
+
+       for ( ; i < l; i++ ) {
+               elem = elems[ i ];
+
+               if ( elem || elem === 0 ) {
+
+                       // Add nodes directly
+                       if ( jQuery.type( elem ) === "object" ) {
+
+                               // Support: Android <=4.0 only, PhantomJS 1 only
+                               // push.apply(_, arraylike) throws on ancient WebKit
+                               jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+                       // Convert non-html into a text node
+                       } else if ( !rhtml.test( elem ) ) {
+                               nodes.push( context.createTextNode( elem ) );
+
+                       // Convert html into DOM nodes
+                       } else {
+                               tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+                               // Deserialize a standard representation
+                               tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+                               wrap = wrapMap[ tag ] || wrapMap._default;
+                               tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+                               // Descend through wrappers to the right content
+                               j = wrap[ 0 ];
+                               while ( j-- ) {
+                                       tmp = tmp.lastChild;
+                               }
+
+                               // Support: Android <=4.0 only, PhantomJS 1 only
+                               // push.apply(_, arraylike) throws on ancient WebKit
+                               jQuery.merge( nodes, tmp.childNodes );
+
+                               // Remember the top-level container
+                               tmp = fragment.firstChild;
+
+                               // Ensure the created nodes are orphaned (#12392)
+                               tmp.textContent = "";
+                       }
+               }
+       }
+
+       // Remove wrapper from fragment
+       fragment.textContent = "";
+
+       i = 0;
+       while ( ( elem = nodes[ i++ ] ) ) {
+
+               // Skip elements already in the context collection (trac-4087)
+               if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+                       if ( ignored ) {
+                               ignored.push( elem );
+                       }
+                       continue;
+               }
+
+               contains = jQuery.contains( elem.ownerDocument, elem );
+
+               // Append to fragment
+               tmp = getAll( fragment.appendChild( elem ), "script" );
+
+               // Preserve script evaluation history
+               if ( contains ) {
+                       setGlobalEval( tmp );
+               }
+
+               // Capture executables
+               if ( scripts ) {
+                       j = 0;
+                       while ( ( elem = tmp[ j++ ] ) ) {
+                               if ( rscriptType.test( elem.type || "" ) ) {
+                                       scripts.push( elem );
+                               }
+                       }
+               }
+       }
+
+       return fragment;
+}
+
+return buildFragment;
+} );
diff --git a/js/jquery/src/manipulation/getAll.js b/js/jquery/src/manipulation/getAll.js
new file mode 100644 (file)
index 0000000..f68e321
--- /dev/null
@@ -0,0 +1,31 @@
+define( [
+       "../core"
+], function( jQuery ) {
+
+"use strict";
+
+function getAll( context, tag ) {
+
+       // Support: IE <=9 - 11 only
+       // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+       var ret;
+
+       if ( typeof context.getElementsByTagName !== "undefined" ) {
+               ret = context.getElementsByTagName( tag || "*" );
+
+       } else if ( typeof context.querySelectorAll !== "undefined" ) {
+               ret = context.querySelectorAll( tag || "*" );
+
+       } else {
+               ret = [];
+       }
+
+       if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
+               return jQuery.merge( [ context ], ret );
+       }
+
+       return ret;
+}
+
+return getAll;
+} );
diff --git a/js/jquery/src/manipulation/setGlobalEval.js b/js/jquery/src/manipulation/setGlobalEval.js
new file mode 100644 (file)
index 0000000..cf95240
--- /dev/null
@@ -0,0 +1,22 @@
+define( [
+       "../data/var/dataPriv"
+], function( dataPriv ) {
+
+"use strict";
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+       var i = 0,
+               l = elems.length;
+
+       for ( ; i < l; i++ ) {
+               dataPriv.set(
+                       elems[ i ],
+                       "globalEval",
+                       !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+               );
+       }
+}
+
+return setGlobalEval;
+} );
diff --git a/js/jquery/src/manipulation/support.js b/js/jquery/src/manipulation/support.js
new file mode 100644 (file)
index 0000000..4a5d9af
--- /dev/null
@@ -0,0 +1,35 @@
+define( [
+       "../var/document",
+       "../var/support"
+], function( document, support ) {
+
+"use strict";
+
+( function() {
+       var fragment = document.createDocumentFragment(),
+               div = fragment.appendChild( document.createElement( "div" ) ),
+               input = document.createElement( "input" );
+
+       // Support: Android 4.0 - 4.3 only
+       // Check state lost if the name is set (#11217)
+       // Support: Windows Web Apps (WWA)
+       // `name` and `type` must use .setAttribute for WWA (#14901)
+       input.setAttribute( "type", "radio" );
+       input.setAttribute( "checked", "checked" );
+       input.setAttribute( "name", "t" );
+
+       div.appendChild( input );
+
+       // Support: Android <=4.1 only
+       // Older WebKit doesn't clone checked state correctly in fragments
+       support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+       // Support: IE <=11 only
+       // Make sure textarea (and checkbox) defaultValue is properly cloned
+       div.innerHTML = "<textarea>x</textarea>";
+       support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+
+return support;
+
+} );
diff --git a/js/jquery/src/manipulation/var/rcheckableType.js b/js/jquery/src/manipulation/var/rcheckableType.js
new file mode 100644 (file)
index 0000000..25bbcb4
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return ( /^(?:checkbox|radio)$/i );
+} );
diff --git a/js/jquery/src/manipulation/var/rscriptType.js b/js/jquery/src/manipulation/var/rscriptType.js
new file mode 100644 (file)
index 0000000..7237c8a
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return ( /^$|\/(?:java|ecma)script/i );
+} );
diff --git a/js/jquery/src/manipulation/var/rtagName.js b/js/jquery/src/manipulation/var/rtagName.js
new file mode 100644 (file)
index 0000000..d565dd3
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+} );
diff --git a/js/jquery/src/manipulation/wrapMap.js b/js/jquery/src/manipulation/wrapMap.js
new file mode 100644 (file)
index 0000000..1f446f7
--- /dev/null
@@ -0,0 +1,29 @@
+define( function() {
+
+"use strict";
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+       // Support: IE <=9 only
+       option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+       // XHTML parsers do not magically insert elements in the
+       // same way that tag soup parsers do. So we cannot shorten
+       // this by omitting <tbody> or other required elements.
+       thead: [ 1, "<table>", "</table>" ],
+       col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+       tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+       td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+       _default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+return wrapMap;
+} );
diff --git a/js/jquery/src/offset.js b/js/jquery/src/offset.js
new file mode 100644 (file)
index 0000000..54442eb
--- /dev/null
@@ -0,0 +1,232 @@
+define( [
+       "./core",
+       "./core/access",
+       "./var/document",
+       "./var/documentElement",
+       "./css/var/rnumnonpx",
+       "./css/curCSS",
+       "./css/addGetHookIf",
+       "./css/support",
+
+       "./core/init",
+       "./css",
+       "./selector" // contains
+], function( jQuery, access, document, documentElement, rnumnonpx, curCSS, addGetHookIf, support ) {
+
+"use strict";
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+       return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+       setOffset: function( elem, options, i ) {
+               var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+                       position = jQuery.css( elem, "position" ),
+                       curElem = jQuery( elem ),
+                       props = {};
+
+               // Set position first, in-case top/left are set even on static elem
+               if ( position === "static" ) {
+                       elem.style.position = "relative";
+               }
+
+               curOffset = curElem.offset();
+               curCSSTop = jQuery.css( elem, "top" );
+               curCSSLeft = jQuery.css( elem, "left" );
+               calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+                       ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+               // Need to be able to calculate position if either
+               // top or left is auto and position is either absolute or fixed
+               if ( calculatePosition ) {
+                       curPosition = curElem.position();
+                       curTop = curPosition.top;
+                       curLeft = curPosition.left;
+
+               } else {
+                       curTop = parseFloat( curCSSTop ) || 0;
+                       curLeft = parseFloat( curCSSLeft ) || 0;
+               }
+
+               if ( jQuery.isFunction( options ) ) {
+
+                       // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+                       options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+               }
+
+               if ( options.top != null ) {
+                       props.top = ( options.top - curOffset.top ) + curTop;
+               }
+               if ( options.left != null ) {
+                       props.left = ( options.left - curOffset.left ) + curLeft;
+               }
+
+               if ( "using" in options ) {
+                       options.using.call( elem, props );
+
+               } else {
+                       curElem.css( props );
+               }
+       }
+};
+
+jQuery.fn.extend( {
+       offset: function( options ) {
+
+               // Preserve chaining for setter
+               if ( arguments.length ) {
+                       return options === undefined ?
+                               this :
+                               this.each( function( i ) {
+                                       jQuery.offset.setOffset( this, options, i );
+                               } );
+               }
+
+               var docElem, win, rect, doc,
+                       elem = this[ 0 ];
+
+               if ( !elem ) {
+                       return;
+               }
+
+               // Support: IE <=11 only
+               // Running getBoundingClientRect on a
+               // disconnected node in IE throws an error
+               if ( !elem.getClientRects().length ) {
+                       return { top: 0, left: 0 };
+               }
+
+               rect = elem.getBoundingClientRect();
+
+               // Make sure element is not hidden (display: none)
+               if ( rect.width || rect.height ) {
+                       doc = elem.ownerDocument;
+                       win = getWindow( doc );
+                       docElem = doc.documentElement;
+
+                       return {
+                               top: rect.top + win.pageYOffset - docElem.clientTop,
+                               left: rect.left + win.pageXOffset - docElem.clientLeft
+                       };
+               }
+
+               // Return zeros for disconnected and hidden elements (gh-2310)
+               return rect;
+       },
+
+       position: function() {
+               if ( !this[ 0 ] ) {
+                       return;
+               }
+
+               var offsetParent, offset,
+                       elem = this[ 0 ],
+                       parentOffset = { top: 0, left: 0 };
+
+               // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+               // because it is its only offset parent
+               if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+                       // Assume getBoundingClientRect is there when computed position is fixed
+                       offset = elem.getBoundingClientRect();
+
+               } else {
+
+                       // Get *real* offsetParent
+                       offsetParent = this.offsetParent();
+
+                       // Get correct offsets
+                       offset = this.offset();
+                       if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+                               parentOffset = offsetParent.offset();
+                       }
+
+                       // Add offsetParent borders
+                       parentOffset = {
+                               top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+                               left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+                       };
+               }
+
+               // Subtract parent offsets and element margins
+               return {
+                       top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+                       left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+               };
+       },
+
+       // This method will return documentElement in the following cases:
+       // 1) For the element inside the iframe without offsetParent, this method will return
+       //    documentElement of the parent window
+       // 2) For the hidden or detached element
+       // 3) For body or html element, i.e. in case of the html node - it will return itself
+       //
+       // but those exceptions were never presented as a real life use-cases
+       // and might be considered as more preferable results.
+       //
+       // This logic, however, is not guaranteed and can change at any point in the future
+       offsetParent: function() {
+               return this.map( function() {
+                       var offsetParent = this.offsetParent;
+
+                       while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+                               offsetParent = offsetParent.offsetParent;
+                       }
+
+                       return offsetParent || documentElement;
+               } );
+       }
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+       var top = "pageYOffset" === prop;
+
+       jQuery.fn[ method ] = function( val ) {
+               return access( this, function( elem, method, val ) {
+                       var win = getWindow( elem );
+
+                       if ( val === undefined ) {
+                               return win ? win[ prop ] : elem[ method ];
+                       }
+
+                       if ( win ) {
+                               win.scrollTo(
+                                       !top ? val : win.pageXOffset,
+                                       top ? val : win.pageYOffset
+                               );
+
+                       } else {
+                               elem[ method ] = val;
+                       }
+               }, method, val, arguments.length );
+       };
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+       jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+               function( elem, computed ) {
+                       if ( computed ) {
+                               computed = curCSS( elem, prop );
+
+                               // If curCSS returns percentage, fallback to offset
+                               return rnumnonpx.test( computed ) ?
+                                       jQuery( elem ).position()[ prop ] + "px" :
+                                       computed;
+                       }
+               }
+       );
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/outro.js b/js/jquery/src/outro.js
new file mode 100644 (file)
index 0000000..d792ffb
--- /dev/null
@@ -0,0 +1,2 @@
+return jQuery;
+}));
diff --git a/js/jquery/src/queue.js b/js/jquery/src/queue.js
new file mode 100644 (file)
index 0000000..3a626a2
--- /dev/null
@@ -0,0 +1,145 @@
+define( [
+       "./core",
+       "./data/var/dataPriv",
+       "./deferred",
+       "./callbacks"
+], function( jQuery, dataPriv ) {
+
+"use strict";
+
+jQuery.extend( {
+       queue: function( elem, type, data ) {
+               var queue;
+
+               if ( elem ) {
+                       type = ( type || "fx" ) + "queue";
+                       queue = dataPriv.get( elem, type );
+
+                       // Speed up dequeue by getting out quickly if this is just a lookup
+                       if ( data ) {
+                               if ( !queue || jQuery.isArray( data ) ) {
+                                       queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+                               } else {
+                                       queue.push( data );
+                               }
+                       }
+                       return queue || [];
+               }
+       },
+
+       dequeue: function( elem, type ) {
+               type = type || "fx";
+
+               var queue = jQuery.queue( elem, type ),
+                       startLength = queue.length,
+                       fn = queue.shift(),
+                       hooks = jQuery._queueHooks( elem, type ),
+                       next = function() {
+                               jQuery.dequeue( elem, type );
+                       };
+
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if ( fn === "inprogress" ) {
+                       fn = queue.shift();
+                       startLength--;
+               }
+
+               if ( fn ) {
+
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if ( type === "fx" ) {
+                               queue.unshift( "inprogress" );
+                       }
+
+                       // Clear up the last queue stop function
+                       delete hooks.stop;
+                       fn.call( elem, next, hooks );
+               }
+
+               if ( !startLength && hooks ) {
+                       hooks.empty.fire();
+               }
+       },
+
+       // Not public - generate a queueHooks object, or return the current one
+       _queueHooks: function( elem, type ) {
+               var key = type + "queueHooks";
+               return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+                       empty: jQuery.Callbacks( "once memory" ).add( function() {
+                               dataPriv.remove( elem, [ type + "queue", key ] );
+                       } )
+               } );
+       }
+} );
+
+jQuery.fn.extend( {
+       queue: function( type, data ) {
+               var setter = 2;
+
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+                       setter--;
+               }
+
+               if ( arguments.length < setter ) {
+                       return jQuery.queue( this[ 0 ], type );
+               }
+
+               return data === undefined ?
+                       this :
+                       this.each( function() {
+                               var queue = jQuery.queue( this, type, data );
+
+                               // Ensure a hooks for this queue
+                               jQuery._queueHooks( this, type );
+
+                               if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+                                       jQuery.dequeue( this, type );
+                               }
+                       } );
+       },
+       dequeue: function( type ) {
+               return this.each( function() {
+                       jQuery.dequeue( this, type );
+               } );
+       },
+       clearQueue: function( type ) {
+               return this.queue( type || "fx", [] );
+       },
+
+       // Get a promise resolved when queues of a certain type
+       // are emptied (fx is the type by default)
+       promise: function( type, obj ) {
+               var tmp,
+                       count = 1,
+                       defer = jQuery.Deferred(),
+                       elements = this,
+                       i = this.length,
+                       resolve = function() {
+                               if ( !( --count ) ) {
+                                       defer.resolveWith( elements, [ elements ] );
+                               }
+                       };
+
+               if ( typeof type !== "string" ) {
+                       obj = type;
+                       type = undefined;
+               }
+               type = type || "fx";
+
+               while ( i-- ) {
+                       tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+                       if ( tmp && tmp.empty ) {
+                               count++;
+                               tmp.empty.add( resolve );
+                       }
+               }
+               resolve();
+               return defer.promise( obj );
+       }
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/queue/delay.js b/js/jquery/src/queue/delay.js
new file mode 100644 (file)
index 0000000..d471eed
--- /dev/null
@@ -0,0 +1,24 @@
+define( [
+       "../core",
+       "../queue",
+       "../effects" // Delay is optional because of this dependency
+], function( jQuery ) {
+
+"use strict";
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+       time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+       type = type || "fx";
+
+       return this.queue( type, function( next, hooks ) {
+               var timeout = window.setTimeout( next, time );
+               hooks.stop = function() {
+                       window.clearTimeout( timeout );
+               };
+       } );
+};
+
+return jQuery.fn.delay;
+} );
diff --git a/js/jquery/src/selector-native.js b/js/jquery/src/selector-native.js
new file mode 100644 (file)
index 0000000..da837a0
--- /dev/null
@@ -0,0 +1,237 @@
+define( [
+       "./core",
+       "./var/document",
+       "./var/documentElement",
+       "./var/hasOwn",
+       "./var/indexOf"
+], function( jQuery, document, documentElement, hasOwn, indexOf ) {
+
+"use strict";
+
+/*
+ * Optional (non-Sizzle) selector module for custom builds.
+ *
+ * Note that this DOES NOT SUPPORT many documented jQuery
+ * features in exchange for its smaller size:
+ *
+ * Attribute not equal selector
+ * Positional selectors (:first; :eq(n); :odd; etc.)
+ * Type selectors (:input; :checkbox; :button; etc.)
+ * State-based selectors (:animated; :visible; :hidden; etc.)
+ * :has(selector)
+ * :not(complex selector)
+ * custom selectors via Sizzle extensions
+ * Leading combinators (e.g., $collection.find("> *"))
+ * Reliable functionality on XML fragments
+ * Requiring all parts of a selector to match elements under context
+ *   (e.g., $div.find("div > *") now matches children of $div)
+ * Matching against non-elements
+ * Reliable sorting of disconnected nodes
+ * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
+ *
+ * If any of these are unacceptable tradeoffs, either use Sizzle or
+ * customize this stub for the project's specific needs.
+ */
+
+var hasDuplicate, sortInput,
+       sortStable = jQuery.expando.split( "" ).sort( sortOrder ).join( "" ) === jQuery.expando,
+       matches = documentElement.matches ||
+               documentElement.webkitMatchesSelector ||
+               documentElement.mozMatchesSelector ||
+               documentElement.oMatchesSelector ||
+               documentElement.msMatchesSelector,
+
+       // CSS string/identifier serialization
+       // https://drafts.csswg.org/cssom/#common-serializing-idioms
+       rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
+       fcssescape = function( ch, asCodePoint ) {
+               if ( asCodePoint ) {
+
+                       // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+                       if ( ch === "\0" ) {
+                               return "\uFFFD";
+                       }
+
+                       // Control characters and (dependent upon position) numbers get escaped as code points
+                       return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+               }
+
+               // Other potentially-special ASCII characters get backslash-escaped
+               return "\\" + ch;
+       };
+
+function sortOrder( a, b ) {
+
+       // Flag for duplicate removal
+       if ( a === b ) {
+               hasDuplicate = true;
+               return 0;
+       }
+
+       // Sort on method existence if only one input has compareDocumentPosition
+       var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+       if ( compare ) {
+               return compare;
+       }
+
+       // Calculate position if both inputs belong to the same document
+       compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+               a.compareDocumentPosition( b ) :
+
+               // Otherwise we know they are disconnected
+               1;
+
+       // Disconnected nodes
+       if ( compare & 1 ) {
+
+               // Choose the first element that is related to our preferred document
+               if ( a === document || a.ownerDocument === document &&
+                       jQuery.contains( document, a ) ) {
+                       return -1;
+               }
+               if ( b === document || b.ownerDocument === document &&
+                       jQuery.contains( document, b ) ) {
+                       return 1;
+               }
+
+               // Maintain original order
+               return sortInput ?
+                       ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+                       0;
+       }
+
+       return compare & 4 ? -1 : 1;
+}
+
+function uniqueSort( results ) {
+       var elem,
+               duplicates = [],
+               j = 0,
+               i = 0;
+
+       hasDuplicate = false;
+       sortInput = !sortStable && results.slice( 0 );
+       results.sort( sortOrder );
+
+       if ( hasDuplicate ) {
+               while ( ( elem = results[ i++ ] ) ) {
+                       if ( elem === results[ i ] ) {
+                               j = duplicates.push( i );
+                       }
+               }
+               while ( j-- ) {
+                       results.splice( duplicates[ j ], 1 );
+               }
+       }
+
+       // Clear input after sorting to release objects
+       // See https://github.com/jquery/sizzle/pull/225
+       sortInput = null;
+
+       return results;
+}
+
+function escape( sel ) {
+       return ( sel + "" ).replace( rcssescape, fcssescape );
+}
+
+jQuery.extend( {
+       uniqueSort: uniqueSort,
+       unique: uniqueSort,
+       escapeSelector: escape,
+       find: function( selector, context, results, seed ) {
+               var elem, nodeType,
+                       i = 0;
+
+               results = results || [];
+               context = context || document;
+
+               // Same basic safeguard as Sizzle
+               if ( !selector || typeof selector !== "string" ) {
+                       return results;
+               }
+
+               // Early return if context is not an element or document
+               if ( ( nodeType = context.nodeType ) !== 1 && nodeType !== 9 ) {
+                       return [];
+               }
+
+               if ( seed ) {
+                       while ( ( elem = seed[ i++ ] ) ) {
+                               if ( jQuery.find.matchesSelector( elem, selector ) ) {
+                                       results.push( elem );
+                               }
+                       }
+               } else {
+                       jQuery.merge( results, context.querySelectorAll( selector ) );
+               }
+
+               return results;
+       },
+       text: function( elem ) {
+               var node,
+                       ret = "",
+                       i = 0,
+                       nodeType = elem.nodeType;
+
+               if ( !nodeType ) {
+
+                       // If no nodeType, this is expected to be an array
+                       while ( ( node = elem[ i++ ] ) ) {
+
+                               // Do not traverse comment nodes
+                               ret += jQuery.text( node );
+                       }
+               } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+
+                       // Use textContent for elements
+                       return elem.textContent;
+               } else if ( nodeType === 3 || nodeType === 4 ) {
+                       return elem.nodeValue;
+               }
+
+               // Do not include comment or processing instruction nodes
+
+               return ret;
+       },
+       contains: function( a, b ) {
+               var adown = a.nodeType === 9 ? a.documentElement : a,
+                       bup = b && b.parentNode;
+               return a === bup || !!( bup && bup.nodeType === 1 && adown.contains( bup ) );
+       },
+       isXMLDoc: function( elem ) {
+
+               // documentElement is verified for cases where it doesn't yet exist
+               // (such as loading iframes in IE - #4833)
+               var documentElement = elem && ( elem.ownerDocument || elem ).documentElement;
+               return documentElement ? documentElement.nodeName !== "HTML" : false;
+       },
+       expr: {
+               attrHandle: {},
+               match: {
+                       bool: new RegExp( "^(?:checked|selected|async|autofocus|autoplay|controls|defer" +
+                               "|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i" ),
+                       needsContext: /^[\x20\t\r\n\f]*[>+~]/
+               }
+       }
+} );
+
+jQuery.extend( jQuery.find, {
+       matches: function( expr, elements ) {
+               return jQuery.find( expr, null, null, elements );
+       },
+       matchesSelector: function( elem, expr ) {
+               return matches.call( elem, expr );
+       },
+       attr: function( elem, name ) {
+               var fn = jQuery.expr.attrHandle[ name.toLowerCase() ],
+
+                       // Don't get fooled by Object.prototype properties (jQuery #13807)
+                       value = fn && hasOwn.call( jQuery.expr.attrHandle, name.toLowerCase() ) ?
+                               fn( elem, name, jQuery.isXMLDoc( elem ) ) :
+                               undefined;
+               return value !== undefined ? value : elem.getAttribute( name );
+       }
+} );
+
+} );
diff --git a/js/jquery/src/selector-sizzle.js b/js/jquery/src/selector-sizzle.js
new file mode 100644 (file)
index 0000000..ff7bc70
--- /dev/null
@@ -0,0 +1,19 @@
+define( [
+       "./core",
+       "../external/sizzle/dist/sizzle"
+], function( jQuery, Sizzle ) {
+
+"use strict";
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+} );
diff --git a/js/jquery/src/selector.js b/js/jquery/src/selector.js
new file mode 100644 (file)
index 0000000..2e0c17e
--- /dev/null
@@ -0,0 +1,3 @@
+define( [ "./selector-sizzle" ], function() {
+       "use strict";
+} );
diff --git a/js/jquery/src/serialize.js b/js/jquery/src/serialize.js
new file mode 100644 (file)
index 0000000..35dcf04
--- /dev/null
@@ -0,0 +1,130 @@
+define( [
+       "./core",
+       "./manipulation/var/rcheckableType",
+       "./core/init",
+       "./traversing", // filter
+       "./attributes/prop"
+], function( jQuery, rcheckableType ) {
+
+"use strict";
+
+var
+       rbracket = /\[\]$/,
+       rCRLF = /\r?\n/g,
+       rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+       rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+       var name;
+
+       if ( jQuery.isArray( obj ) ) {
+
+               // Serialize array item.
+               jQuery.each( obj, function( i, v ) {
+                       if ( traditional || rbracket.test( prefix ) ) {
+
+                               // Treat each array item as a scalar.
+                               add( prefix, v );
+
+                       } else {
+
+                               // Item is non-scalar (array or object), encode its numeric index.
+                               buildParams(
+                                       prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+                                       v,
+                                       traditional,
+                                       add
+                               );
+                       }
+               } );
+
+       } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+               // Serialize object item.
+               for ( name in obj ) {
+                       buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+               }
+
+       } else {
+
+               // Serialize scalar item.
+               add( prefix, obj );
+       }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+       var prefix,
+               s = [],
+               add = function( key, valueOrFunction ) {
+
+                       // If value is a function, invoke it and use its return value
+                       var value = jQuery.isFunction( valueOrFunction ) ?
+                               valueOrFunction() :
+                               valueOrFunction;
+
+                       s[ s.length ] = encodeURIComponent( key ) + "=" +
+                               encodeURIComponent( value == null ? "" : value );
+               };
+
+       // If an array was passed in, assume that it is an array of form elements.
+       if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+               // Serialize the form elements
+               jQuery.each( a, function() {
+                       add( this.name, this.value );
+               } );
+
+       } else {
+
+               // If traditional, encode the "old" way (the way 1.3.2 or older
+               // did it), otherwise encode params recursively.
+               for ( prefix in a ) {
+                       buildParams( prefix, a[ prefix ], traditional, add );
+               }
+       }
+
+       // Return the resulting serialization
+       return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+       serialize: function() {
+               return jQuery.param( this.serializeArray() );
+       },
+       serializeArray: function() {
+               return this.map( function() {
+
+                       // Can add propHook for "elements" to filter or add form elements
+                       var elements = jQuery.prop( this, "elements" );
+                       return elements ? jQuery.makeArray( elements ) : this;
+               } )
+               .filter( function() {
+                       var type = this.type;
+
+                       // Use .is( ":disabled" ) so that fieldset[disabled] works
+                       return this.name && !jQuery( this ).is( ":disabled" ) &&
+                               rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+                               ( this.checked || !rcheckableType.test( type ) );
+               } )
+               .map( function( i, elem ) {
+                       var val = jQuery( this ).val();
+
+                       if ( val == null ) {
+                               return null;
+                       }
+
+                       if ( jQuery.isArray( val ) ) {
+                               return jQuery.map( val, function( val ) {
+                                       return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+                               } );
+                       }
+
+                       return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+               } ).get();
+       }
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/traversing.js b/js/jquery/src/traversing.js
new file mode 100644 (file)
index 0000000..50cd2d6
--- /dev/null
@@ -0,0 +1,178 @@
+define( [
+       "./core",
+       "./var/indexOf",
+       "./traversing/var/dir",
+       "./traversing/var/siblings",
+       "./traversing/var/rneedsContext",
+       "./core/init",
+       "./traversing/findFilter",
+       "./selector"
+], function( jQuery, indexOf, dir, siblings, rneedsContext ) {
+
+"use strict";
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+       // Methods guaranteed to produce a unique set when starting from a unique set
+       guaranteedUnique = {
+               children: true,
+               contents: true,
+               next: true,
+               prev: true
+       };
+
+jQuery.fn.extend( {
+       has: function( target ) {
+               var targets = jQuery( target, this ),
+                       l = targets.length;
+
+               return this.filter( function() {
+                       var i = 0;
+                       for ( ; i < l; i++ ) {
+                               if ( jQuery.contains( this, targets[ i ] ) ) {
+                                       return true;
+                               }
+                       }
+               } );
+       },
+
+       closest: function( selectors, context ) {
+               var cur,
+                       i = 0,
+                       l = this.length,
+                       matched = [],
+                       targets = typeof selectors !== "string" && jQuery( selectors );
+
+               // Positional selectors never match, since there's no _selection_ context
+               if ( !rneedsContext.test( selectors ) ) {
+                       for ( ; i < l; i++ ) {
+                               for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+                                       // Always skip document fragments
+                                       if ( cur.nodeType < 11 && ( targets ?
+                                               targets.index( cur ) > -1 :
+
+                                               // Don't pass non-elements to Sizzle
+                                               cur.nodeType === 1 &&
+                                                       jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+                                               matched.push( cur );
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+       },
+
+       // Determine the position of an element within the set
+       index: function( elem ) {
+
+               // No argument, return index in parent
+               if ( !elem ) {
+                       return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+               }
+
+               // Index in selector
+               if ( typeof elem === "string" ) {
+                       return indexOf.call( jQuery( elem ), this[ 0 ] );
+               }
+
+               // Locate the position of the desired element
+               return indexOf.call( this,
+
+                       // If it receives a jQuery object, the first element is used
+                       elem.jquery ? elem[ 0 ] : elem
+               );
+       },
+
+       add: function( selector, context ) {
+               return this.pushStack(
+                       jQuery.uniqueSort(
+                               jQuery.merge( this.get(), jQuery( selector, context ) )
+                       )
+               );
+       },
+
+       addBack: function( selector ) {
+               return this.add( selector == null ?
+                       this.prevObject : this.prevObject.filter( selector )
+               );
+       }
+} );
+
+function sibling( cur, dir ) {
+       while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+       return cur;
+}
+
+jQuery.each( {
+       parent: function( elem ) {
+               var parent = elem.parentNode;
+               return parent && parent.nodeType !== 11 ? parent : null;
+       },
+       parents: function( elem ) {
+               return dir( elem, "parentNode" );
+       },
+       parentsUntil: function( elem, i, until ) {
+               return dir( elem, "parentNode", until );
+       },
+       next: function( elem ) {
+               return sibling( elem, "nextSibling" );
+       },
+       prev: function( elem ) {
+               return sibling( elem, "previousSibling" );
+       },
+       nextAll: function( elem ) {
+               return dir( elem, "nextSibling" );
+       },
+       prevAll: function( elem ) {
+               return dir( elem, "previousSibling" );
+       },
+       nextUntil: function( elem, i, until ) {
+               return dir( elem, "nextSibling", until );
+       },
+       prevUntil: function( elem, i, until ) {
+               return dir( elem, "previousSibling", until );
+       },
+       siblings: function( elem ) {
+               return siblings( ( elem.parentNode || {} ).firstChild, elem );
+       },
+       children: function( elem ) {
+               return siblings( elem.firstChild );
+       },
+       contents: function( elem ) {
+               return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+       }
+}, function( name, fn ) {
+       jQuery.fn[ name ] = function( until, selector ) {
+               var matched = jQuery.map( this, fn, until );
+
+               if ( name.slice( -5 ) !== "Until" ) {
+                       selector = until;
+               }
+
+               if ( selector && typeof selector === "string" ) {
+                       matched = jQuery.filter( selector, matched );
+               }
+
+               if ( this.length > 1 ) {
+
+                       // Remove duplicates
+                       if ( !guaranteedUnique[ name ] ) {
+                               jQuery.uniqueSort( matched );
+                       }
+
+                       // Reverse order for parents* and prev-derivatives
+                       if ( rparentsprev.test( name ) ) {
+                               matched.reverse();
+                       }
+               }
+
+               return this.pushStack( matched );
+       };
+} );
+
+return jQuery;
+} );
diff --git a/js/jquery/src/traversing/findFilter.js b/js/jquery/src/traversing/findFilter.js
new file mode 100644 (file)
index 0000000..3bd036a
--- /dev/null
@@ -0,0 +1,106 @@
+define( [
+       "../core",
+       "../var/indexOf",
+       "./var/rneedsContext",
+       "../selector"
+], function( jQuery, indexOf, rneedsContext ) {
+
+"use strict";
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+       if ( jQuery.isFunction( qualifier ) ) {
+               return jQuery.grep( elements, function( elem, i ) {
+                       return !!qualifier.call( elem, i, elem ) !== not;
+               } );
+       }
+
+       // Single element
+       if ( qualifier.nodeType ) {
+               return jQuery.grep( elements, function( elem ) {
+                       return ( elem === qualifier ) !== not;
+               } );
+       }
+
+       // Arraylike of elements (jQuery, arguments, Array)
+       if ( typeof qualifier !== "string" ) {
+               return jQuery.grep( elements, function( elem ) {
+                       return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+               } );
+       }
+
+       // Simple selector that can be filtered directly, removing non-Elements
+       if ( risSimple.test( qualifier ) ) {
+               return jQuery.filter( qualifier, elements, not );
+       }
+
+       // Complex selector, compare the two sets, removing non-Elements
+       qualifier = jQuery.filter( qualifier, elements );
+       return jQuery.grep( elements, function( elem ) {
+               return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+       } );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+       var elem = elems[ 0 ];
+
+       if ( not ) {
+               expr = ":not(" + expr + ")";
+       }
+
+       if ( elems.length === 1 && elem.nodeType === 1 ) {
+               return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+       }
+
+       return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+               return elem.nodeType === 1;
+       } ) );
+};
+
+jQuery.fn.extend( {
+       find: function( selector ) {
+               var i, ret,
+                       len = this.length,
+                       self = this;
+
+               if ( typeof selector !== "string" ) {
+                       return this.pushStack( jQuery( selector ).filter( function() {
+                               for ( i = 0; i < len; i++ ) {
+                                       if ( jQuery.contains( self[ i ], this ) ) {
+                                               return true;
+                                       }
+                               }
+                       } ) );
+               }
+
+               ret = this.pushStack( [] );
+
+               for ( i = 0; i < len; i++ ) {
+                       jQuery.find( selector, self[ i ], ret );
+               }
+
+               return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+       },
+       filter: function( selector ) {
+               return this.pushStack( winnow( this, selector || [], false ) );
+       },
+       not: function( selector ) {
+               return this.pushStack( winnow( this, selector || [], true ) );
+       },
+       is: function( selector ) {
+               return !!winnow(
+                       this,
+
+                       // If this is a positional/relative selector, check membership in the returned set
+                       // so $("p:first").is("p:last") won't return true for a doc with two "p".
+                       typeof selector === "string" && rneedsContext.test( selector ) ?
+                               jQuery( selector ) :
+                               selector || [],
+                       false
+               ).length;
+       }
+} );
+
+} );
diff --git a/js/jquery/src/traversing/var/dir.js b/js/jquery/src/traversing/var/dir.js
new file mode 100644 (file)
index 0000000..366a823
--- /dev/null
@@ -0,0 +1,22 @@
+define( [
+       "../../core"
+], function( jQuery ) {
+
+"use strict";
+
+return function( elem, dir, until ) {
+       var matched = [],
+               truncate = until !== undefined;
+
+       while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+               if ( elem.nodeType === 1 ) {
+                       if ( truncate && jQuery( elem ).is( until ) ) {
+                               break;
+                       }
+                       matched.push( elem );
+               }
+       }
+       return matched;
+};
+
+} );
diff --git a/js/jquery/src/traversing/var/rneedsContext.js b/js/jquery/src/traversing/var/rneedsContext.js
new file mode 100644 (file)
index 0000000..d0663ce
--- /dev/null
@@ -0,0 +1,8 @@
+define( [
+       "../../core",
+       "../../selector"
+], function( jQuery ) {
+       "use strict";
+
+       return jQuery.expr.match.needsContext;
+} );
diff --git a/js/jquery/src/traversing/var/siblings.js b/js/jquery/src/traversing/var/siblings.js
new file mode 100644 (file)
index 0000000..952629d
--- /dev/null
@@ -0,0 +1,17 @@
+define( function() {
+
+"use strict";
+
+return function( n, elem ) {
+       var matched = [];
+
+       for ( ; n; n = n.nextSibling ) {
+               if ( n.nodeType === 1 && n !== elem ) {
+                       matched.push( n );
+               }
+       }
+
+       return matched;
+};
+
+} );
diff --git a/js/jquery/src/var/ObjectFunctionString.js b/js/jquery/src/var/ObjectFunctionString.js
new file mode 100644 (file)
index 0000000..f9e850f
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "./fnToString"
+], function( fnToString ) {
+       "use strict";
+
+       return fnToString.call( Object );
+} );
diff --git a/js/jquery/src/var/arr.js b/js/jquery/src/var/arr.js
new file mode 100644 (file)
index 0000000..84713d8
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return [];
+} );
diff --git a/js/jquery/src/var/class2type.js b/js/jquery/src/var/class2type.js
new file mode 100644 (file)
index 0000000..4365d46
--- /dev/null
@@ -0,0 +1,6 @@
+define( function() {
+       "use strict";
+
+       // [[Class]] -> type pairs
+       return {};
+} );
diff --git a/js/jquery/src/var/concat.js b/js/jquery/src/var/concat.js
new file mode 100644 (file)
index 0000000..e47c19d
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "./arr"
+], function( arr ) {
+       "use strict";
+
+       return arr.concat;
+} );
diff --git a/js/jquery/src/var/document.js b/js/jquery/src/var/document.js
new file mode 100644 (file)
index 0000000..dd3939d
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return window.document;
+} );
diff --git a/js/jquery/src/var/documentElement.js b/js/jquery/src/var/documentElement.js
new file mode 100644 (file)
index 0000000..0e3f8b4
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "./document"
+], function( document ) {
+       "use strict";
+
+       return document.documentElement;
+} );
diff --git a/js/jquery/src/var/fnToString.js b/js/jquery/src/var/fnToString.js
new file mode 100644 (file)
index 0000000..18c43ff
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "./hasOwn"
+], function( hasOwn ) {
+       "use strict";
+
+       return hasOwn.toString;
+} );
diff --git a/js/jquery/src/var/getProto.js b/js/jquery/src/var/getProto.js
new file mode 100644 (file)
index 0000000..965fab8
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return Object.getPrototypeOf;
+} );
diff --git a/js/jquery/src/var/hasOwn.js b/js/jquery/src/var/hasOwn.js
new file mode 100644 (file)
index 0000000..44ab680
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "./class2type"
+], function( class2type ) {
+       "use strict";
+
+       return class2type.hasOwnProperty;
+} );
diff --git a/js/jquery/src/var/indexOf.js b/js/jquery/src/var/indexOf.js
new file mode 100644 (file)
index 0000000..8320b98
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "./arr"
+], function( arr ) {
+       "use strict";
+
+       return arr.indexOf;
+} );
diff --git a/js/jquery/src/var/pnum.js b/js/jquery/src/var/pnum.js
new file mode 100644 (file)
index 0000000..6f06d73
--- /dev/null
@@ -0,0 +1,5 @@
+define( function() {
+       "use strict";
+
+       return ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+} );
diff --git a/js/jquery/src/var/push.js b/js/jquery/src/var/push.js
new file mode 100644 (file)
index 0000000..9465620
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "./arr"
+], function( arr ) {
+       "use strict";
+
+       return arr.push;
+} );
diff --git a/js/jquery/src/var/rcssNum.js b/js/jquery/src/var/rcssNum.js
new file mode 100644 (file)
index 0000000..4214b14
--- /dev/null
@@ -0,0 +1,9 @@
+define( [
+       "../var/pnum"
+], function( pnum ) {
+
+"use strict";
+
+return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+} );
diff --git a/js/jquery/src/var/rnothtmlwhite.js b/js/jquery/src/var/rnothtmlwhite.js
new file mode 100644 (file)
index 0000000..30604db
--- /dev/null
@@ -0,0 +1,8 @@
+define( function() {
+       "use strict";
+
+       // Only count HTML whitespace
+       // Other whitespace should count in values
+       // https://html.spec.whatwg.org/multipage/infrastructure.html#space-character
+       return ( /[^\x20\t\r\n\f]+/g );
+} );
diff --git a/js/jquery/src/var/rnotwhite.js b/js/jquery/src/var/rnotwhite.js
new file mode 100644 (file)
index 0000000..6067728
--- /dev/null
@@ -0,0 +1,3 @@
+define( function() {
+       return ( /\S+/g );
+} );
diff --git a/js/jquery/src/var/slice.js b/js/jquery/src/var/slice.js
new file mode 100644 (file)
index 0000000..915f837
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "./arr"
+], function( arr ) {
+       "use strict";
+
+       return arr.slice;
+} );
diff --git a/js/jquery/src/var/support.js b/js/jquery/src/var/support.js
new file mode 100644 (file)
index 0000000..094d0ae
--- /dev/null
@@ -0,0 +1,6 @@
+define( function() {
+       "use strict";
+
+       // All support tests are defined in their respective modules.
+       return {};
+} );
diff --git a/js/jquery/src/var/toString.js b/js/jquery/src/var/toString.js
new file mode 100644 (file)
index 0000000..ff4ecdc
--- /dev/null
@@ -0,0 +1,7 @@
+define( [
+       "./class2type"
+], function( class2type ) {
+       "use strict";
+
+       return class2type.toString;
+} );
diff --git a/js/jquery/src/wrap.js b/js/jquery/src/wrap.js
new file mode 100644 (file)
index 0000000..88b9bb5
--- /dev/null
@@ -0,0 +1,77 @@
+define( [
+       "./core",
+       "./core/init",
+       "./manipulation", // clone
+       "./traversing" // parent, contents
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.fn.extend( {
+       wrapAll: function( html ) {
+               var wrap;
+
+               if ( this[ 0 ] ) {
+                       if ( jQuery.isFunction( html ) ) {
+                               html = html.call( this[ 0 ] );
+                       }
+
+                       // The elements to wrap the target around
+                       wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+                       if ( this[ 0 ].parentNode ) {
+                               wrap.insertBefore( this[ 0 ] );
+                       }
+
+                       wrap.map( function() {
+                               var elem = this;
+
+                               while ( elem.firstElementChild ) {
+                                       elem = elem.firstElementChild;
+                               }
+
+                               return elem;
+                       } ).append( this );
+               }
+
+               return this;
+       },
+
+       wrapInner: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each( function( i ) {
+                               jQuery( this ).wrapInner( html.call( this, i ) );
+                       } );
+               }
+
+               return this.each( function() {
+                       var self = jQuery( this ),
+                               contents = self.contents();
+
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
+
+                       } else {
+                               self.append( html );
+                       }
+               } );
+       },
+
+       wrap: function( html ) {
+               var isFunction = jQuery.isFunction( html );
+
+               return this.each( function( i ) {
+                       jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+               } );
+       },
+
+       unwrap: function( selector ) {
+               this.parent( selector ).not( "body" ).each( function() {
+                       jQuery( this ).replaceWith( this.childNodes );
+               } );
+               return this;
+       }
+} );
+
+return jQuery;
+} );
diff --git a/js/modernizr/feature-detects/a-download.js b/js/modernizr/feature-detects/a-download.js
new file mode 100644 (file)
index 0000000..559fadd
--- /dev/null
@@ -0,0 +1,8 @@
+
+// a[download] attribute
+// When used on an <a>, this attribute signifies that the resource it
+// points to should be downloaded by the browser rather than navigating to it.
+// http://developers.whatwg.org/links.html#downloading-resources
+// By Addy Osmani
+
+Modernizr.addTest('adownload', 'download' in document.createElement('a'));
diff --git a/js/modernizr/feature-detects/audio-audiodata-api.js b/js/modernizr/feature-detects/audio-audiodata-api.js
new file mode 100644 (file)
index 0000000..bfcd9fe
--- /dev/null
@@ -0,0 +1,4 @@
+// Mozilla Audio Data API
+// https://wiki.mozilla.org/Audio_Data_API
+// by Addy Osmani
+Modernizr.addTest('audiodata', !!(window.Audio));
diff --git a/js/modernizr/feature-detects/audio-webaudio-api.js b/js/modernizr/feature-detects/audio-webaudio-api.js
new file mode 100644 (file)
index 0000000..46d3c63
--- /dev/null
@@ -0,0 +1,4 @@
+// Web Audio API
+// https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html
+// By Addy Osmani
+Modernizr.addTest('webaudio', !!(window.webkitAudioContext || window.AudioContext));
diff --git a/js/modernizr/feature-detects/battery-api.js b/js/modernizr/feature-detects/battery-api.js
new file mode 100644 (file)
index 0000000..4177e8f
--- /dev/null
@@ -0,0 +1,8 @@
+
+// Battery API
+// https://developer.mozilla.org/en/DOM/window.navigator.mozBattery
+// By: Paul Sayre
+
+Modernizr.addTest('battery',
+       !!Modernizr.prefixed('battery', navigator)
+);
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/battery-level.js b/js/modernizr/feature-detects/battery-level.js
new file mode 100644 (file)
index 0000000..07f9575
--- /dev/null
@@ -0,0 +1,11 @@
+
+// Low Battery Level
+// Enable a developer to remove CPU intensive CSS/JS when battery is low
+// developer.mozilla.org/en/DOM/window.navigator.mozBattery
+// By: Paul Sayre
+
+Modernizr.addTest('lowbattery', function () {
+       var minLevel = 0.20,
+               battery = Modernizr.prefixed('battery', navigator);
+       return !!(battery && !battery.charging && battery.level <= minLevel);
+});
diff --git a/js/modernizr/feature-detects/blob-constructor.js b/js/modernizr/feature-detects/blob-constructor.js
new file mode 100644 (file)
index 0000000..f10bd7b
--- /dev/null
@@ -0,0 +1,10 @@
+// Blob constructor
+// http://dev.w3.org/2006/webapi/FileAPI/#constructorBlob
+
+Modernizr.addTest('blobconstructor', function () {
+    try {
+        return !!new Blob();
+    } catch (e) {
+        return false;
+    }
+});
diff --git a/js/modernizr/feature-detects/canvas-todataurl-type.js b/js/modernizr/feature-detects/canvas-todataurl-type.js
new file mode 100644 (file)
index 0000000..bf8f2e3
--- /dev/null
@@ -0,0 +1,28 @@
+// canvas.toDataURL type support
+// http://www.w3.org/TR/html5/the-canvas-element.html#dom-canvas-todataurl
+
+// This test is asynchronous. Watch out.
+
+(function () {
+
+    if (!Modernizr.canvas) {
+        return false;
+    }
+
+    var image = new Image(),
+        canvas = document.createElement('canvas'),
+        ctx = canvas.getContext('2d');
+
+    image.onload = function() {
+        ctx.drawImage(image, 0, 0);
+
+        Modernizr.addTest('todataurljpeg', function() {
+            return canvas.toDataURL('image/jpeg').indexOf('data:image/jpeg') === 0;
+        });
+        Modernizr.addTest('todataurlwebp', function() {
+            return canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0;
+        });
+    };
+
+    image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==';
+}());
diff --git a/js/modernizr/feature-detects/contenteditable.js b/js/modernizr/feature-detects/contenteditable.js
new file mode 100644 (file)
index 0000000..6543666
--- /dev/null
@@ -0,0 +1,9 @@
+// contentEditable
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#contenteditable
+
+// this is known to false positive in some mobile browsers
+// here is a whitelist of verified working browsers:
+// https://github.com/NielsLeenheer/html5test/blob/549f6eac866aa861d9649a0707ff2c0157895706/scripts/engine.js#L2083
+
+Modernizr.addTest('contenteditable',
+        'contentEditable' in document.documentElement);
diff --git a/js/modernizr/feature-detects/contentsecuritypolicy.js b/js/modernizr/feature-detects/contentsecuritypolicy.js
new file mode 100644 (file)
index 0000000..a95e45a
--- /dev/null
@@ -0,0 +1,10 @@
+// Test for (experimental) Content Security Policy 1.1 support.
+//
+// This feature is still quite experimental, but is available now in Chrome 22.
+// If the `SecurityPolicy` property is available, you can be sure the browser
+// supports CSP. If it's not available, the browser still might support an
+// earlier version of the CSP spec.
+//
+// Editor's Draft: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html
+
+Modernizr.addTest('contentsecuritypolicy', ('securityPolicy' in document || 'SecurityPolicy' in document));
diff --git a/js/modernizr/feature-detects/contextmenu.js b/js/modernizr/feature-detects/contextmenu.js
new file mode 100644 (file)
index 0000000..dd8182f
--- /dev/null
@@ -0,0 +1,11 @@
+// http://www.w3.org/TR/html5/interactive-elements.html#context-menus
+// Demo at http://thewebrocks.com/demos/context-menu/
+Modernizr.addTest(
+  'contextmenu', 
+  ('contextMenu' in document.documentElement && 'HTMLMenuItemElement' in window) 
+);
+
+
+
+
+
diff --git a/js/modernizr/feature-detects/cookies.js b/js/modernizr/feature-detects/cookies.js
new file mode 100644 (file)
index 0000000..6a2f9d4
--- /dev/null
@@ -0,0 +1,15 @@
+
+// by tauren
+// https://github.com/Modernizr/Modernizr/issues/191
+
+Modernizr.addTest('cookies', function () {
+  // Quick test if browser has cookieEnabled host property
+  if (navigator.cookieEnabled) return true;
+  // Create cookie
+  document.cookie = "cookietest=1";
+  var ret = document.cookie.indexOf("cookietest=") != -1;
+  // Delete cookie
+  document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";
+  return ret;
+});
+
diff --git a/js/modernizr/feature-detects/cors.js b/js/modernizr/feature-detects/cors.js
new file mode 100644 (file)
index 0000000..286d717
--- /dev/null
@@ -0,0 +1,3 @@
+// cors
+// By Theodoor van Donge
+Modernizr.addTest('cors', !!(window.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest()));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/css-backgroundposition-shorthand.js b/js/modernizr/feature-detects/css-backgroundposition-shorthand.js
new file mode 100644 (file)
index 0000000..ce016e1
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+    https://developer.mozilla.org/en/CSS/background-position
+    http://www.w3.org/TR/css3-background/#background-position
+
+    Example: http://jsfiddle.net/Blink/bBXvt/
+*/
+
+(function() {
+
+    var elem = document.createElement('a'),
+        eStyle = elem.style,
+        val = "right 10px bottom 10px";
+
+    Modernizr.addTest('bgpositionshorthand', function(){
+        eStyle.cssText = "background-position: " + val + ";";
+        return (eStyle.backgroundPosition === val);
+    });
+
+}());
diff --git a/js/modernizr/feature-detects/css-backgroundposition-xy.js b/js/modernizr/feature-detects/css-backgroundposition-xy.js
new file mode 100644 (file)
index 0000000..d52d600
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+       Allan Lei https://github.com/allanlei
+       
+       Check adapted from https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js
+       
+       Test: http://jsfiddle.net/allanlei/R8AYS/
+*/
+Modernizr.addTest('bgpositionxy', function() {
+    return Modernizr.testStyles('#modernizr {background-position: 3px 5px;}', function(elem) {
+        var cssStyleDeclaration = window.getComputedStyle ? getComputedStyle(elem, null) : elem.currentStyle;
+        var xSupport = (cssStyleDeclaration.backgroundPositionX == '3px') || (cssStyleDeclaration['background-position-x'] == '3px');
+        var ySupport = (cssStyleDeclaration.backgroundPositionY == '5px') || (cssStyleDeclaration['background-position-y'] == '5px');
+        return xSupport && ySupport;
+    });
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/css-backgroundrepeat.js b/js/modernizr/feature-detects/css-backgroundrepeat.js
new file mode 100644 (file)
index 0000000..365447c
--- /dev/null
@@ -0,0 +1,31 @@
+// developer.mozilla.org/en/CSS/background-repeat
+
+// test page: jsbin.com/uzesun/
+// http://jsfiddle.net/ryanseddon/yMLTQ/6/    
+
+(function(){
+
+
+function getBgRepeatValue(elem){
+    return (window.getComputedStyle ?
+             getComputedStyle(elem, null).getPropertyValue('background') :
+             elem.currentStyle['background']);
+}
+  
+
+Modernizr.testStyles(' #modernizr { background-repeat: round; } ', function(elem, rule){ 
+
+  Modernizr.addTest('bgrepeatround', getBgRepeatValue(elem) == 'round');
+
+});
+
+
+
+Modernizr.testStyles(' #modernizr { background-repeat: space; } ', function(elem, rule){ 
+
+  Modernizr.addTest('bgrepeatspace', getBgRepeatValue(elem) == 'space');
+
+});
+
+
+})();
diff --git a/js/modernizr/feature-detects/css-backgroundsizecover.js b/js/modernizr/feature-detects/css-backgroundsizecover.js
new file mode 100644 (file)
index 0000000..dd7e51b
--- /dev/null
@@ -0,0 +1,10 @@
+
+// developer.mozilla.org/en/CSS/background-size
+
+Modernizr.testStyles( '#modernizr{background-size:cover}', function( elem ) {
+       var style = window.getComputedStyle ?
+               window.getComputedStyle( elem, null )
+               : elem.currentStyle;
+               
+       Modernizr.addTest( 'bgsizecover', style.backgroundSize == 'cover' );
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/css-boxsizing.js b/js/modernizr/feature-detects/css-boxsizing.js
new file mode 100644 (file)
index 0000000..ab90913
--- /dev/null
@@ -0,0 +1,9 @@
+
+// developer.mozilla.org/en/CSS/box-sizing
+// github.com/Modernizr/Modernizr/issues/248
+
+Modernizr.addTest("boxsizing",function(){
+    return Modernizr.testAllProps("boxSizing") && (document.documentMode === undefined || document.documentMode > 7);
+});
+
+
diff --git a/js/modernizr/feature-detects/css-calc.js b/js/modernizr/feature-detects/css-calc.js
new file mode 100644 (file)
index 0000000..bb5b7e9
--- /dev/null
@@ -0,0 +1,12 @@
+// Method of allowing calculated values for length units, i.e. width: calc(100%-3em) http://caniuse.com/#search=calc
+// By @calvein
+
+Modernizr.addTest('csscalc', function() {
+    var prop = 'width:';
+    var value = 'calc(10px);';
+    var el = document.createElement('div');
+
+    el.style.cssText = prop + Modernizr._prefixes.join(value + prop);
+
+    return !!el.style.length;
+});
diff --git a/js/modernizr/feature-detects/css-cubicbezierrange.js b/js/modernizr/feature-detects/css-cubicbezierrange.js
new file mode 100644 (file)
index 0000000..28e72aa
--- /dev/null
@@ -0,0 +1,8 @@
+// cubic-bezier values can't be > 1 for Webkit until bug #45761 (https://bugs.webkit.org/show_bug.cgi?id=45761) is fixed
+// By @calvein
+
+Modernizr.addTest('cubicbezierrange', function() {
+    var el = document.createElement('div');
+    el.style.cssText = Modernizr._prefixes.join('transition-timing-function' + ':cubic-bezier(1,0,0,1.1); ');
+    return !!el.style.length;
+});
diff --git a/js/modernizr/feature-detects/css-displayrunin.js b/js/modernizr/feature-detects/css-displayrunin.js
new file mode 100644 (file)
index 0000000..01eddb7
--- /dev/null
@@ -0,0 +1,18 @@
+
+// by alanhogan
+
+// https://github.com/Modernizr/Modernizr/issues/198
+// http://css-tricks.com/596-run-in/
+
+
+
+Modernizr.testStyles(' #modernizr { display: run-in; } ', function(elem, rule){ 
+
+  var ret = (window.getComputedStyle ?
+         getComputedStyle(elem, null).getPropertyValue('display') :
+         elem.currentStyle['display']);
+
+  Modernizr.addTest('display-runin', ret == 'run-in');
+
+});
+
diff --git a/js/modernizr/feature-detects/css-displaytable.js b/js/modernizr/feature-detects/css-displaytable.js
new file mode 100644 (file)
index 0000000..bc0a67c
--- /dev/null
@@ -0,0 +1,27 @@
+// display: table and table-cell test. (both are tested under one name "table-cell" )
+// By @scottjehl
+
+// all additional table display values are here: http://pastebin.com/Gk9PeVaQ though Scott has seen some IE false positives with that sort of weak detection.
+// more testing neccessary perhaps.
+
+Modernizr.addTest( "display-table",function(){
+  
+  var doc   = window.document,
+      docElem = doc.documentElement,   
+      parent  = doc.createElement( "div" ),
+      child = doc.createElement( "div" ),
+      childb  = doc.createElement( "div" ),
+      ret;
+  
+  parent.style.cssText = "display: table";
+  child.style.cssText = childb.style.cssText = "display: table-cell; padding: 10px";    
+          
+  parent.appendChild( child );
+  parent.appendChild( childb );
+  docElem.insertBefore( parent, docElem.firstChild );
+  
+  ret = child.offsetLeft < childb.offsetLeft;
+  docElem.removeChild(parent);
+  return ret; 
+});
+
diff --git a/js/modernizr/feature-detects/css-filters.js b/js/modernizr/feature-detects/css-filters.js
new file mode 100644 (file)
index 0000000..aec4fad
--- /dev/null
@@ -0,0 +1,7 @@
+// https://github.com/Modernizr/Modernizr/issues/615
+// documentMode is needed for false positives in oldIE, please see issue above
+Modernizr.addTest('cssfilters', function() {
+    var el = document.createElement('div');
+    el.style.cssText = Modernizr._prefixes.join('filter' + ':blur(2px); ');
+    return !!el.style.length && ((document.documentMode === undefined || document.documentMode > 9));
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/css-hyphens.js b/js/modernizr/feature-detects/css-hyphens.js
new file mode 100644 (file)
index 0000000..8215dd5
--- /dev/null
@@ -0,0 +1,205 @@
+/* see http://davidnewton.ca/the-current-state-of-hyphenation-on-the-web
+   http://davidnewton.ca/demos/hyphenation/test.html
+
+
+There are three tests:
+   1. csshyphens      - tests hyphens:auto actually adds hyphens to text
+   2. softhyphens     - tests that &shy; does its job
+   3. softhyphensfind - tests that in-browser Find functionality still works correctly with &shy;
+
+These tests currently require document.body to be present
+
+Hyphenation is language specific, sometimes.
+  See for more details: http://code.google.com/p/hyphenator/source/diff?spec=svn975&r=975&format=side&path=/trunk/Hyphenator.js#sc_svn975_313
+
+If loading Hyphenator.js via Modernizr.load, be cautious of issue 158: http://code.google.com/p/hyphenator/issues/detail?id=158
+
+More details at https://github.com/Modernizr/Modernizr/issues/312
+
+*/
+
+(function() {
+
+       if (!document.body){
+               window.console && console.warn('document.body doesn\'t exist. Modernizr hyphens test needs it.');
+               return;
+       }
+
+       // functional test of adding hyphens:auto
+       function test_hyphens_css() {
+               try {
+                       /* create a div container and a span within that
+                        * these have to be appended to document.body, otherwise some browsers can give false negative */
+                       var div = document.createElement('div'),
+                               span = document.createElement('span'),
+                               divStyle = div.style,
+                               spanHeight = 0,
+                               spanWidth = 0,
+                               result = false,
+                               firstChild = document.body.firstElementChild || document.body.firstChild;
+
+                       div.appendChild(span);
+                       span.innerHTML = 'Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.';
+
+                       document.body.insertBefore(div, firstChild);
+
+                       /* get size of unhyphenated text */
+                       divStyle.cssText = 'position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;';
+                       spanHeight = span.offsetHeight;
+                       spanWidth = span.offsetWidth;
+
+                       /* compare size with hyphenated text */
+                       divStyle.cssText = 'position:absolute;top:0;left:0;width:5em;text-align:justify;'+
+                                                                                                'text-justification:newspaper;'+
+                                                                                                Modernizr._prefixes.join('hyphens:auto; ');
+
+                       result = (span.offsetHeight != spanHeight || span.offsetWidth != spanWidth);
+
+                       /* results and cleanup */
+                       document.body.removeChild(div);
+                       div.removeChild(span);
+
+                       return result;
+               } catch(e) {
+                       return false;
+               }
+       }
+
+       // for the softhyphens test
+       function test_hyphens(delimiter, testWidth) {
+               try {
+                       /* create a div container and a span within that
+                        * these have to be appended to document.body, otherwise some browsers can give false negative */
+                       var div = document.createElement('div'),
+                               span = document.createElement('span'),
+                               divStyle = div.style,
+                               spanSize = 0,
+                               result = false,
+                               result1 = false,
+                               result2 = false,
+                               firstChild = document.body.firstElementChild || document.body.firstChild;
+
+                       divStyle.cssText = 'position:absolute;top:0;left:0;overflow:visible;width:1.25em;';
+                       div.appendChild(span);
+                       document.body.insertBefore(div, firstChild);
+
+
+                       /* get height of unwrapped text */
+                       span.innerHTML = 'mm';
+                       spanSize = span.offsetHeight;
+
+                       /* compare height w/ delimiter, to see if it wraps to new line */
+                       span.innerHTML = 'm' + delimiter + 'm';
+                       result1 = (span.offsetHeight > spanSize);
+
+                       /* if we're testing the width too (i.e. for soft-hyphen, not zws),
+                        * this is because tested Blackberry devices will wrap the text but not display the hyphen */
+                       if (testWidth) {
+                               /* get width of wrapped, non-hyphenated text */
+                               span.innerHTML = 'm<br />m';
+                               spanSize = span.offsetWidth;
+
+                               /* compare width w/ wrapped w/ delimiter to see if hyphen is present */
+                               span.innerHTML = 'm' + delimiter + 'm';
+                               result2 = (span.offsetWidth > spanSize);
+                       } else {
+                               result2 = true;
+                       }
+
+                       /* results and cleanup */
+                       if (result1 === true && result2 === true) { result = true; }
+                       document.body.removeChild(div);
+                       div.removeChild(span);
+
+                       return result;
+               } catch(e) {
+                       return false;
+               }
+       }
+
+       // testing if in-browser Find functionality will work on hyphenated text
+       function test_hyphens_find(delimiter) {
+               try {
+                       /* create a dummy input for resetting selection location, and a div container
+                        * these have to be appended to document.body, otherwise some browsers can give false negative
+                        * div container gets the doubled testword, separated by the delimiter
+                        * Note: giving a width to div gives false positive in iOS Safari */
+                       var dummy = document.createElement('input'),
+                               div = document.createElement('div'),
+                               testword = 'lebowski',
+                               result = false,
+                               textrange,
+                               firstChild = document.body.firstElementChild || document.body.firstChild;
+
+                       div.innerHTML = testword + delimiter + testword;
+
+                       document.body.insertBefore(div, firstChild);
+                       document.body.insertBefore(dummy, div);
+
+
+                       /* reset the selection to the dummy input element, i.e. BEFORE the div container
+                        *   stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area */
+                       if (dummy.setSelectionRange) {
+                               dummy.focus();
+                               dummy.setSelectionRange(0,0);
+                       } else if (dummy.createTextRange) {
+                               textrange = dummy.createTextRange();
+                               textrange.collapse(true);
+                               textrange.moveEnd('character', 0);
+                               textrange.moveStart('character', 0);
+                               textrange.select();
+                       }
+
+                       /* try to find the doubled testword, without the delimiter */
+                       if (window.find) {
+                               result = window.find(testword + testword);
+                       } else {
+                               try {
+                                       textrange = window.self.document.body.createTextRange();
+                                       result = textrange.findText(testword + testword);
+                               } catch(e) {
+                                       result = false;
+                               }
+                       }
+
+                       document.body.removeChild(div);
+                       document.body.removeChild(dummy);
+
+                       return result;
+               } catch(e) {
+                       return false;
+               }
+       }
+
+       Modernizr.addTest("csshyphens", function() {
+
+               if (!Modernizr.testAllProps('hyphens')) return false;
+
+               /* Chrome lies about its hyphens support so we need a more robust test
+                               crbug.com/107111
+               */
+               try {
+                       return test_hyphens_css();
+               } catch(e) {
+                       return false;
+               }
+       });
+
+       Modernizr.addTest("softhyphens", function() {
+               try {
+                       // use numeric entity instead of &shy; in case it's XHTML
+                       return test_hyphens('&#173;', true) && test_hyphens('&#8203;', false);
+               } catch(e) {
+                       return false;
+               }
+       });
+
+       Modernizr.addTest("softhyphensfind", function() {
+               try {
+                       return test_hyphens_find('&#173;') && test_hyphens_find('&#8203;');
+               } catch(e) {
+                       return false;
+               }
+       });
+
+})();
diff --git a/js/modernizr/feature-detects/css-lastchild.js b/js/modernizr/feature-detects/css-lastchild.js
new file mode 100644 (file)
index 0000000..3e51516
--- /dev/null
@@ -0,0 +1,11 @@
+// last-child pseudo selector
+// https://github.com/Modernizr/Modernizr/pull/304
+
+
+Modernizr.addTest('lastchild', function(){
+
+  return Modernizr.testStyles("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}", function (elem) {
+    return elem.lastChild.offsetWidth > elem.firstChild.offsetWidth;
+  }, 2);
+
+});
diff --git a/js/modernizr/feature-detects/css-mask.js b/js/modernizr/feature-detects/css-mask.js
new file mode 100644 (file)
index 0000000..2f6f28a
--- /dev/null
@@ -0,0 +1,12 @@
+// this tests passes for webkit's proprietary `-webkit-mask` feature
+//   www.webkit.org/blog/181/css-masks/
+//   developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Masks/Masks.html
+
+// it does not pass mozilla's implementation of `mask` for SVG
+
+//   developer.mozilla.org/en/CSS/mask
+//   developer.mozilla.org/En/Applying_SVG_effects_to_HTML_content
+
+// Can combine with clippaths for awesomeness: http://generic.cx/for/webkit/test.html
+
+Modernizr.addTest('cssmask', Modernizr.testAllProps('maskRepeat'));
diff --git a/js/modernizr/feature-detects/css-mediaqueries.js b/js/modernizr/feature-detects/css-mediaqueries.js
new file mode 100644 (file)
index 0000000..e0e2c50
--- /dev/null
@@ -0,0 +1,3 @@
+
+
+Modernizr.addTest('mediaqueries', Modernizr.mq('only all'));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/css-objectfit.js b/js/modernizr/feature-detects/css-objectfit.js
new file mode 100644 (file)
index 0000000..3daecde
--- /dev/null
@@ -0,0 +1,6 @@
+
+// dev.opera.com/articles/view/css3-object-fit-object-position/
+
+Modernizr.addTest('object-fit',
+       !!Modernizr.prefixed('objectFit')
+);
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/css-overflow-scrolling.js b/js/modernizr/feature-detects/css-overflow-scrolling.js
new file mode 100644 (file)
index 0000000..364e71d
--- /dev/null
@@ -0,0 +1,9 @@
+
+// johanbrook.com/browsers/native-momentum-scrolling-ios-5/
+// introduced in iOS5b2. Possible API may change...
+
+Modernizr.addTest("overflowscrolling",function(){
+    return Modernizr.testAllProps("overflowScrolling");
+});
+
+
diff --git a/js/modernizr/feature-detects/css-pointerevents.js b/js/modernizr/feature-detects/css-pointerevents.js
new file mode 100644 (file)
index 0000000..f18a5c1
--- /dev/null
@@ -0,0 +1,25 @@
+
+// developer.mozilla.org/en/CSS/pointer-events
+
+// Test and project pages:
+// ausi.github.com/Feature-detection-technique-for-pointer-events/
+// github.com/ausi/Feature-detection-technique-for-pointer-events/wiki
+// github.com/Modernizr/Modernizr/issues/80
+
+
+Modernizr.addTest('pointerevents', function(){
+    var element = document.createElement('x'),
+        documentElement = document.documentElement,
+        getComputedStyle = window.getComputedStyle,
+        supports;
+    if(!('pointerEvents' in element.style)){
+        return false;
+    }
+    element.style.pointerEvents = 'auto';
+    element.style.pointerEvents = 'x';
+    documentElement.appendChild(element);
+    supports = getComputedStyle &&
+        getComputedStyle(element, '').pointerEvents === 'auto';
+    documentElement.removeChild(element);
+    return !!supports;
+});
diff --git a/js/modernizr/feature-detects/css-positionsticky.js b/js/modernizr/feature-detects/css-positionsticky.js
new file mode 100644 (file)
index 0000000..43a19ec
--- /dev/null
@@ -0,0 +1,13 @@
+// Sticky positioning - constrains an element to be positioned inside the
+// intersection of its container box, and the viewport.
+Modernizr.addTest('csspositionsticky', function () {
+
+    var prop = 'position:';
+    var value = 'sticky';
+    var el = document.createElement('modernizr');
+    var mStyle = el.style;
+
+    mStyle.cssText = prop + Modernizr._prefixes.join(value + ';' + prop).slice(0, -prop.length);
+
+    return mStyle.position.indexOf(value) !== -1;
+});
diff --git a/js/modernizr/feature-detects/css-regions.js b/js/modernizr/feature-detects/css-regions.js
new file mode 100644 (file)
index 0000000..c8995c3
--- /dev/null
@@ -0,0 +1,55 @@
+// CSS Regions
+// http://www.w3.org/TR/css3-regions/
+// By: Mihai Balan
+
+// We start with a CSS parser test then we check page geometry to see if it's affected by regions
+// Later we might be able to retire the second part, as WebKit builds with the false positives die out
+
+Modernizr.addTest('regions', function() {
+
+       /* Get the 'flowFrom' property name available in the browser. Either default or vendor prefixed.
+       If the property name can't be found we'll get Boolean 'false' and fail quickly */
+       var flowFromProperty = Modernizr.prefixed("flowFrom"),
+               flowIntoProperty = Modernizr.prefixed("flowInto");
+
+       if (!flowFromProperty || !flowIntoProperty){
+               return false;
+       }
+
+       /* If CSS parsing is there, try to determine if regions actually work. */
+       var container           = document.createElement('div'),
+               content                 = document.createElement('div'),
+               region                  = document.createElement('div'),
+
+       /* we create a random, unlikely to be generated flow number to make sure we don't
+       clash with anything more vanilla, like 'flow', or 'article', or 'f1' */
+       flowName = 'modernizr_flow_for_regions_check';
+
+       /* First create a div with two adjacent divs inside it. The first will be the
+       content, the second will be the region. To be able to distinguish between the two,
+       we'll give the region a particular padding */
+       content.innerText               = 'M';
+       container.style.cssText = 'top: 150px; left: 150px; padding: 0px;';
+       region.style.cssText    = 'width: 50px; height: 50px; padding: 42px;';
+
+       region.style[flowFromProperty] = flowName;
+       container.appendChild(content);
+       container.appendChild(region);
+       document.documentElement.appendChild(container);
+
+       /* Now compute the bounding client rect, before and after attempting to flow the
+       content div in the region div. If regions are enabled, the after bounding rect
+       should reflect the padding of the region div.*/
+       var flowedRect, delta,
+               plainRect = content.getBoundingClientRect();
+
+
+       content.style[flowIntoProperty] = flowName;
+       flowedRect = content.getBoundingClientRect();
+
+       delta = flowedRect.left - plainRect.left;
+       document.documentElement.removeChild(container);
+       content = region = container = undefined;
+
+       return (delta == 42);
+});
diff --git a/js/modernizr/feature-detects/css-remunit.js b/js/modernizr/feature-detects/css-remunit.js
new file mode 100644 (file)
index 0000000..38e15b8
--- /dev/null
@@ -0,0 +1,19 @@
+
+// test by github.com/nsfmc
+
+// "The 'rem' unit ('root em') is relative to the computed
+// value of the 'font-size' value of the root element."
+// http://www.w3.org/TR/css3-values/#relative0
+// you can test by checking if the prop was ditched
+
+// http://snook.ca/archives/html_and_css/font-size-with-rem
+
+Modernizr.addTest('cssremunit', function(){
+
+  var div = document.createElement('div');
+  try {
+    div.style.fontSize = '3rem';
+  } catch(er){}
+  return (/rem/).test(div.style.fontSize);
+
+});
diff --git a/js/modernizr/feature-detects/css-resize.js b/js/modernizr/feature-detects/css-resize.js
new file mode 100644 (file)
index 0000000..fff99ba
--- /dev/null
@@ -0,0 +1,8 @@
+
+// Test for CSS 3 UI "resize" property
+// http://www.w3.org/TR/css3-ui/#resize
+// https://developer.mozilla.org/en/CSS/resize
+
+Modernizr.addTest('cssresize', Modernizr.testAllProps('resize'));
+
+
diff --git a/js/modernizr/feature-detects/css-scrollbars.js b/js/modernizr/feature-detects/css-scrollbars.js
new file mode 100644 (file)
index 0000000..f26de9f
--- /dev/null
@@ -0,0 +1,19 @@
+// Stylable scrollbars detection
+Modernizr.addTest('cssscrollbar', function() {
+
+       var bool,
+
+               styles = "#modernizr{overflow: scroll; width: 40px }#" +
+                       Modernizr._prefixes
+                               .join("scrollbar{width:0px}"+' #modernizr::')
+                               .split('#')
+                               .slice(1)
+                               .join('#') + "scrollbar{width:0px}";
+
+       Modernizr.testStyles(styles, function(node) {
+               bool = 'scrollWidth' in node && node.scrollWidth == 40;
+       });
+
+       return bool;
+
+});
diff --git a/js/modernizr/feature-detects/css-shapes.js b/js/modernizr/feature-detects/css-shapes.js
new file mode 100644 (file)
index 0000000..2801165
--- /dev/null
@@ -0,0 +1,4 @@
+
+// http://html.adobe.com/webplatform/layout/shapes
+
+Modernizr.addTest('shapes', Modernizr.testAllProps('shapeOutside', 'content-box', true));
diff --git a/js/modernizr/feature-detects/css-subpixelfont.js b/js/modernizr/feature-detects/css-subpixelfont.js
new file mode 100644 (file)
index 0000000..57a11b0
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Test for SubPixel Font Rendering
+ * (to infer if GDI or DirectWrite is used on Windows)
+ * Authors: @derSchepp, @gerritvanaaken, @rodneyrehm, @yatil, @ryanseddon
+ * Web: https://github.com/gerritvanaaken/subpixeldetect
+ */
+Modernizr.addTest('subpixelfont', function() {
+    var bool,
+        styles = "#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}";
+    
+    // see https://github.com/Modernizr/Modernizr/blob/master/modernizr.js#L97
+    Modernizr.testStyles(styles, function(elem) {
+        var subpixel = elem.firstChild;
+
+        subpixel.innerHTML = 'This is a text written in Arial';
+
+        bool = window.getComputedStyle ?
+            window.getComputedStyle(subpixel, null).getPropertyValue("width") !== '44px'
+            : false;
+    }, 1, ['subpixel']);
+
+    return bool;
+});
diff --git a/js/modernizr/feature-detects/css-supports.js b/js/modernizr/feature-detects/css-supports.js
new file mode 100644 (file)
index 0000000..24d26d4
--- /dev/null
@@ -0,0 +1,6 @@
+// http://dev.w3.org/csswg/css3-conditional/#at-supports
+// github.com/Modernizr/Modernizr/issues/648
+// Relies on the fact that a browser vendor should expose the CSSSupportsRule interface
+// http://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface
+
+Modernizr.addTest("supports","CSSSupportsRule" in window);
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/css-userselect.js b/js/modernizr/feature-detects/css-userselect.js
new file mode 100644 (file)
index 0000000..062ee90
--- /dev/null
@@ -0,0 +1,10 @@
+// -moz-user-select:none test.
+
+// by ryan seddon
+//https://github.com/Modernizr/Modernizr/issues/250
+
+
+Modernizr.addTest("userselect",function(){
+    return Modernizr.testAllProps("user-select");
+});
+
diff --git a/js/modernizr/feature-detects/css-vhunit.js b/js/modernizr/feature-detects/css-vhunit.js
new file mode 100644 (file)
index 0000000..9de2b64
--- /dev/null
@@ -0,0 +1,14 @@
+// https://github.com/Modernizr/Modernizr/issues/572
+// Similar to http://jsfiddle.net/FWeinb/etnYC/
+Modernizr.addTest('cssvhunit', function() {
+    var bool;
+    Modernizr.testStyles("#modernizr { height: 50vh; }", function(elem, rule) {   
+        var height = parseInt(window.innerHeight/2,10),
+            compStyle = parseInt((window.getComputedStyle ?
+                      getComputedStyle(elem, null) :
+                      elem.currentStyle)["height"],10);
+        
+        bool= (compStyle == height);
+    });
+    return bool;
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/css-vmaxunit.js b/js/modernizr/feature-detects/css-vmaxunit.js
new file mode 100644 (file)
index 0000000..142346b
--- /dev/null
@@ -0,0 +1,14 @@
+// https://github.com/Modernizr/Modernizr/issues/572
+// http://jsfiddle.net/glsee/JDsWQ/4/
+Modernizr.addTest('cssvmaxunit', function(){
+    var bool;
+    Modernizr.testStyles("#modernizr { width: 50vmax; }", function(elem, rule) {
+        var one_vw = window.innerWidth/100,
+            one_vh = window.innerHeight/100,
+            compWidth = parseInt((window.getComputedStyle ?
+                                  getComputedStyle(elem, null) :
+                                  elem.currentStyle)['width'],10);
+        bool = ( parseInt(Math.max(one_vw, one_vh)*50,10) == compWidth );
+    });
+    return bool;
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/css-vminunit.js b/js/modernizr/feature-detects/css-vminunit.js
new file mode 100644 (file)
index 0000000..e6b9881
--- /dev/null
@@ -0,0 +1,14 @@
+// https://github.com/Modernizr/Modernizr/issues/572
+// http://jsfiddle.net/glsee/JRmdq/8/
+Modernizr.addTest('cssvminunit', function(){
+    var bool;
+    Modernizr.testStyles("#modernizr { width: 50vmin; }", function(elem, rule) {
+        var one_vw = window.innerWidth/100,
+            one_vh = window.innerHeight/100,
+            compWidth = parseInt((window.getComputedStyle ?
+                                  getComputedStyle(elem, null) :
+                                  elem.currentStyle)['width'],10);
+        bool = ( parseInt(Math.min(one_vw, one_vh)*50,10) == compWidth );
+    });
+    return bool;
+});
diff --git a/js/modernizr/feature-detects/css-vwunit.js b/js/modernizr/feature-detects/css-vwunit.js
new file mode 100644 (file)
index 0000000..28f8ca2
--- /dev/null
@@ -0,0 +1,14 @@
+// https://github.com/Modernizr/Modernizr/issues/572
+// http://jsfiddle.net/FWeinb/etnYC/
+Modernizr.addTest('cssvwunit', function(){
+    var bool;
+    Modernizr.testStyles("#modernizr { width: 50vw; }", function(elem, rule) {
+        var width = parseInt(window.innerWidth/2,10),
+            compStyle = parseInt((window.getComputedStyle ?
+                      getComputedStyle(elem, null) :
+                      elem.currentStyle)["width"],10);
+        
+        bool= (compStyle == width);
+    });
+    return bool;
+});
diff --git a/js/modernizr/feature-detects/custom-protocol-handler.js b/js/modernizr/feature-detects/custom-protocol-handler.js
new file mode 100644 (file)
index 0000000..2534189
--- /dev/null
@@ -0,0 +1,10 @@
+/*
+       Custom protocol handler support
+       http://developers.whatwg.org/timers.html#custom-handlers
+       
+       Added by @benschwarz
+*/
+
+Modernizr.addTest('customprotocolhandler', function () {
+    return !!navigator.registerProtocolHandler;
+});
diff --git a/js/modernizr/feature-detects/dart.js b/js/modernizr/feature-detects/dart.js
new file mode 100644 (file)
index 0000000..9a8bc82
--- /dev/null
@@ -0,0 +1,6 @@
+// Dart
+// By Theodoor van Donge
+
+// https://chromiumcodereview.appspot.com/9232049/
+
+Modernizr.addTest('dart', !!Modernizr.prefixed('startDart', navigator));
diff --git a/js/modernizr/feature-detects/dataview-api.js b/js/modernizr/feature-detects/dataview-api.js
new file mode 100644 (file)
index 0000000..249bfff
--- /dev/null
@@ -0,0 +1,4 @@
+// DataView 
+// https://developer.mozilla.org/en/JavaScript_typed_arrays/DataView
+// By Addy Osmani
+Modernizr.addTest('dataview', (typeof DataView !== 'undefined' && 'getFloat64' in DataView.prototype));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/dom-classlist.js b/js/modernizr/feature-detects/dom-classlist.js
new file mode 100644 (file)
index 0000000..c227057
--- /dev/null
@@ -0,0 +1,4 @@
+// classList
+// https://developer.mozilla.org/en/DOM/element.classList
+// By Addy Osmani
+Modernizr.addTest('classlist', 'classList' in document.documentElement);
diff --git a/js/modernizr/feature-detects/dom-createElement-attrs.js b/js/modernizr/feature-detects/dom-createElement-attrs.js
new file mode 100644 (file)
index 0000000..d9a3b11
--- /dev/null
@@ -0,0 +1,11 @@
+// by james a rosen.
+// https://github.com/Modernizr/Modernizr/issues/258
+
+Modernizr.addTest('createelement-attrs', function() {
+  try {
+    return document.createElement("<input name='test' />").getAttribute('name') == 'test';
+  } catch(e) {
+    return false;
+  }
+});
+
diff --git a/js/modernizr/feature-detects/dom-dataset.js b/js/modernizr/feature-detects/dom-dataset.js
new file mode 100644 (file)
index 0000000..810ff50
--- /dev/null
@@ -0,0 +1,9 @@
+
+// dataset API for data-* attributes
+// test by @phiggins42
+
+Modernizr.addTest('dataset', function(){
+  var n = document.createElement("div");
+  n.setAttribute("data-a-b", "c");
+  return !!(n.dataset && n.dataset.aB === "c");
+});
diff --git a/js/modernizr/feature-detects/dom-microdata.js b/js/modernizr/feature-detects/dom-microdata.js
new file mode 100644 (file)
index 0000000..ab0a5d6
--- /dev/null
@@ -0,0 +1,4 @@
+// Microdata support
+// http://www.w3.org/TR/html5/microdata.html
+// By Addy Osmani
+Modernizr.addTest('microdata', !!(document['getItems']));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/elem-datalist.js b/js/modernizr/feature-detects/elem-datalist.js
new file mode 100644 (file)
index 0000000..4bcdc1f
--- /dev/null
@@ -0,0 +1,12 @@
+
+
+// lol. we already have a test for datalist built in! silly you.
+
+
+// Helpful links while you're here, though..
+
+// http://css-tricks.com/15346-relevant-dropdowns-polyfill-for-datalist/
+// http://miketaylr.com/test/datalist.html
+// http://miketaylr.com/code/datalist.html
+
+Modernizr.addTest('datalistelem', Modernizr.input.list );
diff --git a/js/modernizr/feature-detects/elem-details.js b/js/modernizr/feature-detects/elem-details.js
new file mode 100644 (file)
index 0000000..90501f1
--- /dev/null
@@ -0,0 +1,25 @@
+// By @mathias, based on http://mths.be/axh
+Modernizr.addTest('details', function() {
+    var doc = document,
+        el = doc.createElement('details'),
+        fake,
+        root,
+        diff;
+    if (!('open' in el)) { // return early if possible; thanks @aFarkas!
+        return false;
+    }
+    root = doc.body || (function() {
+        var de = doc.documentElement;
+        fake = true;
+        return de.insertBefore(doc.createElement('body'), de.firstElementChild || de.firstChild);
+    }());
+    el.innerHTML = '<summary>a</summary>b';
+    el.style.display = 'block';
+    root.appendChild(el);
+    diff = el.offsetHeight;
+    el.open = true;
+    diff = diff != el.offsetHeight;
+    root.removeChild(el);
+    fake && root.parentNode.removeChild(root);
+    return diff;
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/elem-output.js b/js/modernizr/feature-detects/elem-output.js
new file mode 100644 (file)
index 0000000..54276b2
--- /dev/null
@@ -0,0 +1,4 @@
+// <output>
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-output-element
+// by Addy Osmani
+Modernizr.addTest('outputelem', 'value' in document.createElement('output'));
diff --git a/js/modernizr/feature-detects/elem-progress-meter.js b/js/modernizr/feature-detects/elem-progress-meter.js
new file mode 100644 (file)
index 0000000..cfa4bdf
--- /dev/null
@@ -0,0 +1,11 @@
+//By Stefan Wallin
+
+//tests for progressbar-support. All browsers that don't support progressbar returns undefined =)
+Modernizr.addTest("progressbar",function(){
+    return document.createElement('progress').max !== undefined;
+});
+
+//tests for meter-support. All browsers that don't support meters returns undefined =)
+Modernizr.addTest("meter",function(){
+    return document.createElement('meter').max !== undefined;
+});
diff --git a/js/modernizr/feature-detects/elem-ruby.js b/js/modernizr/feature-detects/elem-ruby.js
new file mode 100644 (file)
index 0000000..dbb978f
--- /dev/null
@@ -0,0 +1,53 @@
+// Browser support test for the HTML5 <ruby>, <rt> and <rp> elements
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-ruby-element
+//
+// by @alrra
+
+Modernizr.addTest('ruby', function () {
+
+    var ruby = document.createElement('ruby'),
+        rt = document.createElement('rt'),
+        rp = document.createElement('rp'),
+        docElement = document.documentElement,
+        displayStyleProperty = 'display',
+        fontSizeStyleProperty = 'fontSize'; // 'fontSize' - because it`s only used for IE6 and IE7
+
+    ruby.appendChild(rp);
+    ruby.appendChild(rt);
+    docElement.appendChild(ruby);
+
+    // browsers that support <ruby> hide the <rp> via "display:none"
+    if ( getStyle(rp, displayStyleProperty) == 'none' ||                                                       // for non-IE browsers
+    // but in IE browsers <rp> has "display:inline" so, the test needs other conditions:
+        getStyle(ruby, displayStyleProperty) == 'ruby' && getStyle(rt, displayStyleProperty) == 'ruby-text' || // for IE8 & IE9
+        getStyle(rp, fontSizeStyleProperty) == '6pt' && getStyle(rt, fontSizeStyleProperty) == '6pt' ) {       // for IE6 & IE7
+
+        cleanUp();
+        return true;
+
+    } else {
+        cleanUp();
+        return false;
+    }
+
+    function getStyle( element, styleProperty ) {
+        var result;
+
+        if ( window.getComputedStyle ) {     // for non-IE browsers
+            result = document.defaultView.getComputedStyle(element,null).getPropertyValue(styleProperty);
+        } else if ( element.currentStyle ) { // for IE
+            result = element.currentStyle[styleProperty];
+        }
+
+        return result;
+    }
+
+    function cleanUp() {
+        docElement.removeChild(ruby);
+        // the removed child node still exists in memory, so ...
+        ruby = null;
+        rt = null;
+        rp = null;
+    }
+
+});
diff --git a/js/modernizr/feature-detects/elem-time.js b/js/modernizr/feature-detects/elem-time.js
new file mode 100644 (file)
index 0000000..fc88606
--- /dev/null
@@ -0,0 +1,4 @@
+// <time> element
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/rendering.html#the-time-element-0
+// by Addy Osmani
+Modernizr.addTest('time', 'valueAsDate' in document.createElement('time'));
diff --git a/js/modernizr/feature-detects/elem-track.js b/js/modernizr/feature-detects/elem-track.js
new file mode 100644 (file)
index 0000000..7d8e495
--- /dev/null
@@ -0,0 +1,11 @@
+// Track element + Timed Text Track API
+// http://www.w3.org/TR/html5/video.html#the-track-element
+// http://www.w3.org/TR/html5/media-elements.html#text-track-api
+//
+// While IE10 has implemented the track element, IE10 does not expose the underlying APIs to create timed text tracks by JS (really sad)
+// By Addy Osmani
+Modernizr.addTest({
+       texttrackapi: (typeof (document.createElement('video').addTextTrack) === 'function'),
+       // a more strict test for track including UI support: document.createElement('track').kind === 'subtitles'
+       track: ('kind' in document.createElement('track'))
+});
diff --git a/js/modernizr/feature-detects/emoji.js b/js/modernizr/feature-detects/emoji.js
new file mode 100644 (file)
index 0000000..271db65
--- /dev/null
@@ -0,0 +1,11 @@
+// Requires a Modernizr build with `canvastext` included
+// http://www.modernizr.com/download/#-canvas-canvastext
+Modernizr.addTest('emoji', function() {
+  if (!Modernizr.canvastext) return false;
+  var node = document.createElement('canvas'),
+      ctx = node.getContext('2d');
+  ctx.textBaseline = 'top';
+  ctx.font = '32px Arial';
+  ctx.fillText('\ud83d\ude03', 0, 0); // "smiling face with open mouth" emoji
+  return ctx.getImageData(16, 16, 1, 1).data[0] !== 0;
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/es5-strictmode.js b/js/modernizr/feature-detects/es5-strictmode.js
new file mode 100644 (file)
index 0000000..bffbe95
--- /dev/null
@@ -0,0 +1,7 @@
+// strict mode
+
+// test by @kangax
+
+Modernizr.addTest('strictmode', function(){
+       return (function(){ "use strict"; return !this; })(); 
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/event-deviceorientation-motion.js b/js/modernizr/feature-detects/event-deviceorientation-motion.js
new file mode 100644 (file)
index 0000000..644e671
--- /dev/null
@@ -0,0 +1,11 @@
+//By Shi Chuan
+//Part of Device Access aspect of HTML5, same category as geolocation
+//W3C Editor's Draft at http://dev.w3.org/geo/api/spec-source-orientation.html
+//Implementation by iOS Safari at http://goo.gl/fhce3 and http://goo.gl/rLKz8
+
+
+//test for Device Motion Event support, returns boolean value true/false
+Modernizr.addTest('devicemotion', ('DeviceMotionEvent' in window) );
+
+//test for Device Orientation Event support, returns boolean value true/false
+Modernizr.addTest('deviceorientation', ('DeviceOrientationEvent' in window) );
diff --git a/js/modernizr/feature-detects/exif-orientation.js b/js/modernizr/feature-detects/exif-orientation.js
new file mode 100644 (file)
index 0000000..994c13d
--- /dev/null
@@ -0,0 +1,32 @@
+// EXIF Orientation test
+
+// iOS looks at the EXIF Orientation flag in jpgs and rotates the image
+// accordingly. Looks like most desktop browsers just ignore this data.
+
+// description: www.impulseadventure.com/photo/exif-orientation.html
+
+// Bug trackers:
+//    bugzil.la/298619 (unimplemented)
+//    crbug.com/56845 (looks incomplete)
+//    webk.it/19688 (available upstream but its up all ports to turn on individually)
+//
+
+// detect by Paul Sayre
+
+
+(function(){
+
+  var img = new Image();
+
+  img.onerror = function() {
+      Modernizr.addTest('exif-orientation', function () { return false; });
+  };
+
+  img.onload = function() {
+      Modernizr.addTest('exif-orientation', function () { return img.width !== 2; });
+  };
+
+  // There may be a way to shrink this more, it's a 1x2 white jpg with the orientation flag set to 6
+  img.src = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q==";
+
+})();
diff --git a/js/modernizr/feature-detects/file-api.js b/js/modernizr/feature-detects/file-api.js
new file mode 100644 (file)
index 0000000..7c31e8c
--- /dev/null
@@ -0,0 +1,12 @@
+/**
+ * file tests for the File API specification
+ *   Tests for objects specific to the File API W3C specification without
+ *   being redundant (don't bother testing for Blob since it is assumed
+ *   to be the File object's prototype.
+ *
+ *   Will fail in Safari 5 due to its lack of support for the standards
+ *   defined FileReader object
+ */
+Modernizr.addTest('filereader', function () {
+    return !!(window.File && window.FileList && window.FileReader);
+});
diff --git a/js/modernizr/feature-detects/file-filesystem.js b/js/modernizr/feature-detects/file-filesystem.js
new file mode 100644 (file)
index 0000000..ced6761
--- /dev/null
@@ -0,0 +1,9 @@
+// Filesystem API
+// dev.w3.org/2009/dap/file-system/file-dir-sys.html
+
+// The API will be present in Chrome incognito, but will throw an exception.
+// See crbug.com/93417
+//
+// By Eric Bidelman (@ebidel)
+
+Modernizr.addTest('filesystem', !!Modernizr.prefixed('requestFileSystem', window));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/forms-fileinput.js b/js/modernizr/feature-detects/forms-fileinput.js
new file mode 100644 (file)
index 0000000..b33eb97
--- /dev/null
@@ -0,0 +1,13 @@
+
+
+// Detects whether input type="file" is available on the platform
+// E.g. iOS < 6 and some android version don't support this
+
+//  It's useful if you want to hide the upload feature of your app on devices that
+//  don't support it (iphone, ipad, etc).
+
+Modernizr.addTest('fileinput', function() {
+    var elem = document.createElement('input');
+    elem.type = 'file';
+    return !elem.disabled;
+});
diff --git a/js/modernizr/feature-detects/forms-formattribute.js b/js/modernizr/feature-detects/forms-formattribute.js
new file mode 100644 (file)
index 0000000..6b8e114
--- /dev/null
@@ -0,0 +1,29 @@
+// Detects whether input form="form_id" is available on the platform
+// E.g. IE 10 (and below), don't support this
+Modernizr.addTest("formattribute", function() {
+       var form = document.createElement("form"),
+               input = document.createElement("input"),
+               div = document.createElement("div"),
+               id = "formtest"+(new Date().getTime()),
+               attr,
+               bool = false;
+
+               form.id = id;
+
+       //IE6/7 confuses the form idl attribute and the form content attribute
+       if(document.createAttribute){
+               attr = document.createAttribute("form");
+               attr.nodeValue = id;
+               input.setAttributeNode(attr);
+               div.appendChild(form);
+               div.appendChild(input);
+
+               document.documentElement.appendChild(div);
+
+               bool = form.elements.length === 1 && input.form == form;
+
+               div.parentNode.removeChild(div);
+       }
+
+       return bool;
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/forms-inputnumber-l10n.js b/js/modernizr/feature-detects/forms-inputnumber-l10n.js
new file mode 100644 (file)
index 0000000..8746b42
--- /dev/null
@@ -0,0 +1,32 @@
+// input[type="number"] localized input/output
+// // Detects whether input type="number" is capable of receiving and
+// // displaying localized numbers, e.g. with comma separator
+// // https://bugs.webkit.org/show_bug.cgi?id=42484
+// // Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/forms/script-tests/input-number-keyoperation.js?rev=80096#L9
+// // By Peter Janes
+
+Modernizr.addTest('localizedNumber', function() {
+    var doc = document,
+        el = document.createElement('div'),
+        fake,
+        root,
+        input,
+        diff;
+    root = doc.body || (function() {
+        var de = doc.documentElement;
+        fake = true;
+        return de.insertBefore(doc.createElement('body'), de.firstElementChild || de.firstChild);
+    }());
+    el.innerHTML = '<input type="number" value="1.0" step="0.1"/>';
+    input = el.childNodes[0];
+    root.appendChild(el);
+    input.focus();
+    try {
+        doc.execCommand('InsertText', false, '1,1');
+    } catch(e) { // prevent warnings in IE
+    }
+    diff = input.type === 'number' && input.valueAsNumber === 1.1 && input.checkValidity();
+    root.removeChild(el);
+    fake && root.parentNode.removeChild(root);
+    return diff;
+});
diff --git a/js/modernizr/feature-detects/forms-placeholder.js b/js/modernizr/feature-detects/forms-placeholder.js
new file mode 100644 (file)
index 0000000..e68014b
--- /dev/null
@@ -0,0 +1,10 @@
+// testing for placeholder attribute in inputs and textareas
+// re-using Modernizr.input if available
+
+Modernizr.addTest('placeholder', function(){
+
+  return !!( 'placeholder' in ( Modernizr.input    || document.createElement('input')    ) && 
+             'placeholder' in ( Modernizr.textarea || document.createElement('textarea') )
+           );
+
+});
diff --git a/js/modernizr/feature-detects/forms-speechinput.js b/js/modernizr/feature-detects/forms-speechinput.js
new file mode 100644 (file)
index 0000000..48c9021
--- /dev/null
@@ -0,0 +1,19 @@
+// speech input for inputs
+// by @alrra
+
+
+// `webkitSpeech` in elem 
+// doesn`t work correctly in all versions of Chromium based browsers.
+//   It can return false even if they have support for speech i.imgur.com/2Y40n.png
+//  Testing with 'onwebkitspeechchange' seems to fix this problem
+
+// this detect only checks the webkit version because
+// the speech attribute is likely to be deprecated in favor of a JavaScript API.
+// http://lists.w3.org/Archives/Public/public-webapps/2011OctDec/att-1696/speechapi.html
+
+// FIXME: add support for detecting the new spec'd behavior
+
+Modernizr.addTest('speechinput', function(){
+    var elem = document.createElement('input'); 
+    return 'speech' in elem || 'onwebkitspeechchange' in elem; 
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/forms-validation.js b/js/modernizr/feature-detects/forms-validation.js
new file mode 100644 (file)
index 0000000..d52921a
--- /dev/null
@@ -0,0 +1,62 @@
+// This implementation only tests support for interactive form validation.
+// To check validation for a specific type or a specific other constraint,
+// the test can be combined: 
+//    - Modernizr.inputtypes.numer && Modernizr.formvalidation (browser supports rangeOverflow, typeMismatch etc. for type=number)
+//    - Modernizr.input.required && Modernizr.formvalidation (browser supports valueMissing)
+//
+(function(document, Modernizr){
+
+
+  Modernizr.formvalidationapi = false;
+  Modernizr.formvalidationmessage = false;
+
+  Modernizr.addTest('formvalidation', function() {
+    var form = document.createElement('form');
+    if ( !('checkValidity' in form) || !('addEventListener' in form) ) {
+      return false;
+    }
+    if ('reportValidity' in form) {
+      return true;
+    }
+    var invalidFired = false;
+    var input;
+
+    Modernizr.formvalidationapi =  true;
+
+    // Prevent form from being submitted
+    form.addEventListener('submit', function(e) {
+      //Opera does not validate form, if submit is prevented
+      if ( !window.opera ) {
+        e.preventDefault();
+      }
+      e.stopPropagation();
+    }, false);
+
+    // Calling form.submit() doesn't trigger interactive validation,
+    // use a submit button instead
+    //older opera browsers need a name attribute
+    form.innerHTML = '<input name="modTest" required><button></button>';
+
+    Modernizr.testStyles('#modernizr form{position:absolute;top:-99999em}', function( node ) {
+      node.appendChild(form);
+
+      input = form.getElementsByTagName('input')[0];
+
+      // Record whether "invalid" event is fired
+      input.addEventListener('invalid', function(e) {
+        invalidFired = true;
+        e.preventDefault();
+        e.stopPropagation();
+      }, false);
+
+      //Opera does not fully support the validationMessage property
+      Modernizr.formvalidationmessage = !!input.validationMessage;
+
+      // Submit form by clicking submit button
+      form.getElementsByTagName('button')[0].click();
+    });
+
+    return invalidFired;
+  });
+
+})(document, window.Modernizr);
diff --git a/js/modernizr/feature-detects/fullscreen-api.js b/js/modernizr/feature-detects/fullscreen-api.js
new file mode 100644 (file)
index 0000000..7432571
--- /dev/null
@@ -0,0 +1,10 @@
+Modernizr.addTest('fullscreen',function(){
+     for(var i = 0; i < Modernizr._domPrefixes.length; i++) {
+        if( document[Modernizr._domPrefixes[i].toLowerCase() + 'CancelFullScreen'])
+            return true;
+     }
+     return !!document['cancelFullScreen'] || false;
+});
+
+// http://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/ControllingMediaWithJavaScript/ControllingMediaWithJavaScript.html#//apple_ref/doc/uid/TP40009523-CH3-SW20
+// https://developer.mozilla.org/en/API/Fullscreen
diff --git a/js/modernizr/feature-detects/gamepad.js b/js/modernizr/feature-detects/gamepad.js
new file mode 100644 (file)
index 0000000..0756289
--- /dev/null
@@ -0,0 +1,12 @@
+// GamePad API
+// https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html
+// By Eric Bidelman
+
+// FF has Gamepad API support only in special builds, but not in any release (even behind a flag)
+// Their current implementation has no way to feature detect, only events to bind to.
+//   http://www.html5rocks.com/en/tutorials/doodles/gamepad/#toc-featuredetect
+
+// but a patch will bring them up to date with the spec when it lands (and they'll pass this test)
+//   https://bugzilla.mozilla.org/show_bug.cgi?id=690935
+
+Modernizr.addTest('gamepads', !!Modernizr.prefixed('getGamepads', navigator));
diff --git a/js/modernizr/feature-detects/getusermedia.js b/js/modernizr/feature-detects/getusermedia.js
new file mode 100644 (file)
index 0000000..4c38bec
--- /dev/null
@@ -0,0 +1,5 @@
+// getUserMedia
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/video-conferencing-and-peer-to-peer-communication.html
+// By Eric Bidelman
+
+Modernizr.addTest('getusermedia', !!Modernizr.prefixed('getUserMedia', navigator));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/ie8compat.js b/js/modernizr/feature-detects/ie8compat.js
new file mode 100644 (file)
index 0000000..c95e56a
--- /dev/null
@@ -0,0 +1,12 @@
+
+// IE8 compat mode aka Fake IE7
+// by Erich Ocean
+
+// In this case, IE8 will be acting as IE7. You may choose to remove features in this case.
+
+// related:
+// james.padolsey.com/javascript/detect-ie-in-js-using-conditional-comments/
+
+Modernizr.addTest('ie8compat',function(){
+    return (!window.addEventListener && document.documentMode && document.documentMode === 7);
+});
diff --git a/js/modernizr/feature-detects/iframe-sandbox.js b/js/modernizr/feature-detects/iframe-sandbox.js
new file mode 100644 (file)
index 0000000..869c94a
--- /dev/null
@@ -0,0 +1,5 @@
+// Test for `sandbox` attribute in iframes.
+//
+// Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-sandbox
+
+Modernizr.addTest('sandbox', 'sandbox' in document.createElement('iframe'));
diff --git a/js/modernizr/feature-detects/iframe-seamless.js b/js/modernizr/feature-detects/iframe-seamless.js
new file mode 100644 (file)
index 0000000..247b9e6
--- /dev/null
@@ -0,0 +1,5 @@
+// Test for `seamless` attribute in iframes.
+//
+// Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-seamless
+
+Modernizr.addTest('seamless', 'seamless' in document.createElement('iframe'));
diff --git a/js/modernizr/feature-detects/iframe-srcdoc.js b/js/modernizr/feature-detects/iframe-srcdoc.js
new file mode 100644 (file)
index 0000000..1769858
--- /dev/null
@@ -0,0 +1,5 @@
+// Test for `srcdoc` attribute in iframes.
+//
+// Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-srcdoc
+
+Modernizr.addTest('srcdoc', 'srcdoc' in document.createElement('iframe'));
diff --git a/js/modernizr/feature-detects/img-apng.js b/js/modernizr/feature-detects/img-apng.js
new file mode 100644 (file)
index 0000000..069ac93
--- /dev/null
@@ -0,0 +1,26 @@
+// Animated PNG
+// http://en.wikipedia.org/wiki/APNG
+// By Addy Osmani
+(function () {
+
+    if (!Modernizr.canvas) return false;
+    
+    var image = new Image(),
+        canvas = document.createElement('canvas'),
+        ctx = canvas.getContext('2d');
+
+
+    image.onload = function () {
+        Modernizr.addTest('apng', function () {
+            if (typeof canvas.getContext == 'undefined') {
+                return false;
+            } else {
+                ctx.drawImage(image, 0, 0);
+                return ctx.getImageData(0, 0, 1, 1).data[3] === 0;
+            }
+        });
+    };
+
+    image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg==";
+
+}());
diff --git a/js/modernizr/feature-detects/img-webp.js b/js/modernizr/feature-detects/img-webp.js
new file mode 100644 (file)
index 0000000..360cdf8
--- /dev/null
@@ -0,0 +1,20 @@
+// code.google.com/speed/webp/
+// by rich bradshaw, ryan seddon, and paul irish
+
+
+// This test is asynchronous. Watch out.
+
+(function(){
+
+  var image = new Image();
+
+  image.onerror = function() {
+      Modernizr.addTest('webp', false);
+  };  
+  image.onload = function() {
+      Modernizr.addTest('webp', function() { return image.width == 1; });
+  };
+
+  image.src = 'data:image/webp;base64,UklGRiwAAABXRUJQVlA4ICAAAAAUAgCdASoBAAEAL/3+/3+CAB/AAAFzrNsAAP5QAAAAAA==';
+
+}());
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/json.js b/js/modernizr/feature-detects/json.js
new file mode 100644 (file)
index 0000000..af58064
--- /dev/null
@@ -0,0 +1,7 @@
+// native JSON support.
+// developer.mozilla.org/en/JSON
+
+// this will also succeed if you've loaded the JSON2.js polyfill ahead of time
+//   ... but that should be obvious. :)
+
+Modernizr.addTest('json', !!window.JSON && !!JSON.parse);
diff --git a/js/modernizr/feature-detects/lists-reversed.js b/js/modernizr/feature-detects/lists-reversed.js
new file mode 100644 (file)
index 0000000..22fd92c
--- /dev/null
@@ -0,0 +1,6 @@
+
+// impressivewebs.com/reverse-ordered-lists-html5
+// polyfill: github.com/impressivewebs/HTML5-Reverse-Ordered-Lists
+
+
+Modernizr.addTest('olreversed', 'reversed' in document.createElement('ol'));
diff --git a/js/modernizr/feature-detects/mathml.js b/js/modernizr/feature-detects/mathml.js
new file mode 100644 (file)
index 0000000..e1c907a
--- /dev/null
@@ -0,0 +1,23 @@
+// MathML
+// http://www.w3.org/Math/ 
+// By Addy Osmani
+// Based on work by Davide (@dpvc) and David (@davidcarlisle)
+// in https://github.com/mathjax/MathJax/issues/182
+
+Modernizr.addTest('mathml', function(){
+       var hasMathML = false;
+       if ( document.createElementNS ) {
+       var ns = "http://www.w3.org/1998/Math/MathML",
+           div = document.createElement("div");
+           div.style.position = "absolute"; 
+       var mfrac = div.appendChild(document.createElementNS(ns,"math"))
+                      .appendChild(document.createElementNS(ns,"mfrac"));
+       mfrac.appendChild(document.createElementNS(ns,"mi"))
+            .appendChild(document.createTextNode("xx"));
+       mfrac.appendChild(document.createElementNS(ns,"mi"))
+            .appendChild(document.createTextNode("yy"));
+       document.body.appendChild(div);
+       hasMathML = div.offsetHeight > div.offsetWidth;
+       }
+       return hasMathML;
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/network-connection.js b/js/modernizr/feature-detects/network-connection.js
new file mode 100644 (file)
index 0000000..242cdfe
--- /dev/null
@@ -0,0 +1,22 @@
+// determining low-bandwidth via navigator.connection
+
+// There are two iterations of the navigator.connection interface:
+
+// The first is present in Android 2.2+ and only in the Browser (not WebView)
+// : docs.phonegap.com/en/1.2.0/phonegap_connection_connection.md.html#connection.type
+// : davidbcalhoun.com/2010/using-navigator-connection-android
+
+// The second is specced at dev.w3.org/2009/dap/netinfo/ and perhaps landing in WebKit
+// : bugs.webkit.org/show_bug.cgi?id=73528
+
+// unknown devices are assumed as fast
+// for more rigorous network testing, consider boomerang.js: github.com/bluesmoon/boomerang/
+
+Modernizr.addTest('lowbandwidth', function() {
+
+  var connection = navigator.connection || { type: 0 }; // polyfill
+
+  return connection.type == 3 || // connection.CELL_2G
+      connection.type == 4 || // connection.CELL_3G
+      /^[23]g$/.test(connection.type); // string value in new spec
+});
diff --git a/js/modernizr/feature-detects/network-eventsource.js b/js/modernizr/feature-detects/network-eventsource.js
new file mode 100644 (file)
index 0000000..ac94065
--- /dev/null
@@ -0,0 +1,5 @@
+
+// server sent events aka eventsource
+// dev.w3.org/html5/eventsource/
+
+Modernizr.addTest('eventsource', !!window.EventSource);
diff --git a/js/modernizr/feature-detects/network-xhr2.js b/js/modernizr/feature-detects/network-xhr2.js
new file mode 100644 (file)
index 0000000..8d3fb51
--- /dev/null
@@ -0,0 +1,13 @@
+
+
+// XML HTTP Request Level 2
+// www.w3.org/TR/XMLHttpRequest2/
+
+// Much more details at github.com/Modernizr/Modernizr/issues/385
+
+// all three of these details report consistently across all target browsers:
+//   !!(window.ProgressEvent);
+//   !!(window.FormData);
+//   window.XMLHttpRequest && "withCredentials" in new XMLHttpRequest;
+
+Modernizr.addTest('xhr2', 'FormData' in window);
diff --git a/js/modernizr/feature-detects/notification.js b/js/modernizr/feature-detects/notification.js
new file mode 100644 (file)
index 0000000..92d1eef
--- /dev/null
@@ -0,0 +1,10 @@
+// Notifications
+// By Theodoor van Donge
+
+// window.webkitNotifications is only used by Chrome 
+//     http://www.html5rocks.com/en/tutorials/notifications/quick/
+
+// window.Notification only exist in the draft specs 
+//     http://dev.w3.org/2006/webapi/WebNotifications/publish/Notifications.html#idl-if-Notification
+
+Modernizr.addTest('notification', 'Notification' in window && 'permission' in window.Notification && 'requestPermission' in window.Notification);
diff --git a/js/modernizr/feature-detects/performance.js b/js/modernizr/feature-detects/performance.js
new file mode 100644 (file)
index 0000000..903c5c9
--- /dev/null
@@ -0,0 +1,5 @@
+// Navigation Timing (Performance)
+// https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/
+// http://www.html5rocks.com/en/tutorials/webperformance/basics/
+// By Scott Murphy (uxder)
+Modernizr.addTest('performance', !!Modernizr.prefixed('performance', window));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/pointerlock-api.js b/js/modernizr/feature-detects/pointerlock-api.js
new file mode 100644 (file)
index 0000000..07eb07e
--- /dev/null
@@ -0,0 +1,4 @@
+// https://developer.mozilla.org/en-US/docs/API/Pointer_Lock_API
+
+Modernizr.addTest('pointerlock',!!Modernizr.prefixed('pointerLockElement', document));
+
diff --git a/js/modernizr/feature-detects/quota-management-api.js b/js/modernizr/feature-detects/quota-management-api.js
new file mode 100644 (file)
index 0000000..5ce2b02
--- /dev/null
@@ -0,0 +1,11 @@
+// Quota Storage Management API
+// This API can be used to check how much quota an origin is using and request more
+
+// Currently only implemented in Chrome.
+// https://developers.google.com/chrome/whitepapers/storage
+// By Addy Osmani
+
+Modernizr.addTest('quotamanagement', function(){
+  var storage = Modernizr.prefixed('StorageInfo', window);
+  return !!(storage && 'TEMPORARY' in storage && 'PERSISTENT' in storage);
+});
diff --git a/js/modernizr/feature-detects/requestanimationframe.js b/js/modernizr/feature-detects/requestanimationframe.js
new file mode 100644 (file)
index 0000000..5ac4bcf
--- /dev/null
@@ -0,0 +1,7 @@
+
+// requestAnimationFrame
+// Offload animation repainting to browser for optimized performance. 
+// http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/RequestAnimationFrame/Overview.html
+// By Addy Osmani
+
+Modernizr.addTest('raf', !!Modernizr.prefixed('requestAnimationFrame', window));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/script-async.js b/js/modernizr/feature-detects/script-async.js
new file mode 100644 (file)
index 0000000..d80d04b
--- /dev/null
@@ -0,0 +1,3 @@
+// async script
+// By Theodoor van Donge
+Modernizr.addTest('scriptasync', 'async' in document.createElement('script'));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/script-defer.js b/js/modernizr/feature-detects/script-defer.js
new file mode 100644 (file)
index 0000000..782f14a
--- /dev/null
@@ -0,0 +1,3 @@
+// defer script
+// By Theodoor van Donge
+Modernizr.addTest('scriptdefer', 'defer' in document.createElement('script'));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/style-scoped.js b/js/modernizr/feature-detects/style-scoped.js
new file mode 100644 (file)
index 0000000..3add1b0
--- /dev/null
@@ -0,0 +1,6 @@
+// Browser support test for <style scoped>
+// http://www.w3.org/TR/html5/the-style-element.html#attr-style-scoped
+//
+// by @alrra
+
+Modernizr.addTest( 'stylescoped', 'scoped' in document.createElement('style') );
diff --git a/js/modernizr/feature-detects/svg-filters.js b/js/modernizr/feature-detects/svg-filters.js
new file mode 100644 (file)
index 0000000..d289b9d
--- /dev/null
@@ -0,0 +1,13 @@
+// Detect support for svg filters - http://www.w3.org/TR/SVG11/filters.html.
+// Should fail in Safari: http://stackoverflow.com/questions/9739955/feature-detecting-support-for-svg-filters.
+// detect by erik dahlstrom
+
+Modernizr.addTest('svgfilters', function(){
+       var result = false;
+    try {
+      result = typeof SVGFEColorMatrixElement !== undefined &&
+               SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE == 2;
+    }
+    catch(e) {}
+    return result;
+});
diff --git a/js/modernizr/feature-detects/unicode.js b/js/modernizr/feature-detects/unicode.js
new file mode 100644 (file)
index 0000000..39908bf
--- /dev/null
@@ -0,0 +1,32 @@
+/**
+ * Unicode special character support
+ * 
+ * Detection is made by testing missing glyph box rendering against star character
+ * If widths are the same, this "probably" means the browser didn't support the star character and rendered a glyph box instead
+ * Just need to ensure the font characters have different widths
+ * 
+ * Warning : positive Unicode support doesn't mean you can use it inside <title>, this seams more related to OS & Language packs
+ */
+Modernizr.addTest('unicode', function() {
+       
+       
+       var bool,
+
+               missingGlyph = document.createElement('span'),
+               
+               star = document.createElement('span');
+
+       Modernizr.testStyles('#modernizr{font-family:Arial,sans;font-size:300em;}', function(node) {
+
+               missingGlyph.innerHTML = '&#5987';
+               star.innerHTML = '&#9734';              
+               
+               node.appendChild(missingGlyph);
+               node.appendChild(star);
+               
+               bool = 'offsetWidth' in missingGlyph && missingGlyph.offsetWidth !== star.offsetWidth;
+       });
+
+       return bool;
+
+});
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/url-data-uri.js b/js/modernizr/feature-detects/url-data-uri.js
new file mode 100644 (file)
index 0000000..e6479a2
--- /dev/null
@@ -0,0 +1,26 @@
+// data uri test.
+// https://github.com/Modernizr/Modernizr/issues/14
+
+// This test is asynchronous. Watch out.
+
+
+// in IE7 in HTTPS this can cause a Mixed Content security popup. 
+//  github.com/Modernizr/Modernizr/issues/362
+// To avoid that you can create a new iframe and inject this.. perhaps..
+
+
+(function(){
+
+  var datauri = new Image();
+
+
+  datauri.onerror = function() {
+      Modernizr.addTest('datauri', function () { return false; });
+  };  
+  datauri.onload = function() {
+      Modernizr.addTest('datauri', function () { return (datauri.width == 1 && datauri.height == 1); });
+  };
+
+  datauri.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
+
+})();
diff --git a/js/modernizr/feature-detects/userdata.js b/js/modernizr/feature-detects/userdata.js
new file mode 100644 (file)
index 0000000..79d921e
--- /dev/null
@@ -0,0 +1,7 @@
+// test if IE userdata supported
+// msdn.microsoft.com/en-us/library/ms531424(v=vs.85).aspx
+// test by @stereobooster
+
+Modernizr.addTest('userdata', function(){
+  return !!document.createElement('div').addBehavior;
+});
diff --git a/js/modernizr/feature-detects/vibration.js b/js/modernizr/feature-detects/vibration.js
new file mode 100644 (file)
index 0000000..034c25d
--- /dev/null
@@ -0,0 +1,4 @@
+// Vibration API
+// http://www.w3.org/TR/vibration/
+// https://developer.mozilla.org/en/DOM/window.navigator.mozVibrate
+Modernizr.addTest('vibrate', !!Modernizr.prefixed('vibrate', navigator));
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/web-intents.js b/js/modernizr/feature-detects/web-intents.js
new file mode 100644 (file)
index 0000000..d0557fe
--- /dev/null
@@ -0,0 +1,6 @@
+// Tests for the ability to use Web Intents (http://webintents.org).
+// By Eric Bidelman
+
+Modernizr.addTest('webintents', function() {
+  return !!Modernizr.prefixed('startActivity', navigator);
+});
diff --git a/js/modernizr/feature-detects/webgl-extensions.js b/js/modernizr/feature-detects/webgl-extensions.js
new file mode 100644 (file)
index 0000000..c005c00
--- /dev/null
@@ -0,0 +1,42 @@
+
+// Grab the WebGL extensions currently supported and add to the Modernizr.webgl object
+// spec: www.khronos.org/registry/webgl/specs/latest/#5.13.14
+
+// based on code from ilmari heikkinen
+// code.google.com/p/graphics-detect/source/browse/js/detect.js
+
+
+(function(){
+
+    if (!Modernizr.webgl) return;
+
+    var canvas, ctx, exts;
+
+    try {
+        canvas  = document.createElement('canvas');
+        ctx     = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
+        exts    = ctx.getSupportedExtensions();
+    }
+    catch (e) {
+        return;
+    }
+
+    if (ctx === undefined) {
+        Modernizr.webgl = new Boolean(false);
+    }
+    else {
+        Modernizr.webgl = new Boolean(true);
+    }
+
+
+    for (var i = -1, len = exts.length; ++i < len; ){
+        Modernizr.webgl[exts[i]] = true;
+    }
+
+    // hack for addressing modernizr testsuite failures. sorry.
+    if (window.TEST && TEST.audvid){
+        TEST.audvid.push('webgl');
+    }
+
+    canvas = undefined;
+})();
\ No newline at end of file
diff --git a/js/modernizr/feature-detects/websockets-binary.js b/js/modernizr/feature-detects/websockets-binary.js
new file mode 100644 (file)
index 0000000..8f549ce
--- /dev/null
@@ -0,0 +1,20 @@
+
+// binaryType is truthy if there is support.. returns "blob" in new-ish chrome.
+// plus.google.com/115535723976198353696/posts/ERN6zYozENV
+// github.com/Modernizr/Modernizr/issues/370
+
+Modernizr.addTest('websocketsbinary', function() {
+  var protocol = 'https:'==location.protocol?'wss':'ws',
+  protoBin;
+
+  if('WebSocket' in window) {
+    if( protoBin = 'binaryType' in WebSocket.prototype ) {
+      return protoBin;
+    }
+    try {
+      return !!(new WebSocket(protocol+'://.').binaryType);
+    } catch (e){}
+  }
+
+  return false;
+});
diff --git a/js/modernizr/feature-detects/window-framed.js b/js/modernizr/feature-detects/window-framed.js
new file mode 100644 (file)
index 0000000..f8a6704
--- /dev/null
@@ -0,0 +1,8 @@
+
+// tests if page is iframed
+
+// github.com/Modernizr/Modernizr/issues/242
+
+Modernizr.addTest('framed', function(){
+  return window.location != top.location;
+});
diff --git a/js/modernizr/feature-detects/workers-blobworkers.js b/js/modernizr/feature-detects/workers-blobworkers.js
new file mode 100644 (file)
index 0000000..33e82eb
--- /dev/null
@@ -0,0 +1,66 @@
+// by jussi-kalliokoski
+
+
+// This test is asynchronous. Watch out.
+
+// The test will potentially add garbage to console.
+
+(function(){
+  try {
+    // we're avoiding using Modernizr._domPrefixes as the prefix capitalization on
+    // these guys are notoriously peculiar.
+    var BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder || window.OBlobBuilder || window.BlobBuilder;
+    var URL         = window.MozURL || window.webkitURL || window.MSURL || window.OURL || window.URL;
+    var data    = 'Modernizr',
+        blob,
+        bb,
+        worker,
+        url,
+        timeout,
+        scriptText = 'this.onmessage=function(e){postMessage(e.data)}';
+
+    try {
+      blob = new Blob([scriptText], {type:'text/javascript'});
+    } catch(e) {
+      // we'll fall back to the deprecated BlobBuilder
+    }
+    if (!blob) {
+      bb = new BlobBuilder();
+      bb.append(scriptText);
+      blob = bb.getBlob();
+    }
+
+    url = URL.createObjectURL(blob);
+    worker = new Worker(url);
+
+    worker.onmessage = function(e) {
+      Modernizr.addTest('blobworkers', data === e.data);
+      cleanup();
+    };
+
+    // Just in case...
+    worker.onerror = fail;
+    timeout = setTimeout(fail, 200);
+
+    worker.postMessage(data);
+  } catch (e) {
+    fail();
+  }
+
+  function fail() {
+    Modernizr.addTest('blobworkers', false);
+    cleanup();
+  }
+
+  function cleanup() {
+    if (url) {
+      URL.revokeObjectURL(url);
+    }
+    if (worker) {
+      worker.terminate();
+    }
+    if (timeout) {
+      clearTimeout(timeout);
+    }
+  }
+}());
diff --git a/js/modernizr/feature-detects/workers-dataworkers.js b/js/modernizr/feature-detects/workers-dataworkers.js
new file mode 100644 (file)
index 0000000..efa95a5
--- /dev/null
@@ -0,0 +1,34 @@
+// by jussi-kalliokoski
+
+
+// This test is asynchronous. Watch out.
+
+// The test will potentially add garbage to console.
+
+(function(){
+  try {
+    var data    = 'Modernizr',
+        worker  = new Worker('data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=');
+
+    worker.onmessage = function(e) {
+      worker.terminate();
+      Modernizr.addTest('dataworkers', data === e.data);
+      worker = null;
+    };
+
+    // Just in case...
+    worker.onerror = function() {
+      Modernizr.addTest('dataworkers', false);
+      worker = null;
+    };
+
+    setTimeout(function() {
+        Modernizr.addTest('dataworkers', false);
+    }, 200);
+
+    worker.postMessage(data);
+
+  } catch (e) {
+    Modernizr.addTest('dataworkers', false);
+  }
+}());
diff --git a/js/modernizr/feature-detects/workers-sharedworkers.js b/js/modernizr/feature-detects/workers-sharedworkers.js
new file mode 100644 (file)
index 0000000..a9d78eb
--- /dev/null
@@ -0,0 +1,3 @@
+Modernizr.addTest('sharedworkers', function(){
+  return !!window.SharedWorker;
+});
\ No newline at end of file
diff --git a/js/modernizr/grunt.js b/js/modernizr/grunt.js
new file mode 100644 (file)
index 0000000..ed591da
--- /dev/null
@@ -0,0 +1,69 @@
+/*global module */
+module.exports = function( grunt ) {
+    'use strict';
+
+    grunt.initConfig({
+        meta: {
+          version: '2.8.3',
+          banner: '/*!\n' +
+            ' * Modernizr v<%= meta.version %>\n' +
+            ' * www.modernizr.com\n *\n' +
+            ' * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton\n' +
+            ' * Available under the BSD and MIT licenses: www.modernizr.com/license/\n */'
+        },
+        qunit: {
+            files: ['test/index.html']
+        },
+        lint: {
+            files: [
+                'grunt.js',
+                'modernizr.js',
+                'feature-detects/*.js'
+            ]
+        },
+        min: {
+            dist: {
+                src: [
+                    '<banner:meta.banner>',
+                    'modernizr.js'
+                ],
+                dest: 'modernizr.min.js'
+            }
+        },
+        watch: {
+            files: '<config:lint.files>',
+            tasks: 'lint'
+        },
+        jshint: {
+            options: {
+                boss: true,
+                browser: true,
+                curly: false,
+                devel: true,
+                eqeqeq: false,
+                eqnull: true,
+                expr: true,
+                evil: true,
+                immed: false,
+                laxcomma: true,
+                newcap: false,
+                noarg: true,
+                smarttabs: true,
+                sub: true,
+                undef: true
+            },
+            globals: {
+                Modernizr: true,
+                DocumentTouch: true,
+                TEST: true,
+                SVGFEColorMatrixElement : true,
+                Blob: true
+            }
+        }
+    });
+
+    grunt.registerTask('default', 'min');
+
+    // Travis CI task.
+    grunt.registerTask('travis', 'qunit');
+};
diff --git a/js/modernizr/modernizr.js b/js/modernizr/modernizr.js
new file mode 100644 (file)
index 0000000..3365339
--- /dev/null
@@ -0,0 +1,1406 @@
+/*!
+ * Modernizr v2.8.3
+ * www.modernizr.com
+ *
+ * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
+ * Available under the BSD and MIT licenses: www.modernizr.com/license/
+ */
+
+/*
+ * Modernizr tests which native CSS3 and HTML5 features are available in
+ * the current UA and makes the results available to you in two ways:
+ * as properties on a global Modernizr object, and as classes on the
+ * <html> element. This information allows you to progressively enhance
+ * your pages with a granular level of control over the experience.
+ *
+ * Modernizr has an optional (not included) conditional resource loader
+ * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
+ * To get a build that includes Modernizr.load(), as well as choosing
+ * which tests to include, go to www.modernizr.com/download/
+ *
+ * Authors        Faruk Ates, Paul Irish, Alex Sexton
+ * Contributors   Ryan Seddon, Ben Alman
+ */
+
+window.Modernizr = (function( window, document, undefined ) {
+
+    var version = '2.8.3',
+
+    Modernizr = {},
+
+    /*>>cssclasses*/
+    // option for enabling the HTML classes to be added
+    enableClasses = true,
+    /*>>cssclasses*/
+
+    docElement = document.documentElement,
+
+    /**
+     * Create our "modernizr" element that we do most feature tests on.
+     */
+    mod = 'modernizr',
+    modElem = document.createElement(mod),
+    mStyle = modElem.style,
+
+    /**
+     * Create the input element for various Web Forms feature tests.
+     */
+    inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,
+
+    /*>>smile*/
+    smile = ':)',
+    /*>>smile*/
+
+    toString = {}.toString,
+
+    // TODO :: make the prefixes more granular
+    /*>>prefixes*/
+    // List of property values to set for css tests. See ticket #21
+    prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
+    /*>>prefixes*/
+
+    /*>>domprefixes*/
+    // Following spec is to expose vendor-specific style properties as:
+    //   elem.style.WebkitBorderRadius
+    // and the following would be incorrect:
+    //   elem.style.webkitBorderRadius
+
+    // Webkit ghosts their properties in lowercase but Opera & Moz do not.
+    // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
+    //   erik.eae.net/archives/2008/03/10/21.48.10/
+
+    // More here: github.com/Modernizr/Modernizr/issues/issue/21
+    omPrefixes = 'Webkit Moz O ms',
+
+    cssomPrefixes = omPrefixes.split(' '),
+
+    domPrefixes = omPrefixes.toLowerCase().split(' '),
+    /*>>domprefixes*/
+
+    /*>>ns*/
+    ns = {'svg': 'http://www.w3.org/2000/svg'},
+    /*>>ns*/
+
+    tests = {},
+    inputs = {},
+    attrs = {},
+
+    classes = [],
+
+    slice = classes.slice,
+
+    featureName, // used in testing loop
+
+
+    /*>>teststyles*/
+    // Inject element with style element and some CSS rules
+    injectElementWithStyles = function( rule, callback, nodes, testnames ) {
+
+      var style, ret, node, docOverflow,
+          div = document.createElement('div'),
+          // After page load injecting a fake body doesn't work so check if body exists
+          body = document.body,
+          // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
+          fakeBody = body || document.createElement('body');
+
+      if ( parseInt(nodes, 10) ) {
+          // In order not to give false positives we create a node for each test
+          // This also allows the method to scale for unspecified uses
+          while ( nodes-- ) {
+              node = document.createElement('div');
+              node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
+              div.appendChild(node);
+          }
+      }
+
+      // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
+      // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
+      // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
+      // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
+      // Documents served as xml will throw if using &shy; so use xml friendly encoded version. See issue #277
+      style = ['&#173;','<style id="s', mod, '">', rule, '</style>'].join('');
+      div.id = mod;
+      // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
+      // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
+      (body ? div : fakeBody).innerHTML += style;
+      fakeBody.appendChild(div);
+      if ( !body ) {
+          //avoid crashing IE8, if background image is used
+          fakeBody.style.background = '';
+          //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
+          fakeBody.style.overflow = 'hidden';
+          docOverflow = docElement.style.overflow;
+          docElement.style.overflow = 'hidden';
+          docElement.appendChild(fakeBody);
+      }
+
+      ret = callback(div, rule);
+      // If this is done after page load we don't want to remove the body so check if body exists
+      if ( !body ) {
+          fakeBody.parentNode.removeChild(fakeBody);
+          docElement.style.overflow = docOverflow;
+      } else {
+          div.parentNode.removeChild(div);
+      }
+
+      return !!ret;
+
+    },
+    /*>>teststyles*/
+
+    /*>>mq*/
+    // adapted from matchMedia polyfill
+    // by Scott Jehl and Paul Irish
+    // gist.github.com/786768
+    testMediaQuery = function( mq ) {
+
+      var matchMedia = window.matchMedia || window.msMatchMedia;
+      if ( matchMedia ) {
+        return matchMedia(mq) && matchMedia(mq).matches || false;
+      }
+
+      var bool;
+
+      injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
+        bool = (window.getComputedStyle ?
+                  getComputedStyle(node, null) :
+                  node.currentStyle)['position'] == 'absolute';
+      });
+
+      return bool;
+
+     },
+     /*>>mq*/
+
+
+    /*>>hasevent*/
+    //
+    // isEventSupported determines if a given element supports the given event
+    // kangax.github.com/iseventsupported/
+    //
+    // The following results are known incorrects:
+    //   Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
+    //   Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
+    //   ...
+    isEventSupported = (function() {
+
+      var TAGNAMES = {
+        'select': 'input', 'change': 'input',
+        'submit': 'form', 'reset': 'form',
+        'error': 'img', 'load': 'img', 'abort': 'img'
+      };
+
+      function isEventSupported( eventName, element ) {
+
+        element = element || document.createElement(TAGNAMES[eventName] || 'div');
+        eventName = 'on' + eventName;
+
+        // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
+        var isSupported = eventName in element;
+
+        if ( !isSupported ) {
+          // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
+          if ( !element.setAttribute ) {
+            element = document.createElement('div');
+          }
+          if ( element.setAttribute && element.removeAttribute ) {
+            element.setAttribute(eventName, '');
+            isSupported = is(element[eventName], 'function');
+
+            // If property was created, "remove it" (by setting value to `undefined`)
+            if ( !is(element[eventName], 'undefined') ) {
+              element[eventName] = undefined;
+            }
+            element.removeAttribute(eventName);
+          }
+        }
+
+        element = null;
+        return isSupported;
+      }
+      return isEventSupported;
+    })(),
+    /*>>hasevent*/
+
+    // TODO :: Add flag for hasownprop ? didn't last time
+
+    // hasOwnProperty shim by kangax needed for Safari 2.0 support
+    _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
+
+    if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
+      hasOwnProp = function (object, property) {
+        return _hasOwnProperty.call(object, property);
+      };
+    }
+    else {
+      hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
+        return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
+      };
+    }
+
+    // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
+    // es5.github.com/#x15.3.4.5
+
+    if (!Function.prototype.bind) {
+      Function.prototype.bind = function bind(that) {
+
+        var target = this;
+
+        if (typeof target != "function") {
+            throw new TypeError();
+        }
+
+        var args = slice.call(arguments, 1),
+            bound = function () {
+
+            if (this instanceof bound) {
+
+              var F = function(){};
+              F.prototype = target.prototype;
+              var self = new F();
+
+              var result = target.apply(
+                  self,
+                  args.concat(slice.call(arguments))
+              );
+              if (Object(result) === result) {
+                  return result;
+              }
+              return self;
+
+            } else {
+
+              return target.apply(
+                  that,
+                  args.concat(slice.call(arguments))
+              );
+
+            }
+
+        };
+
+        return bound;
+      };
+    }
+
+    /**
+     * setCss applies given styles to the Modernizr DOM node.
+     */
+    function setCss( str ) {
+        mStyle.cssText = str;
+    }
+
+    /**
+     * setCssAll extrapolates all vendor-specific css strings.
+     */
+    function setCssAll( str1, str2 ) {
+        return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
+    }
+
+    /**
+     * is returns a boolean for if typeof obj is exactly type.
+     */
+    function is( obj, type ) {
+        return typeof obj === type;
+    }
+
+    /**
+     * contains returns a boolean for if substr is found within str.
+     */
+    function contains( str, substr ) {
+        return !!~('' + str).indexOf(substr);
+    }
+
+    /*>>testprop*/
+
+    // testProps is a generic CSS / DOM property test.
+
+    // In testing support for a given CSS property, it's legit to test:
+    //    `elem.style[styleName] !== undefined`
+    // If the property is supported it will return an empty string,
+    // if unsupported it will return undefined.
+
+    // We'll take advantage of this quick test and skip setting a style
+    // on our modernizr element, but instead just testing undefined vs
+    // empty string.
+
+    // Because the testing of the CSS property names (with "-", as
+    // opposed to the camelCase DOM properties) is non-portable and
+    // non-standard but works in WebKit and IE (but not Gecko or Opera),
+    // we explicitly reject properties with dashes so that authors
+    // developing in WebKit or IE first don't end up with
+    // browser-specific content by accident.
+
+    function testProps( props, prefixed ) {
+        for ( var i in props ) {
+            var prop = props[i];
+            if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
+                return prefixed == 'pfx' ? prop : true;
+            }
+        }
+        return false;
+    }
+    /*>>testprop*/
+
+    // TODO :: add testDOMProps
+    /**
+     * testDOMProps is a generic DOM property test; if a browser supports
+     *   a certain property, it won't return undefined for it.
+     */
+    function testDOMProps( props, obj, elem ) {
+        for ( var i in props ) {
+            var item = obj[props[i]];
+            if ( item !== undefined) {
+
+                // return the property name as a string
+                if (elem === false) return props[i];
+
+                // let's bind a function
+                if (is(item, 'function')){
+                  // default to autobind unless override
+                  return item.bind(elem || obj);
+                }
+
+                // return the unbound function or obj or value
+                return item;
+            }
+        }
+        return false;
+    }
+
+    /*>>testallprops*/
+    /**
+     * testPropsAll tests a list of DOM properties we want to check against.
+     *   We specify literally ALL possible (known and/or likely) properties on
+     *   the element including the non-vendor prefixed one, for forward-
+     *   compatibility.
+     */
+    function testPropsAll( prop, prefixed, elem ) {
+
+        var ucProp  = prop.charAt(0).toUpperCase() + prop.slice(1),
+            props   = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
+
+        // did they call .prefixed('boxSizing') or are we just testing a prop?
+        if(is(prefixed, "string") || is(prefixed, "undefined")) {
+          return testProps(props, prefixed);
+
+        // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
+        } else {
+          props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
+          return testDOMProps(props, prefixed, elem);
+        }
+    }
+    /*>>testallprops*/
+
+
+    /**
+     * Tests
+     * -----
+     */
+
+    // The *new* flexbox
+    // dev.w3.org/csswg/css3-flexbox
+
+    tests['flexbox'] = function() {
+      return testPropsAll('flexWrap');
+    };
+
+    // The *old* flexbox
+    // www.w3.org/TR/2009/WD-css3-flexbox-20090723/
+
+    tests['flexboxlegacy'] = function() {
+        return testPropsAll('boxDirection');
+    };
+
+    // On the S60 and BB Storm, getContext exists, but always returns undefined
+    // so we actually have to call getContext() to verify
+    // github.com/Modernizr/Modernizr/issues/issue/97/
+
+    tests['canvas'] = function() {
+        var elem = document.createElement('canvas');
+        return !!(elem.getContext && elem.getContext('2d'));
+    };
+
+    tests['canvastext'] = function() {
+        return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
+    };
+
+    // webk.it/70117 is tracking a legit WebGL feature detect proposal
+
+    // We do a soft detect which may false positive in order to avoid
+    // an expensive context creation: bugzil.la/732441
+
+    tests['webgl'] = function() {
+        return !!window.WebGLRenderingContext;
+    };
+
+    /*
+     * The Modernizr.touch test only indicates if the browser supports
+     *    touch events, which does not necessarily reflect a touchscreen
+     *    device, as evidenced by tablets running Windows 7 or, alas,
+     *    the Palm Pre / WebOS (touch) phones.
+     *
+     * Additionally, Chrome (desktop) used to lie about its support on this,
+     *    but that has since been rectified: crbug.com/36415
+     *
+     * We also test for Firefox 4 Multitouch Support.
+     *
+     * For more info, see: modernizr.github.com/Modernizr/touch.html
+     */
+
+    tests['touch'] = function() {
+        var bool;
+
+        if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
+          bool = true;
+        } else {
+          injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
+            bool = node.offsetTop === 9;
+          });
+        }
+
+        return bool;
+    };
+
+
+    // geolocation is often considered a trivial feature detect...
+    // Turns out, it's quite tricky to get right:
+    //
+    // Using !!navigator.geolocation does two things we don't want. It:
+    //   1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
+    //   2. Disables page caching in WebKit: webk.it/43956
+    //
+    // Meanwhile, in Firefox < 8, an about:config setting could expose
+    // a false positive that would throw an exception: bugzil.la/688158
+
+    tests['geolocation'] = function() {
+        return 'geolocation' in navigator;
+    };
+
+
+    tests['postmessage'] = function() {
+      return !!window.postMessage;
+    };
+
+
+    // Chrome incognito mode used to throw an exception when using openDatabase
+    // It doesn't anymore.
+    tests['websqldatabase'] = function() {
+      return !!window.openDatabase;
+    };
+
+    // Vendors had inconsistent prefixing with the experimental Indexed DB:
+    // - Webkit's implementation is accessible through webkitIndexedDB
+    // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
+    // For speed, we don't test the legacy (and beta-only) indexedDB
+    tests['indexedDB'] = function() {
+      return !!testPropsAll("indexedDB", window);
+    };
+
+    // documentMode logic from YUI to filter out IE8 Compat Mode
+    //   which false positives.
+    tests['hashchange'] = function() {
+      return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
+    };
+
+    // Per 1.6:
+    // This used to be Modernizr.historymanagement but the longer
+    // name has been deprecated in favor of a shorter and property-matching one.
+    // The old API is still available in 1.6, but as of 2.0 will throw a warning,
+    // and in the first release thereafter disappear entirely.
+    tests['history'] = function() {
+      return !!(window.history && history.pushState);
+    };
+
+    tests['draganddrop'] = function() {
+        var div = document.createElement('div');
+        return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
+    };
+
+    // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
+    // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
+    // FF10 still uses prefixes, so check for it until then.
+    // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
+    tests['websockets'] = function() {
+        return 'WebSocket' in window || 'MozWebSocket' in window;
+    };
+
+
+    // css-tricks.com/rgba-browser-support/
+    tests['rgba'] = function() {
+        // Set an rgba() color and check the returned value
+
+        setCss('background-color:rgba(150,255,150,.5)');
+
+        return contains(mStyle.backgroundColor, 'rgba');
+    };
+
+    tests['hsla'] = function() {
+        // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
+        //   except IE9 who retains it as hsla
+
+        setCss('background-color:hsla(120,40%,100%,.5)');
+
+        return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
+    };
+
+    tests['multiplebgs'] = function() {
+        // Setting multiple images AND a color on the background shorthand property
+        //  and then querying the style.background property value for the number of
+        //  occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
+
+        setCss('background:url(https://),url(https://),red url(https://)');
+
+        // If the UA supports multiple backgrounds, there should be three occurrences
+        //   of the string "url(" in the return value for elemStyle.background
+
+        return (/(url\s*\(.*?){3}/).test(mStyle.background);
+    };
+
+
+
+    // this will false positive in Opera Mini
+    //   github.com/Modernizr/Modernizr/issues/396
+
+    tests['backgroundsize'] = function() {
+        return testPropsAll('backgroundSize');
+    };
+
+    tests['borderimage'] = function() {
+        return testPropsAll('borderImage');
+    };
+
+
+    // Super comprehensive table about all the unique implementations of
+    // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance
+
+    tests['borderradius'] = function() {
+        return testPropsAll('borderRadius');
+    };
+
+    // WebOS unfortunately false positives on this test.
+    tests['boxshadow'] = function() {
+        return testPropsAll('boxShadow');
+    };
+
+    // FF3.0 will false positive on this test
+    tests['textshadow'] = function() {
+        return document.createElement('div').style.textShadow === '';
+    };
+
+
+    tests['opacity'] = function() {
+        // Browsers that actually have CSS Opacity implemented have done so
+        //  according to spec, which means their return values are within the
+        //  range of [0.0,1.0] - including the leading zero.
+
+        setCssAll('opacity:.55');
+
+        // The non-literal . in this regex is intentional:
+        //   German Chrome returns this value as 0,55
+        // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
+        return (/^0.55$/).test(mStyle.opacity);
+    };
+
+
+    // Note, Android < 4 will pass this test, but can only animate
+    //   a single property at a time
+    //   goo.gl/v3V4Gp
+    tests['cssanimations'] = function() {
+        return testPropsAll('animationName');
+    };
+
+
+    tests['csscolumns'] = function() {
+        return testPropsAll('columnCount');
+    };
+
+
+    tests['cssgradients'] = function() {
+        /**
+         * For CSS Gradients syntax, please see:
+         * webkit.org/blog/175/introducing-css-gradients/
+         * developer.mozilla.org/en/CSS/-moz-linear-gradient
+         * developer.mozilla.org/en/CSS/-moz-radial-gradient
+         * dev.w3.org/csswg/css3-images/#gradients-
+         */
+
+        var str1 = 'background-image:',
+            str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
+            str3 = 'linear-gradient(left top,#9f9, white);';
+
+        setCss(
+             // legacy webkit syntax (FIXME: remove when syntax not in use anymore)
+              (str1 + '-webkit- '.split(' ').join(str2 + str1) +
+             // standard syntax             // trailing 'background-image:'
+              prefixes.join(str3 + str1)).slice(0, -str1.length)
+        );
+
+        return contains(mStyle.backgroundImage, 'gradient');
+    };
+
+
+    tests['cssreflections'] = function() {
+        return testPropsAll('boxReflect');
+    };
+
+
+    tests['csstransforms'] = function() {
+        return !!testPropsAll('transform');
+    };
+
+
+    tests['csstransforms3d'] = function() {
+
+        var ret = !!testPropsAll('perspective');
+
+        // Webkit's 3D transforms are passed off to the browser's own graphics renderer.
+        //   It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
+        //   some conditions. As a result, Webkit typically recognizes the syntax but
+        //   will sometimes throw a false positive, thus we must do a more thorough check:
+        if ( ret && 'webkitPerspective' in docElement.style ) {
+
+          // Webkit allows this media query to succeed only if the feature is enabled.
+          // `@media (transform-3d),(-webkit-transform-3d){ ... }`
+          injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
+            ret = node.offsetLeft === 9 && node.offsetHeight === 3;
+          });
+        }
+        return ret;
+    };
+
+
+    tests['csstransitions'] = function() {
+        return testPropsAll('transition');
+    };
+
+
+    /*>>fontface*/
+    // @font-face detection routine by Diego Perini
+    // javascript.nwbox.com/CSSSupport/
+
+    // false positives:
+    //   WebOS github.com/Modernizr/Modernizr/issues/342
+    //   WP7   github.com/Modernizr/Modernizr/issues/538
+    tests['fontface'] = function() {
+        var bool;
+
+        injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
+          var style = document.getElementById('smodernizr'),
+              sheet = style.sheet || style.styleSheet,
+              cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
+
+          bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
+        });
+
+        return bool;
+    };
+    /*>>fontface*/
+
+    // CSS generated content detection
+    tests['generatedcontent'] = function() {
+        var bool;
+
+        injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
+          bool = node.offsetHeight >= 3;
+        });
+
+        return bool;
+    };
+
+
+
+    // These tests evaluate support of the video/audio elements, as well as
+    // testing what types of content they support.
+    //
+    // We're using the Boolean constructor here, so that we can extend the value
+    // e.g.  Modernizr.video     // true
+    //       Modernizr.video.ogg // 'probably'
+    //
+    // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
+    //                     thx to NielsLeenheer and zcorpan
+
+    // Note: in some older browsers, "no" was a return value instead of empty string.
+    //   It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
+    //   It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
+
+    tests['video'] = function() {
+        var elem = document.createElement('video'),
+            bool = false;
+
+        // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
+        try {
+            if ( bool = !!elem.canPlayType ) {
+                bool      = new Boolean(bool);
+                bool.ogg  = elem.canPlayType('video/ogg; codecs="theora"')      .replace(/^no$/,'');
+
+                // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
+                bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
+
+                bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
+            }
+
+        } catch(e) { }
+
+        return bool;
+    };
+
+    tests['audio'] = function() {
+        var elem = document.createElement('audio'),
+            bool = false;
+
+        try {
+            if ( bool = !!elem.canPlayType ) {
+                bool      = new Boolean(bool);
+                bool.ogg  = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
+                bool.mp3  = elem.canPlayType('audio/mpeg;')               .replace(/^no$/,'');
+
+                // Mimetypes accepted:
+                //   developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
+                //   bit.ly/iphoneoscodecs
+                bool.wav  = elem.canPlayType('audio/wav; codecs="1"')     .replace(/^no$/,'');
+                bool.m4a  = ( elem.canPlayType('audio/x-m4a;')            ||
+                              elem.canPlayType('audio/aac;'))             .replace(/^no$/,'');
+            }
+        } catch(e) { }
+
+        return bool;
+    };
+
+
+    // In FF4, if disabled, window.localStorage should === null.
+
+    // Normally, we could not test that directly and need to do a
+    //   `('localStorage' in window) && ` test first because otherwise Firefox will
+    //   throw bugzil.la/365772 if cookies are disabled
+
+    // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
+    // will throw the exception:
+    //   QUOTA_EXCEEDED_ERRROR DOM Exception 22.
+    // Peculiarly, getItem and removeItem calls do not throw.
+
+    // Because we are forced to try/catch this, we'll go aggressive.
+
+    // Just FWIW: IE8 Compat mode supports these features completely:
+    //   www.quirksmode.org/dom/html5.html
+    // But IE8 doesn't support either with local files
+
+    tests['localstorage'] = function() {
+        try {
+            localStorage.setItem(mod, mod);
+            localStorage.removeItem(mod);
+            return true;
+        } catch(e) {
+            return false;
+        }
+    };
+
+    tests['sessionstorage'] = function() {
+        try {
+            sessionStorage.setItem(mod, mod);
+            sessionStorage.removeItem(mod);
+            return true;
+        } catch(e) {
+            return false;
+        }
+    };
+
+
+    tests['webworkers'] = function() {
+        return !!window.Worker;
+    };
+
+
+    tests['applicationcache'] = function() {
+        return !!window.applicationCache;
+    };
+
+
+    // Thanks to Erik Dahlstrom
+    tests['svg'] = function() {
+        return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
+    };
+
+    // specifically for SVG inline in HTML, not within XHTML
+    // test page: paulirish.com/demo/inline-svg
+    tests['inlinesvg'] = function() {
+      var div = document.createElement('div');
+      div.innerHTML = '<svg/>';
+      return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
+    };
+
+    // SVG SMIL animation
+    tests['smil'] = function() {
+        return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
+    };
+
+    // This test is only for clip paths in SVG proper, not clip paths on HTML content
+    // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg
+
+    // However read the comments to dig into applying SVG clippaths to HTML content here:
+    //   github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
+    tests['svgclippaths'] = function() {
+        return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
+    };
+
+    /*>>webforms*/
+    // input features and input types go directly onto the ret object, bypassing the tests loop.
+    // Hold this guy to execute in a moment.
+    function webforms() {
+        /*>>input*/
+        // Run through HTML5's new input attributes to see if the UA understands any.
+        // We're using f which is the <input> element created early on
+        // Mike Taylr has created a comprehensive resource for testing these attributes
+        //   when applied to all input types:
+        //   miketaylr.com/code/input-type-attr.html
+        // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
+
+        // Only input placeholder is tested while textarea's placeholder is not.
+        // Currently Safari 4 and Opera 11 have support only for the input placeholder
+        // Both tests are available in feature-detects/forms-placeholder.js
+        Modernizr['input'] = (function( props ) {
+            for ( var i = 0, len = props.length; i < len; i++ ) {
+                attrs[ props[i] ] = !!(props[i] in inputElem);
+            }
+            if (attrs.list){
+              // safari false positive's on datalist: webk.it/74252
+              // see also github.com/Modernizr/Modernizr/issues/146
+              attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
+            }
+            return attrs;
+        })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
+        /*>>input*/
+
+        /*>>inputtypes*/
+        // Run through HTML5's new input types to see if the UA understands any.
+        //   This is put behind the tests runloop because it doesn't return a
+        //   true/false like all the other tests; instead, it returns an object
+        //   containing each input type with its corresponding true/false value
+
+        // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
+        Modernizr['inputtypes'] = (function(props) {
+
+            for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
+
+                inputElem.setAttribute('type', inputElemType = props[i]);
+                bool = inputElem.type !== 'text';
+
+                // We first check to see if the type we give it sticks..
+                // If the type does, we feed it a textual value, which shouldn't be valid.
+                // If the value doesn't stick, we know there's input sanitization which infers a custom UI
+                if ( bool ) {
+
+                    inputElem.value         = smile;
+                    inputElem.style.cssText = 'position:absolute;visibility:hidden;';
+
+                    if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
+
+                      docElement.appendChild(inputElem);
+                      defaultView = document.defaultView;
+
+                      // Safari 2-4 allows the smiley as a value, despite making a slider
+                      bool =  defaultView.getComputedStyle &&
+                              defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
+                              // Mobile android web browser has false positive, so must
+                              // check the height to see if the widget is actually there.
+                              (inputElem.offsetHeight !== 0);
+
+                      docElement.removeChild(inputElem);
+
+                    } else if ( /^(search|tel)$/.test(inputElemType) ){
+                      // Spec doesn't define any special parsing or detectable UI
+                      //   behaviors so we pass these through as true
+
+                      // Interestingly, opera fails the earlier test, so it doesn't
+                      //  even make it here.
+
+                    } else if ( /^(url|email)$/.test(inputElemType) ) {
+                      // Real url and email support comes with prebaked validation.
+                      bool = inputElem.checkValidity && inputElem.checkValidity() === false;
+
+                    } else {
+                      // If the upgraded input compontent rejects the :) text, we got a winner
+                      bool = inputElem.value != smile;
+                    }
+                }
+
+                inputs[ props[i] ] = !!bool;
+            }
+            return inputs;
+        })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
+        /*>>inputtypes*/
+    }
+    /*>>webforms*/
+
+
+    // End of test definitions
+    // -----------------------
+
+
+
+    // Run through all tests and detect their support in the current UA.
+    // todo: hypothetically we could be doing an array of tests and use a basic loop here.
+    for ( var feature in tests ) {
+        if ( hasOwnProp(tests, feature) ) {
+            // run the test, throw the return value into the Modernizr,
+            //   then based on that boolean, define an appropriate className
+            //   and push it into an array of classes we'll join later.
+            featureName  = feature.toLowerCase();
+            Modernizr[featureName] = tests[feature]();
+
+            classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
+        }
+    }
+
+    /*>>webforms*/
+    // input tests need to run.
+    Modernizr.input || webforms();
+    /*>>webforms*/
+
+
+    /**
+     * addTest allows the user to define their own feature tests
+     * the result will be added onto the Modernizr object,
+     * as well as an appropriate className set on the html element
+     *
+     * @param feature - String naming the feature
+     * @param test - Function returning true if feature is supported, false if not
+     */
+     Modernizr.addTest = function ( feature, test ) {
+       if ( typeof feature == 'object' ) {
+         for ( var key in feature ) {
+           if ( hasOwnProp( feature, key ) ) {
+             Modernizr.addTest( key, feature[ key ] );
+           }
+         }
+       } else {
+
+         feature = feature.toLowerCase();
+
+         if ( Modernizr[feature] !== undefined ) {
+           // we're going to quit if you're trying to overwrite an existing test
+           // if we were to allow it, we'd do this:
+           //   var re = new RegExp("\\b(no-)?" + feature + "\\b");
+           //   docElement.className = docElement.className.replace( re, '' );
+           // but, no rly, stuff 'em.
+           return Modernizr;
+         }
+
+         test = typeof test == 'function' ? test() : test;
+
+         if (typeof enableClasses !== "undefined" && enableClasses) {
+           docElement.className += ' ' + (test ? '' : 'no-') + feature;
+         }
+         Modernizr[feature] = test;
+
+       }
+
+       return Modernizr; // allow chaining.
+     };
+
+
+    // Reset modElem.cssText to nothing to reduce memory footprint.
+    setCss('');
+    modElem = inputElem = null;
+
+    /*>>shiv*/
+    /**
+     * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+     */
+    ;(function(window, document) {
+        /*jshint evil:true */
+        /** version */
+        var version = '3.7.0';
+
+        /** Preset options */
+        var options = window.html5 || {};
+
+        /** Used to skip problem elements */
+        var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+        /** Not all elements can be cloned in IE **/
+        var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
+
+        /** Detect whether the browser supports default html5 styles */
+        var supportsHtml5Styles;
+
+        /** Name of the expando, to work with multiple documents or to re-shiv one document */
+        var expando = '_html5shiv';
+
+        /** The id for the the documents expando */
+        var expanID = 0;
+
+        /** Cached data for each document */
+        var expandoData = {};
+
+        /** Detect whether the browser supports unknown elements */
+        var supportsUnknownElements;
+
+        (function() {
+          try {
+            var a = document.createElement('a');
+            a.innerHTML = '<xyz></xyz>';
+            //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
+            supportsHtml5Styles = ('hidden' in a);
+
+            supportsUnknownElements = a.childNodes.length == 1 || (function() {
+              // assign a false positive if unable to shiv
+              (document.createElement)('a');
+              var frag = document.createDocumentFragment();
+              return (
+                typeof frag.cloneNode == 'undefined' ||
+                typeof frag.createDocumentFragment == 'undefined' ||
+                typeof frag.createElement == 'undefined'
+              );
+            }());
+          } catch(e) {
+            // assign a false positive if detection fails => unable to shiv
+            supportsHtml5Styles = true;
+            supportsUnknownElements = true;
+          }
+
+        }());
+
+        /*--------------------------------------------------------------------------*/
+
+        /**
+         * Creates a style sheet with the given CSS text and adds it to the document.
+         * @private
+         * @param {Document} ownerDocument The document.
+         * @param {String} cssText The CSS text.
+         * @returns {StyleSheet} The style element.
+         */
+        function addStyleSheet(ownerDocument, cssText) {
+          var p = ownerDocument.createElement('p'),
+          parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
+
+          p.innerHTML = 'x<style>' + cssText + '</style>';
+          return parent.insertBefore(p.lastChild, parent.firstChild);
+        }
+
+        /**
+         * Returns the value of `html5.elements` as an array.
+         * @private
+         * @returns {Array} An array of shived element node names.
+         */
+        function getElements() {
+          var elements = html5.elements;
+          return typeof elements == 'string' ? elements.split(' ') : elements;
+        }
+
+        /**
+         * Returns the data associated to the given document
+         * @private
+         * @param {Document} ownerDocument The document.
+         * @returns {Object} An object of data.
+         */
+        function getExpandoData(ownerDocument) {
+          var data = expandoData[ownerDocument[expando]];
+          if (!data) {
+            data = {};
+            expanID++;
+            ownerDocument[expando] = expanID;
+            expandoData[expanID] = data;
+          }
+          return data;
+        }
+
+        /**
+         * returns a shived element for the given nodeName and document
+         * @memberOf html5
+         * @param {String} nodeName name of the element
+         * @param {Document} ownerDocument The context document.
+         * @returns {Object} The shived element.
+         */
+        function createElement(nodeName, ownerDocument, data){
+          if (!ownerDocument) {
+            ownerDocument = document;
+          }
+          if(supportsUnknownElements){
+            return ownerDocument.createElement(nodeName);
+          }
+          if (!data) {
+            data = getExpandoData(ownerDocument);
+          }
+          var node;
+
+          if (data.cache[nodeName]) {
+            node = data.cache[nodeName].cloneNode();
+          } else if (saveClones.test(nodeName)) {
+            node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
+          } else {
+            node = data.createElem(nodeName);
+          }
+
+          // Avoid adding some elements to fragments in IE < 9 because
+          // * Attributes like `name` or `type` cannot be set/changed once an element
+          //   is inserted into a document/fragment
+          // * Link elements with `src` attributes that are inaccessible, as with
+          //   a 403 response, will cause the tab/window to crash
+          // * Script elements appended to fragments will execute when their `src`
+          //   or `text` property is set
+          return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
+        }
+
+        /**
+         * returns a shived DocumentFragment for the given document
+         * @memberOf html5
+         * @param {Document} ownerDocument The context document.
+         * @returns {Object} The shived DocumentFragment.
+         */
+        function createDocumentFragment(ownerDocument, data){
+          if (!ownerDocument) {
+            ownerDocument = document;
+          }
+          if(supportsUnknownElements){
+            return ownerDocument.createDocumentFragment();
+          }
+          data = data || getExpandoData(ownerDocument);
+          var clone = data.frag.cloneNode(),
+          i = 0,
+          elems = getElements(),
+          l = elems.length;
+          for(;i<l;i++){
+            clone.createElement(elems[i]);
+          }
+          return clone;
+        }
+
+        /**
+         * Shivs the `createElement` and `createDocumentFragment` methods of the document.
+         * @private
+         * @param {Document|DocumentFragment} ownerDocument The document.
+         * @param {Object} data of the document.
+         */
+        function shivMethods(ownerDocument, data) {
+          if (!data.cache) {
+            data.cache = {};
+            data.createElem = ownerDocument.createElement;
+            data.createFrag = ownerDocument.createDocumentFragment;
+            data.frag = data.createFrag();
+          }
+
+
+          ownerDocument.createElement = function(nodeName) {
+            //abort shiv
+            if (!html5.shivMethods) {
+              return data.createElem(nodeName);
+            }
+            return createElement(nodeName, ownerDocument, data);
+          };
+
+          ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
+                                                          'var n=f.cloneNode(),c=n.createElement;' +
+                                                          'h.shivMethods&&(' +
+                                                          // unroll the `createElement` calls
+                                                          getElements().join().replace(/[\w\-]+/g, function(nodeName) {
+            data.createElem(nodeName);
+            data.frag.createElement(nodeName);
+            return 'c("' + nodeName + '")';
+          }) +
+            ');return n}'
+                                                         )(html5, data.frag);
+        }
+
+        /*--------------------------------------------------------------------------*/
+
+        /**
+         * Shivs the given document.
+         * @memberOf html5
+         * @param {Document} ownerDocument The document to shiv.
+         * @returns {Document} The shived document.
+         */
+        function shivDocument(ownerDocument) {
+          if (!ownerDocument) {
+            ownerDocument = document;
+          }
+          var data = getExpandoData(ownerDocument);
+
+          if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
+            data.hasCSS = !!addStyleSheet(ownerDocument,
+                                          // corrects block display not defined in IE6/7/8/9
+                                          'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
+                                            // adds styling not present in IE6/7/8/9
+                                            'mark{background:#FF0;color:#000}' +
+                                            // hides non-rendered elements
+                                            'template{display:none}'
+                                         );
+          }
+          if (!supportsUnknownElements) {
+            shivMethods(ownerDocument, data);
+          }
+          return ownerDocument;
+        }
+
+        /*--------------------------------------------------------------------------*/
+
+        /**
+         * The `html5` object is exposed so that more elements can be shived and
+         * existing shiving can be detected on iframes.
+         * @type Object
+         * @example
+         *
+         * // options can be changed before the script is included
+         * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
+         */
+        var html5 = {
+
+          /**
+           * An array or space separated string of node names of the elements to shiv.
+           * @memberOf html5
+           * @type Array|String
+           */
+          'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
+
+          /**
+           * current version of html5shiv
+           */
+          'version': version,
+
+          /**
+           * A flag to indicate that the HTML5 style sheet should be inserted.
+           * @memberOf html5
+           * @type Boolean
+           */
+          'shivCSS': (options.shivCSS !== false),
+
+          /**
+           * Is equal to true if a browser supports creating unknown/HTML5 elements
+           * @memberOf html5
+           * @type boolean
+           */
+          'supportsUnknownElements': supportsUnknownElements,
+
+          /**
+           * A flag to indicate that the document's `createElement` and `createDocumentFragment`
+           * methods should be overwritten.
+           * @memberOf html5
+           * @type Boolean
+           */
+          'shivMethods': (options.shivMethods !== false),
+
+          /**
+           * A string to describe the type of `html5` object ("default" or "default print").
+           * @memberOf html5
+           * @type String
+           */
+          'type': 'default',
+
+          // shivs the document according to the specified `html5` object options
+          'shivDocument': shivDocument,
+
+          //creates a shived element
+          createElement: createElement,
+
+          //creates a shived documentFragment
+          createDocumentFragment: createDocumentFragment
+        };
+
+        /*--------------------------------------------------------------------------*/
+
+        // expose html5
+        window.html5 = html5;
+
+        // shiv the document
+        shivDocument(document);
+
+    }(this, document));
+    /*>>shiv*/
+
+    // Assign private properties to the return object with prefix
+    Modernizr._version      = version;
+
+    // expose these for the plugin API. Look in the source for how to join() them against your input
+    /*>>prefixes*/
+    Modernizr._prefixes     = prefixes;
+    /*>>prefixes*/
+    /*>>domprefixes*/
+    Modernizr._domPrefixes  = domPrefixes;
+    Modernizr._cssomPrefixes  = cssomPrefixes;
+    /*>>domprefixes*/
+
+    /*>>mq*/
+    // Modernizr.mq tests a given media query, live against the current state of the window
+    // A few important notes:
+    //   * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
+    //   * A max-width or orientation query will be evaluated against the current state, which may change later.
+    //   * You must specify values. Eg. If you are testing support for the min-width media query use:
+    //       Modernizr.mq('(min-width:0)')
+    // usage:
+    // Modernizr.mq('only screen and (max-width:768)')
+    Modernizr.mq            = testMediaQuery;
+    /*>>mq*/
+
+    /*>>hasevent*/
+    // Modernizr.hasEvent() detects support for a given event, with an optional element to test on
+    // Modernizr.hasEvent('gesturestart', elem)
+    Modernizr.hasEvent      = isEventSupported;
+    /*>>hasevent*/
+
+    /*>>testprop*/
+    // Modernizr.testProp() investigates whether a given style property is recognized
+    // Note that the property names must be provided in the camelCase variant.
+    // Modernizr.testProp('pointerEvents')
+    Modernizr.testProp      = function(prop){
+        return testProps([prop]);
+    };
+    /*>>testprop*/
+
+    /*>>testallprops*/
+    // Modernizr.testAllProps() investigates whether a given style property,
+    //   or any of its vendor-prefixed variants, is recognized
+    // Note that the property names must be provided in the camelCase variant.
+    // Modernizr.testAllProps('boxSizing')
+    Modernizr.testAllProps  = testPropsAll;
+    /*>>testallprops*/
+
+
+    /*>>teststyles*/
+    // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
+    // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
+    Modernizr.testStyles    = injectElementWithStyles;
+    /*>>teststyles*/
+
+
+    /*>>prefixed*/
+    // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
+    // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'
+
+    // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
+    // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
+    //
+    //     str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
+
+    // If you're trying to ascertain which transition end event to bind to, you might do something like...
+    //
+    //     var transEndEventNames = {
+    //       'WebkitTransition' : 'webkitTransitionEnd',
+    //       'MozTransition'    : 'transitionend',
+    //       'OTransition'      : 'oTransitionEnd',
+    //       'msTransition'     : 'MSTransitionEnd',
+    //       'transition'       : 'transitionend'
+    //     },
+    //     transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];
+
+    Modernizr.prefixed      = function(prop, obj, elem){
+      if(!obj) {
+        return testPropsAll(prop, 'pfx');
+      } else {
+        // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
+        return testPropsAll(prop, obj, elem);
+      }
+    };
+    /*>>prefixed*/
+
+
+    /*>>cssclasses*/
+    // Remove "no-js" class from <html> element, if it exists:
+    docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
+
+                            // Add the new classes to the <html> element.
+                            (enableClasses ? ' js ' + classes.join(' ') : '');
+    /*>>cssclasses*/
+
+    return Modernizr;
+
+})(this, this.document);
diff --git a/js/modernizr/modernizr.min.js b/js/modernizr/modernizr.min.js
new file mode 100644 (file)
index 0000000..4c9233a
--- /dev/null
@@ -0,0 +1 @@
+window.Modernizr=function(a,b,c){function d(a){t.cssText=a}function e(a,b){return d(x.join(a+";")+(b||""))}function f(a,b){return typeof a===b}function g(a,b){return!!~(""+a).indexOf(b)}function h(a,b){for(var d in a){var e=a[d];if(!g(e,"-")&&t[e]!==c)return"pfx"!=b||e}return!1}function i(a,b,d){for(var e in a){var g=b[a[e]];if(g!==c)return d===!1?a[e]:f(g,"function")?g.bind(d||b):g}return!1}function j(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+z.join(d+" ")+d).split(" ");return f(b,"string")||f(b,"undefined")?h(e,b):(e=(a+" "+A.join(d+" ")+d).split(" "),i(e,b,c))}function k(){o.input=function(c){for(var d=0,e=c.length;d<e;d++)E[c[d]]=!!(c[d]in u);return E.list&&(E.list=!(!b.createElement("datalist")||!a.HTMLDataListElement)),E}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),o.inputtypes=function(a){for(var d,e,f,g=0,h=a.length;g<h;g++)u.setAttribute("type",e=a[g]),d="text"!==u.type,d&&(u.value=v,u.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&u.style.WebkitAppearance!==c?(q.appendChild(u),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(u,null).WebkitAppearance&&0!==u.offsetHeight,q.removeChild(u)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?u.checkValidity&&u.checkValidity()===!1:u.value!=v)),D[a[g]]=!!d;return D}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var l,m,n="2.8.3",o={},p=!0,q=b.documentElement,r="modernizr",s=b.createElement(r),t=s.style,u=b.createElement("input"),v=":)",w={}.toString,x=" -webkit- -moz- -o- -ms- ".split(" "),y="Webkit Moz O ms",z=y.split(" "),A=y.toLowerCase().split(" "),B={svg:"http://www.w3.org/2000/svg"},C={},D={},E={},F=[],G=F.slice,H=function(a,c,d,e){var f,g,h,i,j=b.createElement("div"),k=b.body,l=k||b.createElement("body");if(parseInt(d,10))for(;d--;)h=b.createElement("div"),h.id=e?e[d]:r+(d+1),j.appendChild(h);return f=["&#173;",'<style id="s',r,'">',a,"</style>"].join(""),j.id=r,(k?j:l).innerHTML+=f,l.appendChild(j),k||(l.style.background="",l.style.overflow="hidden",i=q.style.overflow,q.style.overflow="hidden",q.appendChild(l)),g=c(j,a),k?j.parentNode.removeChild(j):(l.parentNode.removeChild(l),q.style.overflow=i),!!g},I=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return H("@media "+b+" { #"+r+" { position: absolute; } }",function(b){d="absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position}),d},J=function(){function a(a,e){e=e||b.createElement(d[a]||"div"),a="on"+a;var g=a in e;return g||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(a,""),g=f(e[a],"function"),f(e[a],"undefined")||(e[a]=c),e.removeAttribute(a))),e=null,g}var d={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return a}(),K={}.hasOwnProperty;m=f(K,"undefined")||f(K.call,"undefined")?function(a,b){return b in a&&f(a.constructor.prototype[b],"undefined")}:function(a,b){return K.call(a,b)},Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=G.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(G.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(G.call(arguments)))};return d}),C.flexbox=function(){return j("flexWrap")},C.flexboxlegacy=function(){return j("boxDirection")},C.canvas=function(){var a=b.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))},C.canvastext=function(){return!(!o.canvas||!f(b.createElement("canvas").getContext("2d").fillText,"function"))},C.webgl=function(){return!!a.WebGLRenderingContext},C.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:H(["@media (",x.join("touch-enabled),("),r,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=9===a.offsetTop}),c},C.geolocation=function(){return"geolocation"in navigator},C.postmessage=function(){return!!a.postMessage},C.websqldatabase=function(){return!!a.openDatabase},C.indexedDB=function(){return!!j("indexedDB",a)},C.hashchange=function(){return J("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},C.history=function(){return!(!a.history||!history.pushState)},C.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},C.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},C.rgba=function(){return d("background-color:rgba(150,255,150,.5)"),g(t.backgroundColor,"rgba")},C.hsla=function(){return d("background-color:hsla(120,40%,100%,.5)"),g(t.backgroundColor,"rgba")||g(t.backgroundColor,"hsla")},C.multiplebgs=function(){return d("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(t.background)},C.backgroundsize=function(){return j("backgroundSize")},C.borderimage=function(){return j("borderImage")},C.borderradius=function(){return j("borderRadius")},C.boxshadow=function(){return j("boxShadow")},C.textshadow=function(){return""===b.createElement("div").style.textShadow},C.opacity=function(){return e("opacity:.55"),/^0.55$/.test(t.opacity)},C.cssanimations=function(){return j("animationName")},C.csscolumns=function(){return j("columnCount")},C.cssgradients=function(){var a="background-image:";return d((a+"-webkit- ".split(" ").join("gradient(linear,left top,right bottom,from(#9f9),to(white));"+a)+x.join("linear-gradient(left top,#9f9, white);"+a)).slice(0,-a.length)),g(t.backgroundImage,"gradient")},C.cssreflections=function(){return j("boxReflect")},C.csstransforms=function(){return!!j("transform")},C.csstransforms3d=function(){var a=!!j("perspective");return a&&"webkitPerspective"in q.style&&H("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=9===b.offsetLeft&&3===b.offsetHeight}),a},C.csstransitions=function(){return j("transition")},C.fontface=function(){var a;return H('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&0===g.indexOf(d.split(" ")[0])}),a},C.generatedcontent=function(){var a;return H(["#",r,"{font:0/0 a}#",r,':after{content:"',v,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},C.video=function(){var a=b.createElement("video"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(a){}return c},C.audio=function(){var a=b.createElement("audio"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(a){}return c},C.localstorage=function(){try{return localStorage.setItem(r,r),localStorage.removeItem(r),!0}catch(a){return!1}},C.sessionstorage=function(){try{return sessionStorage.setItem(r,r),sessionStorage.removeItem(r),!0}catch(a){return!1}},C.webworkers=function(){return!!a.Worker},C.applicationcache=function(){return!!a.applicationCache},C.svg=function(){return!!b.createElementNS&&!!b.createElementNS(B.svg,"svg").createSVGRect},C.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==B.svg},C.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(w.call(b.createElementNS(B.svg,"animate")))},C.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(w.call(b.createElementNS(B.svg,"clipPath")))};for(var L in C)m(C,L)&&(l=L.toLowerCase(),o[l]=C[L](),F.push((o[l]?"":"no-")+l));return o.input||k(),o.addTest=function(a,b){if("object"==typeof a)for(var d in a)m(a,d)&&o.addTest(d,a[d]);else{if(a=a.toLowerCase(),o[a]!==c)return o;b="function"==typeof b?b():b,void 0!==p&&p&&(q.className+=" "+(b?"":"no-")+a),o[a]=b}return o},d(""),s=u=null,function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=s.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=r[a[p]];return b||(b={},q++,a[p]=q,r[q]=b),b}function f(a,c,d){if(c||(c=b),k)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():o.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!f.canHaveChildren||n.test(a)||f.tagUrn?f:d.frag.appendChild(f)}function g(a,c){if(a||(a=b),k)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;g<i;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function i(a){a||(a=b);var d=e(a);return!s.shivCSS||j||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||h(a,d),a}var j,k,l="3.7.0",m=a.html5||{},n=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,o=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,p="_html5shiv",q=0,r={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",j="hidden"in a,k=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return void 0===a.cloneNode||void 0===a.createDocumentFragment||void 0===a.createElement}()}catch(a){j=!0,k=!0}}();var s={elements:m.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:l,shivCSS:m.shivCSS!==!1,supportsUnknownElements:k,shivMethods:m.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g};a.html5=s,i(b)}(this,b),o._version=n,o._prefixes=x,o._domPrefixes=A,o._cssomPrefixes=z,o.mq=I,o.hasEvent=J,o.testProp=function(a){return h([a])},o.testAllProps=j,o.testStyles=H,o.prefixed=function(a,b,c){return b?j(a,b,c):j(a,"pfx")},q.className=q.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(p?" js "+F.join(" "):""),o}(this,this.document);
\ No newline at end of file
diff --git a/js/modernizr/test/caniuse_files/ga.js b/js/modernizr/test/caniuse_files/ga.js
new file mode 100644 (file)
index 0000000..76a01b0
--- /dev/null
@@ -0,0 +1,43 @@
+(function(){var k=void 0,aa=encodeURIComponent,l=String,o=Math,ba="push",ca="cookie",p="charAt",q="indexOf",da="getTime",r="toString",t="window",v="length",w="document",x="split",y="location",ea="protocol",fa="href",z="substring",A="join",C="toLowerCase";var ga="_gat",ha="_gaq",ia="4.9.4",ja="_gaUserPrefs",ka="ioo",D="&",E="=",F="__utma=",H="__utmb=",la="__utmc=",ma="__utmk=",I="__utmv=",J="__utmz=",na="__utmx=",oa="GASO=";var pa=function(){var d=this,f=[],b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";d.set=function(b){f[b]=!0};d.Sc=function(){for(var d=[],e=0;e<f[v];e++)f[e]&&(d[o.floor(e/6)]^=1<<e%6);for(e=0;e<d[v];e++)d[e]=b[p](d[e]||0);return d[A]("")+"~"}},qa=new pa;function K(d){qa.set(d)};var ra=function(d,f){var b=this;b.window=d;b.document=f;b.setTimeout=function(b,e){setTimeout(b,e)};b.Jb=function(b){return navigator.userAgent[q](b)>=0};b.Xc=function(){return b.Jb("Firefox")&&![].reduce};b.Vc=function(){return L[t][ja]};b.Gc=function(){return L[t].external};b.Hc=function(){return L[t].performance||L[t].webkitPerformance};b.Ic=function(){return L[t].top==L[t]};b.Ya=function(b){var e=L[t]&&L[t].gaGlobal;if(b&&!e)e={},L[t].gaGlobal=e;return e};b.ec=function(b){L[w][y].href=b};b.qb=
+function(d){if(!d||!b.Jb("Firefox"))return d;for(var d=d.replace(/\n|\r/g," "),e=0,f=d[v];e<f;++e){var g=d.charCodeAt(e)&255;if(g==10||g==13)d=d[z](0,e)+"?"+d[z](e+1)}return d}},L=new ra(window,document);var sa=function(d){return function(f,b,h){d[f]=function(){K(b);return h.apply(d,arguments)};return h}},ta=function(d,f,b,h){d.addEventListener?d.addEventListener(f,b,!!h):d.attachEvent&&d.attachEvent("on"+f,b)},ua=function(d){return Object.prototype[r].call(Object(d))=="[object Array]"},M=function(d){return k==d||"-"==d||""==d},N=function(d,f,b){var h="-",e;!M(d)&&!M(f)&&!M(b)&&(e=d[q](f),e>-1&&(b=d[q](b,e),b<0&&(b=d[v]),h=d[z](e+f[q](E)+1,b)));return h},xa=function(d){var f=!1,b=0,h,e;if(!M(d)){f=
+!0;for(h=0;h<d[v];h++)e=d[p](h),b+="."==e?1:0,f=f&&b<=1&&(0==h&&"-"==e||".0123456789"[q](e)>-1)}return f},P=function(d,f){var b=aa;return b instanceof Function?f?encodeURI(d):b(d):(K(68),escape(d))},Q=function(d,f){var b=decodeURIComponent,h,d=d[x]("+")[A](" ");if(b instanceof Function)try{h=f?decodeURI(d):b(d)}catch(e){K(17),h=unescape(d)}else K(68),h=unescape(d);return h},R=function(d,f){return d[q](f)>-1};
+function ya(d){if(!d||""==d)return"";for(;d[p](0)[v]>0&&" \n\r\t"[q](d[p](0))>-1;)d=d[z](1);for(;d[p](d[v]-1)[v]>0&&" \n\r\t"[q](d[p](d[v]-1))>-1;)d=d[z](0,d[v]-1);return d}var T=function(d,f){d[ba]||K(94);d[d[v]]=f},za=function(d){var f=1,b=0,h;if(!M(d)){f=0;for(h=d[v]-1;h>=0;h--)b=d.charCodeAt(h),f=(f<<6&268435455)+b+(b<<14),b=f&266338304,f=b!=0?f^b>>21:f}return f},Aa=function(){return o.round(o.random()*2147483647)},Ba=function(){};var Ca=function(d,f){this.ib=d;this.jb=f},Da=function(){function d(b){for(var d=[],b=b[x](","),e,f=0;f<b[v];f++)e=b[f][x](":"),d[ba](new Ca(e[0],e[1]));return d}var f=this;f.Ca="utm_campaign";f.Da="utm_content";f.Ea="utm_id";f.Fa="utm_medium";f.Ga="utm_nooverride";f.Ha="utm_source";f.Ia="utm_term";f.Ja="gclid";f.vc="dclid";f.U=0;f.w=0;f.La=15768E6;f.Ma=18E5;f.s=63072E6;f.V=[];f.W=[];f.wc="cse";f.xc="q";f.Ta=50;f.J=d("daum:q,eniro:search_word,naver:query,pchome:q,images.google:q,google:q,yahoo:p,yahoo:q,msn:q,bing:q,aol:query,aol:encquery,aol:q,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:q,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:query,rambler:words");
+f.f="/";f.L=100;f.ga="/__utm.gif";f.la=1;f.ma=1;f.u="|";f.ka=1;f.Ka=1;f.Ua=1;f.b="auto";f.B=1;f.Wb=10;f.zc=10;f.Ac=0.2;f.o=k};var Ea=function(d){function f(a,c,b,j){var i="",d=0,i=N(a,"2"+c,";");if(!M(i)){a=i[q]("^"+b+".");if(a<0)return["",0];i=i[z](a+b[v]+2);i[q]("^")>0&&(i=i[x]("^")[0]);b=i[x](":");i=b[1];d=parseInt(b[0],10);!j&&d<e.m&&(i="")}M(i)&&(i="");return[i,d]}function b(a,c){return"^"+[[c,a[1]][A]("."),a[0]][A](":")}function h(a){var c=new Date,a=new Date(c[da]()+a);return"expires="+a.toGMTString()+"; "}var e=this,m=d;e.m=(new Date)[da]();var g=[F,H,la,J,I,na,oa];e.g=function(){var a=L[w][ca];return m.o?e.Nc(a,
+m.o):a};e.Nc=function(a,c){for(var b=[],j,i=0;i<g[v];i++)j=f(a,g[i],c)[0],M(j)||(b[b[v]]=g[i]+j+";");return b[A]("")};e.l=function(a,c,b){var j=b>0?h(b):"";m.o&&(c=e.Oc(L[w][ca],a,m.o,c,b),a="2"+a,j=b>0?h(m.s):"");a+=c;a=L.qb(a);a[v]>2E3&&(K(69),a=a[z](0,2E3));j=a+"; path="+m.f+"; "+j+e.hb();if(!V.pb())L[w].cookie=j};e.Oc=function(a,c,d,j,i){var g="",i=i||m.s,j=b([j,e.m+i*1],d),g=N(a,"2"+c,";");if(!M(g))return a=b(f(a,c,d,!0),d),g=g[x](a)[A](""),g=j+g;return j};e.hb=function(){return M(m.b)?"":"domain="+
+m.b+";"}};var Fa=function(d){function f(a){a=ua(a)?a[A]("."):"";return M(a)?"-":a}function b(a,c){var n=[],b;if(!M(a)&&(n=a[x]("."),c))for(b=0;b<n[v];b++)xa(n[b])||(n[b]="-");return n}function h(a,c,n){var b=i.I,j,d;for(j=0;j<b[v];j++)d=b[j][0],d+=M(c)?c:c+b[j][4],b[j][2](N(a,d,n))}var e,m,g,a,c,u,j,i=this,s,n=d;i.i=new Ea(d);i.Ba=function(){return k==s||s==i.K()};i.g=function(){return i.i.g()};i.ea=function(){return c?c:"-"};i.Pa=function(a){c=a};i.fa=function(a){s=xa(a)?a*1:"-"};i.da=function(){return f(u)};
+i.X=function(a){u=b(a)};i.yc=function(){i.i.l(I,"",-1)};i.Rb=function(){return s?s:"-"};i.hb=function(){return M(n.b)?"":"domain="+n.b+";"};i.ba=function(){return f(e)};i.Na=function(a){e=b(a,1)};i.z=function(){return f(m)};i.$=function(a){m=b(a,1)};i.ca=function(){return f(g)};i.Oa=function(a){g=b(a,1)};i.qa=function(){return f(a)};i.ra=function(c){a=b(c);for(c=0;c<a[v];c++)c<4&&!xa(a[c])&&(a[c]="-")};i.Fc=function(){return j};i.Dc=function(a){j=a};i.Qb=function(){e=[];m=[];g=[];a=[];c=k;u=[];s=
+k};i.K=function(){for(var a="",c=0;c<i.I[v];c++)a+=i.I[c][1]();return za(a)};i.Z=function(a){var c=i.g(),n=!1;c&&(h(c,a,";"),i.fa(l(i.K())),n=!0);return n};i.Sb=function(a){h(a,"",D);i.fa(N(a,ma,D))};i.Tb=function(){var a=i.I,c=[],n;for(n=0;n<a[v];n++)T(c,a[n][0]+a[n][1]());T(c,ma+i.K());return c[A](D)};i.Ub=function(a,c){var b=i.I,j=n.f;i.Z(a);n.f=c;for(var d=0;d<b[v];d++)if(!M(b[d][1]()))b[d][3]();n.f=j};i.Qa=function(){i.i.l(F,i.ba(),n.s)};i.aa=function(){i.i.l(H,i.z(),n.Ma)};i.Ra=function(){i.i.l(la,
+i.ca(),0)};i.sa=function(){i.i.l(J,i.qa(),n.La)};i.Sa=function(){i.i.l(na,i.ea(),n.s)};i.Y=function(){i.i.l(I,i.da(),n.s)};i.Ec=function(){i.i.l(oa,i.Fc(),0)};i.I=[[F,i.ba,i.Na,i.Qa,"."],[H,i.z,i.$,i.aa,""],[la,i.ca,i.Oa,i.Ra,""],[na,i.ea,i.Pa,i.Sa,""],[J,i.qa,i.ra,i.sa,"."],[I,i.da,i.X,i.Y,"."]]};var Ga="https:"==L[w][y][ea]?"https://ssl.google-analytics.com/":"http://www.google-analytics.com/",Ha=Ga+"p/__utm.gif",Ja=function(){var d=this;d.Bb=function(f,b,h,e,m){b[v]<=2036||m?d.Aa(f+"?"+b,e):b[v]<=8192?L.Xc()?d.Aa(f+"?"+h+"&err=ff2post&len="+b[v],e):d.fd(b,e):d.Aa(f+"?"+h+"&err=len&max=8192&len="+b[v],e)};d.Aa=function(d,b){var h=new Image(1,1);h.src=d;h.onload=function(){h.onload=null;(b||Ba)()}};d.fd=function(f,b){d.ed(f,b)||d.Ob(f,b)};d.ed=function(d,b){var h,e=L[t].XDomainRequest;if(e)h=
+new e,h.open("POST",Ha);else if(e=L[t].XMLHttpRequest)e=new e,"withCredentials"in e&&(h=e,h.open("POST",Ha,!0),h.setRequestHeader("Content-Type","text/plain"));if(h)return h.onreadystatechange=function(){h.readyState==4&&(b&&b(),h=null)},h.send(d),!0;return!1};d.Ob=function(f,b){var h=L[w];if(h.body){f=aa(f);try{var e=h.createElement('<iframe name="'+f+'"></iframe>')}catch(m){e=h.createElement("iframe"),e.name=f}e.height="0";e.width="0";e.style.display="none";e.style.visibility="hidden";var g=h[y],
+g=g[ea]+"//"+g.host+"/favicon.ico",g=Ga+"u/post_iframe.html#"+aa(g),a=function(){e.src="";e.parentNode&&e.parentNode.removeChild(e)};ta(L[t],"beforeunload",a);var c=!1,u=0,j=function(){if(!c){try{if(u>9||e.contentWindow[y].host==h[y].host){c=!0;a();var d=L[t],g="beforeunload",n=a;d.removeEventListener?d.removeEventListener(g,n,!1):d.detachEvent&&d.detachEvent("on"+g,n);b&&b();return}}catch(f){}u++;L.setTimeout(j,200)}};ta(e,"load",j);h.body.appendChild(e);e.src=g}else L.setTimeout(function(){d.Ob(f,
+b)},100)}};var Ka=function(d){var f=this,b=d,h=new Fa(b),e=null,m=!V.pb(),g=function(){};f.Uc=function(){return"https:"==L[w][y][ea]?"https://ssl.google-analytics.com/__utm.gif":"http://www.google-analytics.com/__utm.gif"};f.A=function(a,c,d,j,i,s){e||(e=new Ja);var n=b.B,O=L[w][y];h.Z(d);var B=h.z()[x](".");if(B[1]<500||j){if(i){var S=(new Date)[da](),X;X=(S-B[3])*(b.Ac/1E3);X>=1&&(B[2]=o.min(o.floor(B[2]*1+X),b.zc),B[3]=S)}if(j||!i||B[2]>=1){!j&&i&&(B[2]=B[2]*1-1);j=B[1]*1+1;B[1]=j;i="utmwv="+ia;S="&utms="+
+j;X="&utmn="+Aa();j=i+"e"+S+X;a=i+S+X+(M(O.hostname)?"":"&utmhn="+P(O.hostname))+(b.L==100?"":"&utmsp="+P(b.L))+a;if(0==n||2==n)O=2==n?g:s||g,m&&e.Bb(b.ga,a,j,O,!0);if(1==n||2==n)c="&utmac="+c,j+=c,a+=c+"&utmcc="+f.Tc(d),V.Ab&&(d="&aip=1",j+=d,a+=d),a+="&utmu="+qa.Sc(),m&&e.Bb(f.Uc(),a,j,s)}}h.$(B[A]("."));h.aa()};f.Tc=function(a){for(var c=[],b=[F,J,I,na],d=h.g(),i,g=0;g<b[v];g++)if(i=N(d,b[g]+a,";"),!M(i)){if(b[g]==I){i=i[x](a+".")[1][x]("|")[0];if(M(i))continue;i=a+"."+i}T(c,b[g]+i+";")}return P(c[A]("+"))}};var W=function(){var d=this;d.N=[];d.Va=function(f){for(var b,h=d.N,e=0;e<h[v];e++)b=f==h[e].q?h[e]:b;return b};d.Xb=function(f,b,h,e,m,g,a,c){var u=d.Va(f);k==u?(u=new W.Wc(f,b,h,e,m,g,a,c),T(d.N,u)):(u.tb=b,u.zb=h,u.yb=e,u.wb=m,u.ub=g,u.xb=a,u.vb=c);return u}};W.Qc=function(d,f,b,h,e,m){var g=this;g.Fb=d;g.va=f;g.n=b;g.Cb=h;g.Db=e;g.Eb=m;g.ha=function(){return"&"+["utmt=item","tid="+P(g.Fb),"ipc="+P(g.va),"ipn="+P(g.n),"iva="+P(g.Cb),"ipr="+P(g.Db),"iqt="+P(g.Eb)][A]("&utm")}};
+W.Wc=function(d,f,b,h,e,m,g,a){var c=this;c.q=d;c.tb=f;c.zb=b;c.yb=h;c.wb=e;c.ub=m;c.xb=g;c.vb=a;c.M=[];c.Vb=function(a,b,d,g,n){var e=c.Rc(a),f=c.q;k==e?T(c.M,new W.Qc(f,a,b,d,g,n)):(e.Fb=f,e.va=a,e.n=b,e.Cb=d,e.Db=g,e.Eb=n)};c.Rc=function(a){for(var b,d=c.M,g=0;g<d[v];g++)b=a==d[g].va?d[g]:b;return b};c.ha=function(){return"&"+["utmt=tran","id="+P(c.q),"st="+P(c.tb),"to="+P(c.zb),"tx="+P(c.yb),"sp="+P(c.wb),"ci="+P(c.ub),"rg="+P(c.xb),"co="+P(c.vb)][A]("&utmt")}};var La=function(d){function f(){var b,a,c;a="ShockwaveFlash";var d="$version",j=L[t].navigator;if((j=j?j.plugins:k)&&j[v]>0)for(b=0;b<j[v]&&!c;b++)a=j[b],R(a.name,"Shockwave Flash")&&(c=a.description[x]("Shockwave Flash ")[1]);else{a=a+"."+a;try{b=new ActiveXObject(a+".7"),c=b.GetVariable(d)}catch(e){}if(!c)try{b=new ActiveXObject(a+".6"),c="WIN 6,0,21,0",b.we="always",c=b.GetVariable(d)}catch(f){}if(!c)try{b=new ActiveXObject(a),c=b.GetVariable(d)}catch(n){}c&&(c=c[x](" ")[1][x](","),c=c[0]+"."+
+c[1]+" r"+c[2])}return c?c:h}var b=this,h="-",e=L[t].screen,m=L[t].navigator;b.Nb=e?e.width+"x"+e.height:h;b.Mb=e?e.colorDepth+"-bit":h;b.cd=P(L[w].characterSet?L[w].characterSet:L[w].charset?L[w].charset:h);b.Lb=(m&&m.language?m.language:m&&m.browserLanguage?m.browserLanguage:h)[C]();b.Kb=m&&m.javaEnabled()?1:0;b.dd=d?f():h;b.dc=function(){return D+"utm"+["cs="+P(b.cd),"sr="+b.Nb,"sc="+b.Mb,"ul="+b.Lb,"je="+b.Kb,"fl="+P(b.dd)][A]("&utm")};b.cc=function(){for(var d=L[t].navigator,a=L[t].history[v],
+d=d.appName+d.version+b.Lb+d.platform+d.userAgent+b.Kb+b.Nb+b.Mb+(L[w][ca]?L[w][ca]:"")+(L[w].referrer?L[w].referrer:""),c=d[v];a>0;)d+=a--^c++;return za(d)}};var Z=function(d,f,b,h){function e(a){var c="",c=a[x]("://")[1][C]();R(c,"/")&&(c=c[x]("/")[0]);return c}var m=h,g=this;g.a=d;g.ob=f;g.m=b;g.mb=function(a){var c=g.ua();return new Z.v(N(a,m.Ea+E,D),N(a,m.Ha+E,D),N(a,m.Ja+E,D),g.R(a,m.Ca,"(not set)"),g.R(a,m.Fa,"(not set)"),g.R(a,m.Ia,c&&!M(c.G)?Q(c.G):k),g.R(a,m.Da,k),N(a,m.vc+E,D))};g.nb=function(a){var c=e(a),b;b=a;var d="";b=b[x]("://")[1][C]();R(b,"/")&&(b=b[x]("/")[1],R(b,"?")&&(d=b[x]("?")[0]));b=d;if(R(c,"google")&&(a=a[x]("?")[A](D),R(a,D+
+m.xc+E)&&b==m.wc))return!0;return!1};g.ua=function(){var a,c=g.ob,b,d=m.J;if(!M(c)&&"0"!=c&&R(c,"://")&&!g.nb(c)){a=e(c);for(var i=0;i<d[v];i++)if(b=d[i],R(a,b.ib[C]())&&(c=c[x]("?")[A](D),R(c,D+b.jb+E)))return a=c[x](D+b.jb+E)[1],R(a,D)&&(a=a[x](D)[0]),new Z.v(k,b.ib,k,"(organic)","organic",a,k,k)}};g.R=function(a,c,b){a=N(a,c+E,D);return b=!M(a)?Q(a):!M(b)?b:"-"};g.Bc=function(a){var c=m.V,b=!1;if(a&&"organic"==a.P)for(var a=Q(a.G)[C](),d=0;d<c[v];d++)b=b||c[d][C]()==a;return b};g.lb=function(){var a=
+"",c="",a=g.ob;if(!M(a)&&"0"!=a&&R(a,"://")&&!g.nb(a))return a=a[x]("://")[1],R(a,"/")&&(c=a[z](a[q]("/")),c=c[x]("?")[0],a=a[x]("/")[0][C]()),0==a[q]("www.")&&(a=a[z](4)),new Z.v(k,a,k,"(referral)","referral",k,c,k)};g.kb=function(a){var c="";m.U&&(c=a&&a.hash?a[fa][z](a[fa][q]("#")):"",c=""!=c?c+D:c);c+=a.search;return c};g.ta=function(){return new Z.v(k,"(direct)",k,"(direct)","(none)",k,k,k)};g.Cc=function(a){var c=!1,b=m.W;if(a&&"referral"==a.P)for(var a=P(a.Q)[C](),d=0;d<b[v];d++)c=c||R(a,b[d][C]());
+return c};g.h=function(a){return k!=a&&a.fb()};g.te=function(a){var a=N(a,J+g.a+".",";"),c=a[x]("."),a=new Z.v;a.gb(c.slice(4)[A]("."));if(!g.h(a))return!0;c=L[w][y];c=g.kb(c);c=g.mb(c);g.h(c)||(c=g.ua(),g.h(c)||(c=g.lb()));return g.h(c)&&a.H()[C]()!=c.H()[C]()};g.Pb=function(a,c){if(m.Ka){var b="",d="-",e,f=0,n,h,B=g.a;if(a){h=a.g();b=g.kb(L[w][y]);if(m.w&&a.Ba()&&(d=Q(a.qa()),!M(d)&&!R(d,";"))){a.ra(d);a.sa();return}d=N(h,J+B+".",";");e=g.mb(b);if(g.h(e)&&(b=N(b,m.Ga+E,D),"1"==b&&!M(d)))return;
+if(!g.h(e)){e=g.ua();b=g.Bc(e);if(!M(d)&&b)return;b&&(e=g.ta())}if(!g.h(e)&&c){e=g.lb();b=g.Cc(e);if(!M(d)&&b)return;b&&(e=g.ta())}g.h(e)||M(d)&&c&&(e=g.ta());if(g.h(e)&&(M(d)||(f=d[x]("."),n=new Z.v,n.gb(f.slice(4)[A](".")),n=n.H()[C]()==e.H()[C](),f=f[3]*1),!n||c))h=N(h,F+B+".",";"),n=h.lastIndexOf("."),h=n>9?h[z](n+1)*1:0,f++,h=0==h?1:h,a.ra([B,g.m,h,f,e.H()][A](".")),a.sa()}}}};
+Z.v=function(d,f,b,h,e,m,g,a){var c=this;c.q=d;c.Q=f;c.ya=b;c.n=h;c.P=e;c.G=m;c.Gb=g;c.xa=a;c.H=function(){var a=[],b=[["cid",c.q],["csr",c.Q],["gclid",c.ya],["ccn",c.n],["cmd",c.P],["ctr",c.G],["cct",c.Gb],["dclid",c.xa]],d,e;if(c.fb())for(d=0;d<b[v];d++)M(b[d][1])||(e=b[d][1][x]("+")[A]("%20"),e=e[x](" ")[A]("%20"),T(a,"utm"+b[d][0]+E+e));return L.qb(a[A]("|"))};c.fb=function(){return!(M(c.q)&&M(c.Q)&&M(c.ya)&&M(c.xa))};c.gb=function(a){var b=function(b){return Q(N(a,"utm"+b+E,"|"))};c.q=b("cid");
+c.Q=b("csr");c.ya=b("gclid");c.n=b("ccn");c.P=b("cmd");c.G=b("ctr");c.Gb=b("cct");c.xa=b("dclid")}};var Ma=function(d,f,b,h){var e=this,m=f,g=E,a=d,c=h;e.S=b;e.wa="";e.r={};e.$b=function(){var a;a=N(e.S.g(),I+m+".",";")[x](m+".")[1];if(!M(a)){a=a[x]("|");var b=e.r,c=a[1],d;if(!M(c))for(var c=c[x](","),n=0;n<c[v];n++)d=c[n],M(d)||(d=d[x](g),d[v]==4&&(b[d[0]]=[Q(d[1]),Q(d[2]),1]));e.wa=Q(a[0]);e.T()}};e.T=function(){e.Pc();var a=P(e.wa),b,c,d="";for(b in e.r)(c=e.r[b])&&1===c[2]&&(d+=b+g+P(c[0])+g+P(c[1])+g+1+",");M(d)||(a+="|"+d);M(a)?e.S.yc():(e.S.X(m+"."+a),e.S.Y())};e.bc=function(a){e.wa=a;e.T()};
+e.ac=function(b,c,d,g){1!=g&&2!=g&&3!=g&&(g=3);var n=!1;if(c&&d&&b>0&&b<=a.Ta){var f=P(c),h=P(d);f[v]+h[v]<=64&&(e.r[b]=[c,d,g],e.T(),n=!0)}return n};e.Zb=function(a){if((a=e.r[a])&&1===a[2])return a[1]};e.Yb=function(a){var b=e.r;b[a]&&(delete b[a],e.T())};e.Pc=function(){c.t(8);c.t(9);c.t(11);var a=e.r,b,d;for(d in a)if(b=a[d])c.j(8,d,b[0]),c.j(9,d,b[1]),(b=b[2])&&3!=b&&c.j(11,d,""+b)}};var Na=function(){function d(a,b,c,d){k==g[a]&&(g[a]={});k==g[a][b]&&(g[a][b]=[]);g[a][b][c]=d}function f(a,b,c){if(k!=g[a]&&k!=g[a][b])return g[a][b][c]}function b(a,b){if(k!=g[a]&&k!=g[a][b]){g[a][b]=k;var c=!0,d;for(d=0;d<u[v];d++)if(k!=g[a][u[d]]){c=!1;break}c&&(g[a]=k)}}function h(a){var b="",c=!1,d,e;for(d=0;d<u[v];d++)if(e=a[u[d]],k!=e){c&&(b+=u[d]);for(var c=[],g=k,f=k,f=0;f<e[v];f++)if(k!=e[f]){g="";f!=S&&k==e[f-1]&&(g+=f[r]()+n);var h;h=e[f];for(var O="",m=k,U=k,wa=k,m=0;m<h[v];m++)U=h[p](m),
+wa=B[U],O+=k!=wa?wa:U;h=O;g+=h;T(c,g)}e=j+c[A](s)+i;b+=e;c=!1}else c=!0;return b}var e=this,m=sa(e),g={},a="k",c="v",u=[a,c],j="(",i=")",s="*",n="!",O="'",B={};B[O]="'0";B[i]="'1";B[s]="'2";B[n]="'3";var S=1;e.Yc=function(a){return k!=g[a]};e.C=function(){var a="",b;for(b in g)k!=g[b]&&(a+=b[r]()+h(g[b]));return a};e.hc=function(a){if(a==k)return e.C();var b=a.C(),c;for(c in g)k!=g[c]&&!a.Yc(c)&&(b+=c[r]()+h(g[c]));return b};e.j=m("_setKey",89,function(b,c,n){if(typeof n!="string")return!1;d(b,a,
+c,n);return!0});e.ja=m("_setValue",90,function(a,b,n){if(typeof n!="number"&&(k==Number||!(n instanceof Number))||o.round(n)!=n||n==NaN||n==Infinity)return!1;d(a,c,b,n[r]());return!0});e.fc=m("_getKey",87,function(b,c){return f(b,a,c)});e.gc=m("_getValue",88,function(a,b){return f(a,c,b)});e.t=m("_clearKey",85,function(c){b(c,a)});e.ia=m("_clearValue",86,function(a){b(a,c)})};var Oa=function(d,f){var b=this,h=sa(b);b.ze=f;b.gd=d;b.Za=h("_trackEvent",91,function(d,h,g){return f.Za(b.gd,d,h,g)})};var Pa=function(d,f){var b=this,h=L.Gc(),e=L.Hc(),m=10;b.rb=new Na;b.Kc=function(){var b,a="timing",c="onloadT";h&&h[c]!=k&&h.isValidLoadTime?b=h[c]:e&&e[a]&&(b=e[a].loadEventStart-e[a].fetchStart);return b};b.Mc=function(){return d.D()&&d.Xa()%100<m};b.Lc=function(){var e="&utmt=event&utme="+P(b.rb.C())+d.na();f.A(e,d.p,d.a,!1,!0)};b.Jc=function(b){b=o.min(o.floor(b/100),5E3);return b>0?b+"00":"0"};b.sb=function(){var d=b.Kc();if(d==k||isNaN(d))return!1;if(d<=0)return!0;if(d>2147483648)return!1;
+var a=b.rb;a.t(14);a.ia(14);var c=b.Jc(d);a.j(14,1,c)&&a.ja(14,1,d)&&b.Lc();h&&h.isValidLoadTime!=k&&h.setPageReadyTime();return!1};b.Wa=function(){if(!b.Mc())return!1;if(!L.Ic())return!1;b.sb()&&ta(L[t],"load",b.sb,!1);return!0}};var $=function(){};$.Zc=function(d){var f="gaso=",b=L[w][y].hash;d=b&&1==b[q](f)?N(b,f,D):(b=L[t].name)&&0<=b[q](f)?N(b,f,D):N(d.g(),oa,";");return d};$.ad=function(d,f){var b=(f||"www")+".google.com",b="https://"+b+"/analytics/reporting/overlay_js?gaso="+d+D+Aa(),h="_gasojs",e=L[w].createElement("script");e.type="text/javascript";e.src=b;if(h)e.id=h;(L[w].getElementsByTagName("head")[0]||L[w].getElementsByTagName("body")[0]).appendChild(e)};
+$.load=function(d,f){if(!$.$c){var b=$.Zc(f),h=b&&b.match(/^(?:\|([-0-9a-z.]{1,30})\|)?([-.\w]{10,1200})$/i);if(h)f.Dc(b),f.Ec(),V._gasoDomain=d.b,V._gasoCPath=d.f,$.ad(h[2],h[1]);$.$c=!0}};var Qa=function(d,f,b){function h(){if("auto"==j.b){var a=L[w].domain;"www."==a[z](0,4)&&(a=a[z](4));j.b=a}j.b=j.b[C]()}function e(){h();var a=j.b,b=a[q]("www.google.")*a[q](".google.")*a[q]("google.");return b||"/"!=j.f||a[q]("google.org")>-1}function m(b,c,d){if(M(b)||M(c)||M(d))return"-";b=N(b,F+a.a+".",c);M(b)||(b=b[x]("."),b[5]=""+(b[5]?b[5]*1+1:1),b[3]=b[4],b[4]=d,b=b[A]("."));return b}function g(){return"file:"!=L[w][y][ea]&&e()}var a=this,c=sa(a),u=k,j=new Da,i=!1,s=k;a.n=d;a.m=o.round((new Date)[da]()/
+1E3);a.p=f||"UA-XXXXX-X";a.ab=L[w].referrer;a.oa=k;a.d=k;a.F=!1;a.O=k;a.e=k;a.bb=k;a.pa=k;a.a=k;a.k=k;j.o=b?P(b):k;a.eb=!1;a.mc=function(){return Aa()^a.O.cc()&2147483647};a.lc=function(){if(!j.b||""==j.b||"none"==j.b)return j.b="",1;h();return j.Ua?za(j.b):1};a.kc=function(a,b){if(M(a))a="-";else{b+=j.f&&"/"!=j.f?j.f:"";var c=a[q](b),a=c>=0&&c<=8?"0":"["==a[p](0)&&"]"==a[p](a[v]-1)?"-":a}return a};a.na=function(b){var c="";c+=j.ka?a.O.dc():"";c+=j.la&&!M(L[w].title)?"&utmdt="+P(L[w].title):"";var d;
+d=L.Ya(!0);if(!d.hid)d.hid=Aa();d=d.hid;c+="&utmhid="+d+"&utmr="+P(l(a.oa))+"&utmp="+P(a.pc(b));return c};a.pc=function(a){var b=L[w][y];a&&K(13);return a=k!=a&&""!=a?P(a,!0):P(b.pathname+b.search,!0)};a.uc=function(b){if(a.D()){var c="";a.e!=k&&a.e.C()[v]>0&&(c+="&utme="+P(a.e.C()));c+=a.na(b);u.A(c,a.p,a.a)}};a.jc=function(){var b=new Fa(j);return b.Z(a.a)?b.Tb():k};a.cb=c("_getLinkerUrl",52,function(b,c){var d=b[x]("#"),e=b,f=a.jc();if(f)if(c&&1>=d[v])e+="#"+f;else if(!c||1>=d[v])1>=d[v]?e+=(R(b,
+"?")?D:"?")+f:e=d[0]+(R(b,"?")?D:"?")+f+"#"+d[1];return e});a.nc=function(){var b=a.m,c=a.k,d=c.g(),e=a.a+"",f=L.Ya(),g,h=R(d,F+e+"."),i=R(d,H+e),u=R(d,la+e),s,G=[],Y="",Ia=!1,d=M(d)?"":d;if(j.w&&!a.eb){g=L[w][y]&&L[w][y].hash?L[w][y][fa][z](L[w][y][fa][q]("#")):"";j.U&&!M(g)&&(Y=g+D);Y+=L[w][y].search;if(!M(Y)&&R(Y,F))c.Sb(Y),c.Ba()||c.Qb(),s=c.ba(),a.eb=!0;g=c.ea;var va=c.Pa,U=c.Sa;M(g())||(va(Q(g())),R(g(),";")||U());g=c.da;va=c.X;U=c.Y;M(g())||(va(g()),R(g(),";")||U())}M(s)?h?(s=!i||!u)?(s=m(d,
+";",l(b)),a.F=!0):(s=N(d,F+e+".",";"),G=N(d,H+e,";")[x](".")):(s=[e,a.mc(),b,b,b,1][A]("."),Ia=a.F=!0):M(c.z())||M(c.ca())?(s=m(Y,D,l(b)),a.F=!0):(G=c.z()[x]("."),e=G[0]);s=s[x](".");L[t]&&f&&f.dh==e&&!j.o&&(s[4]=f.sid?f.sid:s[4],Ia&&(s[3]=f.sid?f.sid:s[4],f.vid&&(b=f.vid[x]("."),s[1]=b[0],s[2]=b[1])));c.Na(s[A]("."));G[0]=e;G[1]=G[1]?G[1]:0;G[2]=k!=G[2]?G[2]:j.Wb;G[3]=G[3]?G[3]:s[4];c.$(G[A]("."));c.Oa(e);M(c.Rb())||c.fa(c.K());c.Qa();c.aa();c.Ra()};a.oc=function(){u=new Ka(j)};a.getName=c("_getName",
+58,function(){return a.n});a.c=c("_initData",2,function(){var b;if(!i){if(!a.O)a.O=new La(j.ma);a.a=a.lc();a.k=new Fa(j);a.e=new Na;s=new Ma(j,l(a.a),a.k,a.e);a.oc()}if(g()){if(!i)a.oa=a.kc(a.ab,L[w].domain),b=new Z(l(a.a),a.oa,a.m,j);a.nc(b);s.$b()}if(!i)g()&&b.Pb(a.k,a.F),a.bb=new Na,$.load(j,a.k),i=!0});a.Xa=c("_visitCode",54,function(){a.c();var b=N(a.k.g(),F+a.a+".",";"),b=b[x](".");return b[v]<4?"":b[1]});a.qd=c("_cookiePathCopy",30,function(b){a.c();a.k&&a.k.Ub(a.a,b)});a.D=function(){return a.Xa()%
+1E4<j.L*100};a.re=c("_trackPageview",1,function(b){if(g())a.c(),a.uc(b),a.F=!1});a.se=c("_trackTrans",18,function(){var b=a.a,c=[],d,e,f;a.c();if(a.d&&a.D()){for(d=0;d<a.d.N[v];d++){e=a.d.N[d];T(c,e.ha());for(f=0;f<e.M[v];f++)T(c,e.M[f].ha())}for(d=0;d<c[v];d++)u.A(c[d],a.p,b,!0)}});a.me=c("_setTrans",20,function(){var b,c,d,e;b=L[w].getElementById?L[w].getElementById("utmtrans"):L[w].utmform&&L[w].utmform.utmtrans?L[w].utmform.utmtrans:k;a.c();if(b&&b.value){a.d=new W;e=b.value[x]("UTM:");j.u=!j.u||
+""==j.u?"|":j.u;for(b=0;b<e[v];b++){e[b]=ya(e[b]);c=e[b][x](j.u);for(d=0;d<c[v];d++)c[d]=ya(c[d]);"T"==c[0]?a.$a(c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8]):"I"==c[0]&&a.ic(c[1],c[2],c[3],c[4],c[5],c[6])}}});a.$a=c("_addTrans",21,function(b,c,d,e,f,g,h,i){a.d=a.d?a.d:new W;return a.d.Xb(b,c,d,e,f,g,h,i)});a.ic=c("_addItem",19,function(b,c,d,e,f,g){var h;a.d=a.d?a.d:new W;(h=a.d.Va(b))||(h=a.$a(b,"","","","","","",""));h.Vb(c,d,e,f,g)});a.oe=c("_setVar",22,function(b){b&&""!=b&&e()&&(a.c(),s.bc(b),a.D()&&
+u.A("&utmt=var",a.p,a.a))});a.Yd=c("_setCustomVar",10,function(b,c,d,e){a.c();return s.ac(b,c,d,e)});a.td=c("_deleteCustomVar",35,function(b){a.c();s.Yb(b)});a.Cd=c("_getVisitorCustomVar",50,function(b){a.c();return s.Zb(b)});a.fe=c("_setMaxCustomVariables",71,function(a){j.Ta=a});a.link=c("_link",101,function(b,c){j.w&&b&&(a.c(),L.ec(a.cb(b,c)))});a.Fd=c("_linkByPost",102,function(b,c){if(j.w&&b&&b.action)a.c(),b.action=a.cb(b.action,c)});a.pe=c("_setXKey",83,function(b,c,d){a.e.j(b,c,d)});a.qe=
+c("_setXValue",84,function(b,c,d){a.e.ja(b,c,d)});a.Dd=c("_getXKey",76,function(b,c){return a.e.fc(b,c)});a.Ed=c("_getXValue",77,function(b,c){return a.e.gc(b,c)});a.od=c("_clearXKey",72,function(b){a.e.t(b)});a.pd=c("_clearXValue",73,function(b){a.e.ia(b)});a.sd=c("_createXObj",75,function(){a.c();return new Na});a.qc=c("_sendXEvent",78,function(b){var c="";a.c();a.D()&&(c+="&utmt=event&utme="+P(a.e.hc(b))+a.na(),u.A(c,a.p,a.a,!1,!0))});a.rd=c("_createEventTracker",74,function(b){a.c();return new Oa(b,
+a)});a.Za=c("_trackEvent",4,function(b,c,d,e){a.c();var f=a.bb;k!=b&&k!=c&&""!=b&&""!=c?(f.t(5),f.ia(5),(b=f.j(5,1,b)&&f.j(5,2,c)&&(k==d||f.j(5,3,d))&&(k==e||f.ja(5,1,e)))&&a.qc(f)):b=!1;return b});a.Wa=c("_trackPageLoadTime",100,function(){a.c();if(!a.pa)a.pa=new Pa(a,u);return a.pa.Wa()});a.wd=function(){return j};a.ae=c("_setDomainName",6,function(a){j.b=a});a.kd=c("_addOrganic",14,function(a,b,c){j.J.splice(c?0:j.J[v],0,new Ca(a,b))});a.nd=c("_clearOrganic",70,function(){j.J=[]});a.hd=c("_addIgnoredOrganic",
+15,function(a){T(j.V,a)});a.ld=c("_clearIgnoredOrganic",97,function(){j.V=[]});a.jd=c("_addIgnoredRef",31,function(a){T(j.W,a)});a.md=c("_clearIgnoredRef",32,function(){j.W=[]});a.Id=c("_setAllowHash",8,function(a){j.Ua=a?1:0});a.Td=c("_setCampaignTrack",36,function(a){j.Ka=a?1:0});a.Ud=c("_setClientInfo",66,function(a){j.ka=a?1:0});a.vd=c("_getClientInfo",53,function(){return j.ka});a.Vd=c("_setCookiePath",9,function(a){j.f=a});a.ne=c("_setTransactionDelim",82,function(a){j.u=a});a.Xd=c("_setCookieTimeout",
+25,function(b){a.rc(b*1E3)});a.rc=c("_setCampaignCookieTimeout",29,function(a){j.La=a});a.Zd=c("_setDetectFlash",61,function(a){j.ma=a?1:0});a.xd=c("_getDetectFlash",65,function(){return j.ma});a.$d=c("_setDetectTitle",62,function(a){j.la=a?1:0});a.yd=c("_getDetectTitle",56,function(){return j.la});a.ce=c("_setLocalGifPath",46,function(a){j.ga=a});a.zd=c("_getLocalGifPath",57,function(){return j.ga});a.ee=c("_setLocalServerMode",92,function(){j.B=0});a.ie=c("_setRemoteServerMode",63,function(){j.B=
+1});a.de=c("_setLocalRemoteServerMode",47,function(){j.B=2});a.Ad=c("_getServiceMode",59,function(){return j.B});a.je=c("_setSampleRate",45,function(a){j.L=a});a.ke=c("_setSessionTimeout",27,function(b){a.sc(b*1E3)});a.sc=c("_setSessionCookieTimeout",26,function(a){j.Ma=a});a.Jd=c("_setAllowLinker",11,function(a){j.w=a?1:0});a.Hd=c("_setAllowAnchor",7,function(a){j.U=a?1:0});a.Qd=c("_setCampNameKey",41,function(a){j.Ca=a});a.Md=c("_setCampContentKey",38,function(a){j.Da=a});a.Nd=c("_setCampIdKey",
+39,function(a){j.Ea=a});a.Od=c("_setCampMediumKey",40,function(a){j.Fa=a});a.Pd=c("_setCampNOKey",42,function(a){j.Ga=a});a.Rd=c("_setCampSourceKey",43,function(a){j.Ha=a});a.Sd=c("_setCampTermKey",44,function(a){j.Ia=a});a.Ld=c("_setCampCIdKey",37,function(a){j.Ja=a});a.ud=c("_getAccount",64,function(){return a.p});a.Gd=c("_setAccount",3,function(b){a.p=b});a.ge=c("_setNamespace",48,function(a){j.o=a?P(a):k});a.Bd=c("_getVersion",60,function(){return ia});a.Kd=c("_setAutoTrackOutbound",79,Ba);a.le=
+c("_setTrackOutboundSubdomains",81,Ba);a.be=c("_setHrefExamineLimit",80,Ba);a.he=c("_setReferrerOverride",49,function(b){a.ab=b});a.Wd=c("_setCookiePersistence",24,function(b){a.tc(b)});a.tc=c("_setVisitorCookieTimeout",28,function(a){j.s=a})};var Ra=function(){var d=this,f=sa(d);d.Ab=!1;d.Ib={};d.bd=0;d._gasoDomain=k;d._gasoCPath=k;d.ve=f("_getTracker",0,function(b,f){return d.za(b,k,f)});d.za=f("_createTracker",55,function(b,d,e){d&&K(23);e&&K(67);d==k&&(d="~"+V.bd++);return V.Ib[d]=new Qa(d,b,e)});d.Hb=f("_getTrackerByName",51,function(b){b=b||"";return V.Ib[b]||V.za(k,b)});d.pb=function(){var b=L.Vc();return b&&b[ka]&&b[ka]()};d.ue=f("_anonymizeIp",16,function(){d.Ab=!0})};var Ta=function(){var d=this,f=sa(d);d.xe=f("_createAsyncTracker",33,function(b,d){return V.za(b,d||"")});d.ye=f("_getAsyncTracker",34,function(b){return V.Hb(b)});d.push=function(){K(5);for(var b=arguments,d=0,e=0;e<b[v];e++)try{if(typeof b[e]==="function")b[e]();else{var f="",g=b[e][0],a=g.lastIndexOf(".");a>0&&(f=g[z](0,a),g=g[z](a+1));var c=f==ga?V:f==ha?Sa:V.Hb(f);c[g].apply(c,b[e].slice(1))}}catch(u){d++}return d}};var V=new Ra;var Ua=L[t][ga];Ua&&typeof Ua._getTracker=="function"?V=Ua:L[t][ga]=V;var Sa=new Ta;a:{var Va=L[t][ha],Wa=!1;if(Va&&typeof Va[ba]=="function"&&(Wa=ua(Va),!Wa))break a;L[t][ha]=Sa;Wa&&Sa[ba].apply(Sa,Va)};})();
diff --git a/js/modernizr/test/caniuse_files/jquery.min.js b/js/modernizr/test/caniuse_files/jquery.min.js
new file mode 100644 (file)
index 0000000..b2ac174
--- /dev/null
@@ -0,0 +1,18 @@
+/*!
+ * jQuery JavaScript Library v1.6.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu May 12 15:04:36 2011 -0400
+ */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("<!doctype><html><body></body></html>");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bF.test(a)?d(a,e):b_(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bU,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bQ),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bD(a,b,c){var d=b==="width"?bx:by,e=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return e;f.each(d,function(){c||(e-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?e+=parseFloat(f.css(a,"margin"+this))||0:e-=parseFloat(f.css(a,"border"+this+"Width"))||0});return e}function bn(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bm(a){f.nodeName(a,"input")?bl(a):a.getElementsByTagName&&f.grep(a.getElementsByTagName("input"),bl)}function bl(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bk(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bj(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bi(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bh(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(S.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(y,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:E?function(a){return a==null?"":E.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?C.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(F)return F.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=D.call(arguments,2),g=function(){return a.apply(c,f.concat(D.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){G["[object "+b+"]"]=b.toLowerCase()}),x=e.uaMatch(w),x.browser&&(e.browser[x.browser]=!0,e.browser.version=x.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?z=function(){c.removeEventListener("DOMContentLoaded",z,!1),e.ready()}:c.attachEvent&&(z=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",z),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.addClass(a.call(this,b,c.attr("class")||""))});if(a&&typeof a=="string"){var b=(a||"").split(o);for(var c=0,d=this.length;c<d;c++){var e=this[c];if(e.nodeType===1)if(!e.className)e.className=a;else{var g=" "+e.className+" ",h=e.className;for(var i=0,j=b.length;i<j;i++)g.indexOf(" "+b[i]+" ")<0&&(h+=" "+b[i]);e.className=f.trim(h)}}}return this},removeClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a=="string"||a===b){var c=(a||"").split(o);for(var d=0,e=this.length;d<e;d++){var g=this[d];if(g.nodeType===1&&g.className)if(a){var h=(" "+g.className+" ").replace(n," ");for(var i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){var d=f(this);d.toggleClass(a.call(this,c,d.attr("class"),b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem
+)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,O(a.origType,a.selector),f.extend({},a,{handler:N,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,O(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?F:E):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=F;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=F;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=F,this.stopPropagation()},isDefaultPrevented:E,isPropagationStopped:E,isImmediatePropagationStopped:E};var G=function(a){var b=a.relatedTarget;a.type=a.data;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&f.event.handle.apply(this,arguments)}catch(d){}},H=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?H:G,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?H:G)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&L("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&L("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var I,J=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var M={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||E,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=y.exec(h),k="",j&&(k=j[0],h=h.replace(y,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,M[h]?(a.push(M[h]+k),h=h+k):h=(M[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+O(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+O(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var P=/Until$/,Q=/^(?:parents|prevUntil|prevAll)/,R=/,/,S=/^.[^:#\[\.,]*$/,T=Array.prototype.slice,U=f.expr.match.POS,V={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(X(this,a,!1),"not",a)},filter:function(a){return this.pushStack(X(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=U.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/<tbody/i,bb=/<|&#?\w+;/,bc=/<(?:script|object|embed|option|style)/i,bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bh(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bn)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bc.test(a[0])&&(f.support.checkClone||!bd.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||
+b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1></$2>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bm(k[i]);else bm(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bo=/alpha\([^)]*\)/i,bp=/opacity=([^)]*)/,bq=/-([a-z])/ig,br=/([A-Z]|^ms)/g,bs=/^-?\d+(?:px)?$/i,bt=/^-?\d/,bu=/^[+\-]=/,bv=/[^+\-\.\de]+/g,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB,bC=function(a,b){return b.toUpperCase()};f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0,widows:!0,orphans:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bu.test(d)&&(d=+d.replace(bv,"")+parseFloat(f.css(a,c))),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bq,bC)}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){a.offsetWidth!==0?e=bD(a,b,d):f.swap(a,bw,function(){e=bD(a,b,d)});if(e<=0){e=bz(a,b,b),e==="0px"&&bB&&(e=bB(a,b,b));if(e!=null)return e===""||e==="auto"?"0px":e}if(e<0||e==null){e=a.style[b];return e===""||e==="auto"?"0px":e}return typeof e=="string"?e:e+"px"}},set:function(a,b){if(!bs.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cv(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cm.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=cn.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this),f.isFunction(d.old)&&d.old.call(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cq||cs(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!co&&(cr?(co=1,g=function(){co&&(cr(g),e.tick())},cr(g)):co=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cq||cs(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file
diff --git a/js/modernizr/test/caniuse_files/modernizr-1.7.min.js b/js/modernizr/test/caniuse_files/modernizr-1.7.min.js
new file mode 100644 (file)
index 0000000..6f54850
--- /dev/null
@@ -0,0 +1,2 @@
+// Modernizr v1.7  www.modernizr.com
+window.Modernizr=function(a,b,c){function G(){e.input=function(a){for(var b=0,c=a.length;b<c;b++)t[a[b]]=!!(a[b]in l);return t}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)l.setAttribute("type",f=a[d]),e=l.type!=="text",e&&(l.value=m,l.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&l.style.WebkitAppearance!==c?(g.appendChild(l),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(l,null).WebkitAppearance!=="textfield"&&l.offsetHeight!==0,g.removeChild(l)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=l.checkValidity&&l.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(l),g.offsetWidth,e=l.value!=m,g.removeChild(l)):e=l.value!=m)),s[a[d]]=!!e;return s}("search tel url email datetime date month week time datetime-local number range color".split(" "))}function F(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+p.join(c+" ")+c).split(" ");return!!E(d,b)}function E(a,b){for(var d in a)if(k[a[d]]!==c&&(!b||b(a[d],j)))return!0}function D(a,b){return(""+a).indexOf(b)!==-1}function C(a,b){return typeof a===b}function B(a,b){return A(o.join(a+";")+(b||""))}function A(a){k.cssText=a}var d="1.7",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l=b.createElement("input"),m=":)",n=Object.prototype.toString,o=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),p="Webkit Moz O ms Khtml".split(" "),q={svg:"http://www.w3.org/2000/svg"},r={},s={},t={},u=[],v,w=function(a){var c=b.createElement("style"),d=b.createElement("div"),e;c.textContent=a+"{#modernizr{height:3px}}",h.appendChild(c),d.id="modernizr",g.appendChild(d),e=d.offsetHeight===3,c.parentNode.removeChild(c),d.parentNode.removeChild(d);return!!e},x=function(){function d(d,e){e=e||b.createElement(a[d]||"div");var f=(d="on"+d)in e;f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=C(e[d],"function"),C(e[d],c)||(e[d]=c),e.removeAttribute(d))),e=null;return f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),y=({}).hasOwnProperty,z;C(y,c)||C(y.call,c)?z=function(a,b){return b in a&&C(a.constructor.prototype[b],c)}:z=function(a,b){return y.call(a,b)},r.flexbox=function(){function c(a,b,c,d){a.style.cssText=o.join(b+":"+c+";")+(d||"")}function a(a,b,c,d){b+=":",a.style.cssText=(b+o.join(c+";"+b)).slice(0,-b.length)+(d||"")}var d=b.createElement("div"),e=b.createElement("div");a(d,"display","box","width:42px;padding:0;"),c(e,"box-flex","1","width:10px;"),d.appendChild(e),g.appendChild(d);var f=e.offsetWidth===42;d.removeChild(e),g.removeChild(d);return f},r.canvas=function(){var a=b.createElement("canvas");return a.getContext&&a.getContext("2d")},r.canvastext=function(){return e.canvas&&C(b.createElement("canvas").getContext("2d").fillText,"function")},r.webgl=function(){return!!a.WebGLRenderingContext},r.touch=function(){return"ontouchstart"in a||w("@media ("+o.join("touch-enabled),(")+"modernizr)")},r.geolocation=function(){return!!navigator.geolocation},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){var b=!!a.openDatabase;return b},r.indexedDB=function(){for(var b=-1,c=p.length;++b<c;){var d=p[b].toLowerCase();if(a[d+"_indexedDB"]||a[d+"IndexedDB"])return!0}return!1},r.hashchange=function(){return x("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return !!(a.history&&history.pushState)},r.draganddrop=function(){return x("dragstart")&&x("drop")},r.websockets=function(){return"WebSocket"in a},r.rgba=function(){A("background-color:rgba(150,255,150,.5)");return D(k.backgroundColor,"rgba")},r.hsla=function(){A("background-color:hsla(120,40%,100%,.5)");return D(k.backgroundColor,"rgba")||D(k.backgroundColor,"hsla")},r.multiplebgs=function(){A("background:url(//:),url(//:),red url(//:)");return(new RegExp("(url\\s*\\(.*?){3}")).test(k.background)},r.backgroundsize=function(){return F("backgroundSize")},r.borderimage=function(){return F("borderImage")},r.borderradius=function(){return F("borderRadius","",function(a){return D(a,"orderRadius")})},r.boxshadow=function(){return F("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){B("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return F("animationName")},r.csscolumns=function(){return F("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";A((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return D(k.backgroundImage,"gradient")},r.cssreflections=function(){return F("boxReflect")},r.csstransforms=function(){return!!E(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!E(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=w("@media ("+o.join("transform-3d),(")+"modernizr)"));return a},r.csstransitions=function(){return F("transitionProperty")},r.fontface=function(){var a,c,d=h||g,e=b.createElement("style"),f=b.implementation||{hasFeature:function(){return!1}};e.type="text/css",d.insertBefore(e,d.firstChild),a=e.sheet||e.styleSheet;var i=f.hasFeature("CSS2","")?function(b){if(!a||!b)return!1;var c=!1;try{a.insertRule(b,0),c=/src/i.test(a.cssRules[0].cssText),a.deleteRule(a.cssRules.length-1)}catch(d){}return c}:function(b){if(!a||!b)return!1;a.cssText=b;return a.cssText.length!==0&&/src/i.test(a.cssText)&&a.cssText.replace(/\r+|\n+/g,"").indexOf(b.split(" ")[0])===0};c=i('@font-face { font-family: "font"; src: url(data:,); }'),d.removeChild(e);return c},r.video=function(){var a=b.createElement("video"),c=!!a.canPlayType;if(c){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return c},r.audio=function(){var a=b.createElement("audio"),c=!!a.canPlayType;c&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;"));return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webWorkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML="<svg/>";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var H in r)z(r,H)&&(v=H.toLowerCase(),e[v]=r[H](),u.push((e[v]?"":"no-")+v));e.input||G(),e.crosswindowmessaging=e.postmessage,e.historymanagement=e.history,e.addTest=function(a,b){a=a.toLowerCase();if(!e[a]){b=!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b;return e}},A(""),j=l=null,f&&a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function p(a,b){var c=-1,d=a.length,e,f=[];while(++c<d)e=a[c],(b=e.media||b)!="screen"&&f.push(p(e.imports,b),e.cssText);return f.join("")}function o(a){var b=-1;while(++b<e)a.createElement(d[b])}var c="abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",d=c.split("|"),e=d.length,f=new RegExp("(^|\\s)("+c+")","gi"),g=new RegExp("<(/*)("+c+")","gi"),h=new RegExp("(^|[^\\n]*?\\s)("+c+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),i=b.createDocumentFragment(),j=b.documentElement,k=j.firstChild,l=b.createElement("body"),m=b.createElement("style"),n;o(b),o(i),k.insertBefore(m,k.firstChild),m.media="print",a.attachEvent("onbeforeprint",function(){var a=-1,c=p(b.styleSheets,"all"),k=[],o;n=n||b.body;while((o=h.exec(c))!=null)k.push((o[1]+o[2]+o[3]).replace(f,"$1.iepp_$2")+o[4]);m.styleSheet.cssText=k.join("\n");while(++a<e){var q=b.getElementsByTagName(d[a]),r=q.length,s=-1;while(++s<r)q[s].className.indexOf("iepp_")<0&&(q[s].className+=" iepp_"+d[a])}i.appendChild(n),j.appendChild(l),l.className=n.className,l.innerHTML=n.innerHTML.replace(g,"<$1font")}),a.attachEvent("onafterprint",function(){l.innerHTML="",j.removeChild(l),j.appendChild(n),m.styleSheet.cssText=""})}(a,b),e._enableHTML5=f,e._version=d,g.className=g.className.replace(/\bno-js\b/,"")+" js "+u.join(" ");return e}(this,this.document)
\ No newline at end of file
diff --git a/js/modernizr/test/js/dumpdata.js b/js/modernizr/test/js/dumpdata.js
new file mode 100644 (file)
index 0000000..43c667b
--- /dev/null
@@ -0,0 +1,75 @@
+function dumpModernizr(){
+  var str = '';
+  dumpModernizr.old = dumpModernizr.old || {};
+
+    for (var prop in Modernizr) {
+
+      // skip previously done ones.
+      if (dumpModernizr.old[prop]) continue;
+      else dumpModernizr.old[prop] = true;
+
+      if (typeof Modernizr[prop] === 'function') continue;
+      // skip unit test items
+      if (/^test/.test(prop)) continue;
+
+      if (~TEST.inputs.indexOf(prop)) {
+        str += '<li><b>'+prop+'{}</b><ul>';
+        for (var field in Modernizr[prop]) {
+          str += '<li class="' + (Modernizr[prop][field] ? 'yes' : '') + '">' + field + ': ' + Modernizr[prop][field] + '</li>';
+        }
+        str += '</ul></li>';
+      } else {
+        str += '<li  id="'+prop+'" class="' + (Modernizr[prop] ? 'yes' : '') + '">' + prop + ': ' + Modernizr[prop] + '</li>';
+      }
+  }
+  return str;
+}
+
+
+function grabFeatDetects(){
+  // thx github.js
+  $.getScript('https://api.github.com/repos/Modernizr/Modernizr/git/trees/master?recursive=1&callback=processTree');
+}
+
+
+function processTree(data){
+  var filenames = [];
+
+  for (var i = 0; i < data.data.tree.length; i++){
+    var file = data.data.tree[i];
+    var match = file.path.match(/^feature-detects\/(.*)/);
+    if (!match) continue;
+
+    var relpath = location.host == "modernizr.github.com" ?
+                    '../modernizr-git/' : '../';
+
+    filenames.push(relpath + match[0]);
+  }
+
+  var jqxhrs = filenames.map(function(filename){
+    return jQuery.getScript(filename);
+  });
+
+  jQuery.when.apply(jQuery, jqxhrs).done(resultsToDOM);
+
+}
+
+function resultsToDOM(){
+
+  var modOutput = document.createElement('div'),
+      ref = document.getElementById('qunit-testresult') || document.getElementById('qunit-tests');
+
+  modOutput.className = 'output';
+  modOutput.innerHTML = dumpModernizr();
+
+  ref.parentNode.insertBefore(modOutput, ref);
+
+  // Modernizr object as text
+  document.getElementsByTagName('textarea')[0].innerHTML = JSON.stringify(Modernizr);
+
+}
+
+/* uno    */ resultsToDOM();
+/* dos    */ grabFeatDetects();
+/* tres   */ setTimeout(resultsToDOM,  5e3);
+/* quatro */ setTimeout(resultsToDOM, 15e3);
diff --git a/js/modernizr/test/js/lib/detect-global.js b/js/modernizr/test/js/lib/detect-global.js
new file mode 100644 (file)
index 0000000..48b4ac2
--- /dev/null
@@ -0,0 +1,153 @@
+// https://github.com/kangax/detect-global
+
+// tweaked to run without a UI.
+
+(function () {
+    function getPropertyDescriptors(object) {
+      var props = { };
+      for (var prop in object) {
+        
+        // nerfing for firefox who goes crazy over some objects like sessionStorage
+        try {
+          
+          props[prop] = {
+            type:  typeof object[prop],
+            value: object[prop]
+          };
+          
+        } catch(e){
+          props[prop] = {}; 
+        }
+      }
+      return props;
+    }
+    
+    function getCleanWindow() {
+      var elIframe = document.createElement('iframe');
+      elIframe.style.display = 'none';
+      
+      var ref = document.getElementsByTagName('script')[0];
+      ref.parentNode.insertBefore(elIframe, ref);
+      
+      elIframe.src = 'about:blank';
+      return elIframe.contentWindow;
+    }
+    
+    function appendControl(el, name) {
+      var elCheckbox = document.createElement('input');
+      elCheckbox.type = 'checkbox';
+      elCheckbox.checked = true;
+      elCheckbox.id = '__' + name;
+      
+      var elLabel = document.createElement('label');
+      elLabel.htmlFor = '__' + name;
+      elLabel.innerHTML = 'Exclude ' + name + ' properties?';
+      elLabel.style.marginLeft = '0.5em';
+      
+      var elWrapper = document.createElement('p');
+      elWrapper.style.marginBottom = '0.5em';
+      
+      elWrapper.appendChild(elCheckbox);
+      elWrapper.appendChild(elLabel);
+
+      el.appendChild(elWrapper);
+    }
+    
+    function appendAnalyze(el) {
+      var elAnalyze = document.createElement('button');
+      elAnalyze.id = '__analyze';
+      elAnalyze.innerHTML = 'Analyze';
+      elAnalyze.style.marginTop = '1em';
+      el.appendChild(elAnalyze);
+    }
+    
+    function appendCancel(el) {
+      var elCancel = document.createElement('a');
+      elCancel.href = '#';
+      elCancel.innerHTML = 'Cancel';
+      elCancel.style.cssText = 'color:#eee;margin-left:0.5em;';
+      elCancel.onclick = function() {
+        el.parentNode.removeChild(el);
+        return false; 
+      };
+      el.appendChild(elCancel);
+    }
+    
+    function initConfigPopup() {
+      var el = document.createElement('div');
+      
+      el.style.cssText =  'position:fixed; left:10px; top:10px; width:300px; background:rgba(50,50,50,0.9);' +
+                          '-moz-border-radius:10px; padding:1em; color: #eee; text-align: left;' +
+                          'font-family: "Helvetica Neue", Verdana, Arial, sans serif; z-index: 99999;';
+      
+      for (var prop in propSets) {
+        appendControl(el, prop);
+      }
+      
+      appendAnalyze(el);
+      appendCancel(el);
+      
+      var ref = document.getElementsByTagName('script')[0];
+      ref.parentNode.insertBefore(el, ref);
+    }
+    
+    function getPropsCount(object) {
+      var count = 0;
+      for (var prop in object) {
+        count++;
+      }
+      return count;
+    }
+    
+    function shouldDeleteProperty(propToCheck) {
+      for (var prop in propSets) {
+        var elCheckbox = document.getElementById('__' + prop);
+        var isPropInSet = propSets[prop].indexOf(propToCheck) > -1;
+        if (isPropInSet && (elCheckbox ? elCheckbox.checked : true) ) {
+          return true;
+        }
+      }
+    }
+    
+    function analyze() {
+      var global = (function(){ return this; })(),
+          globalProps = getPropertyDescriptors(global),
+          cleanWindow = getCleanWindow();
+          
+      for (var prop in cleanWindow) {
+        if (globalProps[prop]) {
+          delete globalProps[prop];
+        }
+      }
+      for (var prop in globalProps) {
+        if (shouldDeleteProperty(prop)) {
+          delete globalProps[prop];
+        }
+      }
+      
+      window.__globalsCount = getPropsCount(globalProps);
+      window.__globals      = globalProps;
+      
+      window.console && console.log('Total number of global properties: ' + __globalsCount);
+      window.console && console.dir(__globals);
+    }
+    
+    var propSets = {
+      'Prototype':        '$$ $A $F $H $R $break $continue $w Abstract Ajax Class Enumerable Element Field Form ' +
+                          'Hash Insertion ObjectRange PeriodicalExecuter Position Prototype Selector Template Toggle Try'.split(' '),
+                        
+      'Scriptaculous':    'Autocompleter Builder Control Draggable Draggables Droppables Effect Sortable SortableObserver Sound Scriptaculous'.split(' '),
+      'Firebug':          'loadFirebugConsole console _getFirebugConsoleElement _FirebugConsole _FirebugCommandLine _firebug'.split(' '),
+      'Mozilla':          'Components XPCNativeWrapper XPCSafeJSObjectWrapper getInterface netscape GetWeakReference GeckoActiveXObject'.split(' '),
+      'GoogleAnalytics':  'gaJsHost gaGlobal _gat _gaq pageTracker'.split(' '),
+      'lazyGlobals':      'onhashchange'.split(' ')
+    };
+    
+    // initConfigPopup(); // disable because we're going UI-less.
+    
+    var analyzeElem = document.getElementById('__analyze');
+    analyzeElem && (analyzeElem.onclick = analyze);
+    
+    analyze(); // and assign total added globals to window.__globalsCount
+    
+})();
\ No newline at end of file
diff --git a/js/modernizr/test/js/lib/jquery-1.7b2.js b/js/modernizr/test/js/lib/jquery-1.7b2.js
new file mode 100644 (file)
index 0000000..98c6d0d
--- /dev/null
@@ -0,0 +1,9279 @@
+/*!
+ * jQuery JavaScript Library v1.7b2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Oct 13 21:12:55 2011 -0400
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document,
+       navigator = window.navigator,
+       location = window.location;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+               // The jQuery object is actually just the init constructor 'enhanced'
+               return new jQuery.fn.init( selector, context, rootjQuery );
+       },
+
+       // Map over jQuery in case of overwrite
+       _jQuery = window.jQuery,
+
+       // Map over the $ in case of overwrite
+       _$ = window.$,
+
+       // A central reference to the root jQuery(document)
+       rootjQuery,
+
+       // A simple way to check for HTML strings or ID strings
+       // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+       quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+
+       // Check if a string has a non-whitespace character in it
+       rnotwhite = /\S/,
+
+       // Used for trimming whitespace
+       trimLeft = /^\s+/,
+       trimRight = /\s+$/,
+
+       // Check for digits
+       rdigit = /\d/,
+
+       // Match a standalone tag
+       rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+       // JSON RegExp
+       rvalidchars = /^[\],:{}\s]*$/,
+       rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+       rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+       rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+       // Useragent RegExp
+       rwebkit = /(webkit)[ \/]([\w.]+)/,
+       ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+       rmsie = /(msie) ([\w.]+)/,
+       rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+       // Matches dashed string for camelizing
+       rdashAlpha = /-([a-z]|[0-9])/ig,
+       rmsPrefix = /^-ms-/,
+
+       // Used by jQuery.camelCase as callback to replace()
+       fcamelCase = function( all, letter ) {
+               return ( letter + "" ).toUpperCase();
+       },
+
+       // Keep a UserAgent string for use with jQuery.browser
+       userAgent = navigator.userAgent,
+
+       // For matching the engine and version of the browser
+       browserMatch,
+
+       // The deferred used on DOM ready
+       readyList,
+
+       // The ready event handler
+       DOMContentLoaded,
+
+       // Save a reference to some core methods
+       toString = Object.prototype.toString,
+       hasOwn = Object.prototype.hasOwnProperty,
+       push = Array.prototype.push,
+       slice = Array.prototype.slice,
+       trim = String.prototype.trim,
+       indexOf = Array.prototype.indexOf,
+
+       // [[Class]] -> type pairs
+       class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+       constructor: jQuery,
+       init: function( selector, context, rootjQuery ) {
+               var match, elem, ret, doc;
+
+               // Handle $(""), $(null), or $(undefined)
+               if ( !selector ) {
+                       return this;
+               }
+
+               // Handle $(DOMElement)
+               if ( selector.nodeType ) {
+                       this.context = this[0] = selector;
+                       this.length = 1;
+                       return this;
+               }
+
+               // The body element only exists once, optimize finding it
+               if ( selector === "body" && !context && document.body ) {
+                       this.context = document;
+                       this[0] = document.body;
+                       this.selector = selector;
+                       this.length = 1;
+                       return this;
+               }
+
+               // Handle HTML strings
+               if ( typeof selector === "string" ) {
+                       // Are we dealing with HTML string or an ID?
+                       if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+                               // Assume that strings that start and end with <> are HTML and skip the regex check
+                               match = [ null, selector, null ];
+
+                       } else {
+                               match = quickExpr.exec( selector );
+                       }
+
+                       // Verify a match, and that no context was specified for #id
+                       if ( match && (match[1] || !context) ) {
+
+                               // HANDLE: $(html) -> $(array)
+                               if ( match[1] ) {
+                                       context = context instanceof jQuery ? context[0] : context;
+                                       doc = (context ? context.ownerDocument || context : document);
+
+                                       // If a single string is passed in and it's a single tag
+                                       // just do a createElement and skip the rest
+                                       ret = rsingleTag.exec( selector );
+
+                                       if ( ret ) {
+                                               if ( jQuery.isPlainObject( context ) ) {
+                                                       selector = [ document.createElement( ret[1] ) ];
+                                                       jQuery.fn.attr.call( selector, context, true );
+
+                                               } else {
+                                                       selector = [ doc.createElement( ret[1] ) ];
+                                               }
+
+                                       } else {
+                                               ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+                                               selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
+                                       }
+
+                                       return jQuery.merge( this, selector );
+
+                               // HANDLE: $("#id")
+                               } else {
+                                       elem = document.getElementById( match[2] );
+
+                                       // Check parentNode to catch when Blackberry 4.6 returns
+                                       // nodes that are no longer in the document #6963
+                                       if ( elem && elem.parentNode ) {
+                                               // Handle the case where IE and Opera return items
+                                               // by name instead of ID
+                                               if ( elem.id !== match[2] ) {
+                                                       return rootjQuery.find( selector );
+                                               }
+
+                                               // Otherwise, we inject the element directly into the jQuery object
+                                               this.length = 1;
+                                               this[0] = elem;
+                                       }
+
+                                       this.context = document;
+                                       this.selector = selector;
+                                       return this;
+                               }
+
+                       // HANDLE: $(expr, $(...))
+                       } else if ( !context || context.jquery ) {
+                               return (context || rootjQuery).find( selector );
+
+                       // HANDLE: $(expr, context)
+                       // (which is just equivalent to: $(context).find(expr)
+                       } else {
+                               return this.constructor( context ).find( selector );
+                       }
+
+               // HANDLE: $(function)
+               // Shortcut for document ready
+               } else if ( jQuery.isFunction( selector ) ) {
+                       return rootjQuery.ready( selector );
+               }
+
+               if (selector.selector !== undefined) {
+                       this.selector = selector.selector;
+                       this.context = selector.context;
+               }
+
+               return jQuery.makeArray( selector, this );
+       },
+
+       // Start with an empty selector
+       selector: "",
+
+       // The current version of jQuery being used
+       jquery: "1.7b2",
+
+       // The default length of a jQuery object is 0
+       length: 0,
+
+       // The number of elements contained in the matched element set
+       size: function() {
+               return this.length;
+       },
+
+       toArray: function() {
+               return slice.call( this, 0 );
+       },
+
+       // Get the Nth element in the matched element set OR
+       // Get the whole matched element set as a clean array
+       get: function( num ) {
+               return num == null ?
+
+                       // Return a 'clean' array
+                       this.toArray() :
+
+                       // Return just the object
+                       ( num < 0 ? this[ this.length + num ] : this[ num ] );
+       },
+
+       // Take an array of elements and push it onto the stack
+       // (returning the new matched element set)
+       pushStack: function( elems, name, selector ) {
+               // Build a new jQuery matched element set
+               var ret = this.constructor();
+
+               if ( jQuery.isArray( elems ) ) {
+                       push.apply( ret, elems );
+
+               } else {
+                       jQuery.merge( ret, elems );
+               }
+
+               // Add the old object onto the stack (as a reference)
+               ret.prevObject = this;
+
+               ret.context = this.context;
+
+               if ( name === "find" ) {
+                       ret.selector = this.selector + (this.selector ? " " : "") + selector;
+               } else if ( name ) {
+                       ret.selector = this.selector + "." + name + "(" + selector + ")";
+               }
+
+               // Return the newly-formed element set
+               return ret;
+       },
+
+       // Execute a callback for every element in the matched set.
+       // (You can seed the arguments with an array of args, but this is
+       // only used internally.)
+       each: function( callback, args ) {
+               return jQuery.each( this, callback, args );
+       },
+
+       ready: function( fn ) {
+               // Attach the listeners
+               jQuery.bindReady();
+
+               // Add the callback
+               readyList.add( fn );
+
+               return this;
+       },
+
+       eq: function( i ) {
+               return i === -1 ?
+                       this.slice( i ) :
+                       this.slice( i, +i + 1 );
+       },
+
+       first: function() {
+               return this.eq( 0 );
+       },
+
+       last: function() {
+               return this.eq( -1 );
+       },
+
+       slice: function() {
+               return this.pushStack( slice.apply( this, arguments ),
+                       "slice", slice.call(arguments).join(",") );
+       },
+
+       map: function( callback ) {
+               return this.pushStack( jQuery.map(this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               }));
+       },
+
+       end: function() {
+               return this.prevObject || this.constructor(null);
+       },
+
+       // For internal use only.
+       // Behaves like an Array's method, not like a jQuery method.
+       push: push,
+       sort: [].sort,
+       splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+       var options, name, src, copy, copyIsArray, clone,
+               target = arguments[0] || {},
+               i = 1,
+               length = arguments.length,
+               deep = false;
+
+       // Handle a deep copy situation
+       if ( typeof target === "boolean" ) {
+               deep = target;
+               target = arguments[1] || {};
+               // skip the boolean and the target
+               i = 2;
+       }
+
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+               target = {};
+       }
+
+       // extend jQuery itself if only one argument is passed
+       if ( length === i ) {
+               target = this;
+               --i;
+       }
+
+       for ( ; i < length; i++ ) {
+               // Only deal with non-null/undefined values
+               if ( (options = arguments[ i ]) != null ) {
+                       // Extend the base object
+                       for ( name in options ) {
+                               src = target[ name ];
+                               copy = options[ name ];
+
+                               // Prevent never-ending loop
+                               if ( target === copy ) {
+                                       continue;
+                               }
+
+                               // Recurse if we're merging plain objects or arrays
+                               if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+                                       if ( copyIsArray ) {
+                                               copyIsArray = false;
+                                               clone = src && jQuery.isArray(src) ? src : [];
+
+                                       } else {
+                                               clone = src && jQuery.isPlainObject(src) ? src : {};
+                                       }
+
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
+
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
+                               }
+                       }
+               }
+       }
+
+       // Return the modified object
+       return target;
+};
+
+jQuery.extend({
+       noConflict: function( deep ) {
+               if ( window.$ === jQuery ) {
+                       window.$ = _$;
+               }
+
+               if ( deep && window.jQuery === jQuery ) {
+                       window.jQuery = _jQuery;
+               }
+
+               return jQuery;
+       },
+
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+
+       // A counter to track how many items to wait for before
+       // the ready event fires. See #6781
+       readyWait: 1,
+
+       // Hold (or release) the ready event
+       holdReady: function( hold ) {
+               if ( hold ) {
+                       jQuery.readyWait++;
+               } else {
+                       jQuery.ready( true );
+               }
+       },
+
+       // Handle when the DOM is ready
+       ready: function( wait ) {
+               // Either a released hold or an DOMready/load event and not yet ready
+               if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
+                       // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+                       if ( !document.body ) {
+                               return setTimeout( jQuery.ready, 1 );
+                       }
+
+                       // Remember that the DOM is ready
+                       jQuery.isReady = true;
+
+                       // If a normal DOM Ready event fired, decrement, and wait if need be
+                       if ( wait !== true && --jQuery.readyWait > 0 ) {
+                               return;
+                       }
+
+                       // If there are functions bound, to execute
+                       readyList.fireWith( document, [ jQuery ] );
+
+                       // Trigger any bound ready events
+                       if ( jQuery.fn.trigger ) {
+                               jQuery( document ).trigger( "ready" ).unbind( "ready" );
+                       }
+               }
+       },
+
+       bindReady: function() {
+               if ( readyList ) {
+                       return;
+               }
+
+               readyList = jQuery.Callbacks( "once memory" );
+
+               // Catch cases where $(document).ready() is called after the
+               // browser event has already occurred.
+               if ( document.readyState === "complete" ) {
+                       // Handle it asynchronously to allow scripts the opportunity to delay ready
+                       return setTimeout( jQuery.ready, 1 );
+               }
+
+               // Mozilla, Opera and webkit nightlies currently support this event
+               if ( document.addEventListener ) {
+                       // Use the handy event callback
+                       document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+                       // A fallback to window.onload, that will always work
+                       window.addEventListener( "load", jQuery.ready, false );
+
+               // If IE event model is used
+               } else if ( document.attachEvent ) {
+                       // ensure firing before onload,
+                       // maybe late but safe also for iframes
+                       document.attachEvent( "onreadystatechange", DOMContentLoaded );
+
+                       // A fallback to window.onload, that will always work
+                       window.attachEvent( "onload", jQuery.ready );
+
+                       // If IE and not a frame
+                       // continually check to see if the document is ready
+                       var toplevel = false;
+
+                       try {
+                               toplevel = window.frameElement == null;
+                       } catch(e) {}
+
+                       if ( document.documentElement.doScroll && toplevel ) {
+                               doScrollCheck();
+                       }
+               }
+       },
+
+       // See test/unit/core.js for details concerning isFunction.
+       // Since version 1.3, DOM methods and functions like alert
+       // aren't supported. They return false on IE (#2968).
+       isFunction: function( obj ) {
+               return jQuery.type(obj) === "function";
+       },
+
+       isArray: Array.isArray || function( obj ) {
+               return jQuery.type(obj) === "array";
+       },
+
+       // A crude way of determining if an object is a window
+       isWindow: function( obj ) {
+               return obj && typeof obj === "object" && "setInterval" in obj;
+       },
+
+       isNumeric: function( obj ) {
+               return obj != null && rdigit.test( obj ) && !isNaN( obj );
+       },
+
+       type: function( obj ) {
+               return obj == null ?
+                       String( obj ) :
+                       class2type[ toString.call(obj) ] || "object";
+       },
+
+       isPlainObject: function( obj ) {
+               // Must be an Object.
+               // Because of IE, we also have to check the presence of the constructor property.
+               // Make sure that DOM nodes and window objects don't pass through, as well
+               if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+                       return false;
+               }
+
+               try {
+                       // Not own constructor property must be Object
+                       if ( obj.constructor &&
+                               !hasOwn.call(obj, "constructor") &&
+                               !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+                               return false;
+                       }
+               } catch ( e ) {
+                       // IE8,9 Will throw exceptions on certain host objects #9897
+                       return false;
+               }
+
+               // Own properties are enumerated firstly, so to speed up,
+               // if last one is own, then all properties are own.
+
+               var key;
+               for ( key in obj ) {}
+
+               return key === undefined || hasOwn.call( obj, key );
+       },
+
+       isEmptyObject: function( obj ) {
+               for ( var name in obj ) {
+                       return false;
+               }
+               return true;
+       },
+
+       error: function( msg ) {
+               throw msg;
+       },
+
+       parseJSON: function( data ) {
+               if ( typeof data !== "string" || !data ) {
+                       return null;
+               }
+
+               // Make sure leading/trailing whitespace is removed (IE can't handle it)
+               data = jQuery.trim( data );
+
+               // Attempt to parse using the native JSON parser first
+               if ( window.JSON && window.JSON.parse ) {
+                       return window.JSON.parse( data );
+               }
+
+               // Make sure the incoming data is actual JSON
+               // Logic borrowed from http://json.org/json2.js
+               if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+                       .replace( rvalidtokens, "]" )
+                       .replace( rvalidbraces, "")) ) {
+
+                       return (new Function( "return " + data ))();
+
+               }
+               jQuery.error( "Invalid JSON: " + data );
+       },
+
+       // Cross-browser xml parsing
+       parseXML: function( data ) {
+               var xml, tmp;
+               try {
+                       if ( window.DOMParser ) { // Standard
+                               tmp = new DOMParser();
+                               xml = tmp.parseFromString( data , "text/xml" );
+                       } else { // IE
+                               xml = new ActiveXObject( "Microsoft.XMLDOM" );
+                               xml.async = "false";
+                               xml.loadXML( data );
+                       }
+               } catch( e ) {
+                       xml = undefined;
+               }
+               if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+                       jQuery.error( "Invalid XML: " + data );
+               }
+               return xml;
+       },
+
+       noop: function() {},
+
+       // Evaluates a script in a global context
+       // Workarounds based on findings by Jim Driscoll
+       // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+       globalEval: function( data ) {
+               if ( data && rnotwhite.test( data ) ) {
+                       // We use execScript on Internet Explorer
+                       // We use an anonymous function so that context is window
+                       // rather than jQuery in Firefox
+                       ( window.execScript || function( data ) {
+                               window[ "eval" ].call( window, data );
+                       } )( data );
+               }
+       },
+
+       // Convert dashed to camelCase; used by the css and data modules
+       // Microsoft forgot to hump their vendor prefix (#9572)
+       camelCase: function( string ) {
+               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+       },
+
+       nodeName: function( elem, name ) {
+               return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+       },
+
+       // args is for internal usage only
+       each: function( object, callback, args ) {
+               var name, i = 0,
+                       length = object.length,
+                       isObj = length === undefined || jQuery.isFunction( object );
+
+               if ( args ) {
+                       if ( isObj ) {
+                               for ( name in object ) {
+                                       if ( callback.apply( object[ name ], args ) === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( ; i < length; ) {
+                                       if ( callback.apply( object[ i++ ], args ) === false ) {
+                                               break;
+                                       }
+                               }
+                       }
+
+               // A special, fast, case for the most common use of each
+               } else {
+                       if ( isObj ) {
+                               for ( name in object ) {
+                                       if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( ; i < length; ) {
+                                       if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return object;
+       },
+
+       // Use native String.trim function wherever possible
+       trim: trim ?
+               function( text ) {
+                       return text == null ?
+                               "" :
+                               trim.call( text );
+               } :
+
+               // Otherwise use our own trimming functionality
+               function( text ) {
+                       return text == null ?
+                               "" :
+                               text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+               },
+
+       // results is for internal usage only
+       makeArray: function( array, results ) {
+               var ret = results || [];
+
+               if ( array != null ) {
+                       // The window, strings (and functions) also have 'length'
+                       // The extra typeof function check is to prevent crashes
+                       // in Safari 2 (See: #3039)
+                       // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+                       var type = jQuery.type( array );
+
+                       if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+                               push.call( ret, array );
+                       } else {
+                               jQuery.merge( ret, array );
+                       }
+               }
+
+               return ret;
+       },
+
+       inArray: function( elem, array, i ) {
+               var len;
+
+               if ( array ) {
+                       if ( indexOf ) {
+                               return indexOf.call( array, elem, i );
+                       }
+
+                       len = array.length;
+                       i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+                       for ( ; i < len; i++ ) {
+                               // Skip accessing in sparse arrays
+                               if ( i in array && array[ i ] === elem ) {
+                                       return i;
+                               }
+                       }
+               }
+
+               return -1;
+       },
+
+       merge: function( first, second ) {
+               var i = first.length,
+                       j = 0;
+
+               if ( typeof second.length === "number" ) {
+                       for ( var l = second.length; j < l; j++ ) {
+                               first[ i++ ] = second[ j ];
+                       }
+
+               } else {
+                       while ( second[j] !== undefined ) {
+                               first[ i++ ] = second[ j++ ];
+                       }
+               }
+
+               first.length = i;
+
+               return first;
+       },
+
+       grep: function( elems, callback, inv ) {
+               var ret = [], retVal;
+               inv = !!inv;
+
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( var i = 0, length = elems.length; i < length; i++ ) {
+                       retVal = !!callback( elems[ i ], i );
+                       if ( inv !== retVal ) {
+                               ret.push( elems[ i ] );
+                       }
+               }
+
+               return ret;
+       },
+
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var value, key, ret = [],
+                       i = 0,
+                       length = elems.length,
+                       // jquery objects are treated as arrays
+                       isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
+
+               // Go through the array, translating each of the items to their
+               if ( isArray ) {
+                       for ( ; i < length; i++ ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret[ ret.length ] = value;
+                               }
+                       }
+
+               // Go through every key on the object,
+               } else {
+                       for ( key in elems ) {
+                               value = callback( elems[ key ], key, arg );
+
+                               if ( value != null ) {
+                                       ret[ ret.length ] = value;
+                               }
+                       }
+               }
+
+               // Flatten any nested arrays
+               return ret.concat.apply( [], ret );
+       },
+
+       // A global GUID counter for objects
+       guid: 1,
+
+       // Bind a function to a context, optionally partially applying any
+       // arguments.
+       proxy: function( fn, context ) {
+               if ( typeof context === "string" ) {
+                       var tmp = fn[ context ];
+                       context = fn;
+                       fn = tmp;
+               }
+
+               // Quick check to determine if target is callable, in the spec
+               // this throws a TypeError, but we will just return undefined.
+               if ( !jQuery.isFunction( fn ) ) {
+                       return undefined;
+               }
+
+               // Simulated bind
+               var args = slice.call( arguments, 2 ),
+                       proxy = function() {
+                               return fn.apply( context, args.concat( slice.call( arguments ) ) );
+                       };
+
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+
+               return proxy;
+       },
+
+       // Mutifunctional method to get and set values to a collection
+       // The value/s can optionally be executed if it's a function
+       access: function( elems, key, value, exec, fn, pass ) {
+               var length = elems.length;
+
+               // Setting many attributes
+               if ( typeof key === "object" ) {
+                       for ( var k in key ) {
+                               jQuery.access( elems, k, key[k], exec, fn, value );
+                       }
+                       return elems;
+               }
+
+               // Setting one attribute
+               if ( value !== undefined ) {
+                       // Optionally, function values get executed if exec is true
+                       exec = !pass && exec && jQuery.isFunction(value);
+
+                       for ( var i = 0; i < length; i++ ) {
+                               fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+                       }
+
+                       return elems;
+               }
+
+               // Getting an attribute
+               return length ? fn( elems[0], key ) : undefined;
+       },
+
+       now: function() {
+               return (new Date()).getTime();
+       },
+
+       // Use of jQuery.browser is frowned upon.
+       // More details: http://docs.jquery.com/Utilities/jQuery.browser
+       uaMatch: function( ua ) {
+               ua = ua.toLowerCase();
+
+               var match = rwebkit.exec( ua ) ||
+                       ropera.exec( ua ) ||
+                       rmsie.exec( ua ) ||
+                       ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+                       [];
+
+               return { browser: match[1] || "", version: match[2] || "0" };
+       },
+
+       sub: function() {
+               function jQuerySub( selector, context ) {
+                       return new jQuerySub.fn.init( selector, context );
+               }
+               jQuery.extend( true, jQuerySub, this );
+               jQuerySub.superclass = this;
+               jQuerySub.fn = jQuerySub.prototype = this();
+               jQuerySub.fn.constructor = jQuerySub;
+               jQuerySub.sub = this.sub;
+               jQuerySub.fn.init = function init( selector, context ) {
+                       if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+                               context = jQuerySub( context );
+                       }
+
+                       return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+               };
+               jQuerySub.fn.init.prototype = jQuerySub.fn;
+               var rootjQuerySub = jQuerySub(document);
+               return jQuerySub;
+       },
+
+       browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+       class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+       jQuery.browser[ browserMatch.browser ] = true;
+       jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+       jQuery.browser.safari = true;
+}
+
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+       trimLeft = /^[\s\xA0]+/;
+       trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+       DOMContentLoaded = function() {
+               document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+               jQuery.ready();
+       };
+
+} else if ( document.attachEvent ) {
+       DOMContentLoaded = function() {
+               // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+               if ( document.readyState === "complete" ) {
+                       document.detachEvent( "onreadystatechange", DOMContentLoaded );
+                       jQuery.ready();
+               }
+       };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+       if ( jQuery.isReady ) {
+               return;
+       }
+
+       try {
+               // If IE is used, use the trick by Diego Perini
+               // http://javascript.nwbox.com/IEContentLoaded/
+               document.documentElement.doScroll("left");
+       } catch(e) {
+               setTimeout( doScrollCheck, 1 );
+               return;
+       }
+
+       // and execute any waiting functions
+       jQuery.ready();
+}
+
+// Expose jQuery as an AMD module, but only for AMD loaders that
+// understand the issues with loading multiple versions of jQuery
+// in a page that all might call define(). The loader will indicate
+// they have special allowances for multiple jQuery versions by
+// specifying define.amd.jQuery = true. Register as a named module,
+// since jQuery can be concatenated with other files that may use define,
+// but not use a proper concatenation script that understands anonymous
+// AMD modules. A named AMD is safest and most robust way to register.
+// Lowercase jquery is used because AMD module names are derived from
+// file names, and jQuery is normally delivered in a lowercase file name.
+if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
+       define( "jquery", [], function () { return jQuery; } );
+}
+
+return jQuery;
+
+})();
+
+
+// String to Object flags format cache
+var flagsCache = {};
+
+// Convert String-formatted flags into Object-formatted ones and store in cache
+function createFlags( flags ) {
+       var object = flagsCache[ flags ] = {},
+               i, length;
+       flags = flags.split( /\s+/ );
+       for ( i = 0, length = flags.length; i < length; i++ ) {
+               object[ flags[i] ] = true;
+       }
+       return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *     flags:  an optional list of space-separated flags that will change how
+ *                     the callback list behaves
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible flags:
+ *
+ *     once:                   will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *     memory:                 will keep track of previous values and will call any callback added
+ *                                     after the list has been fired right away with the latest "memorized"
+ *                                     values (like a Deferred)
+ *
+ *     unique:                 will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *     stopOnFalse:    interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( flags ) {
+
+       // Convert flags from String-formatted to Object-formatted
+       // (we check in cache first)
+       flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
+
+       var // Actual callback list
+               list = [],
+               // Stack of fire calls for repeatable lists
+               stack = [],
+               // Last fire value (for non-forgettable lists)
+               memory,
+               // Flag to know if list is currently firing
+               firing,
+               // First callback to fire (used internally by add and fireWith)
+               firingStart,
+               // End of the loop when firing
+               firingLength,
+               // Index of currently firing callback (modified by remove if needed)
+               firingIndex,
+               // Add one or several callbacks to the list
+               add = function( args ) {
+                       var i,
+                               length,
+                               elem,
+                               type,
+                               actual;
+                       for ( i = 0, length = args.length; i < length; i++ ) {
+                               elem = args[ i ];
+                               type = jQuery.type( elem );
+                               if ( type === "array" ) {
+                                       // Inspect recursively
+                                       add( elem );
+                               } else if ( type === "function" ) {
+                                       // Add if not in unique mode and callback is not in
+                                       if ( !flags.unique || !self.has( elem ) ) {
+                                               list.push( elem );
+                                       }
+                               }
+                       }
+               },
+               // Fire callbacks
+               fire = function( context, args ) {
+                       args = args || [];
+                       memory = !flags.memory || [ context, args ];
+                       firing = true;
+                       firingIndex = firingStart || 0;
+                       firingStart = 0;
+                       firingLength = list.length;
+                       for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+                               if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
+                                       memory = true; // Mark as halted
+                                       break;
+                               }
+                       }
+                       firing = false;
+                       if ( list ) {
+                               if ( !flags.once ) {
+                                       if ( stack && stack.length ) {
+                                               memory = stack.shift();
+                                               self.fireWith( memory[ 0 ], memory[ 1 ] );
+                                       }
+                               } else if ( memory === true ) {
+                                       self.disable();
+                               } else {
+                                       list = [];
+                               }
+                       }
+               },
+               // Actual Callbacks object
+               self = {
+                       // Add a callback or a collection of callbacks to the list
+                       add: function() {
+                               if ( list ) {
+                                       var length = list.length;
+                                       add( arguments );
+                                       // Do we need to add the callbacks to the
+                                       // current firing batch?
+                                       if ( firing ) {
+                                               firingLength = list.length;
+                                       // With memory, if we're not firing then
+                                       // we should call right away, unless previous
+                                       // firing was halted (stopOnFalse)
+                                       } else if ( memory && memory !== true ) {
+                                               firingStart = length;
+                                               fire( memory[ 0 ], memory[ 1 ] );
+                                       }
+                               }
+                               return this;
+                       },
+                       // Remove a callback from the list
+                       remove: function() {
+                               if ( list ) {
+                                       var args = arguments,
+                                               argIndex = 0,
+                                               argLength = args.length;
+                                       for ( ; argIndex < argLength ; argIndex++ ) {
+                                               for ( var i = 0; i < list.length; i++ ) {
+                                                       if ( args[ argIndex ] === list[ i ] ) {
+                                                               // Handle firingIndex and firingLength
+                                                               if ( firing ) {
+                                                                       if ( i <= firingLength ) {
+                                                                               firingLength--;
+                                                                               if ( i <= firingIndex ) {
+                                                                                       firingIndex--;
+                                                                               }
+                                                                       }
+                                                               }
+                                                               // Remove the element
+                                                               list.splice( i--, 1 );
+                                                               // If we have some unicity property then
+                                                               // we only need to do this once
+                                                               if ( flags.unique ) {
+                                                                       break;
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                               return this;
+                       },
+                       // Control if a given callback is in the list
+                       has: function( fn ) {
+                               if ( list ) {
+                                       var i = 0,
+                                               length = list.length;
+                                       for ( ; i < length; i++ ) {
+                                               if ( fn === list[ i ] ) {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                               return false;
+                       },
+                       // Remove all callbacks from the list
+                       empty: function() {
+                               list = [];
+                               return this;
+                       },
+                       // Have the list do nothing anymore
+                       disable: function() {
+                               list = stack = memory = undefined;
+                               return this;
+                       },
+                       // Is it disabled?
+                       disabled: function() {
+                               return !list;
+                       },
+                       // Lock the list in its current state
+                       lock: function() {
+                               stack = undefined;
+                               if ( !memory || memory === true ) {
+                                       self.disable();
+                               }
+                               return this;
+                       },
+                       // Is it locked?
+                       locked: function() {
+                               return !stack;
+                       },
+                       // Call all callbacks with the given context and arguments
+                       fireWith: function( context, args ) {
+                               if ( stack ) {
+                                       if ( firing ) {
+                                               if ( !flags.once ) {
+                                                       stack.push( [ context, args ] );
+                                               }
+                                       } else if ( !( flags.once && memory ) ) {
+                                               fire( context, args );
+                                       }
+                               }
+                               return this;
+                       },
+                       // Call all the callbacks with the given arguments
+                       fire: function() {
+                               self.fireWith( this, arguments );
+                               return this;
+                       },
+                       // To know if the callbacks have already been called at least once
+                       fired: function() {
+                               return !!memory;
+                       }
+               };
+
+       return self;
+};
+
+
+
+
+var // Static reference to slice
+       sliceDeferred = [].slice;
+
+jQuery.extend({
+
+       Deferred: function( func ) {
+               var doneList = jQuery.Callbacks( "once memory" ),
+                       failList = jQuery.Callbacks( "once memory" ),
+                       progressList = jQuery.Callbacks( "memory" ),
+                       state = "pending",
+                       lists = {
+                               resolve: doneList,
+                               reject: failList,
+                               notify: progressList
+                       },
+                       promise = {
+                               done: doneList.add,
+                               fail: failList.add,
+                               progress: progressList.add,
+
+                               state: function() {
+                                       return state;
+                               },
+
+                               // Deprecated
+                               isResolved: doneList.fired,
+                               isRejected: failList.fired,
+
+                               then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
+                                       deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
+                                       return this;
+                               },
+                               always: function() {
+                                       return deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
+                               },
+                               pipe: function( fnDone, fnFail, fnProgress ) {
+                                       return jQuery.Deferred(function( newDefer ) {
+                                               jQuery.each( {
+                                                       done: [ fnDone, "resolve" ],
+                                                       fail: [ fnFail, "reject" ],
+                                                       progress: [ fnProgress, "notify" ]
+                                               }, function( handler, data ) {
+                                                       var fn = data[ 0 ],
+                                                               action = data[ 1 ],
+                                                               returned;
+                                                       if ( jQuery.isFunction( fn ) ) {
+                                                               deferred[ handler ](function() {
+                                                                       returned = fn.apply( this, arguments );
+                                                                       if ( returned && jQuery.isFunction( returned.promise ) ) {
+                                                                               returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
+                                                                       } else {
+                                                                               newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
+                                                                       }
+                                                               });
+                                                       } else {
+                                                               deferred[ handler ]( newDefer[ action ] );
+                                                       }
+                                               });
+                                       }).promise();
+                               },
+                               // Get a promise for this deferred
+                               // If obj is provided, the promise aspect is added to the object
+                               promise: function( obj ) {
+                                       if ( obj == null ) {
+                                               obj = promise;
+                                       } else {
+                                               for( var key in promise ) {
+                                                       obj[ key ] = promise[ key ];
+                                               }
+                                       }
+                                       return obj;
+                               }
+                       },
+                       deferred = promise.promise({}),
+                       key;
+
+               for ( key in lists ) {
+                       deferred[ key ] = lists[ key ].fire;
+                       deferred[ key + "With" ] = lists[ key ].fireWith;
+               }
+
+               // Handle state
+               deferred.done( function() {
+                       state = "resolved";
+               }, failList.disable, progressList.lock ).fail( function() {
+                       state = "rejected";
+               }, doneList.disable, progressList.lock );
+
+               // Call given func if any
+               if ( func ) {
+                       func.call( deferred, deferred );
+               }
+
+               // All done!
+               return deferred;
+       },
+
+       // Deferred helper
+       when: function( firstParam ) {
+               var args = sliceDeferred.call( arguments, 0 ),
+                       i = 0,
+                       length = args.length,
+                       pValues = new Array( length ),
+                       count = length,
+                       pCount = length,
+                       deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
+                               firstParam :
+                               jQuery.Deferred(),
+                       promise = deferred.promise();
+               function resolveFunc( i ) {
+                       return function( value ) {
+                               args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+                               if ( !( --count ) ) {
+                                       deferred.resolveWith( deferred, args );
+                               }
+                       };
+               }
+               function progressFunc( i ) {
+                       return function( value ) {
+                               pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+                               deferred.notifyWith( promise, pValues );
+                       };
+               }
+               if ( length > 1 ) {
+                       for( ; i < length; i++ ) {
+                               if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
+                                       args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
+                               } else {
+                                       --count;
+                               }
+                       }
+                       if ( !count ) {
+                               deferred.resolveWith( deferred, args );
+                       }
+               } else if ( deferred !== firstParam ) {
+                       deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
+               }
+               return promise;
+       }
+});
+
+
+
+
+jQuery.support = (function() {
+
+       var div = document.createElement( "div" ),
+               documentElement = document.documentElement,
+               all,
+               a,
+               select,
+               opt,
+               input,
+               marginDiv,
+               support,
+               fragment,
+               body,
+               testElementParent,
+               testElement,
+               testElementStyle,
+               tds,
+               events,
+               eventName,
+               i,
+               isSupported,
+               offsetSupport;
+
+       // Preliminary tests
+       div.setAttribute("className", "t");
+       div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/><nav></nav>";
+
+
+       all = div.getElementsByTagName( "*" );
+       a = div.getElementsByTagName( "a" )[ 0 ];
+
+       // Can't get basic test support
+       if ( !all || !all.length || !a ) {
+               return {};
+       }
+
+       // First batch of supports tests
+       select = document.createElement( "select" );
+       opt = select.appendChild( document.createElement("option") );
+       input = div.getElementsByTagName( "input" )[ 0 ];
+
+       support = {
+               // IE strips leading whitespace when .innerHTML is used
+               leadingWhitespace: ( div.firstChild.nodeType === 3 ),
+
+               // Make sure that tbody elements aren't automatically inserted
+               // IE will insert them into empty tables
+               tbody: !div.getElementsByTagName( "tbody" ).length,
+
+               // Make sure that link elements get serialized correctly by innerHTML
+               // This requires a wrapper element in IE
+               htmlSerialize: !!div.getElementsByTagName( "link" ).length,
+
+               // Get the style information from getAttribute
+               // (IE uses .cssText instead)
+               style: /top/.test( a.getAttribute("style") ),
+
+               // Make sure that URLs aren't manipulated
+               // (IE normalizes it by default)
+               hrefNormalized: ( a.getAttribute( "href" ) === "/a" ),
+
+               // Make sure that element opacity exists
+               // (IE uses filter instead)
+               // Use a regex to work around a WebKit issue. See #5145
+               opacity: /^0.55/.test( a.style.opacity ),
+
+               // Verify style float existence
+               // (IE uses styleFloat instead of cssFloat)
+               cssFloat: !!a.style.cssFloat,
+
+               // Make sure unknown elements (like HTML5 elems) are handled appropriately
+               unknownElems: !!div.getElementsByTagName( "nav" ).length,
+
+               // Make sure that if no value is specified for a checkbox
+               // that it defaults to "on".
+               // (WebKit defaults to "" instead)
+               checkOn: ( input.value === "on" ),
+
+               // Make sure that a selected-by-default option has a working selected property.
+               // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+               optSelected: opt.selected,
+
+               // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+               getSetAttribute: div.className !== "t",
+
+               // Will be defined later
+               submitBubbles: true,
+               changeBubbles: true,
+               focusinBubbles: false,
+               deleteExpando: true,
+               noCloneEvent: true,
+               inlineBlockNeedsLayout: false,
+               shrinkWrapBlocks: false,
+               reliableMarginRight: true
+       };
+
+       // Make sure checked status is properly cloned
+       input.checked = true;
+       support.noCloneChecked = input.cloneNode( true ).checked;
+
+       // Make sure that the options inside disabled selects aren't marked as disabled
+       // (WebKit marks them as disabled)
+       select.disabled = true;
+       support.optDisabled = !opt.disabled;
+
+       // Test to see if it's possible to delete an expando from an element
+       // Fails in Internet Explorer
+       try {
+               delete div.test;
+       } catch( e ) {
+               support.deleteExpando = false;
+       }
+
+       if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+               div.attachEvent( "onclick", function() {
+                       // Cloning a node shouldn't copy over any
+                       // bound event handlers (IE does this)
+                       support.noCloneEvent = false;
+               });
+               div.cloneNode( true ).fireEvent( "onclick" );
+       }
+
+       // Check if a radio maintains its value
+       // after being appended to the DOM
+       input = document.createElement("input");
+       input.value = "t";
+       input.setAttribute("type", "radio");
+       support.radioValue = input.value === "t";
+
+       input.setAttribute("checked", "checked");
+       div.appendChild( input );
+       fragment = document.createDocumentFragment();
+       fragment.appendChild( div.firstChild );
+
+       // WebKit doesn't clone checked state correctly in fragments
+       support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+       div.innerHTML = "";
+
+       // Figure out if the W3C box model works as expected
+       div.style.width = div.style.paddingLeft = "1px";
+
+       // We don't want to do body-related feature tests on frameset
+       // documents, which lack a body. So we use
+       // document.getElementsByTagName("body")[0], which is undefined in
+       // frameset documents, while document.body isn’t. (7398)
+       body = document.getElementsByTagName("body")[ 0 ];
+       // We use our own, invisible, body unless the body is already present
+       // in which case we use a div (#9239)
+       testElement = document.createElement( body ? "div" : "body" );
+       testElementStyle = {
+               visibility: "hidden",
+               width: 0,
+               height: 0,
+               border: 0,
+               margin: 0,
+               background: "none"
+       };
+       if ( body ) {
+               jQuery.extend( testElementStyle, {
+                       position: "absolute",
+                       left: "-999px",
+                       top: "-999px"
+               });
+       }
+       for ( i in testElementStyle ) {
+               testElement.style[ i ] = testElementStyle[ i ];
+       }
+       testElement.appendChild( div );
+       testElementParent = body || documentElement;
+       testElementParent.insertBefore( testElement, testElementParent.firstChild );
+
+       // Check if a disconnected checkbox will retain its checked
+       // value of true after appended to the DOM (IE6/7)
+       support.appendChecked = input.checked;
+
+       support.boxModel = div.offsetWidth === 2;
+
+       if ( "zoom" in div.style ) {
+               // Check if natively block-level elements act like inline-block
+               // elements when setting their display to 'inline' and giving
+               // them layout
+               // (IE < 8 does this)
+               div.style.display = "inline";
+               div.style.zoom = 1;
+               support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
+
+               // Check if elements with layout shrink-wrap their children
+               // (IE 6 does this)
+               div.style.display = "";
+               div.innerHTML = "<div style='width:4px;'></div>";
+               support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
+       }
+
+       div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
+       tds = div.getElementsByTagName( "td" );
+
+       // Check if table cells still have offsetWidth/Height when they are set
+       // to display:none and there are still other visible table cells in a
+       // table row; if so, offsetWidth/Height are not reliable for use when
+       // determining if an element has been hidden directly using
+       // display:none (it is still safe to use offsets if a parent element is
+       // hidden; don safety goggles and see bug #4512 for more information).
+       // (only IE 8 fails this test)
+       isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+       tds[ 0 ].style.display = "";
+       tds[ 1 ].style.display = "none";
+
+       // Check if empty table cells still have offsetWidth/Height
+       // (IE < 8 fail this test)
+       support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+       div.innerHTML = "";
+
+       // Check if div with explicit width and no margin-right incorrectly
+       // gets computed margin-right based on width of container. For more
+       // info see bug #3333
+       // Fails in WebKit before Feb 2011 nightlies
+       // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+       if ( document.defaultView && document.defaultView.getComputedStyle ) {
+               marginDiv = document.createElement( "div" );
+               marginDiv.style.width = "0";
+               marginDiv.style.marginRight = "0";
+               div.appendChild( marginDiv );
+               support.reliableMarginRight =
+                       ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
+       }
+
+       // Remove the body element we added
+       testElement.innerHTML = "";
+
+       // Technique from Juriy Zaytsev
+       // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
+       // We only care about the case where non-standard event systems
+       // are used, namely in IE. Short-circuiting here helps us to
+       // avoid an eval call (in setAttribute) which can cause CSP
+       // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+       if ( div.attachEvent ) {
+               for( i in {
+                       submit: 1,
+                       change: 1,
+                       focusin: 1
+               } ) {
+                       eventName = "on" + i;
+                       isSupported = ( eventName in div );
+                       if ( !isSupported ) {
+                               div.setAttribute( eventName, "return;" );
+                               isSupported = ( typeof div[ eventName ] === "function" );
+                       }
+                       support[ i + "Bubbles" ] = isSupported;
+               }
+       }
+
+       // Determine fixed-position support early
+       testElement.style.position = "static";
+       testElement.style.top = "0px";
+       testElement.style.marginTop = "1px";
+       offsetSupport = (function( body, container ) {
+
+               var outer, inner, table, td, supports,
+                       bodyMarginTop = parseFloat( body.style.marginTop ) || 0,
+                       ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",
+                       style = "style='" + ptlm + "border:5px solid #000;padding:0;'",
+                       html = "<div " + style + "><div></div></div>" +
+                                                       "<table " + style + " cellpadding='0' cellspacing='0'>" +
+                                                       "<tr><td></td></tr></table>";
+
+               container.style.cssText = ptlm + "border:0;visibility:hidden";
+
+               container.innerHTML = html;
+               body.insertBefore( container, body.firstChild );
+               outer = container.firstChild;
+               inner = outer.firstChild;
+               td = outer.nextSibling.firstChild.firstChild;
+
+               supports = {
+                       doesNotAddBorder: (inner.offsetTop !== 5),
+                       doesAddBorderForTableAndCells: (td.offsetTop === 5)
+               };
+
+               inner.style.position = "fixed";
+               inner.style.top = "20px";
+
+               // safari subtracts parent border width here which is 5px
+               supports.supportsFixedPosition = (inner.offsetTop === 20 || inner.offsetTop === 15);
+               inner.style.position = inner.style.top = "";
+
+               outer.style.overflow = "hidden";
+               outer.style.position = "relative";
+
+               supports.subtractsBorderForOverflowNotVisible = (inner.offsetTop === -5);
+               supports.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+               return supports;
+
+       })( testElement, div );
+
+       jQuery.extend( support, offsetSupport );
+       testElementParent.removeChild( testElement );
+
+       // Null connected elements to avoid leaks in IE
+       testElement = fragment = select = opt = body = marginDiv = div = input = null;
+
+       return support;
+})();
+
+// Keep track of boxModel
+jQuery.boxModel = jQuery.support.boxModel;
+
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/,
+       rmultiDash = /([A-Z])/g;
+
+jQuery.extend({
+       cache: {},
+
+       // Please use with caution
+       uuid: 0,
+
+       // Unique for each copy of jQuery on the page
+       // Non-digits removed to match rinlinejQuery
+       expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+       // The following elements throw uncatchable exceptions if you
+       // attempt to add expando properties to them.
+       noData: {
+               "embed": true,
+               // Ban all objects except for Flash (which handle expandos)
+               "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+               "applet": true
+       },
+
+       hasData: function( elem ) {
+               elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+               return !!elem && !isEmptyDataObject( elem );
+       },
+
+       data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+               if ( !jQuery.acceptData( elem ) ) {
+                       return;
+               }
+
+               var thisCache, ret,
+                       internalKey = jQuery.expando,
+                       getByName = typeof name === "string",
+
+                       // We have to handle DOM nodes and JS objects differently because IE6-7
+                       // can't GC object references properly across the DOM-JS boundary
+                       isNode = elem.nodeType,
+
+                       // Only DOM nodes need the global jQuery cache; JS object data is
+                       // attached directly to the object so GC can occur automatically
+                       cache = isNode ? jQuery.cache : elem,
+
+                       // Only defining an ID for JS objects if its cache already exists allows
+                       // the code to shortcut on the same path as a DOM node with no cache
+                       id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
+
+               // Avoid doing any more work than we need to when trying to get data on an
+               // object that has no data at all
+               if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
+                       return;
+               }
+
+               if ( !id ) {
+                       // Only DOM nodes need a new unique ID for each element since their data
+                       // ends up in the global cache
+                       if ( isNode ) {
+                               elem[ jQuery.expando ] = id = ++jQuery.uuid;
+                       } else {
+                               id = jQuery.expando;
+                       }
+               }
+
+               if ( !cache[ id ] ) {
+                       cache[ id ] = {};
+
+                       // Avoids exposing jQuery metadata on plain JS objects when the object 
+                       // is serialized using JSON.stringify
+                       if ( !isNode ) {
+                               cache[ id ].toJSON = jQuery.noop;
+                       }
+               }
+
+               // An object can be passed to jQuery.data instead of a key/value pair; this gets
+               // shallow copied over onto the existing cache
+               if ( typeof name === "object" || typeof name === "function" ) {
+                       if ( pvt ) {
+                               cache[ id ] = jQuery.extend( cache[ id ], name );
+                       } else {
+                               cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+                       }
+               }
+
+               thisCache = cache[ id ];
+
+               // jQuery data() is stored in a separate object inside the object's internal data
+               // cache in order to avoid key collisions between internal data and user-defined
+               // data.
+               if ( !pvt ) {
+                       if ( !thisCache.data ) {
+                               thisCache.data = {};
+                       }
+
+                       thisCache = thisCache.data;
+               }
+
+               if ( data !== undefined ) {
+                       thisCache[ jQuery.camelCase( name ) ] = data;
+               }
+
+               // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
+               // not attempt to inspect the internal events object using jQuery.data, as this
+               // internal data object is undocumented and subject to change.
+               if ( name === "events" && !thisCache[name] ) {
+                       return thisCache[ internalKey ] && thisCache[ internalKey ].events;
+               }
+
+               // Check for both converted-to-camel and non-converted data property names
+               // If a data property was specified
+               if ( getByName ) {
+
+                       // First Try to find as-is property data
+                       ret = thisCache[ name ];
+
+                       // Test for null|undefined property data
+                       if ( ret == null ) {
+
+                               // Try to find the camelCased property
+                               ret = thisCache[ jQuery.camelCase( name ) ];
+                       }
+               } else {
+                       ret = thisCache;
+               }
+
+               return ret;
+       },
+
+       removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+               if ( !jQuery.acceptData( elem ) ) {
+                       return;
+               }
+
+               var thisCache, i, l,
+
+                       // Reference to internal data cache key
+                       internalKey = jQuery.expando,
+
+                       isNode = elem.nodeType,
+
+                       // See jQuery.data for more information
+                       cache = isNode ? jQuery.cache : elem,
+
+                       // See jQuery.data for more information
+                       id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+               // If there is already no cache entry for this object, there is no
+               // purpose in continuing
+               if ( !cache[ id ] ) {
+                       return;
+               }
+
+               if ( name ) {
+
+                       thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+                       if ( thisCache ) {
+
+                               // Support space separated names
+                               if ( jQuery.isArray( name ) ) {
+                                       name = name;
+                               } else if ( name in thisCache ) {
+                                       name = [ name ];
+                               } else {
+
+                                       // split the camel cased version by spaces
+                                       name = jQuery.camelCase( name );
+                                       if ( name in thisCache ) {
+                                               name = [ name ];
+                                       } else {
+                                               name = name.split( " " );
+                                       }
+                               }
+
+                               for ( i = 0, l = name.length; i < l; i++ ) {
+                                       delete thisCache[ name[i] ];
+                               }
+
+                               // If there is no data left in the cache, we want to continue
+                               // and let the cache object itself get destroyed
+                               if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
+                                       return;
+                               }
+                       }
+               }
+
+               // See jQuery.data for more information
+               if ( !pvt ) {
+                       delete cache[ id ].data;
+
+                       // Don't destroy the parent cache unless the internal data object
+                       // had been the only thing left in it
+                       if ( !isEmptyDataObject(cache[ id ]) ) {
+                               return;
+                       }
+               }
+
+               // Browsers that fail expando deletion also refuse to delete expandos on
+               // the window, but it will allow it on all other JS objects; other browsers
+               // don't care
+               // Ensure that `cache` is not a window object #10080
+               if ( jQuery.support.deleteExpando || !cache.setInterval ) {
+                       delete cache[ id ];
+               } else {
+                       cache[ id ] = null;
+               }
+
+               // We destroyed the cache and need to eliminate the expando on the node to avoid
+               // false lookups in the cache for entries that no longer exist
+               if ( isNode ) {
+                       // IE does not allow us to delete expando properties from nodes,
+                       // nor does it have a removeAttribute function on Document nodes;
+                       // we must handle all of these cases
+                       if ( jQuery.support.deleteExpando ) {
+                               delete elem[ jQuery.expando ];
+                       } else if ( elem.removeAttribute ) {
+                               elem.removeAttribute( jQuery.expando );
+                       } else {
+                               elem[ jQuery.expando ] = null;
+                       }
+               }
+       },
+
+       // For internal use only.
+       _data: function( elem, name, data ) {
+               return jQuery.data( elem, name, data, true );
+       },
+
+       // A method for determining if a DOM node can handle the data expando
+       acceptData: function( elem ) {
+               if ( elem.nodeName ) {
+                       var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+                       if ( match ) {
+                               return !(match === true || elem.getAttribute("classid") !== match);
+                       }
+               }
+
+               return true;
+       }
+});
+
+jQuery.fn.extend({
+       data: function( key, value ) {
+               var parts, attr, name,
+                       data = null;
+
+               if ( typeof key === "undefined" ) {
+                       if ( this.length ) {
+                               data = jQuery.data( this[0] );
+
+                               if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
+                                       attr = this[0].attributes;
+                                       for ( var i = 0, l = attr.length; i < l; i++ ) {
+                                               name = attr[i].name;
+
+                                               if ( name.indexOf( "data-" ) === 0 ) {
+                                                       name = jQuery.camelCase( name.substring(5) );
+
+                                                       dataAttr( this[0], name, data[ name ] );
+                                               }
+                                       }
+                                       jQuery._data( this[0], "parsedAttrs", true );
+                               }
+                       }
+
+                       return data;
+
+               } else if ( typeof key === "object" ) {
+                       return this.each(function() {
+                               jQuery.data( this, key );
+                       });
+               }
+
+               parts = key.split(".");
+               parts[1] = parts[1] ? "." + parts[1] : "";
+
+               if ( value === undefined ) {
+                       data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+                       // Try to fetch any internally stored data first
+                       if ( data === undefined && this.length ) {
+                               data = jQuery.data( this[0], key );
+                               data = dataAttr( this[0], key, data );
+                       }
+
+                       return data === undefined && parts[1] ?
+                               this.data( parts[0] ) :
+                               data;
+
+               } else {
+                       return this.each(function() {
+                               var $this = jQuery( this ),
+                                       args = [ parts[0], value ];
+
+                               $this.triggerHandler( "setData" + parts[1] + "!", args );
+                               jQuery.data( this, key, value );
+                               $this.triggerHandler( "changeData" + parts[1] + "!", args );
+                       });
+               }
+       },
+
+       removeData: function( key ) {
+               return this.each(function() {
+                       jQuery.removeData( this, key );
+               });
+       }
+});
+
+function dataAttr( elem, key, data ) {
+       // If nothing was found internally, try to fetch any
+       // data from the HTML5 data-* attribute
+       if ( data === undefined && elem.nodeType === 1 ) {
+
+               var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+               data = elem.getAttribute( name );
+
+               if ( typeof data === "string" ) {
+                       try {
+                               data = data === "true" ? true :
+                               data === "false" ? false :
+                               data === "null" ? null :
+                               jQuery.isNumeric( data ) ? parseFloat( data ) :
+                                       rbrace.test( data ) ? jQuery.parseJSON( data ) :
+                                       data;
+                       } catch( e ) {}
+
+                       // Make sure we set the data so it isn't changed later
+                       jQuery.data( elem, key, data );
+
+               } else {
+                       data = undefined;
+               }
+       }
+
+       return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+       for ( var name in obj ) {
+
+               // if the public data object is empty, the private is still empty
+               if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+                       continue;
+               }
+               if ( name !== "toJSON" ) {
+                       return false;
+               }
+       }
+
+       return true;
+}
+
+
+
+
+function handleQueueMarkDefer( elem, type, src ) {
+       var deferDataKey = type + "defer",
+               queueDataKey = type + "queue",
+               markDataKey = type + "mark",
+               defer = jQuery._data( elem, deferDataKey );
+       if ( defer &&
+               ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
+               ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
+               // Give room for hard-coded callbacks to fire first
+               // and eventually mark/queue something else on the element
+               setTimeout( function() {
+                       if ( !jQuery._data( elem, queueDataKey ) &&
+                               !jQuery._data( elem, markDataKey ) ) {
+                               jQuery.removeData( elem, deferDataKey, true );
+                               defer.fire();
+                       }
+               }, 0 );
+       }
+}
+
+jQuery.extend({
+
+       _mark: function( elem, type ) {
+               if ( elem ) {
+                       type = (type || "fx") + "mark";
+                       jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
+               }
+       },
+
+       _unmark: function( force, elem, type ) {
+               if ( force !== true ) {
+                       type = elem;
+                       elem = force;
+                       force = false;
+               }
+               if ( elem ) {
+                       type = type || "fx";
+                       var key = type + "mark",
+                               count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
+                       if ( count ) {
+                               jQuery._data( elem, key, count );
+                       } else {
+                               jQuery.removeData( elem, key, true );
+                               handleQueueMarkDefer( elem, type, "mark" );
+                       }
+               }
+       },
+
+       queue: function( elem, type, data ) {
+               var q;
+               if ( elem ) {
+                       type = (type || "fx") + "queue";
+                       q = jQuery._data( elem, type );
+
+                       // Speed up dequeue by getting out quickly if this is just a lookup
+                       if ( data ) {
+                               if ( !q || jQuery.isArray(data) ) {
+                                       q = jQuery._data( elem, type, jQuery.makeArray(data) );
+                               } else {
+                                       q.push( data );
+                               }
+                       }
+                       return q || [];
+               }
+       },
+
+       dequeue: function( elem, type ) {
+               type = type || "fx";
+
+               var queue = jQuery.queue( elem, type ),
+                       fn = queue.shift(),
+                       runner = {};
+
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if ( fn === "inprogress" ) {
+                       fn = queue.shift();
+               }
+
+               if ( fn ) {
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if ( type === "fx" ) {
+                               queue.unshift( "inprogress" );
+                       }
+
+                       jQuery._data( elem, type + ".run", runner );
+                       fn.call( elem, function() {
+                               jQuery.dequeue( elem, type );
+                       }, runner );
+               }
+
+               if ( !queue.length ) {
+                       jQuery.removeData( elem, type + "queue " + type + ".run", true );
+                       handleQueueMarkDefer( elem, type, "queue" );
+               }
+       }
+});
+
+jQuery.fn.extend({
+       queue: function( type, data ) {
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+               }
+
+               if ( data === undefined ) {
+                       return jQuery.queue( this[0], type );
+               }
+               return this.each(function() {
+                       var queue = jQuery.queue( this, type, data );
+
+                       if ( type === "fx" && queue[0] !== "inprogress" ) {
+                               jQuery.dequeue( this, type );
+                       }
+               });
+       },
+       dequeue: function( type ) {
+               return this.each(function() {
+                       jQuery.dequeue( this, type );
+               });
+       },
+       // Based off of the plugin by Clint Helfers, with permission.
+       // http://blindsignals.com/index.php/2009/07/jquery-delay/
+       delay: function( time, type ) {
+               time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+               type = type || "fx";
+
+               return this.queue( type, function( next, runner ) {
+                       var timeout = setTimeout( next, time );
+                       runner.stop = function() {
+                               clearTimeout( timeout );
+                       };
+               });
+       },
+       clearQueue: function( type ) {
+               return this.queue( type || "fx", [] );
+       },
+       // Get a promise resolved when queues of a certain type
+       // are emptied (fx is the type by default)
+       promise: function( type, object ) {
+               if ( typeof type !== "string" ) {
+                       object = type;
+                       type = undefined;
+               }
+               type = type || "fx";
+               var defer = jQuery.Deferred(),
+                       elements = this,
+                       i = elements.length,
+                       count = 1,
+                       deferDataKey = type + "defer",
+                       queueDataKey = type + "queue",
+                       markDataKey = type + "mark",
+                       tmp;
+               function resolve() {
+                       if ( !( --count ) ) {
+                               defer.resolveWith( elements, [ elements ] );
+                       }
+               }
+               while( i-- ) {
+                       if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+                                       ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+                                               jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+                                       jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
+                               count++;
+                               tmp.add( resolve );
+                       }
+               }
+               resolve();
+               return defer.promise();
+       }
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+       rspace = /\s+/,
+       rreturn = /\r/g,
+       rtype = /^(?:button|input)$/i,
+       rfocusable = /^(?:button|input|object|select|textarea)$/i,
+       rclickable = /^a(?:rea)?$/i,
+       rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+       nodeHook, boolHook, fixSpecified;
+
+jQuery.fn.extend({
+       attr: function( name, value ) {
+               return jQuery.access( this, name, value, true, jQuery.attr );
+       },
+
+       removeAttr: function( name ) {
+               return this.each(function() {
+                       jQuery.removeAttr( this, name );
+               });
+       },
+
+       prop: function( name, value ) {
+               return jQuery.access( this, name, value, true, jQuery.prop );
+       },
+
+       removeProp: function( name ) {
+               name = jQuery.propFix[ name ] || name;
+               return this.each(function() {
+                       // try/catch handles cases where IE balks (such as removing a property on window)
+                       try {
+                               this[ name ] = undefined;
+                               delete this[ name ];
+                       } catch( e ) {}
+               });
+       },
+
+       addClass: function( value ) {
+               var classNames, i, l, elem,
+                       setClass, c, cl;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( j ) {
+                               jQuery( this ).addClass( value.call(this, j, this.className) );
+                       });
+               }
+
+               if ( value && typeof value === "string" ) {
+                       classNames = value.split( rspace );
+
+                       for ( i = 0, l = this.length; i < l; i++ ) {
+                               elem = this[ i ];
+
+                               if ( elem.nodeType === 1 ) {
+                                       if ( !elem.className && classNames.length === 1 ) {
+                                               elem.className = value;
+
+                                       } else {
+                                               setClass = " " + elem.className + " ";
+
+                                               for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+                                                       if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
+                                                               setClass += classNames[ c ] + " ";
+                                                       }
+                                               }
+                                               elem.className = jQuery.trim( setClass );
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       removeClass: function( value ) {
+               var classNames, i, l, elem, className, c, cl;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( j ) {
+                               jQuery( this ).removeClass( value.call(this, j, this.className) );
+                       });
+               }
+
+               if ( (value && typeof value === "string") || value === undefined ) {
+                       classNames = (value || "").split( rspace );
+
+                       for ( i = 0, l = this.length; i < l; i++ ) {
+                               elem = this[ i ];
+
+                               if ( elem.nodeType === 1 && elem.className ) {
+                                       if ( value ) {
+                                               className = (" " + elem.className + " ").replace( rclass, " " );
+                                               for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+                                                       className = className.replace(" " + classNames[ c ] + " ", " ");
+                                               }
+                                               elem.className = jQuery.trim( className );
+
+                                       } else {
+                                               elem.className = "";
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       toggleClass: function( value, stateVal ) {
+               var type = typeof value,
+                       isBool = typeof stateVal === "boolean";
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( i ) {
+                               jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+                       });
+               }
+
+               return this.each(function() {
+                       if ( type === "string" ) {
+                               // toggle individual class names
+                               var className,
+                                       i = 0,
+                                       self = jQuery( this ),
+                                       state = stateVal,
+                                       classNames = value.split( rspace );
+
+                               while ( (className = classNames[ i++ ]) ) {
+                                       // check each className given, space seperated list
+                                       state = isBool ? state : !self.hasClass( className );
+                                       self[ state ? "addClass" : "removeClass" ]( className );
+                               }
+
+                       } else if ( type === "undefined" || type === "boolean" ) {
+                               if ( this.className ) {
+                                       // store className if set
+                                       jQuery._data( this, "__className__", this.className );
+                               }
+
+                               // toggle whole className
+                               this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+                       }
+               });
+       },
+
+       hasClass: function( selector ) {
+               var className = " " + selector + " ";
+               for ( var i = 0, l = this.length; i < l; i++ ) {
+                       if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       },
+
+       val: function( value ) {
+               var hooks, ret,
+                       elem = this[0];
+
+               if ( !arguments.length ) {
+                       if ( elem ) {
+                               hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
+
+                               if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+                                       return ret;
+                               }
+
+                               ret = elem.value;
+
+                               return typeof ret === "string" ?
+                                       // handle most common string cases
+                                       ret.replace(rreturn, "") :
+                                       // handle cases where value is null/undef or number
+                                       ret == null ? "" : ret;
+                       }
+
+                       return undefined;
+               }
+
+               var isFunction = jQuery.isFunction( value );
+
+               return this.each(function( i ) {
+                       var self = jQuery(this), val;
+
+                       if ( this.nodeType !== 1 ) {
+                               return;
+                       }
+
+                       if ( isFunction ) {
+                               val = value.call( this, i, self.val() );
+                       } else {
+                               val = value;
+                       }
+
+                       // Treat null/undefined as ""; convert numbers to string
+                       if ( val == null ) {
+                               val = "";
+                       } else if ( typeof val === "number" ) {
+                               val += "";
+                       } else if ( jQuery.isArray( val ) ) {
+                               val = jQuery.map(val, function ( value ) {
+                                       return value == null ? "" : value + "";
+                               });
+                       }
+
+                       hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
+
+                       // If set returns undefined, fall back to normal setting
+                       if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+                               this.value = val;
+                       }
+               });
+       }
+});
+
+jQuery.extend({
+       valHooks: {
+               option: {
+                       get: function( elem ) {
+                               // attributes.value is undefined in Blackberry 4.7 but
+                               // uses .value. See #6932
+                               var val = elem.attributes.value;
+                               return !val || val.specified ? elem.value : elem.text;
+                       }
+               },
+               select: {
+                       get: function( elem ) {
+                               var value,
+                                       index = elem.selectedIndex,
+                                       values = [],
+                                       options = elem.options,
+                                       one = elem.type === "select-one";
+
+                               // Nothing was selected
+                               if ( index < 0 ) {
+                                       return null;
+                               }
+
+                               // Loop through all the selected options
+                               for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+                                       var option = options[ i ];
+
+                                       // Don't return options that are disabled or in a disabled optgroup
+                                       if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+                                                       (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+                                               // Get the specific value for the option
+                                               value = jQuery( option ).val();
+
+                                               // We don't need an array for one selects
+                                               if ( one ) {
+                                                       return value;
+                                               }
+
+                                               // Multi-Selects return an array
+                                               values.push( value );
+                                       }
+                               }
+
+                               // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+                               if ( one && !values.length && options.length ) {
+                                       return jQuery( options[ index ] ).val();
+                               }
+
+                               return values;
+                       },
+
+                       set: function( elem, value ) {
+                               var values = jQuery.makeArray( value );
+
+                               jQuery(elem).find("option").each(function() {
+                                       this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+                               });
+
+                               if ( !values.length ) {
+                                       elem.selectedIndex = -1;
+                               }
+                               return values;
+                       }
+               }
+       },
+
+       attrFn: {
+               val: true,
+               css: true,
+               html: true,
+               text: true,
+               data: true,
+               width: true,
+               height: true,
+               offset: true
+       },
+
+       attr: function( elem, name, value, pass ) {
+               var nType = elem.nodeType;
+
+               // don't get/set attributes on text, comment and attribute nodes
+               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+                       return undefined;
+               }
+
+               if ( pass && name in jQuery.attrFn ) {
+                       return jQuery( elem )[ name ]( value );
+               }
+
+               // Fallback to prop when attributes are not supported
+               if ( !("getAttribute" in elem) ) {
+                       return jQuery.prop( elem, name, value );
+               }
+
+               var ret, hooks,
+                       notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+               // Normalize the name if needed
+               if ( notxml ) {
+                       name = name.toLowerCase();
+                       hooks = jQuery.attrHooks[ name ] || (rboolean.test( name ) ? boolHook : nodeHook);
+               }
+
+               if ( value !== undefined ) {
+
+                       if ( value === null ) {
+                               jQuery.removeAttr( elem, name );
+                               return undefined;
+
+                       } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+                               return ret;
+
+                       } else {
+                               elem.setAttribute( name, "" + value );
+                               return value;
+                       }
+
+               } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+                       return ret;
+
+               } else {
+
+                       ret = elem.getAttribute( name );
+
+                       // Non-existent attributes return null, we normalize to undefined
+                       return ret === null ?
+                               undefined :
+                               ret;
+               }
+       },
+
+       removeAttr: function( elem, value ) {
+               var propName, attrNames, name, l,
+                       i = 0;
+
+               if ( elem.nodeType === 1 ) {
+                       attrNames = (value || "").split( rspace );
+                       l = attrNames.length;
+
+                       for ( ; i < l; i++ ) {
+                               name = attrNames[ i ].toLowerCase();
+
+                               // See #9699 for explanation of this approach (setting first, then removal)
+                               jQuery.attr( elem, name, "" );
+                               elem.removeAttribute( name );
+
+                               // Set corresponding property to false for boolean attributes
+                               if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
+                                       elem[ propName ] = false;
+                               }
+                       }
+               }
+       },
+
+       attrHooks: {
+               type: {
+                       set: function( elem, value ) {
+                               // We can't allow the type property to be changed (since it causes problems in IE)
+                               if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
+                                       jQuery.error( "type property can't be changed" );
+                               } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+                                       // Setting the type on a radio button after the value resets the value in IE6-9
+                                       // Reset value to it's default in case type is set after value
+                                       // This is for element creation
+                                       var val = elem.value;
+                                       elem.setAttribute( "type", value );
+                                       if ( val ) {
+                                               elem.value = val;
+                                       }
+                                       return value;
+                               }
+                       }
+               },
+               // Use the value property for back compat
+               // Use the nodeHook for button elements in IE6/7 (#1954)
+               value: {
+                       get: function( elem, name ) {
+                               if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+                                       return nodeHook.get( elem, name );
+                               }
+                               return name in elem ?
+                                       elem.value :
+                                       null;
+                       },
+                       set: function( elem, value, name ) {
+                               if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+                                       return nodeHook.set( elem, value, name );
+                               }
+                               // Does not return so that setAttribute is also used
+                               elem.value = value;
+                       }
+               }
+       },
+
+       propFix: {
+               tabindex: "tabIndex",
+               readonly: "readOnly",
+               "for": "htmlFor",
+               "class": "className",
+               maxlength: "maxLength",
+               cellspacing: "cellSpacing",
+               cellpadding: "cellPadding",
+               rowspan: "rowSpan",
+               colspan: "colSpan",
+               usemap: "useMap",
+               frameborder: "frameBorder",
+               contenteditable: "contentEditable"
+       },
+
+       prop: function( elem, name, value ) {
+               var nType = elem.nodeType;
+
+               // don't get/set properties on text, comment and attribute nodes
+               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+                       return undefined;
+               }
+
+               var ret, hooks,
+                       notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+               if ( notxml ) {
+                       // Fix name and attach hooks
+                       name = jQuery.propFix[ name ] || name;
+                       hooks = jQuery.propHooks[ name ];
+               }
+
+               if ( value !== undefined ) {
+                       if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+                               return ret;
+
+                       } else {
+                               return (elem[ name ] = value);
+                       }
+
+               } else {
+                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+                               return ret;
+
+                       } else {
+                               return elem[ name ];
+                       }
+               }
+       },
+
+       propHooks: {
+               tabIndex: {
+                       get: function( elem ) {
+                               // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+                               // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+                               var attributeNode = elem.getAttributeNode("tabindex");
+
+                               return attributeNode && attributeNode.specified ?
+                                       parseInt( attributeNode.value, 10 ) :
+                                       rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+                                               0 :
+                                               undefined;
+                       }
+               }
+       }
+});
+
+// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
+jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
+
+// Hook for boolean attributes
+boolHook = {
+       get: function( elem, name ) {
+               // Align boolean attributes with corresponding properties
+               // Fall back to attribute presence where some booleans are not supported
+               var attrNode,
+                       property = jQuery.prop( elem, name );
+               return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
+                       name.toLowerCase() :
+                       undefined;
+       },
+       set: function( elem, value, name ) {
+               var propName;
+               if ( value === false ) {
+                       // Remove boolean attributes when set to false
+                       jQuery.removeAttr( elem, name );
+               } else {
+                       // value is true since we know at this point it's type boolean and not false
+                       // Set boolean attributes to the same name and set the DOM property
+                       propName = jQuery.propFix[ name ] || name;
+                       if ( propName in elem ) {
+                               // Only set the IDL specifically if it already exists on the element
+                               elem[ propName ] = true;
+                       }
+
+                       elem.setAttribute( name, name.toLowerCase() );
+               }
+               return name;
+       }
+};
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !jQuery.support.getSetAttribute ) {
+
+       fixSpecified = {
+               name: true,
+               id: true
+       };
+
+       // Use this for any attribute in IE6/7
+       // This fixes almost every IE6/7 issue
+       nodeHook = jQuery.valHooks.button = {
+               get: function( elem, name ) {
+                       var ret;
+                       ret = elem.getAttributeNode( name );
+                       return ret && (fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified) ?
+                               ret.nodeValue :
+                               undefined;
+               },
+               set: function( elem, value, name ) {
+                       // Set the existing or create a new attribute node
+                       var ret = elem.getAttributeNode( name );
+                       if ( !ret ) {
+                               ret = document.createAttribute( name );
+                               elem.setAttributeNode( ret );
+                       }
+                       return (ret.nodeValue = value + "");
+               }
+       };
+
+       // Apply the nodeHook to tabindex
+       jQuery.attrHooks.tabindex.set = nodeHook.set;
+
+       // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+       // This is for removals
+       jQuery.each([ "width", "height" ], function( i, name ) {
+               jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+                       set: function( elem, value ) {
+                               if ( value === "" ) {
+                                       elem.setAttribute( name, "auto" );
+                                       return value;
+                               }
+                       }
+               });
+       });
+
+       // Set contenteditable to false on removals(#10429)
+       // Setting to empty string throws an error as an invalid value
+       jQuery.attrHooks.contenteditable = {
+               get: nodeHook.get,
+               set: function( elem, value, name ) {
+                       if ( value === "" ) {
+                               value = "false";
+                       }
+                       nodeHook.set( elem, value, name );
+               }
+       };
+}
+
+
+// Some attributes require a special call on IE
+if ( !jQuery.support.hrefNormalized ) {
+       jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+               jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+                       get: function( elem ) {
+                               var ret = elem.getAttribute( name, 2 );
+                               return ret === null ? undefined : ret;
+                       }
+               });
+       });
+}
+
+if ( !jQuery.support.style ) {
+       jQuery.attrHooks.style = {
+               get: function( elem ) {
+                       // Return undefined in the case of empty string
+                       // Normalize to lowercase since IE uppercases css property names
+                       return elem.style.cssText.toLowerCase() || undefined;
+               },
+               set: function( elem, value ) {
+                       return (elem.style.cssText = "" + value);
+               }
+       };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+       jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+               get: function( elem ) {
+                       var parent = elem.parentNode;
+
+                       if ( parent ) {
+                               parent.selectedIndex;
+
+                               // Make sure that it also works with optgroups, see #5701
+                               if ( parent.parentNode ) {
+                                       parent.parentNode.selectedIndex;
+                               }
+                       }
+                       return null;
+               }
+       });
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+       jQuery.each([ "radio", "checkbox" ], function() {
+               jQuery.valHooks[ this ] = {
+                       get: function( elem ) {
+                               // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+                               return elem.getAttribute("value") === null ? "on" : elem.value;
+                       }
+               };
+       });
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+       jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+               set: function( elem, value ) {
+                       if ( jQuery.isArray( value ) ) {
+                               return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);
+                       }
+               }
+       });
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+       rformElems = /^(?:textarea|input|select)$/i,
+       rperiod = /\./g,
+       rspaces = / /g,
+       rescape = /[^\w\s.|`]/g,
+       rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
+       rhoverHack = /\bhover(\.\S+)?/,
+       rkeyEvent = /^key/,
+       rmouseEvent = /^(?:mouse|contextmenu)|click/,
+       rquickIs = /^([\w\-]+)?(?:#([\w\-]+))?(?:\.([\w\-]+))?(?:\[([\w+\-]+)=["']?([\w\-]*)["']?\])?$/,
+       quickParse = function( selector ) {
+               var quick = rquickIs.exec( selector );
+               if ( quick ) {
+                       //   0  1    2   3      4         5
+                       // [ _, tag, id, class, attrName, attrValue ]
+                       quick[1] = ( quick[1] || "" ).toLowerCase();
+                       quick[3] = quick[3] && new RegExp( "\\b" + quick[3] + "\\b" );
+               }
+               return quick;
+       },
+       quickIs = function( elem, m ) {
+               return (
+                       (!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
+                       (!m[2] || elem.id === m[2]) &&
+                       (!m[3] || m[3].test( elem.className )) &&
+                       (!m[4] || elem.getAttribute( m[4] ) == m[5])
+               );
+       };
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+       add: function( elem, types, handler, data, selector ) {
+
+               var elemData, eventHandle, events,
+                       t, tns, type, namespaces, handleObj,
+                       handleObjIn, quick, handlers, special;
+
+               // Don't attach events to noData or text/comment nodes (allow plain objects tho)
+               if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
+                       return;
+               }
+
+               // Caller can pass in an object of custom data in lieu of the handler
+               if ( handler.handler ) {
+                       handleObjIn = handler;
+                       handler = handleObjIn.handler;
+               }
+
+               // Make sure that the handler has a unique ID, used to find/remove it later
+               if ( !handler.guid ) {
+                       handler.guid = jQuery.guid++;
+               }
+
+               // Init the element's event structure and main handler, if this is the first
+               events = elemData.events;
+               if ( !events ) {
+                       elemData.events = events = {};
+               }
+               eventHandle = elemData.handle;
+               if ( !eventHandle ) {
+                       elemData.handle = eventHandle = function( e ) {
+                               // Discard the second event of a jQuery.event.trigger() and
+                               // when an event is called after a page has unloaded
+                               return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
+                                       jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+                                       undefined;
+                       };
+                       // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+                       eventHandle.elem = elem;
+               }
+
+               // Handle multiple events separated by a space
+               // jQuery(...).bind("mouseover mouseout", fn);
+               types = types.replace( rhoverHack, "mouseover$1 mouseout$1" ).split( " " );
+               for ( t = 0; t < types.length; t++ ) {
+
+                       tns = rtypenamespace.exec( types[t] ) || [];
+                       type = tns[1];
+                       namespaces = (tns[2] || "").split( "." ).sort();
+
+                       // If event changes its type, use the special event handlers for the changed type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // If selector defined, determine special event api type, otherwise given type
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+
+                       // Update special based on newly reset type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // handleObj is passed to all event handlers
+                       handleObj = jQuery.extend({
+                               type: type,
+                               origType: tns[1],
+                               data: data,
+                               handler: handler,
+                               guid: handler.guid,
+                               selector: selector,
+                               namespace: namespaces.join(".")
+                       }, handleObjIn );
+
+                       // Delegated event; pre-analyze selector so it's processed quickly on event dispatch
+                       if ( selector ) {
+                               handleObj.quick = quickParse( selector );
+                               if ( !handleObj.quick && jQuery.expr.match.POS.test( selector ) ) {
+                                       handleObj.isPositional = true;
+                               }
+                       }
+
+                       // Init the event handler queue if we're the first
+                       handlers = events[ type ];
+                       if ( !handlers ) {
+                               handlers = events[ type ] = [];
+                               handlers.delegateCount = 0;
+
+                               // Only use addEventListener/attachEvent if the special events handler returns false
+                               if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+                                       // Bind the global event handler to the element
+                                       if ( elem.addEventListener ) {
+                                               elem.addEventListener( type, eventHandle, false );
+
+                                       } else if ( elem.attachEvent ) {
+                                               elem.attachEvent( "on" + type, eventHandle );
+                                       }
+                               }
+                       }
+
+                       if ( special.add ) {
+                               special.add.call( elem, handleObj );
+
+                               if ( !handleObj.handler.guid ) {
+                                       handleObj.handler.guid = handler.guid;
+                               }
+                       }
+
+                       // Add to the element's handler list, delegates in front
+                       if ( selector ) {
+                               handlers.splice( handlers.delegateCount++, 0, handleObj );
+                       } else {
+                               handlers.push( handleObj );
+                       }
+
+                       // Keep track of which events have ever been used, for event optimization
+                       jQuery.event.global[ type ] = true;
+               }
+
+               // Nullify elem to prevent memory leaks in IE
+               elem = null;
+       },
+
+       global: {},
+
+       // Detach an event or set of events from an element
+       remove: function( elem, types, handler, selector ) {
+
+               var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
+                       t, tns, type, namespaces, origCount,
+                       j, events, special, handle, eventType, handleObj;
+
+               if ( !elemData || !(events = elemData.events) ) {
+                       return;
+               }
+
+               // For removal, types can be an Event object
+               if ( types && types.type && types.handler ) {
+                       handler = types.handler;
+                       types = types.type;
+                       selector = types.selector;
+               }
+
+               // Once for each type.namespace in types; type may be omitted
+               types = (types || "").replace( rhoverHack, "mouseover$1 mouseout$1" ).split(" ");
+               for ( t = 0; t < types.length; t++ ) {
+                       tns = rtypenamespace.exec( types[t] ) || [];
+                       type = tns[1];
+                       namespaces = tns[2];
+
+                       // Unbind all events (on this namespace, if provided) for the element
+                       if ( !type ) {
+                               namespaces = namespaces? "." + namespaces : "";
+                               for ( j in events ) {
+                                       jQuery.event.remove( elem, j + namespaces, handler, selector );
+                               }
+                               return;
+                       }
+
+                       special = jQuery.event.special[ type ] || {};
+                       type = ( selector? special.delegateType : special.bindType ) || type;
+                       eventType = events[ type ] || [];
+                       origCount = eventType.length;
+                       namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+
+                       // Only need to loop for special events or selective removal
+                       if ( handler || namespaces || selector || special.remove ) {
+                               for ( j = 0; j < eventType.length; j++ ) {
+                                       handleObj = eventType[ j ];
+
+                                       if ( !handler || handler.guid === handleObj.guid ) {
+                                               if ( !namespaces || namespaces.test( handleObj.namespace ) ) {
+                                                       if ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) {
+                                                               eventType.splice( j--, 1 );
+
+                                                               if ( handleObj.selector ) {
+                                                                       eventType.delegateCount--;
+                                                               }
+                                                               if ( special.remove ) {
+                                                                       special.remove.call( elem, handleObj );
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       } else {
+                               // Removing all events
+                               eventType.length = 0;
+                       }
+
+                       // Remove generic event handler if we removed something and no more handlers exist
+                       // (avoids potential for endless recursion during removal of special event handlers)
+                       if ( eventType.length === 0 && origCount !== eventType.length ) {
+                               if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+                                       jQuery.removeEvent( elem, type, elemData.handle );
+                               }
+
+                               delete events[ type ];
+                       }
+               }
+
+               // Remove the expando if it's no longer used
+               if ( jQuery.isEmptyObject( events ) ) {
+                       handle = elemData.handle;
+                       if ( handle ) {
+                               handle.elem = null;
+                       }
+
+                       // removeData also checks for emptiness and clears the expando if empty
+                       // so use it instead of delete
+                       jQuery.removeData( elem, [ "events", "handle" ], true );
+               }
+       },
+
+       // Events that are safe to short-circuit if no handlers are attached.
+       // Native DOM events should not be added, they may have inline handlers.
+       customEvent: {
+               "getData": true,
+               "setData": true,
+               "changeData": true
+       },
+
+       trigger: function( event, data, elem, onlyHandlers ) {
+               // Don't do events on text and comment nodes
+               if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
+                       return;
+               }
+
+               // Event object or event type
+               var type = event.type || event,
+                       namespaces = [],
+                       cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
+
+               if ( type.indexOf( "!" ) >= 0 ) {
+                       // Exclusive events trigger only for the exact event (no namespaces)
+                       type = type.slice(0, -1);
+                       exclusive = true;
+               }
+
+               if ( type.indexOf( "." ) >= 0 ) {
+                       // Namespaced trigger; create a regexp to match event type in handle()
+                       namespaces = type.split(".");
+                       type = namespaces.shift();
+                       namespaces.sort();
+               }
+
+               if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
+                       // No jQuery handlers for this event type, and it can't have inline handlers
+                       return;
+               }
+
+               // Caller can pass in an Event, Object, or just an event type string
+               event = typeof event === "object" ?
+                       // jQuery.Event object
+                       event[ jQuery.expando ] ? event :
+                       // Object literal
+                       new jQuery.Event( type, event ) :
+                       // Just the event type (string)
+                       new jQuery.Event( type );
+
+               event.type = type;
+               event.isTrigger = true;
+               event.exclusive = exclusive;
+               event.namespace = namespaces.join( "." );
+               event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+               ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
+
+               // triggerHandler() and global events don't bubble or run the default action
+               if ( onlyHandlers || !elem ) {
+                       event.preventDefault();
+               }
+
+               // Handle a global trigger
+               if ( !elem ) {
+
+                       // TODO: Stop taunting the data cache; remove global events and always attach to document
+                       cache = jQuery.cache;
+                       event.stopPropagation();
+                       for ( i in cache ) {
+                               if ( cache[ i ].events && cache[ i ].events[ type ] ) {
+                                       jQuery.event.trigger( event, data, cache[ i ].handle.elem );
+                               }
+                       }
+                       return;
+               }
+
+               // Clean up the event in case it is being reused
+               event.result = undefined;
+               if ( !event.target ) {
+                       event.target = elem;
+               }
+
+               // Clone any incoming data and prepend the event, creating the handler arg list
+               data = data != null ? jQuery.makeArray( data ) : [];
+               data.unshift( event );
+
+               // Allow special events to draw outside the lines
+               special = jQuery.event.special[ type ] || {};
+               if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
+                       return;
+               }
+
+               // Determine event propagation path in advance, per W3C events spec (#9951)
+               // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+               eventPath = [[ elem, special.bindType || type ]];
+               if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+                       bubbleType = special.delegateType || type;
+                       old = null;
+                       for ( cur = elem.parentNode; cur; cur = cur.parentNode ) {
+                               eventPath.push([ cur, bubbleType ]);
+                               old = cur;
+                       }
+
+                       // Only add window if we got to document (e.g., not plain obj or detached DOM)
+                       if ( old && old === elem.ownerDocument ) {
+                               eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
+                       }
+               }
+
+               // Fire handlers on the event path
+               for ( i = 0; i < eventPath.length; i++ ) {
+
+                       cur = eventPath[i][0];
+                       event.type = eventPath[i][1];
+
+                       handle = (jQuery._data( cur, "events" ) || {})[ event.type ] && jQuery._data( cur, "handle" );
+                       if ( handle ) {
+                               handle.apply( cur, data );
+                       }
+                       handle = ontype && cur[ ontype ];
+                       if ( handle && jQuery.acceptData( cur ) ) {
+                               handle.apply( cur, data );
+                       }
+
+                       if ( event.isPropagationStopped() ) {
+                               break;
+                       }
+               }
+               event.type = type;
+
+               // If nobody prevented the default action, do it now
+               if ( !event.isDefaultPrevented() ) {
+
+                       if ( (!special._default || special._default.call( elem.ownerDocument, event, data ) === false) &&
+                               !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+
+                               // Call a native DOM method on the target with the same name name as the event.
+                               // Can't use an .isFunction() check here because IE6/7 fails that test.
+                               // Don't do default actions on window, that's where global variables be (#6170)
+                               // IE<9 dies on focus/blur to hidden element (#1486)
+                               if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
+
+                                       // Don't re-trigger an onFOO event when we call its FOO() method
+                                       old = elem[ ontype ];
+
+                                       if ( old ) {
+                                               elem[ ontype ] = null;
+                                       }
+
+                                       // Prevent re-triggering of the same event, since we already bubbled it above
+                                       jQuery.event.triggered = type;
+                                       elem[ type ]();
+                                       jQuery.event.triggered = undefined;
+
+                                       if ( old ) {
+                                               elem[ ontype ] = old;
+                                       }
+                               }
+                       }
+               }
+
+               return event.result;
+       },
+
+       handle: function( event ) {
+
+               // Make a writable jQuery.Event from the native event object
+               event = jQuery.event.fix( event || window.event );
+
+               var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []),
+                       delegateCount = handlers.delegateCount,
+                       args = [].slice.call( arguments, 0 ),
+                       handlerQueue = [],
+                       i, cur, selMatch, matches, handleObj, sel, hit, related;
+
+               // Use the fix-ed jQuery.Event rather than the (read-only) native event
+               args[0] = event;
+
+               // Determine handlers that should run if there are delegated events
+               // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
+               if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
+
+                       for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
+                               selMatch = {};
+                               matches = [];
+                               for ( i = 0; i < delegateCount; i++ ) {
+                                       handleObj = handlers[ i ];
+                                       sel = handleObj.selector;
+                                       hit = selMatch[ sel ];
+
+                                       if ( handleObj.isPositional ) {
+                                               // Since .is() does not work for positionals; see http://jsfiddle.net/eJ4yd/3/
+                                               hit = ( hit || (selMatch[ sel ] = jQuery( sel )) ).index( cur ) >= 0;
+                                       } else if ( hit === undefined ) {
+                                               hit = selMatch[ sel ] = ( handleObj.quick ? quickIs( cur, handleObj.quick ) : jQuery( cur ).is( sel ) );
+                                       }
+                                       if ( hit ) {
+                                               matches.push( handleObj );
+                                       }
+                               }
+                               if ( matches.length ) {
+                                       handlerQueue.push({ elem: cur, matches: matches });
+                               }
+                       }
+               }
+
+               // Copy the remaining (bound) handlers in case they're changed
+               handlers = handlers.slice( delegateCount );
+
+               // Run delegates first; they may want to stop propagation beneath us
+               event.delegateTarget = this;
+               for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
+                       matched = handlerQueue[ i ];
+                       dispatch( matched.elem, event, matched.matches, args );
+               }
+               delete event.delegateTarget;
+
+               // Run non-delegated handlers for this level
+               if ( handlers.length ) {
+                       dispatch( this, event, handlers, args );
+               }
+
+               return event.result;
+       },
+
+       // Includes some event props shared by KeyEvent and MouseEvent
+       // *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
+       props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+       fixHooks: {},
+
+       keyHooks: {
+               props: "char charCode key keyCode".split(" "),
+               filter: function( event, original ) {
+
+                       // Add which for key events
+                       if ( event.which == null ) {
+                               event.which = original.charCode != null ? original.charCode : original.keyCode;
+                       }
+
+                       return event;
+               }
+       },
+
+       mouseHooks: {
+               props: "button buttons clientX clientY fromElement layerX layerY offsetX offsetY pageX pageY screenX screenY toElement wheelDelta".split(" "),
+               filter: function( event, original ) {
+                       var eventDoc, doc, body,
+                               button = original.button,
+                               fromElement = original.fromElement;
+
+                       // Calculate pageX/Y if missing and clientX/Y available
+                       if ( event.pageX == null && original.clientX != null ) {
+                               eventDoc = event.target.ownerDocument || document;
+                               doc = eventDoc.documentElement;
+                               body = eventDoc.body;
+
+                               event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+                               event.pageY = original.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);
+                       }
+
+                       // Add relatedTarget, if necessary
+                       if ( !event.relatedTarget && fromElement ) {
+                               event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+                       }
+
+                       // Add which for click: 1 === left; 2 === middle; 3 === right
+                       // Note: button is not normalized, so don't use it
+                       if ( !event.which && button !== undefined ) {
+                               event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+                       }
+
+                       return event;
+               }
+       },
+
+       fix: function( event ) {
+               if ( event[ jQuery.expando ] ) {
+                       return event;
+               }
+
+               // Create a writable copy of the event object and normalize some properties
+               var i, prop,
+                       originalEvent = event,
+                       fixHook = jQuery.event.fixHooks[ event.type ] || {},
+                       copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+               event = jQuery.Event( originalEvent );
+
+               for ( i = copy.length; i; ) {
+                       prop = copy[ --i ];
+                       event[ prop ] = originalEvent[ prop ];
+               }
+
+               // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
+               if ( !event.target ) {
+                       event.target = originalEvent.srcElement || document;
+               }
+
+               // Target should not be a text node (#504, Safari)
+               if ( event.target.nodeType === 3 ) {
+                       event.target = event.target.parentNode;
+               }
+
+               // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
+               if ( event.metaKey === undefined ) {
+                       event.metaKey = event.ctrlKey;
+               }
+
+               return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
+       },
+
+       special: {
+               ready: {
+                       // Make sure the ready event is setup
+                       setup: jQuery.bindReady
+               },
+
+               focus: {
+                       delegateType: "focusin",
+                       noBubble: true
+               },
+               blur: {
+                       delegateType: "focusout",
+                       noBubble: true
+               },
+
+               beforeunload: {
+                       setup: function( data, namespaces, eventHandle ) {
+                               // We only want to do this special case on windows
+                               if ( jQuery.isWindow( this ) ) {
+                                       this.onbeforeunload = eventHandle;
+                               }
+                       },
+
+                       teardown: function( namespaces, eventHandle ) {
+                               if ( this.onbeforeunload === eventHandle ) {
+                                       this.onbeforeunload = null;
+                               }
+                       }
+               }
+       },
+
+       simulate: function( type, elem, event, bubble ) {
+               // Piggyback on a donor event to simulate a different one.
+               // Fake originalEvent to avoid donor's stopPropagation, but if the
+               // simulated event prevents default then we do the same on the donor.
+               var e = jQuery.extend(
+                       new jQuery.Event(),
+                       event,
+                       { type: type,
+                               isSimulated: true,
+                               originalEvent: {}
+                       }
+               );
+               if ( bubble ) {
+                       jQuery.event.trigger( e, null, elem );
+               } else {
+                       jQuery.event.handle.call( elem, e );
+               }
+               if ( e.isDefaultPrevented() ) {
+                       event.preventDefault();
+               }
+       }
+};
+
+// Run jQuery handler functions; called from jQuery.event.handle
+function dispatch( target, event, handlers, args ) {
+       var run_all = !event.exclusive && !event.namespace,
+               specialHandle = ( jQuery.event.special[ event.type ] || {} ).handle,
+               j, handleObj, ret;
+
+       event.currentTarget = target;
+       for ( j = 0; j < handlers.length && !event.isImmediatePropagationStopped(); j++ ) {
+               handleObj = handlers[ j ];
+
+               // Triggered event must either 1) be non-exclusive and have no namespace, or
+               // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+               if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
+
+                       // Pass in a reference to the handler function itself
+                       // So that we can later remove it
+                       event.handler = handleObj.handler;
+                       event.data = handleObj.data;
+                       event.handleObj = handleObj;
+
+                       ret = ( specialHandle || handleObj.handler ).apply( target, args );
+
+                       if ( ret !== undefined ) {
+                               event.result = ret;
+                               if ( ret === false ) {
+                                       event.preventDefault();
+                                       event.stopPropagation();
+                               }
+                       }
+               }
+       }
+}
+
+jQuery.removeEvent = document.removeEventListener ?
+       function( elem, type, handle ) {
+               if ( elem.removeEventListener ) {
+                       elem.removeEventListener( type, handle, false );
+               }
+       } :
+       function( elem, type, handle ) {
+               if ( elem.detachEvent ) {
+                       elem.detachEvent( "on" + type, handle );
+               }
+       };
+
+jQuery.Event = function( src, props ) {
+       // Allow instantiation without the 'new' keyword
+       if ( !(this instanceof jQuery.Event) ) {
+               return new jQuery.Event( src, props );
+       }
+
+       // Event object
+       if ( src && src.type ) {
+               this.originalEvent = src;
+               this.type = src.type;
+
+               // Events bubbling up the document may have been marked as prevented
+               // by a handler lower down the tree; reflect the correct value.
+               this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+                       src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+       // Event type
+       } else {
+               this.type = src;
+       }
+
+       // Put explicitly provided properties onto the event object
+       if ( props ) {
+               jQuery.extend( this, props );
+       }
+
+       // Create a timestamp if incoming event doesn't have one
+       this.timeStamp = src && src.timeStamp || jQuery.now();
+
+       // Mark it as fixed
+       this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+       return false;
+}
+function returnTrue() {
+       return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+       preventDefault: function() {
+               this.isDefaultPrevented = returnTrue;
+
+               var e = this.originalEvent;
+               if ( !e ) {
+                       return;
+               }
+
+               // if preventDefault exists run it on the original event
+               if ( e.preventDefault ) {
+                       e.preventDefault();
+
+               // otherwise set the returnValue property of the original event to false (IE)
+               } else {
+                       e.returnValue = false;
+               }
+       },
+       stopPropagation: function() {
+               this.isPropagationStopped = returnTrue;
+
+               var e = this.originalEvent;
+               if ( !e ) {
+                       return;
+               }
+               // if stopPropagation exists run it on the original event
+               if ( e.stopPropagation ) {
+                       e.stopPropagation();
+               }
+               // otherwise set the cancelBubble property of the original event to true (IE)
+               e.cancelBubble = true;
+       },
+       stopImmediatePropagation: function() {
+               this.isImmediatePropagationStopped = returnTrue;
+               this.stopPropagation();
+       },
+       isDefaultPrevented: returnFalse,
+       isPropagationStopped: returnFalse,
+       isImmediatePropagationStopped: returnFalse
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+       mouseenter: "mouseover",
+       mouseleave: "mouseout"
+}, function( orig, fix ) {
+       jQuery.event.special[ orig ] = jQuery.event.special[ fix ] = {
+               delegateType: fix,
+               bindType: fix,
+
+               handle: function( event ) {
+                       var target = this,
+                               related = event.relatedTarget,
+                               handleObj = event.handleObj,
+                               selector = handleObj.selector,
+                               oldType, ret;
+
+                       // For a real mouseover/out, always call the handler; for
+                       // mousenter/leave call the handler if related is outside the target.
+                       // NB: No relatedTarget if the mouse left/entered the browser window
+                       if ( !related || handleObj.origType === event.type || (related !== target && !jQuery.contains( target, related )) ) {
+                               oldType = event.type;
+                               event.type = handleObj.origType;
+                               ret = handleObj.handler.apply( this, arguments );
+                               event.type = oldType;
+                       }
+                       return ret;
+               }
+       };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+       jQuery.event.special.submit = {
+               setup: function() {
+                       // Only need this for delegated form submit events
+                       if ( jQuery.nodeName( this, "form" ) ) {
+                               return false;
+                       }
+
+                       // Lazy-add a submit handler when a descendant form may potentially be submitted
+                       jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+                               // Node name check avoids a VML-related crash in IE (#9807)
+                               var elem = e.target,
+                                       form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+                               if ( form && !form._submit_attached ) {
+                                       jQuery.event.add( form, "submit._submit", function( event ) {
+                                               // Form was submitted, bubble the event up the tree
+                                               if ( this.parentNode ) {
+                                                       jQuery.event.simulate( "submit", this.parentNode, event, true );
+                                               }
+                                       });
+                                       form._submit_attached = true;
+                               }
+                       });
+                       // return undefined since we don't need an event listener
+               },
+
+               teardown: function() {
+                       // Only need this for delegated form submit events
+                       if ( jQuery.nodeName( this, "form" ) ) {
+                               return false;
+                       }
+
+                       // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+                       jQuery.event.remove( this, "._submit" );
+               }
+       };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+       jQuery.event.special.change = {
+
+               setup: function() {
+
+                       if ( rformElems.test( this.nodeName ) ) {
+                               // IE doesn't fire change on a check/radio until blur; trigger it on click
+                               // after a propertychange. Eat the blur-change in special.change.handle.
+                               // This still fires onchange a second time for check/radio after blur.
+                               if ( this.type === "checkbox" || this.type === "radio" ) {
+                                       jQuery.event.add( this, "propertychange._change", function( event ) {
+                                               if ( event.originalEvent.propertyName === "checked" ) {
+                                                       this._just_changed = true;
+                                               }
+                                       });
+                                       jQuery.event.add( this, "click._change", function( event ) {
+                                               if ( this._just_changed ) {
+                                                       this._just_changed = false;
+                                                       jQuery.event.simulate( "change", this, event, true );
+                                               }
+                                       });
+                               }
+                               return false;
+                       }
+                       // Delegated event; lazy-add a change handler on descendant inputs
+                       jQuery.event.add( this, "beforeactivate._change", function( e ) {
+                               var elem = e.target;
+
+                               if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
+                                       jQuery.event.add( elem, "change._change", function( event ) {
+                                               if ( this.parentNode && !event.isSimulated ) {
+                                                       jQuery.event.simulate( "change", this.parentNode, event, true );
+                                               }
+                                       });
+                                       elem._change_attached = true;
+                               }
+                       });
+               },
+
+               handle: function( event ) {
+                       var elem = event.target;
+
+                       // Swallow native change events from checkbox/radio, we already triggered them above
+                       if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+                               return event.handleObj.handler.apply( this, arguments );
+                       }
+               },
+
+               teardown: function() {
+                       jQuery.event.remove( this, "._change" );
+
+                       return rformElems.test( this.nodeName );
+               }
+       };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+       jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+               // Attach a single capturing handler while someone wants focusin/focusout
+               var attaches = 0,
+                       handler = function( event ) {
+                               jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+                       };
+
+               jQuery.event.special[ fix ] = {
+                       setup: function() {
+                               if ( attaches++ === 0 ) {
+                                       document.addEventListener( orig, handler, true );
+                               }
+                       },
+                       teardown: function() {
+                               if ( --attaches === 0 ) {
+                                       document.removeEventListener( orig, handler, true );
+                               }
+                       }
+               };
+       });
+}
+
+jQuery.fn.extend({
+
+       on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+               var origFn, type;
+
+               // Types can be a map of types/handlers
+               if ( typeof types === "object" ) {
+                       // ( types-Object, selector, data )
+                       if ( typeof selector !== "string" ) {
+                               // ( types-Object, data )
+                               data = selector;
+                               selector = undefined;
+                       }
+                       for ( type in types ) {
+                               this.on( type, selector, data, types[ type ], one );
+                       }
+                       return this;
+               }
+
+               if ( data == null && fn == null ) {
+                       // ( types, fn )
+                       fn = selector;
+                       data = selector = undefined;
+               } else if ( fn == null ) {
+                       if ( typeof selector === "string" ) {
+                               // ( types, selector, fn )
+                               fn = data;
+                               data = undefined;
+                       } else {
+                               // ( types, data, fn )
+                               fn = data;
+                               data = selector;
+                               selector = undefined;
+                       }
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               } else if ( !fn ) {
+                       return this;
+               }
+
+               if ( one === 1 ) {
+                       origFn = fn;
+                       fn = function( event ) {
+                               jQuery.event.remove( event.delegateTarget || this, event );
+                               return origFn.apply( this, arguments );
+                       };
+                       // Use same guid so caller can remove using origFn
+                       fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+               }
+               return this.each( function() {
+                       jQuery.event.add( this, types, fn, data, selector );
+               });
+       },
+       one: function( types, selector, data, fn ) {
+               return this.on.call( this, types, selector, data, fn, 1 );
+       },
+       off: function( types, selector, fn ) {
+               if ( types && types.preventDefault ) {
+                       // ( event )  native or jQuery.Event
+                       return this.off( types.type, types.handler, types.selector );
+               }
+               if ( typeof types === "object" ) {
+                       // ( types-object [, selector] )
+                       for ( var type in types ) {
+                               this.off( type, selector, types[ type ] );
+                       }
+                       return this;
+               }
+               if ( selector === false || typeof selector === "function" ) {
+                       // ( types [, fn] )
+                       fn = selector;
+                       selector = undefined;
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               }
+               return this.each(function() {
+                       jQuery.event.remove( this, types, fn, selector );
+               });
+       },
+
+       bind: function( types, data, fn ) {
+               return this.on( types, null, data, fn );
+       },
+       unbind: function( types, fn ) {
+               return this.off( types, null, fn );
+       },
+
+       live: function( types, data, fn ) {
+               jQuery( this.context ).on( types, this.selector, data, fn );
+               return this;
+       },
+       die: function( types, fn ) {
+               jQuery( this.context ).off( types, this.selector || "**", fn );
+               return this;
+       },
+
+       delegate: function( selector, types, data, fn ) {
+               return this.on( types, selector, data, fn );
+       },
+       undelegate: function( selector, types, fn ) {
+               // ( namespace ) or ( selector, types [, fn] )
+               return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
+       },
+
+       trigger: function( type, data ) {
+               return this.each(function() {
+                       jQuery.event.trigger( type, data, this );
+               });
+       },
+       triggerHandler: function( type, data ) {
+               if ( this[0] ) {
+                       return jQuery.event.trigger( type, data, this[0], true );
+               }
+       },
+
+       toggle: function( fn ) {
+               // Save reference to arguments for access in closure
+               var args = arguments,
+                       guid = fn.guid || jQuery.guid++,
+                       i = 0,
+                       toggler = function( event ) {
+                               // Figure out which function to execute
+                               var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+                               jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+                               // Make sure that clicks stop
+                               event.preventDefault();
+
+                               // and execute the function
+                               return args[ lastToggle ].apply( this, arguments ) || false;
+                       };
+
+               // link all the functions, so any of them can unbind this click handler
+               toggler.guid = guid;
+               while ( i < args.length ) {
+                       args[ i++ ].guid = guid;
+               }
+
+               return this.click( toggler );
+       },
+
+       hover: function( fnOver, fnOut ) {
+               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+       }
+});
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+       "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+       "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+       // Handle event binding
+       jQuery.fn[ name ] = function( data, fn ) {
+               if ( fn == null ) {
+                       fn = data;
+                       data = null;
+               }
+
+               return arguments.length > 0 ?
+                       this.bind( name, data, fn ) :
+                       this.trigger( name );
+       };
+
+       if ( jQuery.attrFn ) {
+               jQuery.attrFn[ name ] = true;
+       }
+
+       if ( rkeyEvent.test( name ) ) {
+               jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
+       }
+
+       if ( rmouseEvent.test( name ) ) {
+               jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
+       }
+});
+
+
+
+/*!
+ * Sizzle CSS Selector Engine
+ *  Copyright 2011, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+       expando = "sizcache" + (Math.random() + '').replace('.', ''),
+       done = 0,
+       toString = Object.prototype.toString,
+       hasDuplicate = false,
+       baseHasDuplicate = true,
+       rBackslash = /\\/g,
+       rReturn = /\r\n/g,
+       rNonWord = /\W/;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+//   Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+       baseHasDuplicate = false;
+       return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+       results = results || [];
+       context = context || document;
+
+       var origContext = context;
+
+       if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+               return [];
+       }
+       
+       if ( !selector || typeof selector !== "string" ) {
+               return results;
+       }
+
+       var m, set, checkSet, extra, ret, cur, pop, i,
+               prune = true,
+               contextXML = Sizzle.isXML( context ),
+               parts = [],
+               soFar = selector;
+       
+       // Reset the position of the chunker regexp (start from head)
+       do {
+               chunker.exec( "" );
+               m = chunker.exec( soFar );
+
+               if ( m ) {
+                       soFar = m[3];
+               
+                       parts.push( m[1] );
+               
+                       if ( m[2] ) {
+                               extra = m[3];
+                               break;
+                       }
+               }
+       } while ( m );
+
+       if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+               if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+                       set = posProcess( parts[0] + parts[1], context, seed );
+
+               } else {
+                       set = Expr.relative[ parts[0] ] ?
+                               [ context ] :
+                               Sizzle( parts.shift(), context );
+
+                       while ( parts.length ) {
+                               selector = parts.shift();
+
+                               if ( Expr.relative[ selector ] ) {
+                                       selector += parts.shift();
+                               }
+                               
+                               set = posProcess( selector, set, seed );
+                       }
+               }
+
+       } else {
+               // Take a shortcut and set the context if the root selector is an ID
+               // (but not if it'll be faster if the inner selector is an ID)
+               if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+                               Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+                       ret = Sizzle.find( parts.shift(), context, contextXML );
+                       context = ret.expr ?
+                               Sizzle.filter( ret.expr, ret.set )[0] :
+                               ret.set[0];
+               }
+
+               if ( context ) {
+                       ret = seed ?
+                               { expr: parts.pop(), set: makeArray(seed) } :
+                               Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+                       set = ret.expr ?
+                               Sizzle.filter( ret.expr, ret.set ) :
+                               ret.set;
+
+                       if ( parts.length > 0 ) {
+                               checkSet = makeArray( set );
+
+                       } else {
+                               prune = false;
+                       }
+
+                       while ( parts.length ) {
+                               cur = parts.pop();
+                               pop = cur;
+
+                               if ( !Expr.relative[ cur ] ) {
+                                       cur = "";
+                               } else {
+                                       pop = parts.pop();
+                               }
+
+                               if ( pop == null ) {
+                                       pop = context;
+                               }
+
+                               Expr.relative[ cur ]( checkSet, pop, contextXML );
+                       }
+
+               } else {
+                       checkSet = parts = [];
+               }
+       }
+
+       if ( !checkSet ) {
+               checkSet = set;
+       }
+
+       if ( !checkSet ) {
+               Sizzle.error( cur || selector );
+       }
+
+       if ( toString.call(checkSet) === "[object Array]" ) {
+               if ( !prune ) {
+                       results.push.apply( results, checkSet );
+
+               } else if ( context && context.nodeType === 1 ) {
+                       for ( i = 0; checkSet[i] != null; i++ ) {
+                               if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+                                       results.push( set[i] );
+                               }
+                       }
+
+               } else {
+                       for ( i = 0; checkSet[i] != null; i++ ) {
+                               if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+                                       results.push( set[i] );
+                               }
+                       }
+               }
+
+       } else {
+               makeArray( checkSet, results );
+       }
+
+       if ( extra ) {
+               Sizzle( extra, origContext, results, seed );
+               Sizzle.uniqueSort( results );
+       }
+
+       return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+       if ( sortOrder ) {
+               hasDuplicate = baseHasDuplicate;
+               results.sort( sortOrder );
+
+               if ( hasDuplicate ) {
+                       for ( var i = 1; i < results.length; i++ ) {
+                               if ( results[i] === results[ i - 1 ] ) {
+                                       results.splice( i--, 1 );
+                               }
+                       }
+               }
+       }
+
+       return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+       return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+       return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+       var set, i, len, match, type, left;
+
+       if ( !expr ) {
+               return [];
+       }
+
+       for ( i = 0, len = Expr.order.length; i < len; i++ ) {
+               type = Expr.order[i];
+               
+               if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+                       left = match[1];
+                       match.splice( 1, 1 );
+
+                       if ( left.substr( left.length - 1 ) !== "\\" ) {
+                               match[1] = (match[1] || "").replace( rBackslash, "" );
+                               set = Expr.find[ type ]( match, context, isXML );
+
+                               if ( set != null ) {
+                                       expr = expr.replace( Expr.match[ type ], "" );
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       if ( !set ) {
+               set = typeof context.getElementsByTagName !== "undefined" ?
+                       context.getElementsByTagName( "*" ) :
+                       [];
+       }
+
+       return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+       var match, anyFound,
+               type, found, item, filter, left,
+               i, pass,
+               old = expr,
+               result = [],
+               curLoop = set,
+               isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+       while ( expr && set.length ) {
+               for ( type in Expr.filter ) {
+                       if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+                               filter = Expr.filter[ type ];
+                               left = match[1];
+
+                               anyFound = false;
+
+                               match.splice(1,1);
+
+                               if ( left.substr( left.length - 1 ) === "\\" ) {
+                                       continue;
+                               }
+
+                               if ( curLoop === result ) {
+                                       result = [];
+                               }
+
+                               if ( Expr.preFilter[ type ] ) {
+                                       match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+                                       if ( !match ) {
+                                               anyFound = found = true;
+
+                                       } else if ( match === true ) {
+                                               continue;
+                                       }
+                               }
+
+                               if ( match ) {
+                                       for ( i = 0; (item = curLoop[i]) != null; i++ ) {
+                                               if ( item ) {
+                                                       found = filter( item, match, i, curLoop );
+                                                       pass = not ^ found;
+
+                                                       if ( inplace && found != null ) {
+                                                               if ( pass ) {
+                                                                       anyFound = true;
+
+                                                               } else {
+                                                                       curLoop[i] = false;
+                                                               }
+
+                                                       } else if ( pass ) {
+                                                               result.push( item );
+                                                               anyFound = true;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               if ( found !== undefined ) {
+                                       if ( !inplace ) {
+                                               curLoop = result;
+                                       }
+
+                                       expr = expr.replace( Expr.match[ type ], "" );
+
+                                       if ( !anyFound ) {
+                                               return [];
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+
+               // Improper expression
+               if ( expr === old ) {
+                       if ( anyFound == null ) {
+                               Sizzle.error( expr );
+
+                       } else {
+                               break;
+                       }
+               }
+
+               old = expr;
+       }
+
+       return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+       throw "Syntax error, unrecognized expression: " + msg;
+};
+
+/**
+ * Utility function for retreiving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+var getText = Sizzle.getText = function( elem ) {
+    var i, node,
+               nodeType = elem.nodeType,
+               ret = "";
+
+       if ( nodeType ) {
+               if ( nodeType === 1 ) {
+                       // Use textContent || innerText for elements
+                       if ( typeof elem.textContent === 'string' ) {
+                               return elem.textContent;
+                       } else if ( typeof elem.innerText === 'string' ) {
+                               // Replace IE's carriage returns
+                               return elem.innerText.replace( rReturn, '' );
+                       } else {
+                               // Traverse it's children
+                               for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
+                                       ret += getText( elem );
+                               }
+                       }
+               } else if ( nodeType === 3 || nodeType === 4 ) {
+                       return elem.nodeValue;
+               }
+       } else {
+
+               // If no nodeType, this is expected to be an array
+               for ( i = 0; (node = elem[i]); i++ ) {
+                       // Do not traverse comment nodes
+                       if ( node.nodeType !== 8 ) {
+                               ret += getText( node );
+                       }
+               }
+       }
+       return ret;
+};
+
+var Expr = Sizzle.selectors = {
+       order: [ "ID", "NAME", "TAG" ],
+
+       match: {
+               ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+               CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+               NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+               ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+               TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+               CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+               POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+               PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+       },
+
+       leftMatch: {},
+
+       attrMap: {
+               "class": "className",
+               "for": "htmlFor"
+       },
+
+       attrHandle: {
+               href: function( elem ) {
+                       return elem.getAttribute( "href" );
+               },
+               type: function( elem ) {
+                       return elem.getAttribute( "type" );
+               }
+       },
+
+       relative: {
+               "+": function(checkSet, part){
+                       var isPartStr = typeof part === "string",
+                               isTag = isPartStr && !rNonWord.test( part ),
+                               isPartStrNotTag = isPartStr && !isTag;
+
+                       if ( isTag ) {
+                               part = part.toLowerCase();
+                       }
+
+                       for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+                               if ( (elem = checkSet[i]) ) {
+                                       while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+                                       checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+                                               elem || false :
+                                               elem === part;
+                               }
+                       }
+
+                       if ( isPartStrNotTag ) {
+                               Sizzle.filter( part, checkSet, true );
+                       }
+               },
+
+               ">": function( checkSet, part ) {
+                       var elem,
+                               isPartStr = typeof part === "string",
+                               i = 0,
+                               l = checkSet.length;
+
+                       if ( isPartStr && !rNonWord.test( part ) ) {
+                               part = part.toLowerCase();
+
+                               for ( ; i < l; i++ ) {
+                                       elem = checkSet[i];
+
+                                       if ( elem ) {
+                                               var parent = elem.parentNode;
+                                               checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+                                       }
+                               }
+
+                       } else {
+                               for ( ; i < l; i++ ) {
+                                       elem = checkSet[i];
+
+                                       if ( elem ) {
+                                               checkSet[i] = isPartStr ?
+                                                       elem.parentNode :
+                                                       elem.parentNode === part;
+                                       }
+                               }
+
+                               if ( isPartStr ) {
+                                       Sizzle.filter( part, checkSet, true );
+                               }
+                       }
+               },
+
+               "": function(checkSet, part, isXML){
+                       var nodeCheck,
+                               doneName = done++,
+                               checkFn = dirCheck;
+
+                       if ( typeof part === "string" && !rNonWord.test( part ) ) {
+                               part = part.toLowerCase();
+                               nodeCheck = part;
+                               checkFn = dirNodeCheck;
+                       }
+
+                       checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+               },
+
+               "~": function( checkSet, part, isXML ) {
+                       var nodeCheck,
+                               doneName = done++,
+                               checkFn = dirCheck;
+
+                       if ( typeof part === "string" && !rNonWord.test( part ) ) {
+                               part = part.toLowerCase();
+                               nodeCheck = part;
+                               checkFn = dirNodeCheck;
+                       }
+
+                       checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+               }
+       },
+
+       find: {
+               ID: function( match, context, isXML ) {
+                       if ( typeof context.getElementById !== "undefined" && !isXML ) {
+                               var m = context.getElementById(match[1]);
+                               // Check parentNode to catch when Blackberry 4.6 returns
+                               // nodes that are no longer in the document #6963
+                               return m && m.parentNode ? [m] : [];
+                       }
+               },
+
+               NAME: function( match, context ) {
+                       if ( typeof context.getElementsByName !== "undefined" ) {
+                               var ret = [],
+                                       results = context.getElementsByName( match[1] );
+
+                               for ( var i = 0, l = results.length; i < l; i++ ) {
+                                       if ( results[i].getAttribute("name") === match[1] ) {
+                                               ret.push( results[i] );
+                                       }
+                               }
+
+                               return ret.length === 0 ? null : ret;
+                       }
+               },
+
+               TAG: function( match, context ) {
+                       if ( typeof context.getElementsByTagName !== "undefined" ) {
+                               return context.getElementsByTagName( match[1] );
+                       }
+               }
+       },
+       preFilter: {
+               CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+                       match = " " + match[1].replace( rBackslash, "" ) + " ";
+
+                       if ( isXML ) {
+                               return match;
+                       }
+
+                       for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+                               if ( elem ) {
+                                       if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
+                                               if ( !inplace ) {
+                                                       result.push( elem );
+                                               }
+
+                                       } else if ( inplace ) {
+                                               curLoop[i] = false;
+                                       }
+                               }
+                       }
+
+                       return false;
+               },
+
+               ID: function( match ) {
+                       return match[1].replace( rBackslash, "" );
+               },
+
+               TAG: function( match, curLoop ) {
+                       return match[1].replace( rBackslash, "" ).toLowerCase();
+               },
+
+               CHILD: function( match ) {
+                       if ( match[1] === "nth" ) {
+                               if ( !match[2] ) {
+                                       Sizzle.error( match[0] );
+                               }
+
+                               match[2] = match[2].replace(/^\+|\s*/g, '');
+
+                               // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+                               var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
+                                       match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+                                       !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+                               // calculate the numbers (first)n+(last) including if they are negative
+                               match[2] = (test[1] + (test[2] || 1)) - 0;
+                               match[3] = test[3] - 0;
+                       }
+                       else if ( match[2] ) {
+                               Sizzle.error( match[0] );
+                       }
+
+                       // TODO: Move to normal caching system
+                       match[0] = done++;
+
+                       return match;
+               },
+
+               ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+                       var name = match[1] = match[1].replace( rBackslash, "" );
+                       
+                       if ( !isXML && Expr.attrMap[name] ) {
+                               match[1] = Expr.attrMap[name];
+                       }
+
+                       // Handle if an un-quoted value was used
+                       match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
+                       if ( match[2] === "~=" ) {
+                               match[4] = " " + match[4] + " ";
+                       }
+
+                       return match;
+               },
+
+               PSEUDO: function( match, curLoop, inplace, result, not ) {
+                       if ( match[1] === "not" ) {
+                               // If we're dealing with a complex expression, or a simple one
+                               if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+                                       match[3] = Sizzle(match[3], null, null, curLoop);
+
+                               } else {
+                                       var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+                                       if ( !inplace ) {
+                                               result.push.apply( result, ret );
+                                       }
+
+                                       return false;
+                               }
+
+                       } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+                               return true;
+                       }
+                       
+                       return match;
+               },
+
+               POS: function( match ) {
+                       match.unshift( true );
+
+                       return match;
+               }
+       },
+       
+       filters: {
+               enabled: function( elem ) {
+                       return elem.disabled === false && elem.type !== "hidden";
+               },
+
+               disabled: function( elem ) {
+                       return elem.disabled === true;
+               },
+
+               checked: function( elem ) {
+                       return elem.checked === true;
+               },
+               
+               selected: function( elem ) {
+                       // Accessing this property makes selected-by-default
+                       // options in Safari work properly
+                       if ( elem.parentNode ) {
+                               elem.parentNode.selectedIndex;
+                       }
+                       
+                       return elem.selected === true;
+               },
+
+               parent: function( elem ) {
+                       return !!elem.firstChild;
+               },
+
+               empty: function( elem ) {
+                       return !elem.firstChild;
+               },
+
+               has: function( elem, i, match ) {
+                       return !!Sizzle( match[3], elem ).length;
+               },
+
+               header: function( elem ) {
+                       return (/h\d/i).test( elem.nodeName );
+               },
+
+               text: function( elem ) {
+                       var attr = elem.getAttribute( "type" ), type = elem.type;
+                       // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) 
+                       // use getAttribute instead to test this case
+                       return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
+               },
+
+               radio: function( elem ) {
+                       return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
+               },
+
+               checkbox: function( elem ) {
+                       return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
+               },
+
+               file: function( elem ) {
+                       return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
+               },
+
+               password: function( elem ) {
+                       return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
+               },
+
+               submit: function( elem ) {
+                       var name = elem.nodeName.toLowerCase();
+                       return (name === "input" || name === "button") && "submit" === elem.type;
+               },
+
+               image: function( elem ) {
+                       return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
+               },
+
+               reset: function( elem ) {
+                       var name = elem.nodeName.toLowerCase();
+                       return (name === "input" || name === "button") && "reset" === elem.type;
+               },
+
+               button: function( elem ) {
+                       var name = elem.nodeName.toLowerCase();
+                       return name === "input" && "button" === elem.type || name === "button";
+               },
+
+               input: function( elem ) {
+                       return (/input|select|textarea|button/i).test( elem.nodeName );
+               },
+
+               focus: function( elem ) {
+                       return elem === elem.ownerDocument.activeElement;
+               }
+       },
+       setFilters: {
+               first: function( elem, i ) {
+                       return i === 0;
+               },
+
+               last: function( elem, i, match, array ) {
+                       return i === array.length - 1;
+               },
+
+               even: function( elem, i ) {
+                       return i % 2 === 0;
+               },
+
+               odd: function( elem, i ) {
+                       return i % 2 === 1;
+               },
+
+               lt: function( elem, i, match ) {
+                       return i < match[3] - 0;
+               },
+
+               gt: function( elem, i, match ) {
+                       return i > match[3] - 0;
+               },
+
+               nth: function( elem, i, match ) {
+                       return match[3] - 0 === i;
+               },
+
+               eq: function( elem, i, match ) {
+                       return match[3] - 0 === i;
+               }
+       },
+       filter: {
+               PSEUDO: function( elem, match, i, array ) {
+                       var name = match[1],
+                               filter = Expr.filters[ name ];
+
+                       if ( filter ) {
+                               return filter( elem, i, match, array );
+
+                       } else if ( name === "contains" ) {
+                               return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+                       } else if ( name === "not" ) {
+                               var not = match[3];
+
+                               for ( var j = 0, l = not.length; j < l; j++ ) {
+                                       if ( not[j] === elem ) {
+                                               return false;
+                                       }
+                               }
+
+                               return true;
+
+                       } else {
+                               Sizzle.error( name );
+                       }
+               },
+
+               CHILD: function( elem, match ) {
+                       var first, last,
+                               doneName, parent, cache,
+                               count, diff,
+                               type = match[1],
+                               node = elem;
+
+                       switch ( type ) {
+                               case "only":
+                               case "first":
+                                       while ( (node = node.previousSibling) )  {
+                                               if ( node.nodeType === 1 ) { 
+                                                       return false; 
+                                               }
+                                       }
+
+                                       if ( type === "first" ) { 
+                                               return true; 
+                                       }
+
+                                       node = elem;
+
+                               case "last":
+                                       while ( (node = node.nextSibling) )      {
+                                               if ( node.nodeType === 1 ) { 
+                                                       return false; 
+                                               }
+                                       }
+
+                                       return true;
+
+                               case "nth":
+                                       first = match[2];
+                                       last = match[3];
+
+                                       if ( first === 1 && last === 0 ) {
+                                               return true;
+                                       }
+                                       
+                                       doneName = match[0];
+                                       parent = elem.parentNode;
+       
+                                       if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
+                                               count = 0;
+                                               
+                                               for ( node = parent.firstChild; node; node = node.nextSibling ) {
+                                                       if ( node.nodeType === 1 ) {
+                                                               node.nodeIndex = ++count;
+                                                       }
+                                               } 
+
+                                               parent[ expando ] = doneName;
+                                       }
+                                       
+                                       diff = elem.nodeIndex - last;
+
+                                       if ( first === 0 ) {
+                                               return diff === 0;
+
+                                       } else {
+                                               return ( diff % first === 0 && diff / first >= 0 );
+                                       }
+                       }
+               },
+
+               ID: function( elem, match ) {
+                       return elem.nodeType === 1 && elem.getAttribute("id") === match;
+               },
+
+               TAG: function( elem, match ) {
+                       return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
+               },
+               
+               CLASS: function( elem, match ) {
+                       return (" " + (elem.className || elem.getAttribute("class")) + " ")
+                               .indexOf( match ) > -1;
+               },
+
+               ATTR: function( elem, match ) {
+                       var name = match[1],
+                               result = Sizzle.attr ?
+                                       Sizzle.attr( elem, name ) :
+                                       Expr.attrHandle[ name ] ?
+                                       Expr.attrHandle[ name ]( elem ) :
+                                       elem[ name ] != null ?
+                                               elem[ name ] :
+                                               elem.getAttribute( name ),
+                               value = result + "",
+                               type = match[2],
+                               check = match[4];
+
+                       return result == null ?
+                               type === "!=" :
+                               !type && Sizzle.attr ?
+                               result != null :
+                               type === "=" ?
+                               value === check :
+                               type === "*=" ?
+                               value.indexOf(check) >= 0 :
+                               type === "~=" ?
+                               (" " + value + " ").indexOf(check) >= 0 :
+                               !check ?
+                               value && result !== false :
+                               type === "!=" ?
+                               value !== check :
+                               type === "^=" ?
+                               value.indexOf(check) === 0 :
+                               type === "$=" ?
+                               value.substr(value.length - check.length) === check :
+                               type === "|=" ?
+                               value === check || value.substr(0, check.length + 1) === check + "-" :
+                               false;
+               },
+
+               POS: function( elem, match, i, array ) {
+                       var name = match[2],
+                               filter = Expr.setFilters[ name ];
+
+                       if ( filter ) {
+                               return filter( elem, i, match, array );
+                       }
+               }
+       }
+};
+
+var origPOS = Expr.match.POS,
+       fescape = function(all, num){
+               return "\\" + (num - 0 + 1);
+       };
+
+for ( var type in Expr.match ) {
+       Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+       Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+       array = Array.prototype.slice.call( array, 0 );
+
+       if ( results ) {
+               results.push.apply( results, array );
+               return results;
+       }
+       
+       return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+       Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+       makeArray = function( array, results ) {
+               var i = 0,
+                       ret = results || [];
+
+               if ( toString.call(array) === "[object Array]" ) {
+                       Array.prototype.push.apply( ret, array );
+
+               } else {
+                       if ( typeof array.length === "number" ) {
+                               for ( var l = array.length; i < l; i++ ) {
+                                       ret.push( array[i] );
+                               }
+
+                       } else {
+                               for ( ; array[i]; i++ ) {
+                                       ret.push( array[i] );
+                               }
+                       }
+               }
+
+               return ret;
+       };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+       sortOrder = function( a, b ) {
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+                       return a.compareDocumentPosition ? -1 : 1;
+               }
+
+               return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+       };
+
+} else {
+       sortOrder = function( a, b ) {
+               // The nodes are identical, we can exit early
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+
+               // Fallback to using sourceIndex (in IE) if it's available on both nodes
+               } else if ( a.sourceIndex && b.sourceIndex ) {
+                       return a.sourceIndex - b.sourceIndex;
+               }
+
+               var al, bl,
+                       ap = [],
+                       bp = [],
+                       aup = a.parentNode,
+                       bup = b.parentNode,
+                       cur = aup;
+
+               // If the nodes are siblings (or identical) we can do a quick check
+               if ( aup === bup ) {
+                       return siblingCheck( a, b );
+
+               // If no parents were found then the nodes are disconnected
+               } else if ( !aup ) {
+                       return -1;
+
+               } else if ( !bup ) {
+                       return 1;
+               }
+
+               // Otherwise they're somewhere else in the tree so we need
+               // to build up a full list of the parentNodes for comparison
+               while ( cur ) {
+                       ap.unshift( cur );
+                       cur = cur.parentNode;
+               }
+
+               cur = bup;
+
+               while ( cur ) {
+                       bp.unshift( cur );
+                       cur = cur.parentNode;
+               }
+
+               al = ap.length;
+               bl = bp.length;
+
+               // Start walking down the tree looking for a discrepancy
+               for ( var i = 0; i < al && i < bl; i++ ) {
+                       if ( ap[i] !== bp[i] ) {
+                               return siblingCheck( ap[i], bp[i] );
+                       }
+               }
+
+               // We ended someplace up the tree so do a sibling check
+               return i === al ?
+                       siblingCheck( a, bp[i], -1 ) :
+                       siblingCheck( ap[i], b, 1 );
+       };
+
+       siblingCheck = function( a, b, ret ) {
+               if ( a === b ) {
+                       return ret;
+               }
+
+               var cur = a.nextSibling;
+
+               while ( cur ) {
+                       if ( cur === b ) {
+                               return -1;
+                       }
+
+                       cur = cur.nextSibling;
+               }
+
+               return 1;
+       };
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+       // We're going to inject a fake input element with a specified name
+       var form = document.createElement("div"),
+               id = "script" + (new Date()).getTime(),
+               root = document.documentElement;
+
+       form.innerHTML = "<a name='" + id + "'/>";
+
+       // Inject it into the root element, check its status, and remove it quickly
+       root.insertBefore( form, root.firstChild );
+
+       // The workaround has to do additional checks after a getElementById
+       // Which slows things down for other browsers (hence the branching)
+       if ( document.getElementById( id ) ) {
+               Expr.find.ID = function( match, context, isXML ) {
+                       if ( typeof context.getElementById !== "undefined" && !isXML ) {
+                               var m = context.getElementById(match[1]);
+
+                               return m ?
+                                       m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+                                               [m] :
+                                               undefined :
+                                       [];
+                       }
+               };
+
+               Expr.filter.ID = function( elem, match ) {
+                       var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+                       return elem.nodeType === 1 && node && node.nodeValue === match;
+               };
+       }
+
+       root.removeChild( form );
+
+       // release memory in IE
+       root = form = null;
+})();
+
+(function(){
+       // Check to see if the browser returns only elements
+       // when doing getElementsByTagName("*")
+
+       // Create a fake element
+       var div = document.createElement("div");
+       div.appendChild( document.createComment("") );
+
+       // Make sure no comments are found
+       if ( div.getElementsByTagName("*").length > 0 ) {
+               Expr.find.TAG = function( match, context ) {
+                       var results = context.getElementsByTagName( match[1] );
+
+                       // Filter out possible comments
+                       if ( match[1] === "*" ) {
+                               var tmp = [];
+
+                               for ( var i = 0; results[i]; i++ ) {
+                                       if ( results[i].nodeType === 1 ) {
+                                               tmp.push( results[i] );
+                                       }
+                               }
+
+                               results = tmp;
+                       }
+
+                       return results;
+               };
+       }
+
+       // Check to see if an attribute returns normalized href attributes
+       div.innerHTML = "<a href='#'></a>";
+
+       if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+                       div.firstChild.getAttribute("href") !== "#" ) {
+
+               Expr.attrHandle.href = function( elem ) {
+                       return elem.getAttribute( "href", 2 );
+               };
+       }
+
+       // release memory in IE
+       div = null;
+})();
+
+if ( document.querySelectorAll ) {
+       (function(){
+               var oldSizzle = Sizzle,
+                       div = document.createElement("div"),
+                       id = "__sizzle__";
+
+               div.innerHTML = "<p class='TEST'></p>";
+
+               // Safari can't handle uppercase or unicode characters when
+               // in quirks mode.
+               if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+                       return;
+               }
+       
+               Sizzle = function( query, context, extra, seed ) {
+                       context = context || document;
+
+                       // Only use querySelectorAll on non-XML documents
+                       // (ID selectors don't work in non-HTML documents)
+                       if ( !seed && !Sizzle.isXML(context) ) {
+                               // See if we find a selector to speed up
+                               var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+                               
+                               if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+                                       // Speed-up: Sizzle("TAG")
+                                       if ( match[1] ) {
+                                               return makeArray( context.getElementsByTagName( query ), extra );
+                                       
+                                       // Speed-up: Sizzle(".CLASS")
+                                       } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+                                               return makeArray( context.getElementsByClassName( match[2] ), extra );
+                                       }
+                               }
+                               
+                               if ( context.nodeType === 9 ) {
+                                       // Speed-up: Sizzle("body")
+                                       // The body element only exists once, optimize finding it
+                                       if ( query === "body" && context.body ) {
+                                               return makeArray( [ context.body ], extra );
+                                               
+                                       // Speed-up: Sizzle("#ID")
+                                       } else if ( match && match[3] ) {
+                                               var elem = context.getElementById( match[3] );
+
+                                               // Check parentNode to catch when Blackberry 4.6 returns
+                                               // nodes that are no longer in the document #6963
+                                               if ( elem && elem.parentNode ) {
+                                                       // Handle the case where IE and Opera return items
+                                                       // by name instead of ID
+                                                       if ( elem.id === match[3] ) {
+                                                               return makeArray( [ elem ], extra );
+                                                       }
+                                                       
+                                               } else {
+                                                       return makeArray( [], extra );
+                                               }
+                                       }
+                                       
+                                       try {
+                                               return makeArray( context.querySelectorAll(query), extra );
+                                       } catch(qsaError) {}
+
+                               // qSA works strangely on Element-rooted queries
+                               // We can work around this by specifying an extra ID on the root
+                               // and working up from there (Thanks to Andrew Dupont for the technique)
+                               // IE 8 doesn't work on object elements
+                               } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+                                       var oldContext = context,
+                                               old = context.getAttribute( "id" ),
+                                               nid = old || id,
+                                               hasParent = context.parentNode,
+                                               relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+                                       if ( !old ) {
+                                               context.setAttribute( "id", nid );
+                                       } else {
+                                               nid = nid.replace( /'/g, "\\$&" );
+                                       }
+                                       if ( relativeHierarchySelector && hasParent ) {
+                                               context = context.parentNode;
+                                       }
+
+                                       try {
+                                               if ( !relativeHierarchySelector || hasParent ) {
+                                                       return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+                                               }
+
+                                       } catch(pseudoError) {
+                                       } finally {
+                                               if ( !old ) {
+                                                       oldContext.removeAttribute( "id" );
+                                               }
+                                       }
+                               }
+                       }
+               
+                       return oldSizzle(query, context, extra, seed);
+               };
+
+               for ( var prop in oldSizzle ) {
+                       Sizzle[ prop ] = oldSizzle[ prop ];
+               }
+
+               // release memory in IE
+               div = null;
+       })();
+}
+
+(function(){
+       var html = document.documentElement,
+               matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+       if ( matches ) {
+               // Check to see if it's possible to do matchesSelector
+               // on a disconnected node (IE 9 fails this)
+               var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+                       pseudoWorks = false;
+
+               try {
+                       // This should fail with an exception
+                       // Gecko does not error, returns false instead
+                       matches.call( document.documentElement, "[test!='']:sizzle" );
+       
+               } catch( pseudoError ) {
+                       pseudoWorks = true;
+               }
+
+               Sizzle.matchesSelector = function( node, expr ) {
+                       // Make sure that attribute selectors are quoted
+                       expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+                       if ( !Sizzle.isXML( node ) ) {
+                               try { 
+                                       if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+                                               var ret = matches.call( node, expr );
+
+                                               // IE 9's matchesSelector returns false on disconnected nodes
+                                               if ( ret || !disconnectedMatch ||
+                                                               // As well, disconnected nodes are said to be in a document
+                                                               // fragment in IE 9, so check for that
+                                                               node.document && node.document.nodeType !== 11 ) {
+                                                       return ret;
+                                               }
+                                       }
+                               } catch(e) {}
+                       }
+
+                       return Sizzle(expr, null, null, [node]).length > 0;
+               };
+       }
+})();
+
+(function(){
+       var div = document.createElement("div");
+
+       div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+       // Opera can't find a second classname (in 9.6)
+       // Also, make sure that getElementsByClassName actually exists
+       if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+               return;
+       }
+
+       // Safari caches class attributes, doesn't catch changes (in 3.2)
+       div.lastChild.className = "e";
+
+       if ( div.getElementsByClassName("e").length === 1 ) {
+               return;
+       }
+       
+       Expr.order.splice(1, 0, "CLASS");
+       Expr.find.CLASS = function( match, context, isXML ) {
+               if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+                       return context.getElementsByClassName(match[1]);
+               }
+       };
+
+       // release memory in IE
+       div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+       for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+               var elem = checkSet[i];
+
+               if ( elem ) {
+                       var match = false;
+
+                       elem = elem[dir];
+
+                       while ( elem ) {
+                               if ( elem[ expando ] === doneName ) {
+                                       match = checkSet[elem.sizset];
+                                       break;
+                               }
+
+                               if ( elem.nodeType === 1 && !isXML ){
+                                       elem[ expando ] = doneName;
+                                       elem.sizset = i;
+                               }
+
+                               if ( elem.nodeName.toLowerCase() === cur ) {
+                                       match = elem;
+                                       break;
+                               }
+
+                               elem = elem[dir];
+                       }
+
+                       checkSet[i] = match;
+               }
+       }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+       for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+               var elem = checkSet[i];
+
+               if ( elem ) {
+                       var match = false;
+                       
+                       elem = elem[dir];
+
+                       while ( elem ) {
+                               if ( elem[ expando ] === doneName ) {
+                                       match = checkSet[elem.sizset];
+                                       break;
+                               }
+
+                               if ( elem.nodeType === 1 ) {
+                                       if ( !isXML ) {
+                                               elem[ expando ] = doneName;
+                                               elem.sizset = i;
+                                       }
+
+                                       if ( typeof cur !== "string" ) {
+                                               if ( elem === cur ) {
+                                                       match = true;
+                                                       break;
+                                               }
+
+                                       } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+                                               match = elem;
+                                               break;
+                                       }
+                               }
+
+                               elem = elem[dir];
+                       }
+
+                       checkSet[i] = match;
+               }
+       }
+}
+
+if ( document.documentElement.contains ) {
+       Sizzle.contains = function( a, b ) {
+               return a !== b && (a.contains ? a.contains(b) : true);
+       };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+       Sizzle.contains = function( a, b ) {
+               return !!(a.compareDocumentPosition(b) & 16);
+       };
+
+} else {
+       Sizzle.contains = function() {
+               return false;
+       };
+}
+
+Sizzle.isXML = function( elem ) {
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833) 
+       var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context, seed ) {
+       var match,
+               tmpSet = [],
+               later = "",
+               root = context.nodeType ? [context] : context;
+
+       // Position selectors must be done after the filter
+       // And so must :not(positional) so we move all PSEUDOs to the end
+       while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+               later += match[0];
+               selector = selector.replace( Expr.match.PSEUDO, "" );
+       }
+
+       selector = Expr.relative[selector] ? selector + "*" : selector;
+
+       for ( var i = 0, l = root.length; i < l; i++ ) {
+               Sizzle( selector, root[i], tmpSet, seed );
+       }
+
+       return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+// Override sizzle attribute retrieval
+Sizzle.attr = jQuery.attr;
+Sizzle.selectors.attrMap = {};
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+       rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+       // Note: This RegExp should be improved, or likely pulled from Sizzle
+       rmultiselector = /,/,
+       isSimple = /^.[^:#\[\.,]*$/,
+       slice = Array.prototype.slice,
+       POS = jQuery.expr.match.POS,
+       // methods guaranteed to produce a unique set when starting from a unique set
+       guaranteedUnique = {
+               children: true,
+               contents: true,
+               next: true,
+               prev: true
+       };
+
+jQuery.fn.extend({
+       find: function( selector ) {
+               var self = this,
+                       i, l;
+
+               if ( typeof selector !== "string" ) {
+                       return jQuery( selector ).filter(function() {
+                               for ( i = 0, l = self.length; i < l; i++ ) {
+                                       if ( jQuery.contains( self[ i ], this ) ) {
+                                               return true;
+                                       }
+                               }
+                       });
+               }
+
+               var ret = this.pushStack( "", "find", selector ),
+                       length, n, r;
+
+               for ( i = 0, l = this.length; i < l; i++ ) {
+                       length = ret.length;
+                       jQuery.find( selector, this[i], ret );
+
+                       if ( i > 0 ) {
+                               // Make sure that the results are unique
+                               for ( n = length; n < ret.length; n++ ) {
+                                       for ( r = 0; r < length; r++ ) {
+                                               if ( ret[r] === ret[n] ) {
+                                                       ret.splice(n--, 1);
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               return ret;
+       },
+
+       has: function( target ) {
+               var targets = jQuery( target );
+               return this.filter(function() {
+                       for ( var i = 0, l = targets.length; i < l; i++ ) {
+                               if ( jQuery.contains( this, targets[i] ) ) {
+                                       return true;
+                               }
+                       }
+               });
+       },
+
+       not: function( selector ) {
+               return this.pushStack( winnow(this, selector, false), "not", selector);
+       },
+
+       filter: function( selector ) {
+               return this.pushStack( winnow(this, selector, true), "filter", selector );
+       },
+
+       is: function( selector ) {
+               return !!selector && ( 
+                       typeof selector === "string" ?
+                               // If this is a positional selector, check membership in the returned set
+                               // so $("p:first").is("p:last") won't return true for a doc with two "p".
+                               POS.test( selector ) ? 
+                                       jQuery( selector, this.context ).index( this[0] ) >= 0 :
+                                       jQuery.filter( selector, this ).length > 0 :
+                               this.filter( selector ).length > 0 );
+       },
+
+       closest: function( selectors, context ) {
+               var ret = [], i, l, cur = this[0];
+               
+               // Array (deprecated as of jQuery 1.7)
+               if ( jQuery.isArray( selectors ) ) {
+                       var level = 1;
+
+                       while ( cur && cur.ownerDocument && cur !== context ) {
+                               for ( i = 0; i < selectors.length; i++ ) {
+
+                                       if ( jQuery( cur ).is( selectors[ i ] ) ) {
+                                               ret.push({ selector: selectors[ i ], elem: cur, level: level });
+                                       }
+                               }
+
+                               cur = cur.parentNode;
+                               level++;
+                       }
+
+                       return ret;
+               }
+
+               // String
+               var pos = POS.test( selectors ) || typeof selectors !== "string" ?
+                               jQuery( selectors, context || this.context ) :
+                               0;
+
+               for ( i = 0, l = this.length; i < l; i++ ) {
+                       cur = this[i];
+
+                       while ( cur ) {
+                               if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+                                       ret.push( cur );
+                                       break;
+
+                               } else {
+                                       cur = cur.parentNode;
+                                       if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
+
+               return this.pushStack( ret, "closest", selectors );
+       },
+
+       // Determine the position of an element within
+       // the matched set of elements
+       index: function( elem ) {
+
+               // No argument, return index in parent
+               if ( !elem ) {
+                       return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
+               }
+
+               // index in selector
+               if ( typeof elem === "string" ) {
+                       return jQuery.inArray( this[0], jQuery( elem ) );
+               }
+
+               // Locate the position of the desired element
+               return jQuery.inArray(
+                       // If it receives a jQuery object, the first element is used
+                       elem.jquery ? elem[0] : elem, this );
+       },
+
+       add: function( selector, context ) {
+               var set = typeof selector === "string" ?
+                               jQuery( selector, context ) :
+                               jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+                       all = jQuery.merge( this.get(), set );
+
+               return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+                       all :
+                       jQuery.unique( all ) );
+       },
+
+       andSelf: function() {
+               return this.add( this.prevObject );
+       }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+       return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+       parent: function( elem ) {
+               var parent = elem.parentNode;
+               return parent && parent.nodeType !== 11 ? parent : null;
+       },
+       parents: function( elem ) {
+               return jQuery.dir( elem, "parentNode" );
+       },
+       parentsUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "parentNode", until );
+       },
+       next: function( elem ) {
+               return jQuery.nth( elem, 2, "nextSibling" );
+       },
+       prev: function( elem ) {
+               return jQuery.nth( elem, 2, "previousSibling" );
+       },
+       nextAll: function( elem ) {
+               return jQuery.dir( elem, "nextSibling" );
+       },
+       prevAll: function( elem ) {
+               return jQuery.dir( elem, "previousSibling" );
+       },
+       nextUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "nextSibling", until );
+       },
+       prevUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "previousSibling", until );
+       },
+       siblings: function( elem ) {
+               return jQuery.sibling( elem.parentNode.firstChild, elem );
+       },
+       children: function( elem ) {
+               return jQuery.sibling( elem.firstChild );
+       },
+       contents: function( elem ) {
+               return jQuery.nodeName( elem, "iframe" ) ?
+                       elem.contentDocument || elem.contentWindow.document :
+                       jQuery.makeArray( elem.childNodes );
+       }
+}, function( name, fn ) {
+       jQuery.fn[ name ] = function( until, selector ) {
+               var ret = jQuery.map( this, fn, until ),
+                       // The variable 'args' was introduced in
+                       // https://github.com/jquery/jquery/commit/52a0238
+                       // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
+                       // http://code.google.com/p/v8/issues/detail?id=1050
+                       args = slice.call(arguments);
+
+               if ( !runtil.test( name ) ) {
+                       selector = until;
+               }
+
+               if ( selector && typeof selector === "string" ) {
+                       ret = jQuery.filter( selector, ret );
+               }
+
+               ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+               if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+                       ret = ret.reverse();
+               }
+
+               return this.pushStack( ret, name, args.join(",") );
+       };
+});
+
+jQuery.extend({
+       filter: function( expr, elems, not ) {
+               if ( not ) {
+                       expr = ":not(" + expr + ")";
+               }
+
+               return elems.length === 1 ?
+                       jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+                       jQuery.find.matches(expr, elems);
+       },
+
+       dir: function( elem, dir, until ) {
+               var matched = [],
+                       cur = elem[ dir ];
+
+               while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+                       if ( cur.nodeType === 1 ) {
+                               matched.push( cur );
+                       }
+                       cur = cur[dir];
+               }
+               return matched;
+       },
+
+       nth: function( cur, result, dir, elem ) {
+               result = result || 1;
+               var num = 0;
+
+               for ( ; cur; cur = cur[dir] ) {
+                       if ( cur.nodeType === 1 && ++num === result ) {
+                               break;
+                       }
+               }
+
+               return cur;
+       },
+
+       sibling: function( n, elem ) {
+               var r = [];
+
+               for ( ; n; n = n.nextSibling ) {
+                       if ( n.nodeType === 1 && n !== elem ) {
+                               r.push( n );
+                       }
+               }
+
+               return r;
+       }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+       // Can't pass null or undefined to indexOf in Firefox 4
+       // Set to 0 to skip string check
+       qualifier = qualifier || 0;
+
+       if ( jQuery.isFunction( qualifier ) ) {
+               return jQuery.grep(elements, function( elem, i ) {
+                       var retVal = !!qualifier.call( elem, i, elem );
+                       return retVal === keep;
+               });
+
+       } else if ( qualifier.nodeType ) {
+               return jQuery.grep(elements, function( elem, i ) {
+                       return (elem === qualifier) === keep;
+               });
+
+       } else if ( typeof qualifier === "string" ) {
+               var filtered = jQuery.grep(elements, function( elem ) {
+                       return elem.nodeType === 1;
+               });
+
+               if ( isSimple.test( qualifier ) ) {
+                       return jQuery.filter(qualifier, filtered, !keep);
+               } else {
+                       qualifier = jQuery.filter( qualifier, filtered );
+               }
+       }
+
+       return jQuery.grep(elements, function( elem, i ) {
+               return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+       });
+}
+
+
+
+
+function createSafeFragment( document ) {
+       var nodeNames = (
+               "abbr article aside audio canvas datalist details figcaption figure footer " +
+               "header hgroup mark meter nav output progress section summary time video"
+       ).split( " " ),
+       safeFrag = document.createDocumentFragment();
+
+       if ( safeFrag.createElement ) {
+               while ( nodeNames.length ) {
+                       safeFrag.createElement(
+                               nodeNames.pop()
+                       );
+               }
+       }
+       return safeFrag;
+}
+
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+       rleadingWhitespace = /^\s+/,
+       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+       rtagName = /<([\w:]+)/,
+       rtbody = /<tbody/i,
+       rhtml = /<|&#?\w+;/,
+       rnoInnerhtml = /<(?:script|style)/i,
+       rnocache = /<(?:script|object|embed|option|style)/i,
+       // checked="checked" or checked
+       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+       rscriptType = /\/(java|ecma)script/i,
+       rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
+       wrapMap = {
+               option: [ 1, "<select multiple='multiple'>", "</select>" ],
+               legend: [ 1, "<fieldset>", "</fieldset>" ],
+               thead: [ 1, "<table>", "</table>" ],
+               tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+               td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+               col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+               area: [ 1, "<map>", "</map>" ],
+               _default: [ 0, "", "" ]
+       },
+       safeFragment = createSafeFragment( document );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+       wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+       text: function( text ) {
+               if ( jQuery.isFunction(text) ) {
+                       return this.each(function(i) {
+                               var self = jQuery( this );
+
+                               self.text( text.call(this, i, self.text()) );
+                       });
+               }
+
+               if ( typeof text !== "object" && text !== undefined ) {
+                       return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+               }
+
+               return jQuery.text( this );
+       },
+
+       wrapAll: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function(i) {
+                               jQuery(this).wrapAll( html.call(this, i) );
+                       });
+               }
+
+               if ( this[0] ) {
+                       // The elements to wrap the target around
+                       var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+                       if ( this[0].parentNode ) {
+                               wrap.insertBefore( this[0] );
+                       }
+
+                       wrap.map(function() {
+                               var elem = this;
+
+                               while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+                                       elem = elem.firstChild;
+                               }
+
+                               return elem;
+                       }).append( this );
+               }
+
+               return this;
+       },
+
+       wrapInner: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function(i) {
+                               jQuery(this).wrapInner( html.call(this, i) );
+                       });
+               }
+
+               return this.each(function() {
+                       var self = jQuery( this ),
+                               contents = self.contents();
+
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
+
+                       } else {
+                               self.append( html );
+                       }
+               });
+       },
+
+       wrap: function( html ) {
+               return this.each(function() {
+                       jQuery( this ).wrapAll( html );
+               });
+       },
+
+       unwrap: function() {
+               return this.parent().each(function() {
+                       if ( !jQuery.nodeName( this, "body" ) ) {
+                               jQuery( this ).replaceWith( this.childNodes );
+                       }
+               }).end();
+       },
+
+       append: function() {
+               return this.domManip(arguments, true, function( elem ) {
+                       if ( this.nodeType === 1 ) {
+                               this.appendChild( elem );
+                       }
+               });
+       },
+
+       prepend: function() {
+               return this.domManip(arguments, true, function( elem ) {
+                       if ( this.nodeType === 1 ) {
+                               this.insertBefore( elem, this.firstChild );
+                       }
+               });
+       },
+
+       before: function() {
+               if ( this[0] && this[0].parentNode ) {
+                       return this.domManip(arguments, false, function( elem ) {
+                               this.parentNode.insertBefore( elem, this );
+                       });
+               } else if ( arguments.length ) {
+                       var set = jQuery(arguments[0]);
+                       set.push.apply( set, this.toArray() );
+                       return this.pushStack( set, "before", arguments );
+               }
+       },
+
+       after: function() {
+               if ( this[0] && this[0].parentNode ) {
+                       return this.domManip(arguments, false, function( elem ) {
+                               this.parentNode.insertBefore( elem, this.nextSibling );
+                       });
+               } else if ( arguments.length ) {
+                       var set = this.pushStack( this, "after", arguments );
+                       set.push.apply( set, jQuery(arguments[0]).toArray() );
+                       return set;
+               }
+       },
+
+       // keepData is for internal use only--do not document
+       remove: function( selector, keepData ) {
+               for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+                       if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+                               if ( !keepData && elem.nodeType === 1 ) {
+                                       jQuery.cleanData( elem.getElementsByTagName("*") );
+                                       jQuery.cleanData( [ elem ] );
+                               }
+
+                               if ( elem.parentNode ) {
+                                       elem.parentNode.removeChild( elem );
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       empty: function() {
+               for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+                       // Remove element nodes and prevent memory leaks
+                       if ( elem.nodeType === 1 ) {
+                               jQuery.cleanData( elem.getElementsByTagName("*") );
+                       }
+
+                       // Remove any remaining nodes
+                       while ( elem.firstChild ) {
+                               elem.removeChild( elem.firstChild );
+                       }
+               }
+
+               return this;
+       },
+
+       clone: function( dataAndEvents, deepDataAndEvents ) {
+               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+               deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+               return this.map( function () {
+                       return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+               });
+       },
+
+       html: function( value ) {
+               if ( value === undefined ) {
+                       return this[0] && this[0].nodeType === 1 ?
+                               this[0].innerHTML.replace(rinlinejQuery, "") :
+                               null;
+
+               // See if we can take a shortcut and just use innerHTML
+               } else if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+                       (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+                       !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+                       value = value.replace(rxhtmlTag, "<$1></$2>");
+
+                       try {
+                               for ( var i = 0, l = this.length; i < l; i++ ) {
+                                       // Remove element nodes and prevent memory leaks
+                                       if ( this[i].nodeType === 1 ) {
+                                               jQuery.cleanData( this[i].getElementsByTagName("*") );
+                                               this[i].innerHTML = value;
+                                       }
+                               }
+
+                       // If using innerHTML throws an exception, use the fallback method
+                       } catch(e) {
+                               this.empty().append( value );
+                       }
+
+               } else if ( jQuery.isFunction( value ) ) {
+                       this.each(function(i){
+                               var self = jQuery( this );
+
+                               self.html( value.call(this, i, self.html()) );
+                       });
+
+               } else {
+                       this.empty().append( value );
+               }
+
+               return this;
+       },
+
+       replaceWith: function( value ) {
+               if ( this[0] && this[0].parentNode ) {
+                       // Make sure that the elements are removed from the DOM before they are inserted
+                       // this can help fix replacing a parent with child elements
+                       if ( jQuery.isFunction( value ) ) {
+                               return this.each(function(i) {
+                                       var self = jQuery(this), old = self.html();
+                                       self.replaceWith( value.call( this, i, old ) );
+                               });
+                       }
+
+                       if ( typeof value !== "string" ) {
+                               value = jQuery( value ).detach();
+                       }
+
+                       return this.each(function() {
+                               var next = this.nextSibling,
+                                       parent = this.parentNode;
+
+                               jQuery( this ).remove();
+
+                               if ( next ) {
+                                       jQuery(next).before( value );
+                               } else {
+                                       jQuery(parent).append( value );
+                               }
+                       });
+               } else {
+                       return this.length ?
+                               this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+                               this;
+               }
+       },
+
+       detach: function( selector ) {
+               return this.remove( selector, true );
+       },
+
+       domManip: function( args, table, callback ) {
+               var results, first, fragment, parent,
+                       value = args[0],
+                       scripts = [];
+
+               // We can't cloneNode fragments that contain checked, in WebKit
+               if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+                       return this.each(function() {
+                               jQuery(this).domManip( args, table, callback, true );
+                       });
+               }
+
+               if ( jQuery.isFunction(value) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               args[0] = value.call(this, i, table ? self.html() : undefined);
+                               self.domManip( args, table, callback );
+                       });
+               }
+
+               if ( this[0] ) {
+                       parent = value && value.parentNode;
+
+                       // If we're in a fragment, just use that instead of building a new one
+                       if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+                               results = { fragment: parent };
+
+                       } else {
+                               results = jQuery.buildFragment( args, this, scripts );
+                       }
+
+                       fragment = results.fragment;
+
+                       if ( fragment.childNodes.length === 1 ) {
+                               first = fragment = fragment.firstChild;
+                       } else {
+                               first = fragment.firstChild;
+                       }
+
+                       if ( first ) {
+                               table = table && jQuery.nodeName( first, "tr" );
+
+                               for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
+                                       callback.call(
+                                               table ?
+                                                       root(this[i], first) :
+                                                       this[i],
+                                               // Make sure that we do not leak memory by inadvertently discarding
+                                               // the original fragment (which might have attached data) instead of
+                                               // using it; in addition, use the original fragment object for the last
+                                               // item instead of first because it can end up being emptied incorrectly
+                                               // in certain situations (Bug #8070).
+                                               // Fragments from the fragment cache must always be cloned and never used
+                                               // in place.
+                                               results.cacheable || (l > 1 && i < lastIndex) ?
+                                                       jQuery.clone( fragment, true, true ) :
+                                                       fragment
+                                       );
+                               }
+                       }
+
+                       if ( scripts.length ) {
+                               jQuery.each( scripts, evalScript );
+                       }
+               }
+
+               return this;
+       }
+});
+
+function root( elem, cur ) {
+       return jQuery.nodeName(elem, "table") ?
+               (elem.getElementsByTagName("tbody")[0] ||
+               elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+               elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+
+       if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+               return;
+       }
+
+       var type, i, l,
+               oldData = jQuery._data( src ),
+               curData = jQuery._data( dest, oldData ),
+               events = oldData.events;
+
+       if ( events ) {
+               delete curData.handle;
+               curData.events = {};
+
+               for ( type in events ) {
+                       for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+                               jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
+                       }
+               }
+       }
+
+       // make the cloned public data object a copy from the original
+       if ( curData.data ) {
+               curData.data = jQuery.extend( {}, curData.data );
+       }
+}
+
+function cloneFixAttributes( src, dest ) {
+       var nodeName;
+
+       // We do not need to do anything for non-Elements
+       if ( dest.nodeType !== 1 ) {
+               return;
+       }
+
+       // clearAttributes removes the attributes, which we don't want,
+       // but also removes the attachEvent events, which we *do* want
+       if ( dest.clearAttributes ) {
+               dest.clearAttributes();
+       }
+
+       // mergeAttributes, in contrast, only merges back on the
+       // original attributes, not the events
+       if ( dest.mergeAttributes ) {
+               dest.mergeAttributes( src );
+       }
+
+       nodeName = dest.nodeName.toLowerCase();
+
+       // IE6-8 fail to clone children inside object elements that use
+       // the proprietary classid attribute value (rather than the type
+       // attribute) to identify the type of content to display
+       if ( nodeName === "object" ) {
+               dest.outerHTML = src.outerHTML;
+
+       } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
+               // IE6-8 fails to persist the checked state of a cloned checkbox
+               // or radio button. Worse, IE6-7 fail to give the cloned element
+               // a checked appearance if the defaultChecked value isn't also set
+               if ( src.checked ) {
+                       dest.defaultChecked = dest.checked = src.checked;
+               }
+
+               // IE6-7 get confused and end up setting the value of a cloned
+               // checkbox/radio button to an empty string instead of "on"
+               if ( dest.value !== src.value ) {
+                       dest.value = src.value;
+               }
+
+       // IE6-8 fails to return the selected option to the default selected
+       // state when cloning options
+       } else if ( nodeName === "option" ) {
+               dest.selected = src.defaultSelected;
+
+       // IE6-8 fails to set the defaultValue to the correct value when
+       // cloning other types of input fields
+       } else if ( nodeName === "input" || nodeName === "textarea" ) {
+               dest.defaultValue = src.defaultValue;
+       }
+
+       // Event data gets referenced instead of copied if the expando
+       // gets copied too
+       dest.removeAttribute( jQuery.expando );
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+       var fragment, cacheable, cacheresults, doc;
+
+  // nodes may contain either an explicit document object,
+  // a jQuery collection or context object.
+  // If nodes[0] contains a valid object to assign to doc
+  if ( nodes && nodes[0] ) {
+    doc = nodes[0].ownerDocument || nodes[0];
+  }
+
+  // Ensure that an attr object doesn't incorrectly stand in as a document object
+       // Chrome and Firefox seem to allow this to occur and will throw exception
+       // Fixes #8950
+       if ( !doc.createDocumentFragment ) {
+               doc = document;
+       }
+
+       // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
+       // Cloning options loses the selected state, so don't cache them
+       // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+       // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+       if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+               args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+               cacheable = true;
+
+               cacheresults = jQuery.fragments[ args[0] ];
+               if ( cacheresults && cacheresults !== 1 ) {
+                       fragment = cacheresults;
+               }
+       }
+
+       if ( !fragment ) {
+               fragment = doc.createDocumentFragment();
+               jQuery.clean( args, doc, fragment, scripts );
+       }
+
+       if ( cacheable ) {
+               jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+       }
+
+       return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+       appendTo: "append",
+       prependTo: "prepend",
+       insertBefore: "before",
+       insertAfter: "after",
+       replaceAll: "replaceWith"
+}, function( name, original ) {
+       jQuery.fn[ name ] = function( selector ) {
+               var ret = [],
+                       insert = jQuery( selector ),
+                       parent = this.length === 1 && this[0].parentNode;
+
+               if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+                       insert[ original ]( this[0] );
+                       return this;
+
+               } else {
+                       for ( var i = 0, l = insert.length; i < l; i++ ) {
+                               var elems = (i > 0 ? this.clone(true) : this).get();
+                               jQuery( insert[i] )[ original ]( elems );
+                               ret = ret.concat( elems );
+                       }
+
+                       return this.pushStack( ret, name, insert.selector );
+               }
+       };
+});
+
+function getAll( elem ) {
+       if ( typeof elem.getElementsByTagName !== "undefined" ) {
+               return elem.getElementsByTagName( "*" );
+
+       } else if ( typeof elem.querySelectorAll !== "undefined" ) {
+               return elem.querySelectorAll( "*" );
+
+       } else {
+               return [];
+       }
+}
+
+// Used in clean, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+       if ( elem.type === "checkbox" || elem.type === "radio" ) {
+               elem.defaultChecked = elem.checked;
+       }
+}
+// Finds all inputs and passes them to fixDefaultChecked
+function findInputs( elem ) {
+       var nodeName = (elem.nodeName || "").toLowerCase();
+       if ( nodeName === "input" ) {
+               fixDefaultChecked( elem );
+       // Skip scripts, get other children
+       } else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
+               jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
+       }
+}
+
+jQuery.extend({
+       clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+               var clone = elem.cloneNode(true),
+                               srcElements,
+                               destElements,
+                               i;
+
+               if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+                               (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+                       // IE copies events bound via attachEvent when using cloneNode.
+                       // Calling detachEvent on the clone will also remove the events
+                       // from the original. In order to get around this, we use some
+                       // proprietary methods to clear the events. Thanks to MooTools
+                       // guys for this hotness.
+
+                       cloneFixAttributes( elem, clone );
+
+                       // Using Sizzle here is crazy slow, so we use getElementsByTagName
+                       // instead
+                       srcElements = getAll( elem );
+                       destElements = getAll( clone );
+
+                       // Weird iteration because IE will replace the length property
+                       // with an element if you are cloning the body and one of the
+                       // elements on the page has a name or id of "length"
+                       for ( i = 0; srcElements[i]; ++i ) {
+                               // Ensure that the destination node is not null; Fixes #9587
+                               if ( destElements[i] ) {
+                                       cloneFixAttributes( srcElements[i], destElements[i] );
+                               }
+                       }
+               }
+
+               // Copy the events from the original to the clone
+               if ( dataAndEvents ) {
+                       cloneCopyEvent( elem, clone );
+
+                       if ( deepDataAndEvents ) {
+                               srcElements = getAll( elem );
+                               destElements = getAll( clone );
+
+                               for ( i = 0; srcElements[i]; ++i ) {
+                                       cloneCopyEvent( srcElements[i], destElements[i] );
+                               }
+                       }
+               }
+
+               srcElements = destElements = null;
+
+               // Return the cloned set
+               return clone;
+       },
+
+       clean: function( elems, context, fragment, scripts ) {
+               var checkScriptType;
+
+               context = context || document;
+
+               // !context.createElement fails in IE with an error but returns typeof 'object'
+               if ( typeof context.createElement === "undefined" ) {
+                       context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+               }
+
+               var ret = [], j;
+
+               for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+                       if ( typeof elem === "number" ) {
+                               elem += "";
+                       }
+
+                       if ( !elem ) {
+                               continue;
+                       }
+
+                       // Convert html string into DOM nodes
+                       if ( typeof elem === "string" ) {
+                               if ( !rhtml.test( elem ) ) {
+                                       elem = context.createTextNode( elem );
+                               } else {
+                                       // Fix "XHTML"-style tags in all browsers
+                                       elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+                                       // Trim whitespace, otherwise indexOf won't work as expected
+                                       var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+                                               wrap = wrapMap[ tag ] || wrapMap._default,
+                                               depth = wrap[0],
+                                               div = context.createElement("div");
+
+                                       // Append wrapper element to unknown element safe doc fragment
+                                       if ( context === document ) {
+                                               // Use the fragment we've already created for this document
+                                               safeFragment.appendChild( div );
+                                       } else {
+                                               // Use a fragment created with the owner document
+                                               createSafeFragment( context ).appendChild( div );
+                                       }
+
+                                       // Go to html and back, then peel off extra wrappers
+                                       div.innerHTML = wrap[1] + elem + wrap[2];
+
+                                       // Move to the right depth
+                                       while ( depth-- ) {
+                                               div = div.lastChild;
+                                       }
+
+                                       // Remove IE's autoinserted <tbody> from table fragments
+                                       if ( !jQuery.support.tbody ) {
+
+                                               // String was a <table>, *may* have spurious <tbody>
+                                               var hasBody = rtbody.test(elem),
+                                                       tbody = tag === "table" && !hasBody ?
+                                                               div.firstChild && div.firstChild.childNodes :
+
+                                                               // String was a bare <thead> or <tfoot>
+                                                               wrap[1] === "<table>" && !hasBody ?
+                                                                       div.childNodes :
+                                                                       [];
+
+                                               for ( j = tbody.length - 1; j >= 0 ; --j ) {
+                                                       if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+                                                               tbody[ j ].parentNode.removeChild( tbody[ j ] );
+                                                       }
+                                               }
+                                       }
+
+                                       // IE completely kills leading whitespace when innerHTML is used
+                                       if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+                                               div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+                                       }
+
+                                       elem = div.childNodes;
+                               }
+                       }
+
+                       // Resets defaultChecked for any radios and checkboxes
+                       // about to be appended to the DOM in IE 6/7 (#8060)
+                       var len;
+                       if ( !jQuery.support.appendChecked ) {
+                               if ( elem[0] && typeof (len = elem.length) === "number" ) {
+                                       for ( j = 0; j < len; j++ ) {
+                                               findInputs( elem[j] );
+                                       }
+                               } else {
+                                       findInputs( elem );
+                               }
+                       }
+
+                       if ( elem.nodeType ) {
+                               ret.push( elem );
+                       } else {
+                               ret = jQuery.merge( ret, elem );
+                       }
+               }
+
+               if ( fragment ) {
+                       checkScriptType = function( elem ) {
+                               return !elem.type || rscriptType.test( elem.type );
+                       };
+                       for ( i = 0; ret[i]; i++ ) {
+                               if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+                                       scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+                               } else {
+                                       if ( ret[i].nodeType === 1 ) {
+                                               var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
+
+                                               ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+                                       }
+                                       fragment.appendChild( ret[i] );
+                               }
+                       }
+               }
+
+               return ret;
+       },
+
+       cleanData: function( elems ) {
+               var data, id, 
+                       cache = jQuery.cache,
+                       special = jQuery.event.special,
+                       deleteExpando = jQuery.support.deleteExpando;
+
+               for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+                       if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+                               continue;
+                       }
+
+                       id = elem[ jQuery.expando ];
+
+                       if ( id ) {
+                               data = cache[ id ];
+
+                               if ( data && data.events ) {
+                                       for ( var type in data.events ) {
+                                               if ( special[ type ] ) {
+                                                       jQuery.event.remove( elem, type );
+
+                                               // This is a shortcut to avoid jQuery.event.remove's overhead
+                                               } else {
+                                                       jQuery.removeEvent( elem, type, data.handle );
+                                               }
+                                       }
+
+                                       // Null the DOM reference to avoid IE6/7/8 leak (#7054)
+                                       if ( data.handle ) {
+                                               data.handle.elem = null;
+                                       }
+                               }
+
+                               if ( deleteExpando ) {
+                                       delete elem[ jQuery.expando ];
+
+                               } else if ( elem.removeAttribute ) {
+                                       elem.removeAttribute( jQuery.expando );
+                               }
+
+                               delete cache[ id ];
+                       }
+               }
+       }
+});
+
+function evalScript( i, elem ) {
+       if ( elem.src ) {
+               jQuery.ajax({
+                       url: elem.src,
+                       async: false,
+                       dataType: "script"
+               });
+       } else {
+               jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
+       }
+
+       if ( elem.parentNode ) {
+               elem.parentNode.removeChild( elem );
+       }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+       ropacity = /opacity=([^)]*)/,
+       // fixed for IE9, see #8346
+       rupper = /([A-Z]|^ms)/g,
+       rnumpx = /^-?\d+(?:px)?$/i,
+       rnum = /^-?\d/,
+       rrelNum = /^([\-+])=([\-+.\de]+)/,
+
+       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+       cssWidth = [ "Left", "Right" ],
+       cssHeight = [ "Top", "Bottom" ],
+       curCSS,
+
+       getComputedStyle,
+       currentStyle;
+
+jQuery.fn.css = function( name, value ) {
+       // Setting 'undefined' is a no-op
+       if ( arguments.length === 2 && value === undefined ) {
+               return this;
+       }
+
+       return jQuery.access( this, name, value, true, function( elem, name, value ) {
+               return value !== undefined ?
+                       jQuery.style( elem, name, value ) :
+                       jQuery.css( elem, name );
+       });
+};
+
+jQuery.extend({
+       // Add in style property hooks for overriding the default
+       // behavior of getting and setting a style property
+       cssHooks: {
+               opacity: {
+                       get: function( elem, computed ) {
+                               if ( computed ) {
+                                       // We should always get a number back from opacity
+                                       var ret = curCSS( elem, "opacity", "opacity" );
+                                       return ret === "" ? "1" : ret;
+
+                               } else {
+                                       return elem.style.opacity;
+                               }
+                       }
+               }
+       },
+
+       // Exclude the following css properties to add px
+       cssNumber: {
+               "fillOpacity": true,
+               "fontWeight": true,
+               "lineHeight": true,
+               "opacity": true,
+               "orphans": true,
+               "widows": true,
+               "zIndex": true,
+               "zoom": true
+       },
+
+       // Add in properties whose names you wish to fix before
+       // setting or getting the value
+       cssProps: {
+               // normalize float css property
+               "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+       },
+
+       // Get and set the style property on a DOM Node
+       style: function( elem, name, value, extra ) {
+               // Don't set styles on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+                       return;
+               }
+
+               // Make sure that we're working with the right name
+               var ret, type, origName = jQuery.camelCase( name ),
+                       style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+               name = jQuery.cssProps[ origName ] || origName;
+
+               // Check if we're setting a value
+               if ( value !== undefined ) {
+                       type = typeof value;
+
+                       // convert relative number strings (+= or -=) to relative numbers. #7345
+                       if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+                               value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
+                               // Fixes bug #9237
+                               type = "number";
+                       }
+
+                       // Make sure that NaN and null values aren't set. See: #7116
+                       if ( value == null || type === "number" && isNaN( value ) ) {
+                               return;
+                       }
+
+                       // If a number was passed in, add 'px' to the (except for certain CSS properties)
+                       if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+                               value += "px";
+                       }
+
+                       // If a hook was provided, use that value, otherwise just set the specified value
+                       if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+                               // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+                               // Fixes bug #5509
+                               try {
+                                       style[ name ] = value;
+                               } catch(e) {}
+                       }
+
+               } else {
+                       // If a hook was provided get the non-computed value from there
+                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+                               return ret;
+                       }
+
+                       // Otherwise just get the value from the style object
+                       return style[ name ];
+               }
+       },
+
+       css: function( elem, name, extra ) {
+               var ret, hooks;
+
+               // Make sure that we're working with the right name
+               name = jQuery.camelCase( name );
+               hooks = jQuery.cssHooks[ name ];
+               name = jQuery.cssProps[ name ] || name;
+
+               // cssFloat needs a special treatment
+               if ( name === "cssFloat" ) {
+                       name = "float";
+               }
+
+               // If a hook was provided get the computed value from there
+               if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+                       return ret;
+
+               // Otherwise, if a way to get the computed value exists, use that
+               } else if ( curCSS ) {
+                       return curCSS( elem, name );
+               }
+       },
+
+       // A method for quickly swapping in/out CSS properties to get correct calculations
+       swap: function( elem, options, callback ) {
+               var old = {};
+
+               // Remember the old values, and insert the new ones
+               for ( var name in options ) {
+                       old[ name ] = elem.style[ name ];
+                       elem.style[ name ] = options[ name ];
+               }
+
+               callback.call( elem );
+
+               // Revert the old values
+               for ( name in options ) {
+                       elem.style[ name ] = old[ name ];
+               }
+       }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+       jQuery.cssHooks[ name ] = {
+               get: function( elem, computed, extra ) {
+                       var val;
+
+                       if ( computed ) {
+                               if ( elem.offsetWidth !== 0 ) {
+                                       return getWH( elem, name, extra );
+                               } else {
+                                       jQuery.swap( elem, cssShow, function() {
+                                               val = getWH( elem, name, extra );
+                                       });
+                               }
+
+                               return val;
+                       }
+               },
+
+               set: function( elem, value ) {
+                       if ( rnumpx.test( value ) ) {
+                               // ignore negative width and height values #1599
+                               value = parseFloat( value );
+
+                               if ( value >= 0 ) {
+                                       return value + "px";
+                               }
+
+                       } else {
+                               return value;
+                       }
+               }
+       };
+});
+
+if ( !jQuery.support.opacity ) {
+       jQuery.cssHooks.opacity = {
+               get: function( elem, computed ) {
+                       // IE uses filters for opacity
+                       return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+                               ( parseFloat( RegExp.$1 ) / 100 ) + "" :
+                               computed ? "1" : "";
+               },
+
+               set: function( elem, value ) {
+                       var style = elem.style,
+                               currentStyle = elem.currentStyle,
+                               opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+                               filter = currentStyle && currentStyle.filter || style.filter || "";
+
+                       // IE has trouble with opacity if it does not have layout
+                       // Force it by setting the zoom level
+                       style.zoom = 1;
+
+                       // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+                       if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
+
+                               // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+                               // if "filter:" is present at all, clearType is disabled, we want to avoid this
+                               // style.removeAttribute is IE Only, but so apparently is this code path...
+                               style.removeAttribute( "filter" );
+
+                               // if there there is no filter style applied in a css rule, we are done
+                               if ( currentStyle && !currentStyle.filter ) {
+                                       return;
+                               }
+                       }
+
+                       // otherwise, set new filter values
+                       style.filter = ralpha.test( filter ) ?
+                               filter.replace( ralpha, opacity ) :
+                               filter + " " + opacity;
+               }
+       };
+}
+
+jQuery(function() {
+       // This hook cannot be added until DOM ready because the support test
+       // for it is not run until after DOM ready
+       if ( !jQuery.support.reliableMarginRight ) {
+               jQuery.cssHooks.marginRight = {
+                       get: function( elem, computed ) {
+                               // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+                               // Work around by temporarily setting element display to inline-block
+                               var ret;
+                               jQuery.swap( elem, { "display": "inline-block" }, function() {
+                                       if ( computed ) {
+                                               ret = curCSS( elem, "margin-right", "marginRight" );
+                                       } else {
+                                               ret = elem.style.marginRight;
+                                       }
+                               });
+                               return ret;
+                       }
+               };
+       }
+});
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+       getComputedStyle = function( elem, name ) {
+               var ret, defaultView, computedStyle;
+
+               name = name.replace( rupper, "-$1" ).toLowerCase();
+
+               if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+                       return undefined;
+               }
+
+               if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+                       ret = computedStyle.getPropertyValue( name );
+                       if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+                               ret = jQuery.style( elem, name );
+                       }
+               }
+
+               return ret;
+       };
+}
+
+if ( document.documentElement.currentStyle ) {
+       currentStyle = function( elem, name ) {
+               var left,
+                       ret = elem.currentStyle && elem.currentStyle[ name ],
+                       rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
+                       style = elem.style;
+
+               // From the awesome hack by Dean Edwards
+               // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+               // If we're not dealing with a regular pixel number
+               // but a number that has a weird ending, we need to convert it to pixels
+               if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+                       // Remember the original values
+                       left = style.left;
+
+                       // Put in the new values to get a computed value out
+                       if ( rsLeft ) {
+                               elem.runtimeStyle.left = elem.currentStyle.left;
+                       }
+                       style.left = name === "fontSize" ? "1em" : (ret || 0);
+                       ret = style.pixelLeft + "px";
+
+                       // Revert the changed values
+                       style.left = left;
+                       if ( rsLeft ) {
+                               elem.runtimeStyle.left = rsLeft;
+                       }
+               }
+
+               return ret === "" ? "auto" : ret;
+       };
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWH( elem, name, extra ) {
+
+       // Start with offset property
+       var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+               which = name === "width" ? cssWidth : cssHeight;
+
+       if ( val > 0 ) {
+               if ( extra !== "border" ) {
+                       jQuery.each( which, function() {
+                               if ( !extra ) {
+                                       val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
+                               }
+                               if ( extra === "margin" ) {
+                                       val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
+                               } else {
+                                       val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
+                               }
+                       });
+               }
+
+               return val + "px";
+       }
+
+       // Fall back to computed then uncomputed css if necessary
+       val = curCSS( elem, name, name );
+       if ( val < 0 || val == null ) {
+               val = elem.style[ name ] || 0;
+       }
+       // Normalize "", auto, and prepare for extra
+       val = parseFloat( val ) || 0;
+
+       // Add padding, border, margin
+       if ( extra ) {
+               jQuery.each( which, function() {
+                       val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
+                       if ( extra !== "padding" ) {
+                               val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
+                       }
+                       if ( extra === "margin" ) {
+                               val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
+                       }
+               });
+       }
+
+       return val + "px";
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+       jQuery.expr.filters.hidden = function( elem ) {
+               var width = elem.offsetWidth,
+                       height = elem.offsetHeight;
+
+               return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+       };
+
+       jQuery.expr.filters.visible = function( elem ) {
+               return !jQuery.expr.filters.hidden( elem );
+       };
+}
+
+
+
+
+var r20 = /%20/g,
+       rbracket = /\[\]$/,
+       rCRLF = /\r?\n/g,
+       rhash = /#.*$/,
+       rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+       rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+       // #7653, #8125, #8152: local protocol detection
+       rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
+       rnoContent = /^(?:GET|HEAD)$/,
+       rprotocol = /^\/\//,
+       rquery = /\?/,
+       rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+       rselectTextarea = /^(?:select|textarea)/i,
+       rspacesAjax = /\s+/,
+       rts = /([?&])_=[^&]*/,
+       rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
+
+       // Keep a copy of the old load method
+       _load = jQuery.fn.load,
+
+       /* Prefilters
+        * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+        * 2) These are called:
+        *    - BEFORE asking for a transport
+        *    - AFTER param serialization (s.data is a string if s.processData is true)
+        * 3) key is the dataType
+        * 4) the catchall symbol "*" can be used
+        * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+        */
+       prefilters = {},
+
+       /* Transports bindings
+        * 1) key is the dataType
+        * 2) the catchall symbol "*" can be used
+        * 3) selection will start with transport dataType and THEN go to "*" if needed
+        */
+       transports = {},
+
+       // Document location
+       ajaxLocation,
+
+       // Document location segments
+       ajaxLocParts,
+
+       // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+       allTypes = ["*/"] + ["*"];
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+       ajaxLocation = location.href;
+} catch( e ) {
+       // Use the href attribute of an A element
+       // since IE will modify it given document.location
+       ajaxLocation = document.createElement( "a" );
+       ajaxLocation.href = "";
+       ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+       // dataTypeExpression is optional and defaults to "*"
+       return function( dataTypeExpression, func ) {
+
+               if ( typeof dataTypeExpression !== "string" ) {
+                       func = dataTypeExpression;
+                       dataTypeExpression = "*";
+               }
+
+               if ( jQuery.isFunction( func ) ) {
+                       var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
+                               i = 0,
+                               length = dataTypes.length,
+                               dataType,
+                               list,
+                               placeBefore;
+
+                       // For each dataType in the dataTypeExpression
+                       for(; i < length; i++ ) {
+                               dataType = dataTypes[ i ];
+                               // We control if we're asked to add before
+                               // any existing element
+                               placeBefore = /^\+/.test( dataType );
+                               if ( placeBefore ) {
+                                       dataType = dataType.substr( 1 ) || "*";
+                               }
+                               list = structure[ dataType ] = structure[ dataType ] || [];
+                               // then we add to the structure accordingly
+                               list[ placeBefore ? "unshift" : "push" ]( func );
+                       }
+               }
+       };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+               dataType /* internal */, inspected /* internal */ ) {
+
+       dataType = dataType || options.dataTypes[ 0 ];
+       inspected = inspected || {};
+
+       inspected[ dataType ] = true;
+
+       var list = structure[ dataType ],
+               i = 0,
+               length = list ? list.length : 0,
+               executeOnly = ( structure === prefilters ),
+               selection;
+
+       for(; i < length && ( executeOnly || !selection ); i++ ) {
+               selection = list[ i ]( options, originalOptions, jqXHR );
+               // If we got redirected to another dataType
+               // we try there if executing only and not done already
+               if ( typeof selection === "string" ) {
+                       if ( !executeOnly || inspected[ selection ] ) {
+                               selection = undefined;
+                       } else {
+                               options.dataTypes.unshift( selection );
+                               selection = inspectPrefiltersOrTransports(
+                                               structure, options, originalOptions, jqXHR, selection, inspected );
+                       }
+               }
+       }
+       // If we're only executing or nothing was selected
+       // we try the catchall dataType if not done already
+       if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+               selection = inspectPrefiltersOrTransports(
+                               structure, options, originalOptions, jqXHR, "*", inspected );
+       }
+       // unnecessary when only executing (prefilters)
+       // but it'll be ignored by the caller in that case
+       return selection;
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+       var key, deep,
+               flatOptions = jQuery.ajaxSettings.flatOptions || {};
+       for( key in src ) {
+               if ( src[ key ] !== undefined ) {
+                       ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+               }
+       }
+       if ( deep ) {
+               jQuery.extend( true, target, deep );
+       }
+}
+
+jQuery.fn.extend({
+       load: function( url, params, callback ) {
+               if ( typeof url !== "string" && _load ) {
+                       return _load.apply( this, arguments );
+
+               // Don't do a request if no elements are being requested
+               } else if ( !this.length ) {
+                       return this;
+               }
+
+               var off = url.indexOf( " " );
+               if ( off >= 0 ) {
+                       var selector = url.slice( off, url.length );
+                       url = url.slice( 0, off );
+               }
+
+               // Default to a GET request
+               var type = "GET";
+
+               // If the second parameter was provided
+               if ( params ) {
+                       // If it's a function
+                       if ( jQuery.isFunction( params ) ) {
+                               // We assume that it's the callback
+                               callback = params;
+                               params = undefined;
+
+                       // Otherwise, build a param string
+                       } else if ( typeof params === "object" ) {
+                               params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+                               type = "POST";
+                       }
+               }
+
+               var self = this;
+
+               // Request the remote document
+               jQuery.ajax({
+                       url: url,
+                       type: type,
+                       dataType: "html",
+                       data: params,
+                       // Complete callback (responseText is used internally)
+                       complete: function( jqXHR, status, responseText ) {
+                               // Store the response as specified by the jqXHR object
+                               responseText = jqXHR.responseText;
+                               // If successful, inject the HTML into all the matched elements
+                               if ( jqXHR.isResolved() ) {
+                                       // #4825: Get the actual response in case
+                                       // a dataFilter is present in ajaxSettings
+                                       jqXHR.done(function( r ) {
+                                               responseText = r;
+                                       });
+                                       // See if a selector was specified
+                                       self.html( selector ?
+                                               // Create a dummy div to hold the results
+                                               jQuery("<div>")
+                                                       // inject the contents of the document in, removing the scripts
+                                                       // to avoid any 'Permission Denied' errors in IE
+                                                       .append(responseText.replace(rscript, ""))
+
+                                                       // Locate the specified elements
+                                                       .find(selector) :
+
+                                               // If not, just inject the full result
+                                               responseText );
+                               }
+
+                               if ( callback ) {
+                                       self.each( callback, [ responseText, status, jqXHR ] );
+                               }
+                       }
+               });
+
+               return this;
+       },
+
+       serialize: function() {
+               return jQuery.param( this.serializeArray() );
+       },
+
+       serializeArray: function() {
+               return this.map(function(){
+                       return this.elements ? jQuery.makeArray( this.elements ) : this;
+               })
+               .filter(function(){
+                       return this.name && !this.disabled &&
+                               ( this.checked || rselectTextarea.test( this.nodeName ) ||
+                                       rinput.test( this.type ) );
+               })
+               .map(function( i, elem ){
+                       var val = jQuery( this ).val();
+
+                       return val == null ?
+                               null :
+                               jQuery.isArray( val ) ?
+                                       jQuery.map( val, function( val, i ){
+                                               return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+                                       }) :
+                                       { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+               }).get();
+       }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+       jQuery.fn[ o ] = function( f ){
+               return this.bind( o, f );
+       };
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+       jQuery[ method ] = function( url, data, callback, type ) {
+               // shift arguments if data argument was omitted
+               if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
+                       callback = data;
+                       data = undefined;
+               }
+
+               return jQuery.ajax({
+                       type: method,
+                       url: url,
+                       data: data,
+                       success: callback,
+                       dataType: type
+               });
+       };
+});
+
+jQuery.extend({
+
+       getScript: function( url, callback ) {
+               return jQuery.get( url, undefined, callback, "script" );
+       },
+
+       getJSON: function( url, data, callback ) {
+               return jQuery.get( url, data, callback, "json" );
+       },
+
+       // Creates a full fledged settings object into target
+       // with both ajaxSettings and settings fields.
+       // If target is omitted, writes into ajaxSettings.
+       ajaxSetup: function( target, settings ) {
+               if ( settings ) {
+                       // Building a settings object
+                       ajaxExtend( target, jQuery.ajaxSettings );
+               } else {
+                       // Extending ajaxSettings
+                       settings = target;
+                       target = jQuery.ajaxSettings;
+               }
+               ajaxExtend( target, settings );
+               return target;
+       },
+
+       ajaxSettings: {
+               url: ajaxLocation,
+               isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+               global: true,
+               type: "GET",
+               contentType: "application/x-www-form-urlencoded",
+               processData: true,
+               async: true,
+               /*
+               timeout: 0,
+               data: null,
+               dataType: null,
+               username: null,
+               password: null,
+               cache: null,
+               traditional: false,
+               headers: {},
+               */
+
+               accepts: {
+                       xml: "application/xml, text/xml",
+                       html: "text/html",
+                       text: "text/plain",
+                       json: "application/json, text/javascript",
+                       "*": allTypes
+               },
+
+               contents: {
+                       xml: /xml/,
+                       html: /html/,
+                       json: /json/
+               },
+
+               responseFields: {
+                       xml: "responseXML",
+                       text: "responseText"
+               },
+
+               // List of data converters
+               // 1) key format is "source_type destination_type" (a single space in-between)
+               // 2) the catchall symbol "*" can be used for source_type
+               converters: {
+
+                       // Convert anything to text
+                       "* text": window.String,
+
+                       // Text to html (true = no transformation)
+                       "text html": true,
+
+                       // Evaluate text as a json expression
+                       "text json": jQuery.parseJSON,
+
+                       // Parse text as xml
+                       "text xml": jQuery.parseXML
+               },
+
+               // For options that shouldn't be deep extended:
+               // you can add your own custom options here if
+               // and when you create one that shouldn't be
+               // deep extended (see ajaxExtend)
+               flatOptions: {
+                       context: true,
+                       url: true
+               }
+       },
+
+       ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+       ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+       // Main method
+       ajax: function( url, options ) {
+
+               // If url is an object, simulate pre-1.5 signature
+               if ( typeof url === "object" ) {
+                       options = url;
+                       url = undefined;
+               }
+
+               // Force options to be an object
+               options = options || {};
+
+               var // Create the final options object
+                       s = jQuery.ajaxSetup( {}, options ),
+                       // Callbacks context
+                       callbackContext = s.context || s,
+                       // Context for global events
+                       // It's the callbackContext if one was provided in the options
+                       // and if it's a DOM node or a jQuery collection
+                       globalEventContext = callbackContext !== s &&
+                               ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+                                               jQuery( callbackContext ) : jQuery.event,
+                       // Deferreds
+                       deferred = jQuery.Deferred(),
+                       completeDeferred = jQuery.Callbacks( "once memory" ),
+                       // Status-dependent callbacks
+                       statusCode = s.statusCode || {},
+                       // ifModified key
+                       ifModifiedKey,
+                       // Headers (they are sent all at once)
+                       requestHeaders = {},
+                       requestHeadersNames = {},
+                       // Response headers
+                       responseHeadersString,
+                       responseHeaders,
+                       // transport
+                       transport,
+                       // timeout handle
+                       timeoutTimer,
+                       // Cross-domain detection vars
+                       parts,
+                       // The jqXHR state
+                       state = 0,
+                       // To know if global events are to be dispatched
+                       fireGlobals,
+                       // Loop variable
+                       i,
+                       // Fake xhr
+                       jqXHR = {
+
+                               readyState: 0,
+
+                               // Caches the header
+                               setRequestHeader: function( name, value ) {
+                                       if ( !state ) {
+                                               var lname = name.toLowerCase();
+                                               name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+                                               requestHeaders[ name ] = value;
+                                       }
+                                       return this;
+                               },
+
+                               // Raw string
+                               getAllResponseHeaders: function() {
+                                       return state === 2 ? responseHeadersString : null;
+                               },
+
+                               // Builds headers hashtable if needed
+                               getResponseHeader: function( key ) {
+                                       var match;
+                                       if ( state === 2 ) {
+                                               if ( !responseHeaders ) {
+                                                       responseHeaders = {};
+                                                       while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+                                                               responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+                                                       }
+                                               }
+                                               match = responseHeaders[ key.toLowerCase() ];
+                                       }
+                                       return match === undefined ? null : match;
+                               },
+
+                               // Overrides response content-type header
+                               overrideMimeType: function( type ) {
+                                       if ( !state ) {
+                                               s.mimeType = type;
+                                       }
+                                       return this;
+                               },
+
+                               // Cancel the request
+                               abort: function( statusText ) {
+                                       statusText = statusText || "abort";
+                                       if ( transport ) {
+                                               transport.abort( statusText );
+                                       }
+                                       done( 0, statusText );
+                                       return this;
+                               }
+                       };
+
+               // Callback for when everything is done
+               // It is defined here because jslint complains if it is declared
+               // at the end of the function (which would be more logical and readable)
+               function done( status, nativeStatusText, responses, headers ) {
+
+                       // Called once
+                       if ( state === 2 ) {
+                               return;
+                       }
+
+                       // State is "done" now
+                       state = 2;
+
+                       // Clear timeout if it exists
+                       if ( timeoutTimer ) {
+                               clearTimeout( timeoutTimer );
+                       }
+
+                       // Dereference transport for early garbage collection
+                       // (no matter how long the jqXHR object will be used)
+                       transport = undefined;
+
+                       // Cache response headers
+                       responseHeadersString = headers || "";
+
+                       // Set readyState
+                       jqXHR.readyState = status > 0 ? 4 : 0;
+
+                       var isSuccess,
+                               success,
+                               error,
+                               statusText = nativeStatusText,
+                               response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
+                               lastModified,
+                               etag;
+
+                       // If successful, handle type chaining
+                       if ( status >= 200 && status < 300 || status === 304 ) {
+
+                               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+                               if ( s.ifModified ) {
+
+                                       if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
+                                               jQuery.lastModified[ ifModifiedKey ] = lastModified;
+                                       }
+                                       if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
+                                               jQuery.etag[ ifModifiedKey ] = etag;
+                                       }
+                               }
+
+                               // If not modified
+                               if ( status === 304 ) {
+
+                                       statusText = "notmodified";
+                                       isSuccess = true;
+
+                               // If we have data
+                               } else {
+
+                                       try {
+                                               success = ajaxConvert( s, response );
+                                               statusText = "success";
+                                               isSuccess = true;
+                                       } catch(e) {
+                                               // We have a parsererror
+                                               statusText = "parsererror";
+                                               error = e;
+                                       }
+                               }
+                       } else {
+                               // We extract error from statusText
+                               // then normalize statusText and status for non-aborts
+                               error = statusText;
+                               if( !statusText || status ) {
+                                       statusText = "error";
+                                       if ( status < 0 ) {
+                                               status = 0;
+                                       }
+                               }
+                       }
+
+                       // Set data for the fake xhr object
+                       jqXHR.status = status;
+                       jqXHR.statusText = "" + ( nativeStatusText || statusText );
+
+                       // Success/Error
+                       if ( isSuccess ) {
+                               deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+                       } else {
+                               deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+                       }
+
+                       // Status-dependent callbacks
+                       jqXHR.statusCode( statusCode );
+                       statusCode = undefined;
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+                                               [ jqXHR, s, isSuccess ? success : error ] );
+                       }
+
+                       // Complete
+                       completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+                               // Handle the global AJAX counter
+                               if ( !( --jQuery.active ) ) {
+                                       jQuery.event.trigger( "ajaxStop" );
+                               }
+                       }
+               }
+
+               // Attach deferreds
+               deferred.promise( jqXHR );
+               jqXHR.success = jqXHR.done;
+               jqXHR.error = jqXHR.fail;
+               jqXHR.complete = completeDeferred.add;
+
+               // Status-dependent callbacks
+               jqXHR.statusCode = function( map ) {
+                       if ( map ) {
+                               var tmp;
+                               if ( state < 2 ) {
+                                       for( tmp in map ) {
+                                               statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
+                                       }
+                               } else {
+                                       tmp = map[ jqXHR.status ];
+                                       jqXHR.then( tmp, tmp );
+                               }
+                       }
+                       return this;
+               };
+
+               // Remove hash character (#7531: and string promotion)
+               // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+               // We also use the url parameter if available
+               s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+               // Extract dataTypes list
+               s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
+
+               // Determine if a cross-domain request is in order
+               if ( s.crossDomain == null ) {
+                       parts = rurl.exec( s.url.toLowerCase() );
+                       s.crossDomain = !!( parts &&
+                               ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
+                                       ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+                                               ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+                       );
+               }
+
+               // Convert data if not already a string
+               if ( s.data && s.processData && typeof s.data !== "string" ) {
+                       s.data = jQuery.param( s.data, s.traditional );
+               }
+
+               // Apply prefilters
+               inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+               // If request was aborted inside a prefiler, stop there
+               if ( state === 2 ) {
+                       return false;
+               }
+
+               // We can fire global events as of now if asked to
+               fireGlobals = s.global;
+
+               // Uppercase the type
+               s.type = s.type.toUpperCase();
+
+               // Determine if request has content
+               s.hasContent = !rnoContent.test( s.type );
+
+               // Watch for a new set of requests
+               if ( fireGlobals && jQuery.active++ === 0 ) {
+                       jQuery.event.trigger( "ajaxStart" );
+               }
+
+               // More options handling for requests with no content
+               if ( !s.hasContent ) {
+
+                       // If data is available, append data to url
+                       if ( s.data ) {
+                               s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+                               // #9682: remove data so that it's not used in an eventual retry
+                               delete s.data;
+                       }
+
+                       // Get ifModifiedKey before adding the anti-cache parameter
+                       ifModifiedKey = s.url;
+
+                       // Add anti-cache in url if needed
+                       if ( s.cache === false ) {
+
+                               var ts = jQuery.now(),
+                                       // try replacing _= if it is there
+                                       ret = s.url.replace( rts, "$1_=" + ts );
+
+                               // if nothing was replaced, add timestamp to the end
+                               s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+                       }
+               }
+
+               // Set the correct header, if data is being sent
+               if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+                       jqXHR.setRequestHeader( "Content-Type", s.contentType );
+               }
+
+               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+               if ( s.ifModified ) {
+                       ifModifiedKey = ifModifiedKey || s.url;
+                       if ( jQuery.lastModified[ ifModifiedKey ] ) {
+                               jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
+                       }
+                       if ( jQuery.etag[ ifModifiedKey ] ) {
+                               jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
+                       }
+               }
+
+               // Set the Accepts header for the server, depending on the dataType
+               jqXHR.setRequestHeader(
+                       "Accept",
+                       s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+                               s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+                               s.accepts[ "*" ]
+               );
+
+               // Check for headers option
+               for ( i in s.headers ) {
+                       jqXHR.setRequestHeader( i, s.headers[ i ] );
+               }
+
+               // Allow custom headers/mimetypes and early abort
+               if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+                               // Abort if not done already
+                               jqXHR.abort();
+                               return false;
+
+               }
+
+               // Install callbacks on deferreds
+               for ( i in { success: 1, error: 1, complete: 1 } ) {
+                       jqXHR[ i ]( s[ i ] );
+               }
+
+               // Get transport
+               transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+               // If no transport, we auto-abort
+               if ( !transport ) {
+                       done( -1, "No Transport" );
+               } else {
+                       jqXHR.readyState = 1;
+                       // Send global event
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+                       }
+                       // Timeout
+                       if ( s.async && s.timeout > 0 ) {
+                               timeoutTimer = setTimeout( function(){
+                                       jqXHR.abort( "timeout" );
+                               }, s.timeout );
+                       }
+
+                       try {
+                               state = 1;
+                               transport.send( requestHeaders, done );
+                       } catch (e) {
+                               // Propagate exception as error if not done
+                               if ( state < 2 ) {
+                                       done( -1, e );
+                               // Simply rethrow otherwise
+                               } else {
+                                       jQuery.error( e );
+                               }
+                       }
+               }
+
+               return jqXHR;
+       },
+
+       // Serialize an array of form elements or a set of
+       // key/values into a query string
+       param: function( a, traditional ) {
+               var s = [],
+                       add = function( key, value ) {
+                               // If value is a function, invoke it and return its value
+                               value = jQuery.isFunction( value ) ? value() : value;
+                               s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+                       };
+
+               // Set traditional to true for jQuery <= 1.3.2 behavior.
+               if ( traditional === undefined ) {
+                       traditional = jQuery.ajaxSettings.traditional;
+               }
+
+               // If an array was passed in, assume that it is an array of form elements.
+               if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+                       // Serialize the form elements
+                       jQuery.each( a, function() {
+                               add( this.name, this.value );
+                       });
+
+               } else {
+                       // If traditional, encode the "old" way (the way 1.3.2 or older
+                       // did it), otherwise encode params recursively.
+                       for ( var prefix in a ) {
+                               buildParams( prefix, a[ prefix ], traditional, add );
+                       }
+               }
+
+               // Return the resulting serialization
+               return s.join( "&" ).replace( r20, "+" );
+       }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+       if ( jQuery.isArray( obj ) ) {
+               // Serialize array item.
+               jQuery.each( obj, function( i, v ) {
+                       if ( traditional || rbracket.test( prefix ) ) {
+                               // Treat each array item as a scalar.
+                               add( prefix, v );
+
+                       } else {
+                               // If array item is non-scalar (array or object), encode its
+                               // numeric index to resolve deserialization ambiguity issues.
+                               // Note that rack (as of 1.0.0) can't currently deserialize
+                               // nested arrays properly, and attempting to do so may cause
+                               // a server error. Possible fixes are to modify rack's
+                               // deserialization algorithm or to provide an option or flag
+                               // to force array serialization to be shallow.
+                               buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+                       }
+               });
+
+       } else if ( !traditional && obj != null && typeof obj === "object" ) {
+               // Serialize object item.
+               for ( var name in obj ) {
+                       buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+               }
+
+       } else {
+               // Serialize scalar item.
+               add( prefix, obj );
+       }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+       // Counter for holding the number of active queries
+       active: 0,
+
+       // Last-Modified header cache for next request
+       lastModified: {},
+       etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+       var contents = s.contents,
+               dataTypes = s.dataTypes,
+               responseFields = s.responseFields,
+               ct,
+               type,
+               finalDataType,
+               firstDataType;
+
+       // Fill responseXXX fields
+       for( type in responseFields ) {
+               if ( type in responses ) {
+                       jqXHR[ responseFields[type] ] = responses[ type ];
+               }
+       }
+
+       // Remove auto dataType and get content-type in the process
+       while( dataTypes[ 0 ] === "*" ) {
+               dataTypes.shift();
+               if ( ct === undefined ) {
+                       ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+               }
+       }
+
+       // Check if we're dealing with a known content-type
+       if ( ct ) {
+               for ( type in contents ) {
+                       if ( contents[ type ] && contents[ type ].test( ct ) ) {
+                               dataTypes.unshift( type );
+                               break;
+                       }
+               }
+       }
+
+       // Check to see if we have a response for the expected dataType
+       if ( dataTypes[ 0 ] in responses ) {
+               finalDataType = dataTypes[ 0 ];
+       } else {
+               // Try convertible dataTypes
+               for ( type in responses ) {
+                       if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+                               finalDataType = type;
+                               break;
+                       }
+                       if ( !firstDataType ) {
+                               firstDataType = type;
+                       }
+               }
+               // Or just use first one
+               finalDataType = finalDataType || firstDataType;
+       }
+
+       // If we found a dataType
+       // We add the dataType to the list if needed
+       // and return the corresponding response
+       if ( finalDataType ) {
+               if ( finalDataType !== dataTypes[ 0 ] ) {
+                       dataTypes.unshift( finalDataType );
+               }
+               return responses[ finalDataType ];
+       }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+       // Apply the dataFilter if provided
+       if ( s.dataFilter ) {
+               response = s.dataFilter( response, s.dataType );
+       }
+
+       var dataTypes = s.dataTypes,
+               converters = {},
+               i,
+               key,
+               length = dataTypes.length,
+               tmp,
+               // Current and previous dataTypes
+               current = dataTypes[ 0 ],
+               prev,
+               // Conversion expression
+               conversion,
+               // Conversion function
+               conv,
+               // Conversion functions (transitive conversion)
+               conv1,
+               conv2;
+
+       // For each dataType in the chain
+       for( i = 1; i < length; i++ ) {
+
+               // Create converters map
+               // with lowercased keys
+               if ( i === 1 ) {
+                       for( key in s.converters ) {
+                               if( typeof key === "string" ) {
+                                       converters[ key.toLowerCase() ] = s.converters[ key ];
+                               }
+                       }
+               }
+
+               // Get the dataTypes
+               prev = current;
+               current = dataTypes[ i ];
+
+               // If current is auto dataType, update it to prev
+               if( current === "*" ) {
+                       current = prev;
+               // If no auto and dataTypes are actually different
+               } else if ( prev !== "*" && prev !== current ) {
+
+                       // Get the converter
+                       conversion = prev + " " + current;
+                       conv = converters[ conversion ] || converters[ "* " + current ];
+
+                       // If there is no direct converter, search transitively
+                       if ( !conv ) {
+                               conv2 = undefined;
+                               for( conv1 in converters ) {
+                                       tmp = conv1.split( " " );
+                                       if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
+                                               conv2 = converters[ tmp[1] + " " + current ];
+                                               if ( conv2 ) {
+                                                       conv1 = converters[ conv1 ];
+                                                       if ( conv1 === true ) {
+                                                               conv = conv2;
+                                                       } else if ( conv2 === true ) {
+                                                               conv = conv1;
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+                       // If we found no converter, dispatch an error
+                       if ( !( conv || conv2 ) ) {
+                               jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
+                       }
+                       // If found converter is not an equivalence
+                       if ( conv !== true ) {
+                               // Convert with 1 or 2 converters accordingly
+                               response = conv ? conv( response ) : conv2( conv1(response) );
+                       }
+               }
+       }
+       return response;
+}
+
+
+
+
+var jsc = jQuery.now(),
+       jsre = /(\=)\?(&|$)|\?\?/i;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+       jsonp: "callback",
+       jsonpCallback: function() {
+               return jQuery.expando + "_" + ( jsc++ );
+       }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+       var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
+               ( typeof s.data === "string" );
+
+       if ( s.dataTypes[ 0 ] === "jsonp" ||
+               s.jsonp !== false && ( jsre.test( s.url ) ||
+                               inspectData && jsre.test( s.data ) ) ) {
+
+               var responseContainer,
+                       jsonpCallback = s.jsonpCallback =
+                               jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
+                       previous = window[ jsonpCallback ],
+                       url = s.url,
+                       data = s.data,
+                       replace = "$1" + jsonpCallback + "$2";
+
+               if ( s.jsonp !== false ) {
+                       url = url.replace( jsre, replace );
+                       if ( s.url === url ) {
+                               if ( inspectData ) {
+                                       data = data.replace( jsre, replace );
+                               }
+                               if ( s.data === data ) {
+                                       // Add callback manually
+                                       url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
+                               }
+                       }
+               }
+
+               s.url = url;
+               s.data = data;
+
+               // Install callback
+               window[ jsonpCallback ] = function( response ) {
+                       responseContainer = [ response ];
+               };
+
+               // Clean-up function
+               jqXHR.always(function() {
+                       // Set callback back to previous value
+                       window[ jsonpCallback ] = previous;
+                       // Call if it was a function and we have a response
+                       if ( responseContainer && jQuery.isFunction( previous ) ) {
+                               window[ jsonpCallback ]( responseContainer[ 0 ] );
+                       }
+               });
+
+               // Use data converter to retrieve json after script execution
+               s.converters["script json"] = function() {
+                       if ( !responseContainer ) {
+                               jQuery.error( jsonpCallback + " was not called" );
+                       }
+                       return responseContainer[ 0 ];
+               };
+
+               // force json dataType
+               s.dataTypes[ 0 ] = "json";
+
+               // Delegate to script
+               return "script";
+       }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+       accepts: {
+               script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+       },
+       contents: {
+               script: /javascript|ecmascript/
+       },
+       converters: {
+               "text script": function( text ) {
+                       jQuery.globalEval( text );
+                       return text;
+               }
+       }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+       if ( s.cache === undefined ) {
+               s.cache = false;
+       }
+       if ( s.crossDomain ) {
+               s.type = "GET";
+               s.global = false;
+       }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+       // This transport only deals with cross domain requests
+       if ( s.crossDomain ) {
+
+               var script,
+                       head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+               return {
+
+                       send: function( _, callback ) {
+
+                               script = document.createElement( "script" );
+
+                               script.async = "async";
+
+                               if ( s.scriptCharset ) {
+                                       script.charset = s.scriptCharset;
+                               }
+
+                               script.src = s.url;
+
+                               // Attach handlers for all browsers
+                               script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+                                       if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+                                               // Handle memory leak in IE
+                                               script.onload = script.onreadystatechange = null;
+
+                                               // Remove the script
+                                               if ( head && script.parentNode ) {
+                                                       head.removeChild( script );
+                                               }
+
+                                               // Dereference the script
+                                               script = undefined;
+
+                                               // Callback if not abort
+                                               if ( !isAbort ) {
+                                                       callback( 200, "success" );
+                                               }
+                                       }
+                               };
+                               // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
+                               // This arises when a base node is used (#2709 and #4378).
+                               head.insertBefore( script, head.firstChild );
+                       },
+
+                       abort: function() {
+                               if ( script ) {
+                                       script.onload( 0, 1 );
+                               }
+                       }
+               };
+       }
+});
+
+
+
+
+var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+       xhrOnUnloadAbort = window.ActiveXObject ? function() {
+               // Abort all pending requests
+               for ( var key in xhrCallbacks ) {
+                       xhrCallbacks[ key ]( 0, 1 );
+               }
+       } : false,
+       xhrId = 0,
+       xhrCallbacks;
+
+// Functions to create xhrs
+function createStandardXHR() {
+       try {
+               return new window.XMLHttpRequest();
+       } catch( e ) {}
+}
+
+function createActiveXHR() {
+       try {
+               return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+       } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+       /* Microsoft failed to properly
+        * implement the XMLHttpRequest in IE7 (can't request local files),
+        * so we use the ActiveXObject when it is available
+        * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+        * we need a fallback.
+        */
+       function() {
+               return !this.isLocal && createStandardXHR() || createActiveXHR();
+       } :
+       // For all other browsers, use the standard XMLHttpRequest object
+       createStandardXHR;
+
+// Determine support properties
+(function( xhr ) {
+       jQuery.extend( jQuery.support, {
+               ajax: !!xhr,
+               cors: !!xhr && ( "withCredentials" in xhr )
+       });
+})( jQuery.ajaxSettings.xhr() );
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+       jQuery.ajaxTransport(function( s ) {
+               // Cross domain only allowed if supported through XMLHttpRequest
+               if ( !s.crossDomain || jQuery.support.cors ) {
+
+                       var callback;
+
+                       return {
+                               send: function( headers, complete ) {
+
+                                       // Get a new xhr
+                                       var xhr = s.xhr(),
+                                               handle,
+                                               i;
+
+                                       // Open the socket
+                                       // Passing null username, generates a login popup on Opera (#2865)
+                                       if ( s.username ) {
+                                               xhr.open( s.type, s.url, s.async, s.username, s.password );
+                                       } else {
+                                               xhr.open( s.type, s.url, s.async );
+                                       }
+
+                                       // Apply custom fields if provided
+                                       if ( s.xhrFields ) {
+                                               for ( i in s.xhrFields ) {
+                                                       xhr[ i ] = s.xhrFields[ i ];
+                                               }
+                                       }
+
+                                       // Override mime type if needed
+                                       if ( s.mimeType && xhr.overrideMimeType ) {
+                                               xhr.overrideMimeType( s.mimeType );
+                                       }
+
+                                       // X-Requested-With header
+                                       // For cross-domain requests, seeing as conditions for a preflight are
+                                       // akin to a jigsaw puzzle, we simply never set it to be sure.
+                                       // (it can always be set on a per-request basis or even using ajaxSetup)
+                                       // For same-domain requests, won't change header if already provided.
+                                       if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+                                               headers[ "X-Requested-With" ] = "XMLHttpRequest";
+                                       }
+
+                                       // Need an extra try/catch for cross domain requests in Firefox 3
+                                       try {
+                                               for ( i in headers ) {
+                                                       xhr.setRequestHeader( i, headers[ i ] );
+                                               }
+                                       } catch( _ ) {}
+
+                                       // Do send the request
+                                       // This may raise an exception which is actually
+                                       // handled in jQuery.ajax (so no try/catch here)
+                                       xhr.send( ( s.hasContent && s.data ) || null );
+
+                                       // Listener
+                                       callback = function( _, isAbort ) {
+
+                                               var status,
+                                                       statusText,
+                                                       responseHeaders,
+                                                       responses,
+                                                       xml;
+
+                                               // Firefox throws exceptions when accessing properties
+                                               // of an xhr when a network error occured
+                                               // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+                                               try {
+
+                                                       // Was never called and is aborted or complete
+                                                       if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+                                                               // Only called once
+                                                               callback = undefined;
+
+                                                               // Do not keep as active anymore
+                                                               if ( handle ) {
+                                                                       xhr.onreadystatechange = jQuery.noop;
+                                                                       if ( xhrOnUnloadAbort ) {
+                                                                               delete xhrCallbacks[ handle ];
+                                                                       }
+                                                               }
+
+                                                               // If it's an abort
+                                                               if ( isAbort ) {
+                                                                       // Abort it manually if needed
+                                                                       if ( xhr.readyState !== 4 ) {
+                                                                               xhr.abort();
+                                                                       }
+                                                               } else {
+                                                                       status = xhr.status;
+                                                                       responseHeaders = xhr.getAllResponseHeaders();
+                                                                       responses = {};
+                                                                       xml = xhr.responseXML;
+
+                                                                       // Construct response list
+                                                                       if ( xml && xml.documentElement /* #4958 */ ) {
+                                                                               responses.xml = xml;
+                                                                       }
+                                                                       responses.text = xhr.responseText;
+
+                                                                       // Firefox throws an exception when accessing
+                                                                       // statusText for faulty cross-domain requests
+                                                                       try {
+                                                                               statusText = xhr.statusText;
+                                                                       } catch( e ) {
+                                                                               // We normalize with Webkit giving an empty statusText
+                                                                               statusText = "";
+                                                                       }
+
+                                                                       // Filter status for non standard behaviors
+
+                                                                       // If the request is local and we have data: assume a success
+                                                                       // (success with no data won't get notified, that's the best we
+                                                                       // can do given current implementations)
+                                                                       if ( !status && s.isLocal && !s.crossDomain ) {
+                                                                               status = responses.text ? 200 : 404;
+                                                                       // IE - #1450: sometimes returns 1223 when it should be 204
+                                                                       } else if ( status === 1223 ) {
+                                                                               status = 204;
+                                                                       }
+                                                               }
+                                                       }
+                                               } catch( firefoxAccessException ) {
+                                                       if ( !isAbort ) {
+                                                               complete( -1, firefoxAccessException );
+                                                       }
+                                               }
+
+                                               // Call complete if needed
+                                               if ( responses ) {
+                                                       complete( status, statusText, responses, responseHeaders );
+                                               }
+                                       };
+
+                                       // if we're in sync mode or it's in cache
+                                       // and has been retrieved directly (IE6 & IE7)
+                                       // we need to manually fire the callback
+                                       if ( !s.async || xhr.readyState === 4 ) {
+                                               callback();
+                                       } else {
+                                               handle = ++xhrId;
+                                               if ( xhrOnUnloadAbort ) {
+                                                       // Create the active xhrs callbacks list if needed
+                                                       // and attach the unload handler
+                                                       if ( !xhrCallbacks ) {
+                                                               xhrCallbacks = {};
+                                                               jQuery( window ).unload( xhrOnUnloadAbort );
+                                                       }
+                                                       // Add to list of active xhrs callbacks
+                                                       xhrCallbacks[ handle ] = callback;
+                                               }
+                                               xhr.onreadystatechange = callback;
+                                       }
+                               },
+
+                               abort: function() {
+                                       if ( callback ) {
+                                               callback(0,1);
+                                       }
+                               }
+                       };
+               }
+       });
+}
+
+
+
+
+var elemdisplay = {},
+       iframe, iframeDoc,
+       rfxtypes = /^(?:toggle|show|hide)$/,
+       rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
+       timerId,
+       fxAttrs = [
+               // height animations
+               [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+               // width animations
+               [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+               // opacity animations
+               [ "opacity" ]
+       ],
+       fxNow;
+
+jQuery.fn.extend({
+       show: function( speed, easing, callback ) {
+               var elem, display;
+
+               if ( speed || speed === 0 ) {
+                       return this.animate( genFx("show", 3), speed, easing, callback);
+
+               } else {
+                       for ( var i = 0, j = this.length; i < j; i++ ) {
+                               elem = this[i];
+
+                               if ( elem.style ) {
+                                       display = elem.style.display;
+
+                                       // Reset the inline display of this element to learn if it is
+                                       // being hidden by cascaded rules or not
+                                       if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
+                                               display = elem.style.display = "";
+                                       }
+
+                                       // Set elements which have been overridden with display: none
+                                       // in a stylesheet to whatever the default browser style is
+                                       // for such an element
+                                       if ( display === "none" || ( display === ""  && jQuery.css( elem, "display" ) === "none" ) ) {
+                                               jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
+                                       }
+                               }
+                       }
+
+                       // Set the display of most of the elements in a second loop
+                       // to avoid the constant reflow
+                       for ( i = 0; i < j; i++ ) {
+                               elem = this[i];
+
+                               if ( elem.style ) {
+                                       display = elem.style.display;
+
+                                       if ( display === "" || display === "none" ) {
+                                               elem.style.display = jQuery._data(elem, "olddisplay") || "";
+                                       }
+                               }
+                       }
+
+                       return this;
+               }
+       },
+
+       hide: function( speed, easing, callback ) {
+               if ( speed || speed === 0 ) {
+                       return this.animate( genFx("hide", 3), speed, easing, callback);
+
+               } else {
+                       for ( var i = 0, j = this.length; i < j; i++ ) {
+                               if ( this[i].style ) {
+                                       var display = jQuery.css( this[i], "display" );
+
+                                       if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) {
+                                               jQuery._data( this[i], "olddisplay", display );
+                                       }
+                               }
+                       }
+
+                       // Set the display of the elements in a second loop
+                       // to avoid the constant reflow
+                       for ( i = 0; i < j; i++ ) {
+                               if ( this[i].style ) {
+                                       this[i].style.display = "none";
+                               }
+                       }
+
+                       return this;
+               }
+       },
+
+       // Save the old toggle function
+       _toggle: jQuery.fn.toggle,
+
+       toggle: function( fn, fn2, callback ) {
+               var bool = typeof fn === "boolean";
+
+               if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+                       this._toggle.apply( this, arguments );
+
+               } else if ( fn == null || bool ) {
+                       this.each(function() {
+                               var state = bool ? fn : jQuery(this).is(":hidden");
+                               jQuery(this)[ state ? "show" : "hide" ]();
+                       });
+
+               } else {
+                       this.animate(genFx("toggle", 3), fn, fn2, callback);
+               }
+
+               return this;
+       },
+
+       fadeTo: function( speed, to, easing, callback ) {
+               return this.filter(":hidden").css("opacity", 0).show().end()
+                                       .animate({opacity: to}, speed, easing, callback);
+       },
+
+       animate: function( prop, speed, easing, callback ) {
+               var optall = jQuery.speed( speed, easing, callback );
+
+               if ( jQuery.isEmptyObject( prop ) ) {
+                       return this.each( optall.complete, [ false ] );
+               }
+
+               // Do not change referenced properties as per-property easing will be lost
+               prop = jQuery.extend( {}, prop );
+
+               function doAnimation() {
+                       // XXX 'this' does not always have a nodeName when running the
+                       // test suite
+
+                       if ( optall.queue === false ) {
+                               jQuery._mark( this );
+                       }
+
+                       var opt = jQuery.extend( {}, optall ),
+                               isElement = this.nodeType === 1,
+                               hidden = isElement && jQuery(this).is(":hidden"),
+                               name, val, p, e,
+                               parts, start, end, unit,
+                               method;
+
+                       // will store per property easing and be used to determine when an animation is complete
+                       opt.animatedProperties = {};
+
+                       for ( p in prop ) {
+
+                               // property name normalization
+                               name = jQuery.camelCase( p );
+                               if ( p !== name ) {
+                                       prop[ name ] = prop[ p ];
+                                       delete prop[ p ];
+                               }
+
+                               val = prop[ name ];
+
+                               // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
+                               if ( jQuery.isArray( val ) ) {
+                                       opt.animatedProperties[ name ] = val[ 1 ];
+                                       val = prop[ name ] = val[ 0 ];
+                               } else {
+                                       opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
+                               }
+
+                               if ( val === "hide" && hidden || val === "show" && !hidden ) {
+                                       return opt.complete.call( this );
+                               }
+
+                               if ( isElement && ( name === "height" || name === "width" ) ) {
+                                       // Make sure that nothing sneaks out
+                                       // Record all 3 overflow attributes because IE does not
+                                       // change the overflow attribute when overflowX and
+                                       // overflowY are set to the same value
+                                       opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+                                       // Set display property to inline-block for height/width
+                                       // animations on inline elements that are having width/height animated
+                                       if ( jQuery.css( this, "display" ) === "inline" &&
+                                                       jQuery.css( this, "float" ) === "none" ) {
+
+                                               // inline-level elements accept inline-block;
+                                               // block-level elements need to be inline with layout
+                                               if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
+                                                       this.style.display = "inline-block";
+
+                                               } else {
+                                                       this.style.zoom = 1;
+                                               }
+                                       }
+                               }
+                       }
+
+                       if ( opt.overflow != null ) {
+                               this.style.overflow = "hidden";
+                       }
+
+                       for ( p in prop ) {
+                               e = new jQuery.fx( this, opt, p );
+                               val = prop[ p ];
+
+                               if ( rfxtypes.test( val ) ) {
+
+                                       // Tracks whether to show or hide based on private
+                                       // data attached to the element
+                                       method = jQuery._data( this, "toggle" + p ) || (val === "toggle" ? hidden ? "show" : "hide" : 0);
+                                       if ( method ) {
+                                               jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
+                                               e[ method ]();
+                                       } else {
+                                               e[ val ]();
+                                       }
+
+                               } else {
+                                       parts = rfxnum.exec( val );
+                                       start = e.cur();
+
+                                       if ( parts ) {
+                                               end = parseFloat( parts[2] );
+                                               unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
+
+                                               // We need to compute starting value
+                                               if ( unit !== "px" ) {
+                                                       jQuery.style( this, p, (end || 1) + unit);
+                                                       start = ((end || 1) / e.cur()) * start;
+                                                       jQuery.style( this, p, start + unit);
+                                               }
+
+                                               // If a +=/-= token was provided, we're doing a relative animation
+                                               if ( parts[1] ) {
+                                                       end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
+                                               }
+
+                                               e.custom( start, end, unit );
+
+                                       } else {
+                                               e.custom( start, val, "" );
+                                       }
+                               }
+                       }
+
+                       // For JS strict compliance
+                       return true;
+               }
+
+               return optall.queue === false ?
+                       this.each( doAnimation ) :
+                       this.queue( optall.queue, doAnimation );
+       },
+
+       stop: function( type, clearQueue, gotoEnd ) {
+               if ( typeof type !== "string" ) {
+                       gotoEnd = clearQueue;
+                       clearQueue = type;
+                       type = undefined;
+               }
+               if ( clearQueue && type !== false ) {
+                       this.queue( type || "fx", [] );
+               }
+
+               return this.each(function() {
+                       var i,
+                               hadTimers = false,
+                               timers = jQuery.timers,
+                               data = jQuery._data( this );
+
+                       // clear marker counters if we know they won't be
+                       if ( !gotoEnd ) {
+                               jQuery._unmark( true, this );
+                       }
+
+                       function stopQueue( elem, data, i ) {
+                               var runner = data[ i ];
+                               jQuery.removeData( elem, i, true );
+                               runner.stop( gotoEnd );
+                       }
+
+                       if ( type == null ) {
+                               for ( i in data ) {
+                                       if ( data[ i ].stop && i.indexOf(".run") === i.length - 4 ) {
+                                               stopQueue( this, data, i );
+                                       }
+                               }
+                       } else if ( data[ i = type + ".run" ] && data[ i ].stop ){
+                               stopQueue( this, data, i );
+                       }
+
+                       for ( i = timers.length; i--; ) {
+                               if ( timers[ i ].elem === this && (type == null || timers[ i ].queue === type) ) {
+                                       if ( gotoEnd ) {
+
+                                               // force the next step to be the last
+                                               timers[ i ]( true );
+                                       } else {
+                                               timers[ i ].saveState();
+                                       }
+                                       hadTimers = true;
+                                       timers.splice( i, 1 );
+                               }
+                       }
+
+                       // start the next in the queue if the last step wasn't forced
+                       // timers currently will call their complete callbacks, which will dequeue
+                       // but only if they were gotoEnd
+                       if ( !( gotoEnd && hadTimers ) ) {
+                               jQuery.dequeue( this, type );
+                       }
+               });
+       }
+
+});
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+       setTimeout( clearFxNow, 0 );
+       return ( fxNow = jQuery.now() );
+}
+
+function clearFxNow() {
+       fxNow = undefined;
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, num ) {
+       var obj = {};
+
+       jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
+               obj[ this ] = type;
+       });
+
+       return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+       slideDown: genFx( "show", 1 ),
+       slideUp: genFx( "hide", 1 ),
+       slideToggle: genFx( "toggle", 1 ),
+       fadeIn: { opacity: "show" },
+       fadeOut: { opacity: "hide" },
+       fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return this.animate( props, speed, easing, callback );
+       };
+});
+
+jQuery.extend({
+       speed: function( speed, easing, fn ) {
+               var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+                       complete: fn || !fn && easing ||
+                               jQuery.isFunction( speed ) && speed,
+                       duration: speed,
+                       easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+               };
+
+               opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+                       opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+               // normalize opt.queue - true/undefined/null -> "fx"
+               if ( opt.queue == null || opt.queue === true ) {
+                       opt.queue = "fx";
+               }
+
+               // Queueing
+               opt.old = opt.complete;
+
+               opt.complete = function( noUnmark ) {
+                       if ( jQuery.isFunction( opt.old ) ) {
+                               opt.old.call( this );
+                       }
+
+                       if ( opt.queue ) {
+                               jQuery.dequeue( this, opt.queue );
+                       } else if ( noUnmark !== false ) {
+                               jQuery._unmark( this );
+                       }
+               };
+
+               return opt;
+       },
+
+       easing: {
+               linear: function( p, n, firstNum, diff ) {
+                       return firstNum + diff * p;
+               },
+               swing: function( p, n, firstNum, diff ) {
+                       return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+               }
+       },
+
+       timers: [],
+
+       fx: function( elem, options, prop ) {
+               this.options = options;
+               this.elem = elem;
+               this.prop = prop;
+
+               options.orig = options.orig || {};
+       }
+
+});
+
+jQuery.fx.prototype = {
+       // Simple function for setting a style value
+       update: function() {
+               if ( this.options.step ) {
+                       this.options.step.call( this.elem, this.now, this );
+               }
+
+               (jQuery.fx.step[ this.prop ] || jQuery.fx.step._default)( this );
+       },
+
+       // Get the current size
+       cur: function() {
+               if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
+                       return this.elem[ this.prop ];
+               }
+
+               var parsed,
+                       r = jQuery.css( this.elem, this.prop );
+               // Empty strings, null, undefined and "auto" are converted to 0,
+               // complex values such as "rotate(1rad)" are returned as is,
+               // simple values such as "10px" are parsed to Float.
+               return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
+       },
+
+       // Start an animation from one number to another
+       custom: function( from, to, unit ) {
+               var self = this,
+                       fx = jQuery.fx;
+
+               this.startTime = fxNow || createFxNow();
+               this.end = to;
+               this.now = this.start = from;
+               this.pos = this.state = 0;
+               this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
+
+               function t( gotoEnd ) {
+                       return self.step( gotoEnd );
+               }
+
+               t.queue = this.options.queue;
+               t.elem = this.elem;
+               t.saveState = function() {
+                       if ( self.options.hide && jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
+                               jQuery._data( self.elem, "fxshow" + self.prop, self.start );
+                       }
+               };
+
+               if ( t() && jQuery.timers.push(t) && !timerId ) {
+                       timerId = setInterval( fx.tick, fx.interval );
+               }
+       },
+
+       // Simple 'show' function
+       show: function() {
+               var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
+
+               // Remember where we started, so that we can go back to it later
+               this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
+               this.options.show = true;
+
+               // Begin the animation
+               // Make sure that we start at a small width/height to avoid any flash of content
+               if ( dataShow !== undefined ) {
+                       // This show is picking up where a previous hide or show left off
+                       this.custom( this.cur(), dataShow );
+               } else {
+                       this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
+               }
+
+               // Start by showing the element
+               jQuery( this.elem ).show();
+       },
+
+       // Simple 'hide' function
+       hide: function() {
+               // Remember where we started, so that we can go back to it later
+               this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
+               this.options.hide = true;
+
+               // Begin the animation
+               this.custom( this.cur(), 0 );
+       },
+
+       // Each step of an animation
+       step: function( gotoEnd ) {
+               var p, n, complete,
+                       t = fxNow || createFxNow(),
+                       done = true,
+                       elem = this.elem,
+                       options = this.options;
+
+               if ( gotoEnd || t >= options.duration + this.startTime ) {
+                       this.now = this.end;
+                       this.pos = this.state = 1;
+                       this.update();
+
+                       options.animatedProperties[ this.prop ] = true;
+
+                       for ( p in options.animatedProperties ) {
+                               if ( options.animatedProperties[ p ] !== true ) {
+                                       done = false;
+                               }
+                       }
+
+                       if ( done ) {
+                               // Reset the overflow
+                               if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+
+                                       jQuery.each( [ "", "X", "Y" ], function( index, value ) {
+                                               elem.style[ "overflow" + value ] = options.overflow[ index ];
+                                       });
+                               }
+
+                               // Hide the element if the "hide" operation was done
+                               if ( options.hide ) {
+                                       jQuery( elem ).hide();
+                               }
+
+                               // Reset the properties, if the item has been hidden or shown
+                               if ( options.hide || options.show ) {
+                                       for ( p in options.animatedProperties ) {
+                                               jQuery.style( elem, p, options.orig[ p ] );
+                                               jQuery.removeData( elem, "fxshow" + p, true );
+                                               // Toggle data is no longer needed
+                                               jQuery.removeData( elem, "toggle" + p, true );
+                                       }
+                               }
+
+                               // Execute the complete function
+                               // in the event that the complete function throws an exception
+                               // we must ensure it won't be called twice. #5684
+
+                               complete = options.complete;
+                               if ( complete ) {
+
+                                       options.complete = false;
+                                       complete.call( elem );
+                               }
+                       }
+
+                       return false;
+
+               } else {
+                       // classical easing cannot be used with an Infinity duration
+                       if ( options.duration == Infinity ) {
+                               this.now = t;
+                       } else {
+                               n = t - this.startTime;
+                               this.state = n / options.duration;
+
+                               // Perform the easing function, defaults to swing
+                               this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
+                               this.now = this.start + ( (this.end - this.start) * this.pos );
+                       }
+                       // Perform the next step of the animation
+                       this.update();
+               }
+
+               return true;
+       }
+};
+
+jQuery.extend( jQuery.fx, {
+       tick: function() {
+               var timer,
+                       timers = jQuery.timers,
+                       i = 0;
+
+               for ( ; i < timers.length; i++ ) {
+                       timer = timers[ i ];
+                       // Checks the timer has not already been removed
+                       if ( !timer() && timers[ i ] === timer ) {
+                               timers.splice( i--, 1 );
+                       }
+               }
+
+               if ( !timers.length ) {
+                       jQuery.fx.stop();
+               }
+       },
+
+       interval: 13,
+
+       stop: function() {
+               clearInterval( timerId );
+               timerId = null;
+       },
+
+       speeds: {
+               slow: 600,
+               fast: 200,
+               // Default speed
+               _default: 400
+       },
+
+       step: {
+               opacity: function( fx ) {
+                       jQuery.style( fx.elem, "opacity", fx.now );
+               },
+
+               _default: function( fx ) {
+                       if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+                               fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+                       } else {
+                               fx.elem[ fx.prop ] = fx.now;
+                       }
+               }
+       }
+});
+
+// Adds width/height step functions
+// Do not set anything below 0
+jQuery.each([ "width", "height" ], function( i, prop ) {
+       jQuery.fx.step[ prop ] = function( fx ) {
+               jQuery.style( fx.elem, prop, Math.max(0, fx.now) );
+       };
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+       jQuery.expr.filters.animated = function( elem ) {
+               return jQuery.grep(jQuery.timers, function( fn ) {
+                       return elem === fn.elem;
+               }).length;
+       };
+}
+
+// Try to restore the default display value of an element
+function defaultDisplay( nodeName ) {
+
+       if ( !elemdisplay[ nodeName ] ) {
+
+               var body = document.body,
+                       elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
+                       display = elem.css( "display" );
+
+               elem.remove();
+
+               // If the simple way fails,
+               // get element's real default display by attaching it to a temp iframe
+               if ( display === "none" || display === "" ) {
+                       // No iframe to use yet, so create it
+                       if ( !iframe ) {
+                               iframe = document.createElement( "iframe" );
+                               iframe.frameBorder = iframe.width = iframe.height = 0;
+                       }
+
+                       body.appendChild( iframe );
+
+                       // Create a cacheable copy of the iframe document on first call.
+                       // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
+                       // document to it; WebKit & Firefox won't allow reusing the iframe document.
+                       if ( !iframeDoc || !iframe.createElement ) {
+                               iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+                               iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
+                               iframeDoc.close();
+                       }
+
+                       elem = iframeDoc.createElement( nodeName );
+
+                       iframeDoc.body.appendChild( elem );
+
+                       display = jQuery.css( elem, "display" );
+
+                       body.removeChild( iframe );
+               }
+
+               // Store the correct default display
+               elemdisplay[ nodeName ] = display;
+       }
+
+       return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+       rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+       jQuery.fn.offset = function( options ) {
+               var elem = this[0], box;
+
+               if ( options ) {
+                       return this.each(function( i ) {
+                               jQuery.offset.setOffset( this, options, i );
+                       });
+               }
+
+               if ( !elem || !elem.ownerDocument ) {
+                       return null;
+               }
+
+               if ( elem === elem.ownerDocument.body ) {
+                       return jQuery.offset.bodyOffset( elem );
+               }
+
+               try {
+                       box = elem.getBoundingClientRect();
+               } catch(e) {}
+
+               var doc = elem.ownerDocument,
+                       docElem = doc.documentElement;
+
+               // Make sure we're not dealing with a disconnected DOM node
+               if ( !box || !jQuery.contains( docElem, elem ) ) {
+                       return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
+               }
+
+               var body = doc.body,
+                       win = getWindow(doc),
+                       clientTop  = docElem.clientTop  || body.clientTop  || 0,
+                       clientLeft = docElem.clientLeft || body.clientLeft || 0,
+                       scrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,
+                       scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
+                       top  = box.top  + scrollTop  - clientTop,
+                       left = box.left + scrollLeft - clientLeft;
+
+               return { top: top, left: left };
+       };
+
+} else {
+       jQuery.fn.offset = function( options ) {
+               var elem = this[0];
+
+               if ( options ) {
+                       return this.each(function( i ) {
+                               jQuery.offset.setOffset( this, options, i );
+                       });
+               }
+
+               if ( !elem || !elem.ownerDocument ) {
+                       return null;
+               }
+
+               if ( elem === elem.ownerDocument.body ) {
+                       return jQuery.offset.bodyOffset( elem );
+               }
+
+               var computedStyle,
+                       offsetParent = elem.offsetParent,
+                       prevOffsetParent = elem,
+                       doc = elem.ownerDocument,
+                       docElem = doc.documentElement,
+                       body = doc.body,
+                       defaultView = doc.defaultView,
+                       prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+                       top = elem.offsetTop,
+                       left = elem.offsetLeft;
+
+               while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+                       if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+                               break;
+                       }
+
+                       computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+                       top  -= elem.scrollTop;
+                       left -= elem.scrollLeft;
+
+                       if ( elem === offsetParent ) {
+                               top  += elem.offsetTop;
+                               left += elem.offsetLeft;
+
+                               if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+                                       top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
+                                       left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+                               }
+
+                               prevOffsetParent = offsetParent;
+                               offsetParent = elem.offsetParent;
+                       }
+
+                       if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+                               top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
+                               left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+                       }
+
+                       prevComputedStyle = computedStyle;
+               }
+
+               if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+                       top  += body.offsetTop;
+                       left += body.offsetLeft;
+               }
+
+               if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+                       top  += Math.max( docElem.scrollTop, body.scrollTop );
+                       left += Math.max( docElem.scrollLeft, body.scrollLeft );
+               }
+
+               return { top: top, left: left };
+       };
+}
+
+jQuery.offset = {};
+
+jQuery.each(
+       ( "doesAddBorderForTableAndCells doesNotAddBorder " +
+               "doesNotIncludeMarginInBodyOffset subtractsBorderForOverflowNotVisible " +
+               "supportsFixedPosition" ).split(" "), function( i, prop ) {
+
+       jQuery.offset[ prop ] = jQuery.support[ prop ];
+});
+
+jQuery.extend( jQuery.offset, {
+
+       bodyOffset: function( body ) {
+               var top = body.offsetTop,
+                       left = body.offsetLeft;
+
+               if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+                       top  += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+                       left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+               }
+
+               return { top: top, left: left };
+       },
+
+       setOffset: function( elem, options, i ) {
+               var position = jQuery.css( elem, "position" );
+
+               // set position first, in-case top/left are set even on static elem
+               if ( position === "static" ) {
+                       elem.style.position = "relative";
+               }
+
+               var curElem = jQuery( elem ),
+                       curOffset = curElem.offset(),
+                       curCSSTop = jQuery.css( elem, "top" ),
+                       curCSSLeft = jQuery.css( elem, "left" ),
+                       calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+                       props = {}, curPosition = {}, curTop, curLeft;
+
+               // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+               if ( calculatePosition ) {
+                       curPosition = curElem.position();
+                       curTop = curPosition.top;
+                       curLeft = curPosition.left;
+               } else {
+                       curTop = parseFloat( curCSSTop ) || 0;
+                       curLeft = parseFloat( curCSSLeft ) || 0;
+               }
+
+               if ( jQuery.isFunction( options ) ) {
+                       options = options.call( elem, i, curOffset );
+               }
+
+               if (options.top != null) {
+                       props.top = (options.top - curOffset.top) + curTop;
+               }
+               if (options.left != null) {
+                       props.left = (options.left - curOffset.left) + curLeft;
+               }
+
+               if ( "using" in options ) {
+                       options.using.call( elem, props );
+               } else {
+                       curElem.css( props );
+               }
+       }
+});
+
+
+jQuery.fn.extend({
+
+       position: function() {
+               if ( !this[0] ) {
+                       return null;
+               }
+
+               var elem = this[0],
+
+               // Get *real* offsetParent
+               offsetParent = this.offsetParent(),
+
+               // Get correct offsets
+               offset       = this.offset(),
+               parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+               // Subtract element margins
+               // note: when an element has margin: auto the offsetLeft and marginLeft
+               // are the same in Safari causing offset.left to incorrectly be 0
+               offset.top  -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+               offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+               // Add offsetParent borders
+               parentOffset.top  += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+               parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+               // Subtract the two offsets
+               return {
+                       top:  offset.top  - parentOffset.top,
+                       left: offset.left - parentOffset.left
+               };
+       },
+
+       offsetParent: function() {
+               return this.map(function() {
+                       var offsetParent = this.offsetParent || document.body;
+                       while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+                               offsetParent = offsetParent.offsetParent;
+                       }
+                       return offsetParent;
+               });
+       }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+       var method = "scroll" + name;
+
+       jQuery.fn[ method ] = function( val ) {
+               var elem, win;
+
+               if ( val === undefined ) {
+                       elem = this[ 0 ];
+
+                       if ( !elem ) {
+                               return null;
+                       }
+
+                       win = getWindow( elem );
+
+                       // Return the scroll offset
+                       return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+                               jQuery.support.boxModel && win.document.documentElement[ method ] ||
+                                       win.document.body[ method ] :
+                               elem[ method ];
+               }
+
+               // Set the scroll offset
+               return this.each(function() {
+                       win = getWindow( this );
+
+                       if ( win ) {
+                               win.scrollTo(
+                                       !i ? val : jQuery( win ).scrollLeft(),
+                                        i ? val : jQuery( win ).scrollTop()
+                               );
+
+                       } else {
+                               this[ method ] = val;
+                       }
+               });
+       };
+});
+
+function getWindow( elem ) {
+       return jQuery.isWindow( elem ) ?
+               elem :
+               elem.nodeType === 9 ?
+                       elem.defaultView || elem.parentWindow :
+                       false;
+}
+
+
+
+
+// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+       var type = name.toLowerCase();
+
+       // innerHeight and innerWidth
+       jQuery.fn[ "inner" + name ] = function() {
+               var elem = this[0];
+               return elem ?
+                       elem.style ?
+                       parseFloat( jQuery.css( elem, type, "padding" ) ) :
+                       this[ type ]() :
+                       null;
+       };
+
+       // outerHeight and outerWidth
+       jQuery.fn[ "outer" + name ] = function( margin ) {
+               var elem = this[0];
+               return elem ?
+                       elem.style ?
+                       parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
+                       this[ type ]() :
+                       null;
+       };
+
+       jQuery.fn[ type ] = function( size ) {
+               // Get window width or height
+               var elem = this[0];
+               if ( !elem ) {
+                       return size == null ? null : this;
+               }
+
+               if ( jQuery.isFunction( size ) ) {
+                       return this.each(function( i ) {
+                               var self = jQuery( this );
+                               self[ type ]( size.call( this, i, self[ type ]() ) );
+                       });
+               }
+
+               if ( jQuery.isWindow( elem ) ) {
+                       // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+                       // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+                       var docElemProp = elem.document.documentElement[ "client" + name ],
+                               body = elem.document.body;
+                       return elem.document.compatMode === "CSS1Compat" && docElemProp ||
+                               body && body[ "client" + name ] || docElemProp;
+
+               // Get document width or height
+               } else if ( elem.nodeType === 9 ) {
+                       // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+                       return Math.max(
+                               elem.documentElement["client" + name],
+                               elem.body["scroll" + name], elem.documentElement["scroll" + name],
+                               elem.body["offset" + name], elem.documentElement["offset" + name]
+                       );
+
+               // Get or set width or height on the element
+               } else if ( size === undefined ) {
+                       var orig = jQuery.css( elem, type ),
+                               ret = parseFloat( orig );
+
+                       return jQuery.isNumeric( ret ) ? ret : orig;
+
+               // Set the width or height on the element (default to pixels if value is unitless)
+               } else {
+                       return this.css( type, typeof size === "string" ? size : size + "px" );
+               }
+       };
+
+});
+
+
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+})(window);
diff --git a/js/modernizr/test/js/lib/jsonselect.js b/js/modernizr/test/js/lib/jsonselect.js
new file mode 100644 (file)
index 0000000..84913d0
--- /dev/null
@@ -0,0 +1,279 @@
+/*! Copyright (c) 2011, Lloyd Hilaiel, ISC License */
+/*
+ * This is the JSONSelect reference implementation, in javascript.
+ */
+(function(exports) {
+
+    var // localize references
+    toString = Object.prototype.toString;
+
+    function jsonParse(str) {
+      try {
+          if(JSON && JSON.parse){
+              return JSON.parse(str);
+          }
+          return (new Function("return " + str))();
+      } catch(e) {
+        te("ijs");
+      }
+    }
+
+    // emitted error codes.
+    var errorCodes = {
+        "ijs": "invalid json string",
+        "mpc": "multiple pseudo classes (:xxx) not allowed",
+        "mepf": "malformed expression in pseudo-function",
+        "nmi": "multiple ids not allowed",
+        "se": "selector expected",
+        "sra": "string required after '.'",
+        "uc": "unrecognized char",
+        "ujs": "unclosed json string",
+        "upc": "unrecognized pseudo class"
+    };
+
+    // throw an error message
+    function te(ec) {
+        throw new Error(errorCodes[ec]);
+    }
+
+    // THE LEXER
+    var toks = {
+        psc: 1, // pseudo class
+        psf: 2, // pseudo class function
+        typ: 3, // type
+        str: 4 // string
+    };
+
+    var pat = /^(?:([\r\n\t\ ]+)|([*.,>])|(string|boolean|null|array|object|number)|(:(?:root|first-child|last-child|only-child))|(:(?:nth-child|nth-last-child))|(:\w+)|(\"(?:[^\\]|\\[^\"])*\")|(\")|((?:[_a-zA-Z]|[^\0-\0177]|\\[^\r\n\f0-9a-fA-F])(?:[_a-zA-Z0-9\-]|[^\u0000-\u0177]|(?:\\[^\r\n\f0-9a-fA-F]))*))/;
+    var exprPat = /^\s*\(\s*(?:([+\-]?)([0-9]*)n\s*(?:([+\-])\s*([0-9]))?|(odd|even)|([+\-]?[0-9]+))\s*\)/;
+    var lex = function (str, off) {
+        if (!off) off = 0;
+        var m = pat.exec(str.substr(off));
+        if (!m) return undefined;
+        off+=m[0].length;
+        var a;
+        if (m[1]) a = [off, " "];
+        else if (m[2]) a = [off, m[0]];
+        else if (m[3]) a = [off, toks.typ, m[0]];
+        else if (m[4]) a = [off, toks.psc, m[0]];
+        else if (m[5]) a = [off, toks.psf, m[0]];
+        else if (m[6]) te("upc");
+        else if (m[7]) a = [off, toks.str, jsonParse(m[0])];
+        else if (m[8]) te("ujs");
+        else if (m[9]) a = [off, toks.str, m[0].replace(/\\([^\r\n\f0-9a-fA-F])/g,"$1")];
+        return a;
+    };
+
+    // THE PARSER
+
+    var parse = function (str) {
+        var a = [], off = 0, am;
+
+        while (true) {
+            var s = parse_selector(str, off);
+            a.push(s[1]);
+            s = lex(str, off = s[0]);
+            if (s && s[1] === " ") s = lex(str, off = s[0]);
+            if (!s) break;
+            // now we've parsed a selector, and have something else...
+            if (s[1] === ">") {
+                a.push(">");
+                off = s[0];
+            } else if (s[1] === ",") {
+                if (am === undefined) am = [ ",", a ];
+                else am.push(a);
+                a = [];
+                off = s[0];
+            }
+        }
+        if (am) am.push(a);
+        return am ? am : a;
+    };
+
+    var parse_selector = function(str, off) {
+        var soff = off;
+        var s = { };
+        var l = lex(str, off);
+        // skip space
+        if (l && l[1] === " ") { soff = off = l[0]; l = lex(str, off); }
+        if (l && l[1] === toks.typ) {
+            s.type = l[2];
+            l = lex(str, (off = l[0]));
+        } else if (l && l[1] === "*") {
+            // don't bother representing the universal sel, '*' in the
+            // parse tree, cause it's the default
+            l = lex(str, (off = l[0]));
+        }
+
+        // now support either an id or a pc
+        while (true) {
+            if (l === undefined) {
+                break;
+            } else if (l[1] === ".") {
+                l = lex(str, (off = l[0]));
+                if (!l || l[1] !== toks.str) te("sra");
+                if (s.id) te("nmi");
+                s.id = l[2];
+            } else if (l[1] === toks.psc) {
+                if (s.pc || s.pf) te("mpc");
+                // collapse first-child and last-child into nth-child expressions
+                if (l[2] === ":first-child") {
+                    s.pf = ":nth-child";
+                    s.a = 0;
+                    s.b = 1;
+                } else if (l[2] === ":last-child") {
+                    s.pf = ":nth-last-child";
+                    s.a = 0;
+                    s.b = 1;
+                } else {
+                    s.pc = l[2];
+                }
+            } else if (l[1] === toks.psf) {
+                if (s.pc || s.pf ) te("mpc");
+                s.pf = l[2];
+                var m = exprPat.exec(str.substr(l[0]));
+                if (!m) te("mepf");
+                if (m[5]) {
+                    s.a = 2;
+                    s.b = (m[5] === "odd") ? 1 : 0;
+                } else if (m[6]) {
+                    s.a = 0;
+                    s.b = parseInt(m[6], 10);
+                } else {
+                    s.a = parseInt((m[1] ? m[1] : "+") + (m[2] ? m[2] : "1"),10);
+                    s.b = m[3] ? parseInt(m[3] + m[4],10) : 0;
+                }
+                l[0] += m[0].length;
+            } else {
+                break;
+            }
+            l = lex(str, (off = l[0]));
+        }
+
+        // now if we didn't actually parse anything it's an error
+        if (soff === off) te("se");
+
+        return [off, s];
+    };
+
+    // THE EVALUATOR
+
+    function isArray(o) {
+        return Array.isArray ? Array.isArray(o) : 
+          toString.call(o) === "[object Array]";
+    }
+
+    function mytypeof(o) {
+        if (o === null) return "null";
+        var to = typeof o;
+        if (to === "object" && isArray(o)) to = "array";
+        return to;
+    }
+
+    function mn(node, sel, id, num, tot) {
+        var sels = [];
+        var cs = (sel[0] === ">") ? sel[1] : sel[0];
+        var m = true, mod;
+        if (cs.type) m = m && (cs.type === mytypeof(node));
+        if (cs.id)   m = m && (cs.id === id);
+        if (m && cs.pf) {
+            if (cs.pf === ":nth-last-child") num = tot - num;
+            else num++;
+            if (cs.a === 0) {
+                m = cs.b === num;
+            } else {
+                mod = ((num - cs.b) % cs.a);
+
+                m = (!mod && ((num*cs.a + cs.b) >= 0));
+            }
+        }
+
+        // should we repeat this selector for descendants?
+        if (sel[0] !== ">" && sel[0].pc !== ":root") sels.push(sel);
+
+        if (m) {
+            // is there a fragment that we should pass down?
+            if (sel[0] === ">") { if (sel.length > 2) { m = false; sels.push(sel.slice(2)); } }
+            else if (sel.length > 1) { m = false; sels.push(sel.slice(1)); }
+        }
+
+        return [m, sels];
+    }
+
+    function forEach(sel, obj, fun, id, num, tot) {
+        var a = (sel[0] === ",") ? sel.slice(1) : [sel],
+        a0 = [],
+        call = false,
+        i = 0, j = 0, l = 0, k, x;
+        for (i = 0; i < a.length; i++) {
+            x = mn(obj, a[i], id, num, tot);
+            if (x[0]) {
+                call = true;
+            }
+            for (j = 0; j < x[1].length; j++) {
+                a0.push(x[1][j]);
+            }
+        }
+        if (a0.length && typeof obj === "object") {
+            if (a0.length >= 1) {
+                a0.unshift(",");
+            }
+            if (isArray(obj)) {
+                for (i = 0; i < obj.length; i++) {
+                    forEach(a0, obj[i], fun, undefined, i, obj.length);
+                }
+            } else {
+                // it's a shame to do this for :last-child and other
+                // properties which count from the end when we don't
+                // even know if they're present.  Also, the stream
+                // parser is going to be pissed.
+                l = 0;
+                for (k in obj) {
+                    if (obj.hasOwnProperty(k)) {
+                        l++;
+                    }
+                }
+                i = 0;
+                for (k in obj) {
+                    if (obj.hasOwnProperty(k)) {
+                        forEach(a0, obj[k], fun, k, i++, l);
+                    }
+                }
+            }
+        }
+        if (call && fun) {
+            fun(obj);
+        }
+    }
+
+    function match(sel, obj) {
+        var a = [];
+        forEach(sel, obj, function(x) {
+            a.push(x);
+        });
+        return a;
+    }
+
+    function compile(sel) {
+        return {
+            sel: parse(sel),
+            match: function(obj){
+                return match(this.sel, obj);
+            },
+            forEach: function(obj, fun) {
+                return forEach(this.sel, obj, fun);
+            }
+        };
+    }
+
+    exports._lex = lex;
+    exports._parse = parse;
+    exports.match = function (sel, obj) {
+        return compile(sel).match(obj);
+    };
+    exports.forEach = function(sel, obj, fun) {
+        return compile(sel).forEach(obj, fun);
+    };
+    exports.compile = compile;
+})(typeof exports === "undefined" ? (window.JSONSelect = {}) : exports);
+
diff --git a/js/modernizr/test/js/lib/polyfills.js b/js/modernizr/test/js/lib/polyfills.js
new file mode 100644 (file)
index 0000000..4cbb1aa
--- /dev/null
@@ -0,0 +1,96 @@
+
+// Array.prototype.indexOf  polyfill
+if (!Array.prototype.indexOf){
+  Array.prototype.indexOf = function(searchElement /*, fromIndex */)
+  {
+    "use strict";
+
+    if (this === void 0 || this === null)
+      throw new TypeError();
+
+    var t = Object(this);
+    var len = t.length >>> 0;
+    if (len === 0)
+      return -1;
+
+    var n = 0;
+    if (arguments.length > 0)
+    {
+      n = Number(arguments[1]);
+      if (n !== n) // shortcut for verifying if it's NaN
+        n = 0;
+      else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
+        n = (n > 0 || -1) * Math.floor(Math.abs(n));
+    }
+
+    if (n >= len)
+      return -1;
+
+    var k = n >= 0
+          ? n
+          : Math.max(len - Math.abs(n), 0);
+
+    for (; k < len; k++)
+    {
+      if (k in t && t[k] === searchElement)
+        return k;
+    }
+    return -1;
+  };
+}
+
+
+// Object.keys()
+if (!Object.keys) Object.keys = function(o){
+  if (o !== Object(o)) throw new TypeError('Object.keys called on non-object');
+  var ret=[], p;
+  for (p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
+  return ret;
+};
+
+
+
+if (!Array.prototype.map)
+{
+  Array.prototype.map = function(fun /*, thisp */)
+  {
+    "use strict";
+
+    if (this === void 0 || this === null)
+      throw new TypeError();
+
+    var t = Object(this);
+    var len = t.length >>> 0;
+    if (typeof fun !== "function")
+      throw new TypeError();
+
+    var res = new Array(len);
+    var thisp = arguments[1];
+    for (var i = 0; i < len; i++)
+    {
+      if (i in t)
+        res[i] = fun.call(thisp, t[i], i, t);
+    }
+
+    return res;
+  };
+}
+
+
+
+
+/*!
+    http://www.JSON.org/json2.js
+    2011-10-19
+
+    Public Domain.
+
+    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+    See http://www.JSON.org/js.html
+
+    This code should be minified before deployment.
+    See http://javascript.crockford.com/jsmin.html
+
+*/
+var JSON;if(!JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==="string"){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
diff --git a/js/modernizr/test/js/lib/uaparser.js b/js/modernizr/test/js/lib/uaparser.js
new file mode 100644 (file)
index 0000000..eb70eb9
--- /dev/null
@@ -0,0 +1,215 @@
+// uaparser by lindsey simon,
+// ported to node by tobie
+// https://github.com/tobie/ua-parser/
+
+// browserized by paul irish
+
+(function(exports){
+
+  exports.uaparse = parse;
+  
+  function parse(ua) {
+    for (var i=0; i < parsers.length; i++) {
+      var result = parsers[i](ua);
+      if (result) { return result; }
+    }
+    return new UserAgent();
+  }
+
+  function UserAgent(family) {
+    this.family = family || 'Other';
+  }
+
+  UserAgent.prototype.toVersionString = function() {
+    var output = '';
+    if (this.major != null) {
+      output += this.major;
+      if (this.minor != null) {
+        output += '.' + this.minor;
+        if (this.patch != null) {
+          output += '.' + this.patch;
+        }
+      }
+    }
+    return output;
+  };
+
+  UserAgent.prototype.toString = function() {
+    var suffix = this.toVersionString();
+    if (suffix) { suffix = ' ' + suffix; }
+    return this.family + suffix;
+  };
+  
+  
+  var regexes = [
+      {"pattern":"^(Opera)/(\\d+)\\.(\\d+) \\(Nintendo Wii",
+       "v1_replacement":null,
+       "family_replacement":"Wii"},
+      {"pattern":"(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?)",
+       "v1_replacement":null,
+       "family_replacement":"Firefox ($1)"},
+      {"pattern":"(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?",
+       "v1_replacement":null,
+       "family_replacement":"Firefox ($1)"},
+      {"pattern":"(SeaMonkey|Fennec|Camino)/(\\d+)\\.(\\d+)([ab]?\\d+[a-z]*)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Flock)/(\\d+)\\.(\\d+)(b\\d+?)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Fennec)/(\\d+)\\.(\\d+)(pre)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Navigator)/(\\d+)\\.(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Netscape"},
+      {"pattern":"(Navigator)/(\\d+)\\.(\\d+)([ab]\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Netscape"},
+      {"pattern":"(Netscape6)/(\\d+)\\.(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Netscape"},
+      {"pattern":"(MyIBrow)/(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"My Internet Browser"},
+      {"pattern":"(Firefox).*Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"MicroB"},
+      {"pattern":"(Opera)/9.80.*Version\\/(\\d+)\\.(\\d+)(?:\\.(\\d+))?",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?) \\(Swiftfox\\)",
+       "v1_replacement":null,
+       "family_replacement":"Swiftfox"},
+      {"pattern":"(Firefox)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)? \\(Swiftfox\\)",
+       "v1_replacement":null,
+       "family_replacement":"Swiftfox"},
+      {"pattern":"(konqueror)/(\\d+)\\.(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Konqueror"},
+      {"pattern":"(Jasmine|ANTGalio|Midori|Fresco|Lobo|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Shiira|Sunrise|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Vodafone|NetFront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|Iron|Iris)/(\\d+)\\.(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Bolt|Jasmine|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|Vodafone|NetFront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|Iron|Space Bison|Stainless|Orca)/(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\\d+)\\.(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(iCab|Lunascape|Opera|Android) (\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(IEMobile) (\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"IE Mobile"},
+      {"pattern":"(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Firefox)/(\\d+)\\.(\\d+)(pre|[ab]\\d+[a-z]*)?",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Obigo|OBIGO)[^\\d]*(\\d+)(?:.(\\d+))?",
+       "v1_replacement":null,
+       "family_replacement":"Obigo"},
+      {"pattern":"(MAXTHON|Maxthon) (\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Maxthon"},
+      {"pattern":"(Maxthon|MyIE2|Uzbl|Shiira)",
+       "v1_replacement":"0",
+       "family_replacement":null},
+      {"pattern":"(PLAYSTATION) (\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"PlayStation"},
+      {"pattern":"(PlayStation Portable)[^\\d]+(\\d+).(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(BrowseX) \\((\\d+)\\.(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Opera)/(\\d+)\\.(\\d+).*Opera Mobi",
+       "v1_replacement":null,
+       "family_replacement":"Opera Mobile"},
+      {"pattern":"(POLARIS)/(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Polaris"},
+      {"pattern":"(BonEcho)/(\\d+)\\.(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Bon Echo"},
+      {"pattern":"(iPhone) OS (\\d+)_(\\d+)(?:_(\\d+))?",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Avant)",
+       "v1_replacement":"1",
+       "family_replacement":null},
+      {"pattern":"(Nokia)[EN]?(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Black[bB]erry)(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Blackberry"},
+      {"pattern":"(OmniWeb)/v(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Blazer)/(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Palm Blazer"},
+      {"pattern":"(Pre)/(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"Palm Pre"},
+      {"pattern":"(Links) \\((\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(QtWeb) Internet Browser/(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari/",
+       "v1_replacement":null,
+       "family_replacement":"Safari"},
+      {"pattern":"(OLPC)/Update(\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(OLPC)/Update()\\.(\\d+)",
+       "v1_replacement":"0",
+       "family_replacement":null},
+      {"pattern":"(SamsungSGHi560)",
+       "v1_replacement":null,
+       "family_replacement":"Samsung SGHi560"},
+      {"pattern":"^(SonyEricssonK800i)",
+       "v1_replacement":null,
+       "family_replacement":"Sony Ericsson K800i"},
+      {"pattern":"(Teleca Q7)",
+       "v1_replacement":null,
+       "family_replacement":null},
+      {"pattern":"(MSIE) (\\d+)\\.(\\d+)",
+       "v1_replacement":null,
+       "family_replacement":"IE"}
+
+  ];
+  
+  var parsers = regexes.map(function(obj) {
+    var regexp = new RegExp(obj.pattern),
+        famRep = obj.family_replacement,
+        v1Rep = obj.v1_replacement;
+
+    function parser(ua) {
+      var m = ua.match(regexp);
+
+      if (!m) { return null; }
+
+      var familly = famRep ? famRep.replace('$1', m[1]) : m[1];
+
+      var obj = new UserAgent(familly);
+      obj.major = parseInt(v1Rep ? v1Rep : m[2]);
+      obj.minor = m[3] ? parseInt(m[3]) : null;
+      obj.patch = m[4] ? parseInt(m[4]) : null;
+
+      return obj;
+    }
+
+    return parser;
+  });
+  
+  
+})(window);
+
+
diff --git a/js/modernizr/test/js/setup.js b/js/modernizr/test/js/setup.js
new file mode 100644 (file)
index 0000000..b194dcd
--- /dev/null
@@ -0,0 +1,44 @@
+
+// Avoid `console` errors in browsers that lack a console
+if (!(window.console && console.log)) {
+    (function() {
+        var noop = function() {};
+        var methods = ['assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'markTimeline', 'profile', 'profileEnd', 'markTimeline', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn'];
+        var length = methods.length;
+        var console = window.console = {};
+        while (length--) {
+            console[methods[length]] = noop;
+        }
+    }());
+}
+
+// test helper object
+window.TEST = {
+  // note some unique members of the Modernizr object
+  inputs    : ['input','inputtypes', 'textarea'],
+  audvid    : ['video','audio'],
+  API       : ['addTest', 'mq', 'hasEvent', 'testProp', 'testAllProps', 'testStyles', '_prefixes', '_domPrefixes', '_cssomPrefixes', 'prefixed'],
+  extraclass: ['js'],
+  privates  : ['_enableHTML5','_version','_fontfaceready'],
+  deprecated : [
+                { oldish : 'crosswindowmessaging', newish : 'postmessage'},
+                { oldish : 'historymanagement', newish : 'history'},
+              ],
+
+  // utility methods
+  inArray: function(elem, array) {
+      if (array.indexOf) {
+          return array.indexOf(elem);
+      }
+      for (var i = 0, length = array.length; i < length; i++) {
+          if (array[i] === elem) {
+              return i;
+          }
+      }
+      return -1;
+  },
+  trim : function(str){
+    return str.replace(/^\s*/, "").replace(/\s*$/, "");
+  }
+};
+
diff --git a/js/modernizr/test/js/unit-caniuse.js b/js/modernizr/test/js/unit-caniuse.js
new file mode 100644 (file)
index 0000000..78bda30
--- /dev/null
@@ -0,0 +1,191 @@
+
+
+var myscript = document.createElement('script'),
+    ref = document.getElementsByTagName('script')[0];
+
+myscript.src = 'http://caniuse.com/jsonp.php?callback=caniusecb';
+
+setTimeout(function(){
+  ref.parentNode.insertBefore(myscript, ref);
+}, 100);
+
+// mapping Modernizr terms over to caniuse terms
+var map = {
+  audio : 'audio',
+  borderimage : 'border-image',
+  borderradius : 'border-radius',
+  canvas : 'canvas',
+  canvastext : 'canvas-text',
+  cssanimations : 'css-animation',
+  boxshadow : 'css-boxshadow',
+  cssgradients : 'css-gradients',
+  opacity : 'css-opacity',
+  cssreflections : 'css-reflections',
+  textshadow : 'css-textshadow',
+  csstransitions : 'css-transitions',
+  hsla : 'css3-colors',
+  rgba : 'css3-colors',
+  draganddrop : 'dragndrop',
+  flexbox : 'flexbox',
+  fontface : 'fontface',
+  geolocation : 'geolocation',
+  hashchange : 'hashchange',
+  history : 'history',
+  indexeddb : 'indexeddb',
+  multiplebgs : 'multibackgrounds',
+  csscolumns : 'multicolumn',
+  localstorage : 'namevalue-storage',
+  applicationcache : 'offline-apps',
+  websqldatabase : 'sql-storage',
+  svg : 'svg',
+  touch : 'touch',
+  csstransforms : 'transforms2d',
+  csstransforms3d : 'transforms3d',
+  video: 'video',
+  webgl: 'webgl',
+  websockets : 'websockets',
+  webworkers : 'webworkers',
+  postmessage : 'x-doc-messaging'
+};
+
+window.caniusecb = function(scriptdata) {
+
+  window.doo = scriptdata;
+
+  // quit if JSONSelect didn't make it.
+  if (!window.JSONSelect) return;
+
+  var testdata     = scriptdata.data,
+
+      // parse the current UA with uaparser
+      ua           = uaparse(navigator.userAgent),
+
+      // match the UA from uaparser into the browser used by caniuse
+      browserKey   = JSONSelect.match('.agents .browser', scriptdata).indexOf(ua.family),
+      currBrowser  = Object.keys(scriptdata.agents)[browserKey];
+
+  // So Phantom doesn't kill the caniuse.com matching exit out as it's useless anyway within PhantomJS
+  if(navigator.userAgent.indexOf("PhantomJS") != -1) {
+    return;
+  }
+
+  // translate 'y' 'n' or 'a' into a boolean that Modernizr uses
+  function bool(ciuresult){
+    if (ciuresult == 'y' || ciuresult == 'a') return true;
+    // 'p' is for polyfill
+    if (ciuresult == 'n' || ciuresult == 'p') return false;
+    throw 'unknown return value from can i use';
+  }
+
+  function testify(o){
+
+    var ciubool = bool(o.ciuresult);
+
+    // caniuse says audio/video are yes/no, Modernizr has more detail which we'll dumb down.
+    if (~TEST.audvid.indexOf(o.feature))
+      o.result = !!o.result;
+
+    // if caniuse gave us a 'partial', lets let it pass with a note.
+    if (o.ciuresult == 'a'){
+      return ok(true,
+        o.browser + o.version + ': Caniuse reported partial support for ' + o.ciufeature +
+        '. So.. Modernizr\'s ' + o.result + ' is good enough...'
+      );
+    }
+
+
+    // change the *documented* false positives
+    if ((o.feature == 'textshadow' && o.browser == 'firefox' && o.version == 3)
+        && ciubool == false
+    ) {
+      ciubool = o.fp = true;
+    }
+
+    // where we actually do most our assertions
+    equal(o.result, ciubool,
+      o.browser + o.version + ': Caniuse result for ' + o.ciufeature +
+      ' matches Modernizr\'s ' + (o.fp ? '*false positive*' : 'result') + ' for ' + o.feature
+    );
+  }
+
+
+  module('caniuse.com data matches', {
+      setup:function() {
+      },
+      teardown:function() {
+      }
+  });
+
+
+  test("we match caniuse data", function() {
+
+    for (var feature in Modernizr){
+
+      var ciufeatname = map[feature];
+
+      if (ciufeatname === undefined) continue;
+
+      var ciufeatdata = testdata[ciufeatname];
+
+      if (ciufeatdata === undefined) throw 'unknown key of caniusedata';
+
+      // get results for this feature for all versions of this browser
+      var browserResults = ciufeatdata.stats[currBrowser];
+
+      // let's get our versions in order..
+      var minorver   = ua.minor &&                                  // caniuse doesn't use two digit minors
+                       ua.minor.toString().replace(/(\d)\d$/,'$1'), // but opera does.
+
+          majorminor = (ua.major + '.' + minorver)
+                          // opera gets grouped in some cases by caniuse
+                          .replace(/(9\.(6|5))/ , ua.family == 'opera' ? '9.5-9.6'   : "$1")
+                          .replace(/(10\.(0|1))/, ua.family == 'opera' ? '10.0-10.1' : "$1"),
+
+          mmResult   = browserResults[majorminor],
+          mResult    = browserResults[ua.major];
+
+
+      // check it against the major.minor: eg. FF 3.6
+      if (mmResult && mmResult != 'u'){ // 'y' 'n' or 'a'
+
+        // data ends w/ ` x` if its still prefixed in the imp
+        mmResult = mmResult.replace(' x','');
+
+        // match it against our data.
+        testify({ feature     : feature
+                , ciufeature  : ciufeatname
+                , result      : Modernizr[feature]
+                , ciuresult   : mmResult
+                , browser     : currBrowser
+                , version     : majorminor
+        });
+
+        continue; // don't check the major version
+      }
+
+      // check it against just the major version: eg. FF 3
+      if (mResult){
+
+        // unknown support from caniuse... He would probably like to know our data, though!
+        if (mResult == 'u') continue;
+
+        // data ends w/ ` x` if its still prefixed in the imp
+        mResult = mResult.replace(' x','');
+
+        testify({ feature     : feature
+                , ciufeature  : ciufeatname
+                , result      : Modernizr[feature]
+                , ciuresult   : mResult
+                , browser     : currBrowser
+                , version     : ua.major
+        });
+
+
+      }
+
+    } // for in loop
+
+  }); // eo test()
+
+
+}; // eo caniusecallback()
diff --git a/js/modernizr/test/js/unit.js b/js/modernizr/test/js/unit.js
new file mode 100644 (file)
index 0000000..a907ba8
--- /dev/null
@@ -0,0 +1,669 @@
+QUnit.begin = function() {
+       console.log("Starting test suite");
+       console.log("================================================\n");
+};
+
+QUnit.moduleDone = function(opts) {
+       if(opts.failed === 0) {
+               console.log("\u2714 All tests passed in '"+opts.name+"' module");
+       } else {
+               console.log("\u2716 "+ opts.failed +" tests failed in '"+opts.name+"' module");
+       }
+};
+
+QUnit.done = function(opts) {
+       console.log("\n================================================");
+       console.log("Tests completed in "+opts.runtime+" milliseconds");
+       console.log(opts.passed + " tests of "+opts.total+" passed, "+opts.failed+" failed.");
+};
+
+module('Basics', {
+    setup:function() {
+    },
+    teardown:function() {
+    }
+});
+
+test("globals set up", function() {
+
+       ok(window.Modernizr, 'global modernizr object created');
+
+});
+
+test("bind is implemented", function() {
+
+  ok(Function.prototype.bind, 'bind is a member of Function.prototype');
+
+  var a = function(){
+      return this.modernizr;
+  };
+  a = a.bind({modernizr: 'just awsome'});
+
+  equal("just awsome", a(), 'bind works as expected');
+
+
+  // thank you webkit layoutTests
+
+
+  var result;
+
+  function F(x, y)
+  {
+      result = this + " -> x:" + x + ", y:" + y;
+  }
+
+  G = F.bind("'a'", "'b'");
+  H = G.bind("'Cannot rebind this!'", "'c'");
+
+  G(1,2);
+  equal(result, "\'a\' -> x:\'b\', y:1");
+  H(1,2);
+  equal(result, "\'a\' -> x:\'b\', y:\'c\'");
+
+  var f = new F(1,2);
+  equal(result, "[object Object] -> x:1, y:2");
+  var g = new G(1,2);
+  equal(result, "[object Object] -> x:\'b\', y:1");
+  var h = new H(1,2);
+  equal(result, "[object Object] -> x:\'b\', y:\'c\'");
+
+  ok(f instanceof F, "f instanceof F");
+  ok(g instanceof F, "g instanceof F");
+  ok(h instanceof F, "h instanceof F");
+
+  // Bound functions don't have a 'prototype' property.
+  ok("prototype" in F, '"prototype" in F');
+
+  // The object passed to bind as 'this' must be callable.
+  raises(function(){
+    Function.bind.call(undefined);
+  });
+
+  // Objects that allow call but not construct can be bound, but should throw if used with new.
+  var abcAt = String.prototype.charAt.bind("abc");
+  equal(abcAt(1), "b", 'Objects that allow call but not construct can be bound...');
+
+  equal(1, Function.bind.length, 'it exists');
+
+
+});
+
+
+
+test("document.documentElement is valid and correct",1, function() {
+       equal(document.documentElement,document.getElementsByTagName('html')[0]);
+});
+
+
+test("no-js class is gone.", function() {
+
+       ok(!/(?:^|\s)no-js(?:^|\s)/.test(document.documentElement.className),
+          'no-js class is gone');
+
+       ok(/(?:^|\s)js(?:^|\s)/.test(document.documentElement.className),
+          'html.js class is present');
+
+       ok(/(?:^|\s)\+no-js(?:\s|$)/.test(document.documentElement.className),
+          'html.+no-js class is still present');
+
+       ok(/(?:^|\s)no-js-(?:\s|$)/.test(document.documentElement.className),
+          'html.no-js- class is still present');
+
+       ok(/(?:^|\s)i-has-no-js(?:\s|$)/.test(document.documentElement.className),
+          'html.i-has-no-js class is still present');
+
+       if (document.querySelector){
+         ok(document.querySelector('html.js') == document.documentElement,
+            "document.querySelector('html.js') matches.");
+       }
+});
+
+test('html shim worked', function(){
+  expect(2);
+
+  // the exact test we use in the script
+  var elem = document.getElementsByTagName("section")[0];
+  elem.id = "html5section";
+
+  ok( elem.childNodes.length === 1 , 'unknown elements dont collapse');
+
+  elem.style.color = 'red';
+  ok( /red|#ff0000/i.test(elem.style.color), 'unknown elements are styleable')
+
+});
+
+
+module('Modernizr classes and bools', {
+    setup:function() {
+    },
+    teardown:function() {
+    }
+});
+
+
+test('html classes are looking good',function(){
+
+  var classes = TEST.trim(document.documentElement.className).split(/\s+/);
+
+  var modprops = Object.keys(Modernizr),
+      newprops = modprops;
+
+  // decrement for the properties that are private
+  for (var i = -1, len = TEST.privates.length; ++i < len; ){
+    var item = TEST.privates[i];
+    equal(-1, TEST.inArray(item, classes), 'private Modernizr object '+ item +'should not have matching classes');
+    equal(-1, TEST.inArray('no-' + item, classes), 'private Modernizr object no-'+item+' should not have matching classes');
+  }
+
+  // decrement for the non-boolean objects
+//  for (var i = -1, len = TEST.inputs.length; ++i < len; ){
+//    if (Modernizr[TEST.inputs[i]] != undefined) newprops--;
+//  }
+
+  // TODO decrement for the extraclasses
+
+  // decrement for deprecated ones.
+  $.each( TEST.deprecated, function(key, val){
+    newprops.splice(  TEST.inArray(item, newprops), 1);
+  });
+
+
+  //equal(classes,newprops,'equal number of classes and global object props');
+
+  if (classes.length !== newprops){
+    //window.console && console.log(classes, newprops);
+
+  }
+
+  for (var i = 0, len = classes.length, aclass; i <len; i++){
+    aclass = classes[i];
+
+    // Skip js related classes.
+    if (/^(?:js|\+no-js|no-js-|i-has-no-js)$/.test(aclass)) continue;
+
+    if (aclass.indexOf('no-') === 0){
+      aclass = aclass.replace('no-','');
+
+      equal(Modernizr[aclass], false,
+            aclass + ' is correctly false in the classes and object')
+
+    } else {
+      equal(Modernizr[aclass], true,
+             aclass + ' is correctly true in the classes and object')
+    }
+  }
+
+
+  for (var i = 0, len = classes.length, aclass; i <len; i++){
+    equal(classes[i],classes[i].toLowerCase(),'all classes are lowerCase.');
+  }
+
+  // Remove fake no-js classes before test.
+  var docElClass = document.documentElement.className;
+  $.each(['\\+no-js', 'no-js-', 'i-has-no-js'], function(i, fakeClass) {
+    docElClass = docElClass.replace(new RegExp('(^|\\s)' + fakeClass + '(\\s|$)', 'g'), '$1$2');
+  });
+  equal(/[^\s]no-/.test(docElClass), false, 'whitespace between all classes.');
+
+
+})
+
+
+test('Modernizr properties are looking good',function(){
+
+  var count  = 0,
+      nobool = TEST.API.concat(TEST.inputs)
+                       .concat(TEST.audvid)
+                       .concat(TEST.privates)
+                       .concat(['textarea']); // due to forms-placeholder.js test
+
+  for (var prop in window.Modernizr){
+    if (Modernizr.hasOwnProperty(prop)){
+
+      if (TEST.inArray(prop,nobool) >= 0) continue;
+
+      ok(Modernizr[prop] === true || Modernizr[prop] === false,
+        'Modernizr.'+prop+' is a straight up boolean');
+
+
+      equal(prop,prop.toLowerCase(),'all properties are lowerCase.')
+    }
+  }
+})
+
+
+
+test('Modernizr.audio and Modernizr.video',function(){
+
+  for (var i = -1, len = TEST.audvid.length; ++i < len;){
+    var prop = TEST.audvid[i];
+
+    if (Modernizr[prop].toString() == 'true'){
+
+      ok(Modernizr[prop],                             'Modernizr.'+prop+' is truthy.');
+      equal(Modernizr[prop] == true,true,            'Modernizr.'+prop+' is == true')
+      equal(typeof Modernizr[prop] === 'object',true,'Moderizr.'+prop+' is truly an object');
+      equal(Modernizr[prop] !== true,true,           'Modernizr.'+prop+' is !== true')
+
+    } else {
+
+      equal(Modernizr[prop] != true,true,            'Modernizr.'+prop+' is != true')
+    }
+  }
+
+
+});
+
+
+test('Modernizr results match expected values',function(){
+
+  // i'm bringing over a few tests from inside Modernizr.js
+  equal(!!document.createElement('canvas').getContext,Modernizr.canvas,'canvas test consistent');
+
+  equal(!!window.Worker,Modernizr.webworkers,'web workers test consistent')
+
+});
+
+
+
+module('Modernizr\'s API methods', {
+    setup:function() {
+    },
+    teardown:function() {
+    }
+});
+
+test('Modernizr.addTest()',22,function(){
+
+  var docEl = document.documentElement;
+
+
+  Modernizr.addTest('testtrue',function(){
+    return true;
+  });
+
+  Modernizr.addTest('testtruthy',function(){
+    return 100;
+  });
+
+  Modernizr.addTest('testfalse',function(){
+    return false;
+  });
+
+  Modernizr.addTest('testfalsy',function(){
+    return undefined;
+  });
+
+  ok(docEl.className.indexOf(' testtrue') >= 0,'positive class added');
+  equal(Modernizr.testtrue,true,'positive prop added');
+
+  ok(docEl.className.indexOf(' testtruthy') >= 0,'positive class added');
+  equal(Modernizr.testtruthy,100,'truthy value is not casted to straight boolean');
+
+  ok(docEl.className.indexOf(' no-testfalse') >= 0,'negative class added');
+  equal(Modernizr.testfalse,false,'negative prop added');
+
+  ok(docEl.className.indexOf(' no-testfalsy') >= 0,'negative class added');
+  equal(Modernizr.testfalsy,undefined,'falsy value is not casted to straight boolean');
+
+
+
+  Modernizr.addTest('testcamelCase',function(){
+     return true;
+   });
+
+  ok(docEl.className.indexOf(' testcamelCase') === -1,
+     'camelCase test name toLowerCase()\'d');
+
+
+  // okay new signature for this API! woo
+
+  Modernizr.addTest('testboolfalse', false);
+
+  ok(~docEl.className.indexOf(' no-testboolfalse'), 'Modernizr.addTest(feature, bool): negative class added');
+  equal(Modernizr.testboolfalse, false, 'Modernizr.addTest(feature, bool): negative prop added');
+
+
+
+  Modernizr.addTest('testbooltrue', true);
+
+  ok(~docEl.className.indexOf(' testbooltrue'), 'Modernizr.addTest(feature, bool): positive class added');
+  equal(Modernizr.testbooltrue, true, 'Modernizr.addTest(feature, bool): positive prop added');
+
+
+
+  Modernizr.addTest({'testobjboolfalse': false,
+                     'testobjbooltrue' : true   });
+
+  ok(~docEl.className.indexOf(' no-testobjboolfalse'), 'Modernizr.addTest({feature: bool}): negative class added');
+  equal(Modernizr.testobjboolfalse, false, 'Modernizr.addTest({feature: bool}): negative prop added');
+
+  ok(~docEl.className.indexOf(' testobjbooltrue'), 'Modernizr.addTest({feature: bool}): positive class added');
+  equal(Modernizr.testobjbooltrue, true, 'Modernizr.addTest({feature: bool}): positive prop added');
+
+
+
+
+  Modernizr.addTest({'testobjfnfalse': function(){ return false },
+                     'testobjfntrue' : function(){ return true }   });
+
+
+  ok(~docEl.className.indexOf(' no-testobjfnfalse'), 'Modernizr.addTest({feature: bool}): negative class added');
+  equal(Modernizr.testobjfnfalse, false, 'Modernizr.addTest({feature: bool}): negative prop added');
+
+  ok(~docEl.className.indexOf(' testobjfntrue'), 'Modernizr.addTest({feature: bool}): positive class added');
+  equal(Modernizr.testobjfntrue, true, 'Modernizr.addTest({feature: bool}): positive prop added');
+
+
+  Modernizr
+    .addTest('testchainone', true)
+    .addTest({ testchaintwo: true })
+    .addTest('testchainthree', function(){ return true; });
+
+  ok( Modernizr.testchainone == Modernizr.testchaintwo == Modernizr.testchainthree, 'addTest is chainable');
+
+
+}); // eo addTest
+
+
+
+
+
+test('Modernizr.mq: media query testing',function(){
+
+  var $html = $('html');
+  $.mobile = {};
+
+  // from jquery mobile
+
+  $.mobile.media = (function() {
+       // TODO: use window.matchMedia once at least one UA implements it
+       var cache = {},
+               testDiv = $( "<div id='jquery-mediatest'>" ),
+               fakeBody = $( "<body>" ).append( testDiv );
+
+       return function( query ) {
+               if ( !( query in cache ) ) {
+                       var styleBlock = document.createElement('style'),
+                       cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }";
+               //must set type for IE!
+               styleBlock.type = "text/css";
+               if (styleBlock.styleSheet){
+                 styleBlock.styleSheet.cssText = cssrule;
+               }
+               else {
+                 styleBlock.appendChild(document.createTextNode(cssrule));
+               }
+
+                       $html.prepend( fakeBody ).prepend( styleBlock );
+                       cache[ query ] = testDiv.css( "position" ) === "absolute";
+                       fakeBody.add( styleBlock ).remove();
+               }
+               return cache[ query ];
+       };
+  })();
+
+
+  ok(Modernizr.mq,'Modernizr.mq() doesn\' freak out.');
+
+  equal($.mobile.media('only screen'), Modernizr.mq('only screen'),'screen media query matches jQuery mobile\'s result');
+
+  equal(Modernizr.mq('only all'), Modernizr.mq('only all'), 'Cache hit matches');
+
+
+});
+
+
+
+
+test('Modernizr.hasEvent()',function(){
+
+  ok(typeof Modernizr.hasEvent == 'function','Modernizr.hasEvent() is a function');
+
+
+  equal(Modernizr.hasEvent('click'), true,'click event is supported');
+
+  equal(Modernizr.hasEvent('modernizrcustomevent'), false,'random event is definitely not supported');
+
+  /* works fine in webkit but not gecko
+  equal(  Modernizr.hasEvent('resize', window),
+          !Modernizr.hasEvent('resize', document.createElement('div')),
+          'Resize is supported in window but not a div, typically...');
+  */
+
+});
+
+
+
+
+
+test('Modernizr.testStyles()',function(){
+
+  equal(typeof Modernizr.testStyles, 'function','Modernizr.testStyles() is a function');
+
+  var style = '#modernizr{ width: 9px; height: 4px; font-size: 0; color: papayawhip; }';
+
+  Modernizr.testStyles(style, function(elem, rule){
+      equal(style, rule, 'rule passsed back matches what i gave it.')
+      equal(elem.offsetWidth, 9, 'width was set through the style');
+      equal(elem.offsetHeight, 4, 'height was set through the style');
+      equal(elem.id, 'modernizr', 'element is indeed the modernizr element');
+  });
+
+});
+
+
+test('Modernizr._[properties]',function(){
+
+  equal(6, Modernizr._prefixes.length, 'Modernizr._prefixes has 6 items');
+
+  equal(4, Modernizr._domPrefixes.length, 'Modernizr.domPrefixes has 4 items');
+
+});
+
+test('Modernizr.testProp()',function(){
+
+  equal(true, Modernizr.testProp('margin'), 'Everyone supports margin');
+
+  equal(false, Modernizr.testProp('happiness'), 'Nobody supports the happiness style. :(');
+  equal(true, Modernizr.testProp('fontSize'), 'Everyone supports fontSize');
+  equal(false, Modernizr.testProp('font-size'), 'Nobody supports font-size');
+
+  equal('pointerEvents' in  document.createElement('div').style,
+         Modernizr.testProp('pointerEvents'),
+         'results for `pointer-events` are consistent with a homegrown feature test');
+
+});
+
+
+
+test('Modernizr.testAllProps()',function(){
+
+  equal(true, Modernizr.testAllProps('margin'), 'Everyone supports margin');
+
+  equal(false, Modernizr.testAllProps('happiness'), 'Nobody supports the happiness style. :(');
+  equal(true, Modernizr.testAllProps('fontSize'), 'Everyone supports fontSize');
+  equal(false, Modernizr.testAllProps('font-size'), 'Nobody supports font-size');
+
+  equal(Modernizr.csstransitions, Modernizr.testAllProps('transition'), 'Modernizr result matches API result: csstransitions');
+
+  equal(Modernizr.csscolumns, Modernizr.testAllProps('columnCount'), 'Modernizr result matches API result: csscolumns')
+
+});
+
+
+
+
+
+
+test('Modernizr.prefixed() - css and DOM resolving', function(){
+  // https://gist.github.com/523692
+
+  function gimmePrefix(prop, obj){
+    var prefixes = ['Moz','Khtml','Webkit','O','ms'],
+        domPrefixes = ['moz','khtml','webkit','o','ms'],
+        elem     = document.createElement('div'),
+        upper    = prop.charAt(0).toUpperCase() + prop.slice(1);
+
+    if(!obj) {
+      if (prop in elem.style)
+        return prop;
+
+      for (var len = prefixes.length; len--; ){
+        if ((prefixes[len] + upper)  in elem.style)
+          return (prefixes[len] + upper);
+      }
+    } else {
+      if (prop in obj)
+        return prop;
+
+      for (var len = domPrefixes.length; len--; ){
+        if ((domPrefixes[len] + upper)  in obj)
+          return (domPrefixes[len] + upper);
+      }
+    }
+
+
+    return false;
+  }
+
+  var propArr = ['transition', 'backgroundSize', 'boxSizing', 'borderImage',
+                 'borderRadius', 'boxShadow', 'columnCount'];
+
+  var domPropArr = [{ 'prop': 'requestAnimationFrame',  'obj': window },
+                    { 'prop': 'querySelectorAll',       'obj': document },
+                    { 'prop': 'matchesSelector',        'obj': document.createElement('div') }];
+
+  for (var i = -1, len = propArr.length; ++i < len; ){
+    var prop = propArr[i];
+    equal(Modernizr.prefixed(prop), gimmePrefix(prop), 'results for ' + prop + ' match the homebaked prefix finder');
+  }
+
+  for (var i = -1, len = domPropArr.length; ++i < len; ){
+    var prop = domPropArr[i];
+    ok(!!~Modernizr.prefixed(prop.prop, prop.obj, false).toString().indexOf(gimmePrefix(prop.prop, prop.obj)), 'results for ' + prop.prop + ' match the homebaked prefix finder');
+  }
+
+
+
+
+});
+
+
+// FIXME: so a few of these are whitelisting for webkit. i'd like to improve that.
+test('Modernizr.prefixed autobind', function(){
+
+  var rAFName;
+
+  // quick sniff to find the local rAF prefixed name.
+  var vendors = ['ms', 'moz', 'webkit', 'o'];
+  for(var x = 0; x < vendors.length && !rAFName; ++x) {
+    rAFName = window[vendors[x]+'RequestAnimationFrame'] && vendors[x]+'RequestAnimationFrame';
+  }
+
+  if (rAFName){
+    // rAF returns a function
+    equal(
+      'function',
+      typeof Modernizr.prefixed('requestAnimationFrame', window),
+      "Modernizr.prefixed('requestAnimationFrame', window) returns a function")
+
+    // unless we false it to a string
+    equal(
+      rAFName,
+      Modernizr.prefixed('requestAnimationFrame', window, false),
+      "Modernizr.prefixed('requestAnimationFrame', window, false) returns a string (the prop name)")
+
+  }
+
+  if (document.body.webkitMatchesSelector || document.body.mozMatchesSelector){
+
+    var fn = Modernizr.prefixed('matchesSelector', HTMLElement.prototype, document.body);
+
+    //returns function
+    equal(
+      'function',
+      typeof fn,
+      "Modernizr.prefixed('matchesSelector', HTMLElement.prototype, document.body) returns a function");
+
+      // fn scoping
+    equal(
+      true,
+      fn('body'),
+      "Modernizr.prefixed('matchesSelector', HTMLElement.prototype, document.body) is scoped to the body")
+
+  }
+
+  // Webkit only: are there other objects that are prefixed?
+  if (window.webkitNotifications){
+    // should be an object.
+
+    equal(
+      'object',
+      typeof Modernizr.prefixed('Notifications', window),
+      "Modernizr.prefixed('Notifications') returns an object");
+
+  }
+
+  // Webkit only:
+  if (typeof document.webkitIsFullScreen !== 'undefined'){
+    // boolean
+
+    equal(
+      'boolean',
+      typeof Modernizr.prefixed('isFullScreen', document),
+      "Modernizr.prefixed('isFullScreen') returns a boolean");
+  }
+
+
+
+  // Moz only:
+  if (typeof document.mozFullScreen !== 'undefined'){
+    // boolean
+
+    equal(
+      'boolean',
+      typeof Modernizr.prefixed('fullScreen', document),
+      "Modernizr.prefixed('fullScreen') returns a boolean");
+  }
+
+
+  // Webkit-only.. takes advantage of Webkit's mixed case of prefixes
+  if (document.body.style.WebkitAnimation){
+    // string
+
+    equal(
+      'string',
+      typeof Modernizr.prefixed('animation', document.body.style),
+      "Modernizr.prefixed('animation', document.body.style) returns value of that, as a string");
+
+    equal(
+      animationStyle.toLowerCase(),
+      Modernizr.prefixed('animation', document.body.style, false).toLowerCase(),
+      "Modernizr.prefixed('animation', document.body.style, false) returns the (case-normalized) name of the property: webkitanimation");
+
+  }
+
+  equal(
+    false,
+    Modernizr.prefixed('doSomethingAmazing$#$', window),
+    "Modernizr.prefixed('doSomethingAmazing$#$', window) : Gobbledygook with prefixed(str,obj) returns false");
+
+  equal(
+    false,
+    Modernizr.prefixed('doSomethingAmazing$#$', window, document.body),
+    "Modernizr.prefixed('doSomethingAmazing$#$', window) : Gobbledygook with prefixed(str,obj, scope) returns false");
+
+
+  equal(
+    false,
+    Modernizr.prefixed('doSomethingAmazing$#$', window, false),
+    "Modernizr.prefixed('doSomethingAmazing$#$', window) : Gobbledygook with prefixed(str,obj, false) returns false");
+
+
+});
+
+
+
+
+
diff --git a/js/modernizr/test/qunit/qunit.js b/js/modernizr/test/qunit/qunit.js
new file mode 100644 (file)
index 0000000..9efedcb
--- /dev/null
@@ -0,0 +1,1932 @@
+/**
+ * QUnit v1.9.0 - A JavaScript Unit Testing Framework
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright (c) 2012 John Resig, Jörn Zaefferer
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * or GPL (GPL-LICENSE.txt) licenses.
+ */
+
+(function( window ) {
+
+var QUnit,
+       config,
+       onErrorFnPrev,
+       testId = 0,
+       fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
+       toString = Object.prototype.toString,
+       hasOwn = Object.prototype.hasOwnProperty,
+       defined = {
+       setTimeout: typeof window.setTimeout !== "undefined",
+       sessionStorage: (function() {
+               var x = "qunit-test-string";
+               try {
+                       sessionStorage.setItem( x, x );
+                       sessionStorage.removeItem( x );
+                       return true;
+               } catch( e ) {
+                       return false;
+               }
+       }())
+};
+
+function Test( settings ) {
+       extend( this, settings );
+       this.assertions = [];
+       this.testNumber = ++Test.count;
+}
+
+Test.count = 0;
+
+Test.prototype = {
+       init: function() {
+               var a, b, li,
+        tests = id( "qunit-tests" );
+
+               if ( tests ) {
+                       b = document.createElement( "strong" );
+                       b.innerHTML = this.name;
+
+                       // `a` initialized at top of scope
+                       a = document.createElement( "a" );
+                       a.innerHTML = "Rerun";
+                       a.href = QUnit.url({ testNumber: this.testNumber });
+
+                       li = document.createElement( "li" );
+                       li.appendChild( b );
+                       li.appendChild( a );
+                       li.className = "running";
+                       li.id = this.id = "qunit-test-output" + testId++;
+
+                       tests.appendChild( li );
+               }
+       },
+       setup: function() {
+               if ( this.module !== config.previousModule ) {
+                       if ( config.previousModule ) {
+                               runLoggingCallbacks( "moduleDone", QUnit, {
+                                       name: config.previousModule,
+                                       failed: config.moduleStats.bad,
+                                       passed: config.moduleStats.all - config.moduleStats.bad,
+                                       total: config.moduleStats.all
+                               });
+                       }
+                       config.previousModule = this.module;
+                       config.moduleStats = { all: 0, bad: 0 };
+                       runLoggingCallbacks( "moduleStart", QUnit, {
+                               name: this.module
+                       });
+               } else if ( config.autorun ) {
+                       runLoggingCallbacks( "moduleStart", QUnit, {
+                               name: this.module
+                       });
+               }
+
+               config.current = this;
+
+               this.testEnvironment = extend({
+                       setup: function() {},
+                       teardown: function() {}
+               }, this.moduleTestEnvironment );
+
+               runLoggingCallbacks( "testStart", QUnit, {
+                       name: this.testName,
+                       module: this.module
+               });
+
+               // allow utility functions to access the current test environment
+               // TODO why??
+               QUnit.current_testEnvironment = this.testEnvironment;
+
+               if ( !config.pollution ) {
+                       saveGlobal();
+               }
+               if ( config.notrycatch ) {
+                       this.testEnvironment.setup.call( this.testEnvironment );
+                       return;
+               }
+               try {
+                       this.testEnvironment.setup.call( this.testEnvironment );
+               } catch( e ) {
+                       QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
+               }
+       },
+       run: function() {
+               config.current = this;
+
+               var running = id( "qunit-testresult" );
+
+               if ( running ) {
+                       running.innerHTML = "Running: <br/>" + this.name;
+               }
+
+               if ( this.async ) {
+                       QUnit.stop();
+               }
+
+               if ( config.notrycatch ) {
+                       this.callback.call( this.testEnvironment, QUnit.assert );
+                       return;
+               }
+
+               try {
+                       this.callback.call( this.testEnvironment, QUnit.assert );
+               } catch( e ) {
+                       QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + e.message, extractStacktrace( e, 0 ) );
+                       // else next test will carry the responsibility
+                       saveGlobal();
+
+                       // Restart the tests if they're blocking
+                       if ( config.blocking ) {
+                               QUnit.start();
+                       }
+               }
+       },
+       teardown: function() {
+               config.current = this;
+               if ( config.notrycatch ) {
+                       this.testEnvironment.teardown.call( this.testEnvironment );
+                       return;
+               } else {
+                       try {
+                               this.testEnvironment.teardown.call( this.testEnvironment );
+                       } catch( e ) {
+                               QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
+                       }
+               }
+               checkPollution();
+       },
+       finish: function() {
+               config.current = this;
+               if ( config.requireExpects && this.expected == null ) {
+                       QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
+               } else if ( this.expected != null && this.expected != this.assertions.length ) {
+                       QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
+               } else if ( this.expected == null && !this.assertions.length ) {
+                       QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
+               }
+
+               var assertion, a, b, i, li, ol,
+                       test = this,
+                       good = 0,
+                       bad = 0,
+                       tests = id( "qunit-tests" );
+
+               config.stats.all += this.assertions.length;
+               config.moduleStats.all += this.assertions.length;
+
+               if ( tests ) {
+                       ol = document.createElement( "ol" );
+
+                       for ( i = 0; i < this.assertions.length; i++ ) {
+                               assertion = this.assertions[i];
+
+                               li = document.createElement( "li" );
+                               li.className = assertion.result ? "pass" : "fail";
+                               li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
+                               ol.appendChild( li );
+
+                               if ( assertion.result ) {
+                                       good++;
+                               } else {
+                                       bad++;
+                                       config.stats.bad++;
+                                       config.moduleStats.bad++;
+                               }
+                       }
+
+                       // store result when possible
+                       if ( QUnit.config.reorder && defined.sessionStorage ) {
+                               if ( bad ) {
+                                       sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
+                               } else {
+                                       sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
+                               }
+                       }
+
+                       if ( bad === 0 ) {
+                               ol.style.display = "none";
+                       }
+
+                       // `b` initialized at top of scope
+                       b = document.createElement( "strong" );
+                       b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
+
+                       addEvent(b, "click", function() {
+                               var next = b.nextSibling.nextSibling,
+                                       display = next.style.display;
+                               next.style.display = display === "none" ? "block" : "none";
+                       });
+
+                       addEvent(b, "dblclick", function( e ) {
+                               var target = e && e.target ? e.target : window.event.srcElement;
+                               if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
+                                       target = target.parentNode;
+                               }
+                               if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
+                                       window.location = QUnit.url({ testNumber: test.testNumber });
+                               }
+                       });
+
+                       // `li` initialized at top of scope
+                       li = id( this.id );
+                       li.className = bad ? "fail" : "pass";
+                       li.removeChild( li.firstChild );
+                       a = li.firstChild;
+                       li.appendChild( b );
+                       li.appendChild ( a );
+                       li.appendChild( ol );
+
+               } else {
+                       for ( i = 0; i < this.assertions.length; i++ ) {
+                               if ( !this.assertions[i].result ) {
+                                       bad++;
+                                       config.stats.bad++;
+                                       config.moduleStats.bad++;
+                               }
+                       }
+               }
+
+               runLoggingCallbacks( "testDone", QUnit, {
+                       name: this.testName,
+                       module: this.module,
+                       failed: bad,
+                       passed: this.assertions.length - bad,
+                       total: this.assertions.length
+               });
+
+               QUnit.reset();
+
+               config.current = undefined;
+       },
+
+       queue: function() {
+               var bad,
+                       test = this;
+
+               synchronize(function() {
+                       test.init();
+               });
+               function run() {
+                       // each of these can by async
+                       synchronize(function() {
+                               test.setup();
+                       });
+                       synchronize(function() {
+                               test.run();
+                       });
+                       synchronize(function() {
+                               test.teardown();
+                       });
+                       synchronize(function() {
+                               test.finish();
+                       });
+               }
+
+               // `bad` initialized at top of scope
+               // defer when previous test run passed, if storage is available
+               bad = QUnit.config.reorder && defined.sessionStorage &&
+                                               +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
+
+               if ( bad ) {
+                       run();
+               } else {
+                       synchronize( run, true );
+               }
+       }
+};
+
+// Root QUnit object.
+// `QUnit` initialized at top of scope
+QUnit = {
+
+       // call on start of module test to prepend name to all tests
+       module: function( name, testEnvironment ) {
+               config.currentModule = name;
+               config.currentModuleTestEnviroment = testEnvironment;
+       },
+
+       asyncTest: function( testName, expected, callback ) {
+               if ( arguments.length === 2 ) {
+                       callback = expected;
+                       expected = null;
+               }
+
+               QUnit.test( testName, expected, callback, true );
+       },
+
+       test: function( testName, expected, callback, async ) {
+               var test,
+                       name = "<span class='test-name'>" + escapeInnerText( testName ) + "</span>";
+
+               if ( arguments.length === 2 ) {
+                       callback = expected;
+                       expected = null;
+               }
+
+               if ( config.currentModule ) {
+                       name = "<span class='module-name'>" + config.currentModule + "</span>: " + name;
+               }
+
+               test = new Test({
+                       name: name,
+                       testName: testName,
+                       expected: expected,
+                       async: async,
+                       callback: callback,
+                       module: config.currentModule,
+                       moduleTestEnvironment: config.currentModuleTestEnviroment,
+                       stack: sourceFromStacktrace( 2 )
+               });
+
+               if ( !validTest( test ) ) {
+                       return;
+               }
+
+               test.queue();
+       },
+
+       // Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
+       expect: function( asserts ) {
+               config.current.expected = asserts;
+       },
+
+       start: function( count ) {
+               config.semaphore -= count || 1;
+               // don't start until equal number of stop-calls
+               if ( config.semaphore > 0 ) {
+                       return;
+               }
+               // ignore if start is called more often then stop
+               if ( config.semaphore < 0 ) {
+                       config.semaphore = 0;
+               }
+               // A slight delay, to avoid any current callbacks
+               if ( defined.setTimeout ) {
+                       window.setTimeout(function() {
+                               if ( config.semaphore > 0 ) {
+                                       return;
+                               }
+                               if ( config.timeout ) {
+                                       clearTimeout( config.timeout );
+                               }
+
+                               config.blocking = false;
+                               process( true );
+                       }, 13);
+               } else {
+                       config.blocking = false;
+                       process( true );
+               }
+       },
+
+       stop: function( count ) {
+               config.semaphore += count || 1;
+               config.blocking = true;
+
+               if ( config.testTimeout && defined.setTimeout ) {
+                       clearTimeout( config.timeout );
+                       config.timeout = window.setTimeout(function() {
+                               QUnit.ok( false, "Test timed out" );
+                               config.semaphore = 1;
+                               QUnit.start();
+                       }, config.testTimeout );
+               }
+       }
+};
+
+// Asssert helpers
+// All of these must call either QUnit.push() or manually do:
+// - runLoggingCallbacks( "log", .. );
+// - config.current.assertions.push({ .. });
+QUnit.assert = {
+       /**
+        * Asserts rough true-ish result.
+        * @name ok
+        * @function
+        * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
+        */
+       ok: function( result, msg ) {
+               if ( !config.current ) {
+                       throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
+               }
+               result = !!result;
+
+               var source,
+                       details = {
+                               result: result,
+                               message: msg
+                       };
+
+               msg = escapeInnerText( msg || (result ? "okay" : "failed" ) );
+               msg = "<span class='test-message'>" + msg + "</span>";
+
+               if ( !result ) {
+                       source = sourceFromStacktrace( 2 );
+                       if ( source ) {
+                               details.source = source;
+                               msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
+                       }
+               }
+               runLoggingCallbacks( "log", QUnit, details );
+               config.current.assertions.push({
+                       result: result,
+                       message: msg
+               });
+       },
+
+       /**
+        * Assert that the first two arguments are equal, with an optional message.
+        * Prints out both actual and expected values.
+        * @name equal
+        * @function
+        * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
+        */
+       equal: function( actual, expected, message ) {
+               QUnit.push( expected == actual, actual, expected, message );
+       },
+
+       /**
+        * @name notEqual
+        * @function
+        */
+       notEqual: function( actual, expected, message ) {
+               QUnit.push( expected != actual, actual, expected, message );
+       },
+
+       /**
+        * @name deepEqual
+        * @function
+        */
+       deepEqual: function( actual, expected, message ) {
+               QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
+       },
+
+       /**
+        * @name notDeepEqual
+        * @function
+        */
+       notDeepEqual: function( actual, expected, message ) {
+               QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
+       },
+
+       /**
+        * @name strictEqual
+        * @function
+        */
+       strictEqual: function( actual, expected, message ) {
+               QUnit.push( expected === actual, actual, expected, message );
+       },
+
+       /**
+        * @name notStrictEqual
+        * @function
+        */
+       notStrictEqual: function( actual, expected, message ) {
+               QUnit.push( expected !== actual, actual, expected, message );
+       },
+
+       throws: function( block, expected, message ) {
+               var actual,
+                       ok = false;
+
+               // 'expected' is optional
+               if ( typeof expected === "string" ) {
+                       message = expected;
+                       expected = null;
+               }
+
+               config.current.ignoreGlobalErrors = true;
+               try {
+                       block.call( config.current.testEnvironment );
+               } catch (e) {
+                       actual = e;
+               }
+               config.current.ignoreGlobalErrors = false;
+
+               if ( actual ) {
+                       // we don't want to validate thrown error
+                       if ( !expected ) {
+                               ok = true;
+                       // expected is a regexp
+                       } else if ( QUnit.objectType( expected ) === "regexp" ) {
+                               ok = expected.test( actual );
+                       // expected is a constructor
+                       } else if ( actual instanceof expected ) {
+                               ok = true;
+                       // expected is a validation function which returns true is validation passed
+                       } else if ( expected.call( {}, actual ) === true ) {
+                               ok = true;
+                       }
+
+                       QUnit.push( ok, actual, null, message );
+               } else {
+                       QUnit.pushFailure( message, null, 'No exception was thrown.' );
+               }
+       }
+};
+
+/**
+ * @deprecate since 1.8.0
+ * Kept assertion helpers in root for backwards compatibility
+ */
+extend( QUnit, QUnit.assert );
+
+/**
+ * @deprecated since 1.9.0
+ * Kept global "raises()" for backwards compatibility
+ */
+QUnit.raises = QUnit.assert.throws;
+
+/**
+ * @deprecated since 1.0.0, replaced with error pushes since 1.3.0
+ * Kept to avoid TypeErrors for undefined methods.
+ */
+QUnit.equals = function() {
+       QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
+};
+QUnit.same = function() {
+       QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
+};
+
+// We want access to the constructor's prototype
+(function() {
+       function F() {}
+       F.prototype = QUnit;
+       QUnit = new F();
+       // Make F QUnit's constructor so that we can add to the prototype later
+       QUnit.constructor = F;
+}());
+
+/**
+ * Config object: Maintain internal state
+ * Later exposed as QUnit.config
+ * `config` initialized at top of scope
+ */
+config = {
+       // The queue of tests to run
+       queue: [],
+
+       // block until document ready
+       blocking: true,
+
+       // when enabled, show only failing tests
+       // gets persisted through sessionStorage and can be changed in UI via checkbox
+       hidepassed: false,
+
+       // by default, run previously failed tests first
+       // very useful in combination with "Hide passed tests" checked
+       reorder: true,
+
+       // by default, modify document.title when suite is done
+       altertitle: true,
+
+       // when enabled, all tests must call expect()
+       requireExpects: false,
+
+       // add checkboxes that are persisted in the query-string
+       // when enabled, the id is set to `true` as a `QUnit.config` property
+       urlConfig: [
+               {
+                       id: "noglobals",
+                       label: "Check for Globals",
+                       tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings."
+               },
+               {
+                       id: "notrycatch",
+                       label: "No try-catch",
+                       tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings."
+               }
+       ],
+
+       // logging callback queues
+       begin: [],
+       done: [],
+       log: [],
+       testStart: [],
+       testDone: [],
+       moduleStart: [],
+       moduleDone: []
+};
+
+// Initialize more QUnit.config and QUnit.urlParams
+(function() {
+       var i,
+               location = window.location || { search: "", protocol: "file:" },
+               params = location.search.slice( 1 ).split( "&" ),
+               length = params.length,
+               urlParams = {},
+               current;
+
+       if ( params[ 0 ] ) {
+               for ( i = 0; i < length; i++ ) {
+                       current = params[ i ].split( "=" );
+                       current[ 0 ] = decodeURIComponent( current[ 0 ] );
+                       // allow just a key to turn on a flag, e.g., test.html?noglobals
+                       current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
+                       urlParams[ current[ 0 ] ] = current[ 1 ];
+               }
+       }
+
+       QUnit.urlParams = urlParams;
+
+       // String search anywhere in moduleName+testName
+       config.filter = urlParams.filter;
+
+       // Exact match of the module name
+       config.module = urlParams.module;
+
+       config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
+
+       // Figure out if we're running the tests from a server or not
+       QUnit.isLocal = location.protocol === "file:";
+}());
+
+// Export global variables, unless an 'exports' object exists,
+// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
+if ( typeof exports === "undefined" ) {
+       extend( window, QUnit );
+
+       // Expose QUnit object
+       window.QUnit = QUnit;
+}
+
+// Extend QUnit object,
+// these after set here because they should not be exposed as global functions
+extend( QUnit, {
+       config: config,
+
+       // Initialize the configuration options
+       init: function() {
+               extend( config, {
+                       stats: { all: 0, bad: 0 },
+                       moduleStats: { all: 0, bad: 0 },
+                       started: +new Date(),
+                       updateRate: 1000,
+                       blocking: false,
+                       autostart: true,
+                       autorun: false,
+                       filter: "",
+                       queue: [],
+                       semaphore: 0
+               });
+
+               var tests, banner, result,
+                       qunit = id( "qunit" );
+
+               if ( qunit ) {
+                       qunit.innerHTML =
+                               "<h1 id='qunit-header'>" + escapeInnerText( document.title ) + "</h1>" +
+                               "<h2 id='qunit-banner'></h2>" +
+                               "<div id='qunit-testrunner-toolbar'></div>" +
+                               "<h2 id='qunit-userAgent'></h2>" +
+                               "<ol id='qunit-tests'></ol>";
+               }
+
+               tests = id( "qunit-tests" );
+               banner = id( "qunit-banner" );
+               result = id( "qunit-testresult" );
+
+               if ( tests ) {
+                       tests.innerHTML = "";
+               }
+
+               if ( banner ) {
+                       banner.className = "";
+               }
+
+               if ( result ) {
+                       result.parentNode.removeChild( result );
+               }
+
+               if ( tests ) {
+                       result = document.createElement( "p" );
+                       result.id = "qunit-testresult";
+                       result.className = "result";
+                       tests.parentNode.insertBefore( result, tests );
+                       result.innerHTML = "Running...<br/>&nbsp;";
+               }
+       },
+
+       // Resets the test setup. Useful for tests that modify the DOM.
+       // If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
+       reset: function() {
+               var fixture;
+
+               if ( window.jQuery ) {
+                       jQuery( "#qunit-fixture" ).html( config.fixture );
+               } else {
+                       fixture = id( "qunit-fixture" );
+                       if ( fixture ) {
+                               fixture.innerHTML = config.fixture;
+                       }
+               }
+       },
+
+       // Trigger an event on an element.
+       // @example triggerEvent( document.body, "click" );
+       triggerEvent: function( elem, type, event ) {
+               if ( document.createEvent ) {
+                       event = document.createEvent( "MouseEvents" );
+                       event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
+                               0, 0, 0, 0, 0, false, false, false, false, 0, null);
+
+                       elem.dispatchEvent( event );
+               } else if ( elem.fireEvent ) {
+                       elem.fireEvent( "on" + type );
+               }
+       },
+
+       // Safe object type checking
+       is: function( type, obj ) {
+               return QUnit.objectType( obj ) == type;
+       },
+
+       objectType: function( obj ) {
+               if ( typeof obj === "undefined" ) {
+                               return "undefined";
+               // consider: typeof null === object
+               }
+               if ( obj === null ) {
+                               return "null";
+               }
+
+               var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || "";
+
+               switch ( type ) {
+                       case "Number":
+                               if ( isNaN(obj) ) {
+                                       return "nan";
+                               }
+                               return "number";
+                       case "String":
+                       case "Boolean":
+                       case "Array":
+                       case "Date":
+                       case "RegExp":
+                       case "Function":
+                               return type.toLowerCase();
+               }
+               if ( typeof obj === "object" ) {
+                       return "object";
+               }
+               return undefined;
+       },
+
+       push: function( result, actual, expected, message ) {
+               if ( !config.current ) {
+                       throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
+               }
+
+               var output, source,
+                       details = {
+                               result: result,
+                               message: message,
+                               actual: actual,
+                               expected: expected
+                       };
+
+               message = escapeInnerText( message ) || ( result ? "okay" : "failed" );
+               message = "<span class='test-message'>" + message + "</span>";
+               output = message;
+
+               if ( !result ) {
+                       expected = escapeInnerText( QUnit.jsDump.parse(expected) );
+                       actual = escapeInnerText( QUnit.jsDump.parse(actual) );
+                       output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
+
+                       if ( actual != expected ) {
+                               output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
+                               output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
+                       }
+
+                       source = sourceFromStacktrace();
+
+                       if ( source ) {
+                               details.source = source;
+                               output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
+                       }
+
+                       output += "</table>";
+               }
+
+               runLoggingCallbacks( "log", QUnit, details );
+
+               config.current.assertions.push({
+                       result: !!result,
+                       message: output
+               });
+       },
+
+       pushFailure: function( message, source, actual ) {
+               if ( !config.current ) {
+                       throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
+               }
+
+               var output,
+                       details = {
+                               result: false,
+                               message: message
+                       };
+
+               message = escapeInnerText( message ) || "error";
+               message = "<span class='test-message'>" + message + "</span>";
+               output = message;
+
+               output += "<table>";
+
+               if ( actual ) {
+                       output += "<tr class='test-actual'><th>Result: </th><td><pre>" + escapeInnerText( actual ) + "</pre></td></tr>";
+               }
+
+               if ( source ) {
+                       details.source = source;
+                       output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
+               }
+
+               output += "</table>";
+
+               runLoggingCallbacks( "log", QUnit, details );
+
+               config.current.assertions.push({
+                       result: false,
+                       message: output
+               });
+       },
+
+       url: function( params ) {
+               params = extend( extend( {}, QUnit.urlParams ), params );
+               var key,
+                       querystring = "?";
+
+               for ( key in params ) {
+                       if ( !hasOwn.call( params, key ) ) {
+                               continue;
+                       }
+                       querystring += encodeURIComponent( key ) + "=" +
+                               encodeURIComponent( params[ key ] ) + "&";
+               }
+               return window.location.pathname + querystring.slice( 0, -1 );
+       },
+
+       extend: extend,
+       id: id,
+       addEvent: addEvent
+       // load, equiv, jsDump, diff: Attached later
+});
+
+/**
+ * @deprecated: Created for backwards compatibility with test runner that set the hook function
+ * into QUnit.{hook}, instead of invoking it and passing the hook function.
+ * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
+ * Doing this allows us to tell if the following methods have been overwritten on the actual
+ * QUnit object.
+ */
+extend( QUnit.constructor.prototype, {
+
+       // Logging callbacks; all receive a single argument with the listed properties
+       // run test/logs.html for any related changes
+       begin: registerLoggingCallback( "begin" ),
+
+       // done: { failed, passed, total, runtime }
+       done: registerLoggingCallback( "done" ),
+
+       // log: { result, actual, expected, message }
+       log: registerLoggingCallback( "log" ),
+
+       // testStart: { name }
+       testStart: registerLoggingCallback( "testStart" ),
+
+       // testDone: { name, failed, passed, total }
+       testDone: registerLoggingCallback( "testDone" ),
+
+       // moduleStart: { name }
+       moduleStart: registerLoggingCallback( "moduleStart" ),
+
+       // moduleDone: { name, failed, passed, total }
+       moduleDone: registerLoggingCallback( "moduleDone" )
+});
+
+if ( typeof document === "undefined" || document.readyState === "complete" ) {
+       config.autorun = true;
+}
+
+QUnit.load = function() {
+       runLoggingCallbacks( "begin", QUnit, {} );
+
+       // Initialize the config, saving the execution queue
+       var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes,
+               urlConfigHtml = "",
+               oldconfig = extend( {}, config );
+
+       QUnit.init();
+       extend(config, oldconfig);
+
+       config.blocking = false;
+
+       len = config.urlConfig.length;
+
+       for ( i = 0; i < len; i++ ) {
+               val = config.urlConfig[i];
+               if ( typeof val === "string" ) {
+                       val = {
+                               id: val,
+                               label: val,
+                               tooltip: "[no tooltip available]"
+                       };
+               }
+               config[ val.id ] = QUnit.urlParams[ val.id ];
+               urlConfigHtml += "<input id='qunit-urlconfig-" + val.id + "' name='" + val.id + "' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) + " title='" + val.tooltip + "'><label for='qunit-urlconfig-" + val.id + "' title='" + val.tooltip + "'>" + val.label + "</label>";
+       }
+
+       // `userAgent` initialized at top of scope
+       userAgent = id( "qunit-userAgent" );
+       if ( userAgent ) {
+               userAgent.innerHTML = navigator.userAgent;
+       }
+
+       // `banner` initialized at top of scope
+       banner = id( "qunit-header" );
+       if ( banner ) {
+               banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + "'>" + banner.innerHTML + "</a> ";
+       }
+
+       // `toolbar` initialized at top of scope
+       toolbar = id( "qunit-testrunner-toolbar" );
+       if ( toolbar ) {
+               // `filter` initialized at top of scope
+               filter = document.createElement( "input" );
+               filter.type = "checkbox";
+               filter.id = "qunit-filter-pass";
+
+               addEvent( filter, "click", function() {
+                       var tmp,
+                               ol = document.getElementById( "qunit-tests" );
+
+                       if ( filter.checked ) {
+                               ol.className = ol.className + " hidepass";
+                       } else {
+                               tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
+                               ol.className = tmp.replace( / hidepass /, " " );
+                       }
+                       if ( defined.sessionStorage ) {
+                               if (filter.checked) {
+                                       sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
+                               } else {
+                                       sessionStorage.removeItem( "qunit-filter-passed-tests" );
+                               }
+                       }
+               });
+
+               if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
+                       filter.checked = true;
+                       // `ol` initialized at top of scope
+                       ol = document.getElementById( "qunit-tests" );
+                       ol.className = ol.className + " hidepass";
+               }
+               toolbar.appendChild( filter );
+
+               // `label` initialized at top of scope
+               label = document.createElement( "label" );
+               label.setAttribute( "for", "qunit-filter-pass" );
+               label.setAttribute( "title", "Only show tests and assertons that fail. Stored in sessionStorage." );
+               label.innerHTML = "Hide passed tests";
+               toolbar.appendChild( label );
+
+               urlConfigCheckboxes = document.createElement( 'span' );
+               urlConfigCheckboxes.innerHTML = urlConfigHtml;
+               addEvent( urlConfigCheckboxes, "change", function( event ) {
+                       var params = {};
+                       params[ event.target.name ] = event.target.checked ? true : undefined;
+                       window.location = QUnit.url( params );
+               });
+               toolbar.appendChild( urlConfigCheckboxes );
+       }
+
+       // `main` initialized at top of scope
+       main = id( "qunit-fixture" );
+       if ( main ) {
+               config.fixture = main.innerHTML;
+       }
+
+       if ( config.autostart ) {
+               QUnit.start();
+       }
+};
+
+addEvent( window, "load", QUnit.load );
+
+// `onErrorFnPrev` initialized at top of scope
+// Preserve other handlers
+onErrorFnPrev = window.onerror;
+
+// Cover uncaught exceptions
+// Returning true will surpress the default browser handler,
+// returning false will let it run.
+window.onerror = function ( error, filePath, linerNr ) {
+       var ret = false;
+       if ( onErrorFnPrev ) {
+               ret = onErrorFnPrev( error, filePath, linerNr );
+       }
+
+       // Treat return value as window.onerror itself does,
+       // Only do our handling if not surpressed.
+       if ( ret !== true ) {
+               if ( QUnit.config.current ) {
+                       if ( QUnit.config.current.ignoreGlobalErrors ) {
+                               return true;
+                       }
+                       QUnit.pushFailure( error, filePath + ":" + linerNr );
+               } else {
+                       QUnit.test( "global failure", function() {
+                               QUnit.pushFailure( error, filePath + ":" + linerNr );
+                       });
+               }
+               return false;
+       }
+
+       return ret;
+};
+
+function done() {
+       config.autorun = true;
+
+       // Log the last module results
+       if ( config.currentModule ) {
+               runLoggingCallbacks( "moduleDone", QUnit, {
+                       name: config.currentModule,
+                       failed: config.moduleStats.bad,
+                       passed: config.moduleStats.all - config.moduleStats.bad,
+                       total: config.moduleStats.all
+               });
+       }
+
+       var i, key,
+               banner = id( "qunit-banner" ),
+               tests = id( "qunit-tests" ),
+               runtime = +new Date() - config.started,
+               passed = config.stats.all - config.stats.bad,
+               html = [
+                       "Tests completed in ",
+                       runtime,
+                       " milliseconds.<br/>",
+                       "<span class='passed'>",
+                       passed,
+                       "</span> tests of <span class='total'>",
+                       config.stats.all,
+                       "</span> passed, <span class='failed'>",
+                       config.stats.bad,
+                       "</span> failed."
+               ].join( "" );
+
+       if ( banner ) {
+               banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
+       }
+
+       if ( tests ) {
+               id( "qunit-testresult" ).innerHTML = html;
+       }
+
+       if ( config.altertitle && typeof document !== "undefined" && document.title ) {
+               // show ✖ for good, ✔ for bad suite result in title
+               // use escape sequences in case file gets loaded with non-utf-8-charset
+               document.title = [
+                       ( config.stats.bad ? "\u2716" : "\u2714" ),
+                       document.title.replace( /^[\u2714\u2716] /i, "" )
+               ].join( " " );
+       }
+
+       // clear own sessionStorage items if all tests passed
+       if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
+               // `key` & `i` initialized at top of scope
+               for ( i = 0; i < sessionStorage.length; i++ ) {
+                       key = sessionStorage.key( i++ );
+                       if ( key.indexOf( "qunit-test-" ) === 0 ) {
+                               sessionStorage.removeItem( key );
+                       }
+               }
+       }
+
+       runLoggingCallbacks( "done", QUnit, {
+               failed: config.stats.bad,
+               passed: passed,
+               total: config.stats.all,
+               runtime: runtime
+       });
+}
+
+/** @return Boolean: true if this test should be ran */
+function validTest( test ) {
+       var include,
+               filter = config.filter && config.filter.toLowerCase(),
+               module = config.module && config.module.toLowerCase(),
+               fullName = (test.module + ": " + test.testName).toLowerCase();
+
+       if ( config.testNumber ) {
+               return test.testNumber === config.testNumber;
+       }
+
+       if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {
+               return false;
+       }
+
+       if ( !filter ) {
+               return true;
+       }
+
+       include = filter.charAt( 0 ) !== "!";
+       if ( !include ) {
+               filter = filter.slice( 1 );
+       }
+
+       // If the filter matches, we need to honour include
+       if ( fullName.indexOf( filter ) !== -1 ) {
+               return include;
+       }
+
+       // Otherwise, do the opposite
+       return !include;
+}
+
+// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
+// Later Safari and IE10 are supposed to support error.stack as well
+// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
+function extractStacktrace( e, offset ) {
+       offset = offset === undefined ? 3 : offset;
+
+       var stack, include, i, regex;
+
+       if ( e.stacktrace ) {
+               // Opera
+               return e.stacktrace.split( "\n" )[ offset + 3 ];
+       } else if ( e.stack ) {
+               // Firefox, Chrome
+               stack = e.stack.split( "\n" );
+               if (/^error$/i.test( stack[0] ) ) {
+                       stack.shift();
+               }
+               if ( fileName ) {
+                       include = [];
+                       for ( i = offset; i < stack.length; i++ ) {
+                               if ( stack[ i ].indexOf( fileName ) != -1 ) {
+                                       break;
+                               }
+                               include.push( stack[ i ] );
+                       }
+                       if ( include.length ) {
+                               return include.join( "\n" );
+                       }
+               }
+               return stack[ offset ];
+       } else if ( e.sourceURL ) {
+               // Safari, PhantomJS
+               // hopefully one day Safari provides actual stacktraces
+               // exclude useless self-reference for generated Error objects
+               if ( /qunit.js$/.test( e.sourceURL ) ) {
+                       return;
+               }
+               // for actual exceptions, this is useful
+               return e.sourceURL + ":" + e.line;
+       }
+}
+function sourceFromStacktrace( offset ) {
+       try {
+               throw new Error();
+       } catch ( e ) {
+               return extractStacktrace( e, offset );
+       }
+}
+
+function escapeInnerText( s ) {
+       if ( !s ) {
+               return "";
+       }
+       s = s + "";
+       return s.replace( /[\&<>]/g, function( s ) {
+               switch( s ) {
+                       case "&": return "&amp;";
+                       case "<": return "&lt;";
+                       case ">": return "&gt;";
+                       default: return s;
+               }
+       });
+}
+
+function synchronize( callback, last ) {
+       config.queue.push( callback );
+
+       if ( config.autorun && !config.blocking ) {
+               process( last );
+       }
+}
+
+function process( last ) {
+       function next() {
+               process( last );
+       }
+       var start = new Date().getTime();
+       config.depth = config.depth ? config.depth + 1 : 1;
+
+       while ( config.queue.length && !config.blocking ) {
+               if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
+                       config.queue.shift()();
+               } else {
+                       window.setTimeout( next, 13 );
+                       break;
+               }
+       }
+       config.depth--;
+       if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
+               done();
+       }
+}
+
+function saveGlobal() {
+       config.pollution = [];
+
+       if ( config.noglobals ) {
+               for ( var key in window ) {
+                       // in Opera sometimes DOM element ids show up here, ignore them
+                       if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
+                               continue;
+                       }
+                       config.pollution.push( key );
+               }
+       }
+}
+
+function checkPollution( name ) {
+       var newGlobals,
+               deletedGlobals,
+               old = config.pollution;
+
+       saveGlobal();
+
+       newGlobals = diff( config.pollution, old );
+       if ( newGlobals.length > 0 ) {
+               QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
+       }
+
+       deletedGlobals = diff( old, config.pollution );
+       if ( deletedGlobals.length > 0 ) {
+               QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
+       }
+}
+
+// returns a new Array with the elements that are in a but not in b
+function diff( a, b ) {
+       var i, j,
+               result = a.slice();
+
+       for ( i = 0; i < result.length; i++ ) {
+               for ( j = 0; j < b.length; j++ ) {
+                       if ( result[i] === b[j] ) {
+                               result.splice( i, 1 );
+                               i--;
+                               break;
+                       }
+               }
+       }
+       return result;
+}
+
+function extend( a, b ) {
+       for ( var prop in b ) {
+               if ( b[ prop ] === undefined ) {
+                       delete a[ prop ];
+
+               // Avoid "Member not found" error in IE8 caused by setting window.constructor
+               } else if ( prop !== "constructor" || a !== window ) {
+                       a[ prop ] = b[ prop ];
+               }
+       }
+
+       return a;
+}
+
+function addEvent( elem, type, fn ) {
+       if ( elem.addEventListener ) {
+               elem.addEventListener( type, fn, false );
+       } else if ( elem.attachEvent ) {
+               elem.attachEvent( "on" + type, fn );
+       } else {
+               fn();
+       }
+}
+
+function id( name ) {
+       return !!( typeof document !== "undefined" && document && document.getElementById ) &&
+               document.getElementById( name );
+}
+
+function registerLoggingCallback( key ) {
+       return function( callback ) {
+               config[key].push( callback );
+       };
+}
+
+// Supports deprecated method of completely overwriting logging callbacks
+function runLoggingCallbacks( key, scope, args ) {
+       //debugger;
+       var i, callbacks;
+       if ( QUnit.hasOwnProperty( key ) ) {
+               QUnit[ key ].call(scope, args );
+       } else {
+               callbacks = config[ key ];
+               for ( i = 0; i < callbacks.length; i++ ) {
+                       callbacks[ i ].call( scope, args );
+               }
+       }
+}
+
+// Test for equality any JavaScript type.
+// Author: Philippe Rathé <prathe@gmail.com>
+QUnit.equiv = (function() {
+
+       // Call the o related callback with the given arguments.
+       function bindCallbacks( o, callbacks, args ) {
+               var prop = QUnit.objectType( o );
+               if ( prop ) {
+                       if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
+                               return callbacks[ prop ].apply( callbacks, args );
+                       } else {
+                               return callbacks[ prop ]; // or undefined
+                       }
+               }
+       }
+
+       // the real equiv function
+       var innerEquiv,
+               // stack to decide between skip/abort functions
+               callers = [],
+               // stack to avoiding loops from circular referencing
+               parents = [],
+
+               getProto = Object.getPrototypeOf || function ( obj ) {
+                       return obj.__proto__;
+               },
+               callbacks = (function () {
+
+                       // for string, boolean, number and null
+                       function useStrictEquality( b, a ) {
+                               if ( b instanceof a.constructor || a instanceof b.constructor ) {
+                                       // to catch short annotaion VS 'new' annotation of a
+                                       // declaration
+                                       // e.g. var i = 1;
+                                       // var j = new Number(1);
+                                       return a == b;
+                               } else {
+                                       return a === b;
+                               }
+                       }
+
+                       return {
+                               "string": useStrictEquality,
+                               "boolean": useStrictEquality,
+                               "number": useStrictEquality,
+                               "null": useStrictEquality,
+                               "undefined": useStrictEquality,
+
+                               "nan": function( b ) {
+                                       return isNaN( b );
+                               },
+
+                               "date": function( b, a ) {
+                                       return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
+                               },
+
+                               "regexp": function( b, a ) {
+                                       return QUnit.objectType( b ) === "regexp" &&
+                                               // the regex itself
+                                               a.source === b.source &&
+                                               // and its modifers
+                                               a.global === b.global &&
+                                               // (gmi) ...
+                                               a.ignoreCase === b.ignoreCase &&
+                                               a.multiline === b.multiline;
+                               },
+
+                               // - skip when the property is a method of an instance (OOP)
+                               // - abort otherwise,
+                               // initial === would have catch identical references anyway
+                               "function": function() {
+                                       var caller = callers[callers.length - 1];
+                                       return caller !== Object && typeof caller !== "undefined";
+                               },
+
+                               "array": function( b, a ) {
+                                       var i, j, len, loop;
+
+                                       // b could be an object literal here
+                                       if ( QUnit.objectType( b ) !== "array" ) {
+                                               return false;
+                                       }
+
+                                       len = a.length;
+                                       if ( len !== b.length ) {
+                                               // safe and faster
+                                               return false;
+                                       }
+
+                                       // track reference to avoid circular references
+                                       parents.push( a );
+                                       for ( i = 0; i < len; i++ ) {
+                                               loop = false;
+                                               for ( j = 0; j < parents.length; j++ ) {
+                                                       if ( parents[j] === a[i] ) {
+                                                               loop = true;// dont rewalk array
+                                                       }
+                                               }
+                                               if ( !loop && !innerEquiv(a[i], b[i]) ) {
+                                                       parents.pop();
+                                                       return false;
+                                               }
+                                       }
+                                       parents.pop();
+                                       return true;
+                               },
+
+                               "object": function( b, a ) {
+                                       var i, j, loop,
+                                               // Default to true
+                                               eq = true,
+                                               aProperties = [],
+                                               bProperties = [];
+
+                                       // comparing constructors is more strict than using
+                                       // instanceof
+                                       if ( a.constructor !== b.constructor ) {
+                                               // Allow objects with no prototype to be equivalent to
+                                               // objects with Object as their constructor.
+                                               if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
+                                                       ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
+                                                               return false;
+                                               }
+                                       }
+
+                                       // stack constructor before traversing properties
+                                       callers.push( a.constructor );
+                                       // track reference to avoid circular references
+                                       parents.push( a );
+
+                                       for ( i in a ) { // be strict: don't ensures hasOwnProperty
+                                                                       // and go deep
+                                               loop = false;
+                                               for ( j = 0; j < parents.length; j++ ) {
+                                                       if ( parents[j] === a[i] ) {
+                                                               // don't go down the same path twice
+                                                               loop = true;
+                                                       }
+                                               }
+                                               aProperties.push(i); // collect a's properties
+
+                                               if (!loop && !innerEquiv( a[i], b[i] ) ) {
+                                                       eq = false;
+                                                       break;
+                                               }
+                                       }
+
+                                       callers.pop(); // unstack, we are done
+                                       parents.pop();
+
+                                       for ( i in b ) {
+                                               bProperties.push( i ); // collect b's properties
+                                       }
+
+                                       // Ensures identical properties name
+                                       return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
+                               }
+                       };
+               }());
+
+       innerEquiv = function() { // can take multiple arguments
+               var args = [].slice.apply( arguments );
+               if ( args.length < 2 ) {
+                       return true; // end transition
+               }
+
+               return (function( a, b ) {
+                       if ( a === b ) {
+                               return true; // catch the most you can
+                       } else if ( a === null || b === null || typeof a === "undefined" ||
+                                       typeof b === "undefined" ||
+                                       QUnit.objectType(a) !== QUnit.objectType(b) ) {
+                               return false; // don't lose time with error prone cases
+                       } else {
+                               return bindCallbacks(a, callbacks, [ b, a ]);
+                       }
+
+                       // apply transition with (1..n) arguments
+               }( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
+       };
+
+       return innerEquiv;
+}());
+
+/**
+ * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
+ * http://flesler.blogspot.com Licensed under BSD
+ * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
+ *
+ * @projectDescription Advanced and extensible data dumping for Javascript.
+ * @version 1.0.0
+ * @author Ariel Flesler
+ * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
+ */
+QUnit.jsDump = (function() {
+       function quote( str ) {
+               return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
+       }
+       function literal( o ) {
+               return o + "";
+       }
+       function join( pre, arr, post ) {
+               var s = jsDump.separator(),
+                       base = jsDump.indent(),
+                       inner = jsDump.indent(1);
+               if ( arr.join ) {
+                       arr = arr.join( "," + s + inner );
+               }
+               if ( !arr ) {
+                       return pre + post;
+               }
+               return [ pre, inner + arr, base + post ].join(s);
+       }
+       function array( arr, stack ) {
+               var i = arr.length, ret = new Array(i);
+               this.up();
+               while ( i-- ) {
+                       ret[i] = this.parse( arr[i] , undefined , stack);
+               }
+               this.down();
+               return join( "[", ret, "]" );
+       }
+
+       var reName = /^function (\w+)/,
+               jsDump = {
+                       parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
+                               stack = stack || [ ];
+                               var inStack, res,
+                                       parser = this.parsers[ type || this.typeOf(obj) ];
+
+                               type = typeof parser;
+                               inStack = inArray( obj, stack );
+
+                               if ( inStack != -1 ) {
+                                       return "recursion(" + (inStack - stack.length) + ")";
+                               }
+                               //else
+                               if ( type == "function" )  {
+                                       stack.push( obj );
+                                       res = parser.call( this, obj, stack );
+                                       stack.pop();
+                                       return res;
+                               }
+                               // else
+                               return ( type == "string" ) ? parser : this.parsers.error;
+                       },
+                       typeOf: function( obj ) {
+                               var type;
+                               if ( obj === null ) {
+                                       type = "null";
+                               } else if ( typeof obj === "undefined" ) {
+                                       type = "undefined";
+                               } else if ( QUnit.is( "regexp", obj) ) {
+                                       type = "regexp";
+                               } else if ( QUnit.is( "date", obj) ) {
+                                       type = "date";
+                               } else if ( QUnit.is( "function", obj) ) {
+                                       type = "function";
+                               } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
+                                       type = "window";
+                               } else if ( obj.nodeType === 9 ) {
+                                       type = "document";
+                               } else if ( obj.nodeType ) {
+                                       type = "node";
+                               } else if (
+                                       // native arrays
+                                       toString.call( obj ) === "[object Array]" ||
+                                       // NodeList objects
+                                       ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
+                               ) {
+                                       type = "array";
+                               } else {
+                                       type = typeof obj;
+                               }
+                               return type;
+                       },
+                       separator: function() {
+                               return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
+                       },
+                       indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
+                               if ( !this.multiline ) {
+                                       return "";
+                               }
+                               var chr = this.indentChar;
+                               if ( this.HTML ) {
+                                       chr = chr.replace( /\t/g, "   " ).replace( / /g, "&nbsp;" );
+                               }
+                               return new Array( this._depth_ + (extra||0) ).join(chr);
+                       },
+                       up: function( a ) {
+                               this._depth_ += a || 1;
+                       },
+                       down: function( a ) {
+                               this._depth_ -= a || 1;
+                       },
+                       setParser: function( name, parser ) {
+                               this.parsers[name] = parser;
+                       },
+                       // The next 3 are exposed so you can use them
+                       quote: quote,
+                       literal: literal,
+                       join: join,
+                       //
+                       _depth_: 1,
+                       // This is the list of parsers, to modify them, use jsDump.setParser
+                       parsers: {
+                               window: "[Window]",
+                               document: "[Document]",
+                               error: "[ERROR]", //when no parser is found, shouldn"t happen
+                               unknown: "[Unknown]",
+                               "null": "null",
+                               "undefined": "undefined",
+                               "function": function( fn ) {
+                                       var ret = "function",
+                                               name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE
+
+                                       if ( name ) {
+                                               ret += " " + name;
+                                       }
+                                       ret += "( ";
+
+                                       ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
+                                       return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
+                               },
+                               array: array,
+                               nodelist: array,
+                               "arguments": array,
+                               object: function( map, stack ) {
+                                       var ret = [ ], keys, key, val, i;
+                                       QUnit.jsDump.up();
+                                       if ( Object.keys ) {
+                                               keys = Object.keys( map );
+                                       } else {
+                                               keys = [];
+                                               for ( key in map ) {
+                                                       keys.push( key );
+                                               }
+                                       }
+                                       keys.sort();
+                                       for ( i = 0; i < keys.length; i++ ) {
+                                               key = keys[ i ];
+                                               val = map[ key ];
+                                               ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
+                                       }
+                                       QUnit.jsDump.down();
+                                       return join( "{", ret, "}" );
+                               },
+                               node: function( node ) {
+                                       var a, val,
+                                               open = QUnit.jsDump.HTML ? "&lt;" : "<",
+                                               close = QUnit.jsDump.HTML ? "&gt;" : ">",
+                                               tag = node.nodeName.toLowerCase(),
+                                               ret = open + tag;
+
+                                       for ( a in QUnit.jsDump.DOMAttrs ) {
+                                               val = node[ QUnit.jsDump.DOMAttrs[a] ];
+                                               if ( val ) {
+                                                       ret += " " + a + "=" + QUnit.jsDump.parse( val, "attribute" );
+                                               }
+                                       }
+                                       return ret + close + open + "/" + tag + close;
+                               },
+                               functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
+                                       var args,
+                                               l = fn.length;
+
+                                       if ( !l ) {
+                                               return "";
+                                       }
+
+                                       args = new Array(l);
+                                       while ( l-- ) {
+                                               args[l] = String.fromCharCode(97+l);//97 is 'a'
+                                       }
+                                       return " " + args.join( ", " ) + " ";
+                               },
+                               key: quote, //object calls it internally, the key part of an item in a map
+                               functionCode: "[code]", //function calls it internally, it's the content of the function
+                               attribute: quote, //node calls it internally, it's an html attribute value
+                               string: quote,
+                               date: quote,
+                               regexp: literal, //regex
+                               number: literal,
+                               "boolean": literal
+                       },
+                       DOMAttrs: {
+                               //attributes to dump from nodes, name=>realName
+                               id: "id",
+                               name: "name",
+                               "class": "className"
+                       },
+                       HTML: false,//if true, entities are escaped ( <, >, \t, space and \n )
+                       indentChar: "  ",//indentation unit
+                       multiline: true //if true, items in a collection, are separated by a \n, else just a space.
+               };
+
+       return jsDump;
+}());
+
+// from Sizzle.js
+function getText( elems ) {
+       var i, elem,
+               ret = "";
+
+       for ( i = 0; elems[i]; i++ ) {
+               elem = elems[i];
+
+               // Get the text from text nodes and CDATA nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+                       ret += elem.nodeValue;
+
+               // Traverse everything else, except comment nodes
+               } else if ( elem.nodeType !== 8 ) {
+                       ret += getText( elem.childNodes );
+               }
+       }
+
+       return ret;
+}
+
+// from jquery.js
+function inArray( elem, array ) {
+       if ( array.indexOf ) {
+               return array.indexOf( elem );
+       }
+
+       for ( var i = 0, length = array.length; i < length; i++ ) {
+               if ( array[ i ] === elem ) {
+                       return i;
+               }
+       }
+
+       return -1;
+}
+
+/*
+ * Javascript Diff Algorithm
+ *  By John Resig (http://ejohn.org/)
+ *  Modified by Chu Alan "sprite"
+ *
+ * Released under the MIT license.
+ *
+ * More Info:
+ *  http://ejohn.org/projects/javascript-diff-algorithm/
+ *
+ * Usage: QUnit.diff(expected, actual)
+ *
+ * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
+ */
+QUnit.diff = (function() {
+       function diff( o, n ) {
+               var i,
+                       ns = {},
+                       os = {};
+
+               for ( i = 0; i < n.length; i++ ) {
+                       if ( ns[ n[i] ] == null ) {
+                               ns[ n[i] ] = {
+                                       rows: [],
+                                       o: null
+                               };
+                       }
+                       ns[ n[i] ].rows.push( i );
+               }
+
+               for ( i = 0; i < o.length; i++ ) {
+                       if ( os[ o[i] ] == null ) {
+                               os[ o[i] ] = {
+                                       rows: [],
+                                       n: null
+                               };
+                       }
+                       os[ o[i] ].rows.push( i );
+               }
+
+               for ( i in ns ) {
+                       if ( !hasOwn.call( ns, i ) ) {
+                               continue;
+                       }
+                       if ( ns[i].rows.length == 1 && typeof os[i] != "undefined" && os[i].rows.length == 1 ) {
+                               n[ ns[i].rows[0] ] = {
+                                       text: n[ ns[i].rows[0] ],
+                                       row: os[i].rows[0]
+                               };
+                               o[ os[i].rows[0] ] = {
+                                       text: o[ os[i].rows[0] ],
+                                       row: ns[i].rows[0]
+                               };
+                       }
+               }
+
+               for ( i = 0; i < n.length - 1; i++ ) {
+                       if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
+                                               n[ i + 1 ] == o[ n[i].row + 1 ] ) {
+
+                               n[ i + 1 ] = {
+                                       text: n[ i + 1 ],
+                                       row: n[i].row + 1
+                               };
+                               o[ n[i].row + 1 ] = {
+                                       text: o[ n[i].row + 1 ],
+                                       row: i + 1
+                               };
+                       }
+               }
+
+               for ( i = n.length - 1; i > 0; i-- ) {
+                       if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
+                                               n[ i - 1 ] == o[ n[i].row - 1 ]) {
+
+                               n[ i - 1 ] = {
+                                       text: n[ i - 1 ],
+                                       row: n[i].row - 1
+                               };
+                               o[ n[i].row - 1 ] = {
+                                       text: o[ n[i].row - 1 ],
+                                       row: i - 1
+                               };
+                       }
+               }
+
+               return {
+                       o: o,
+                       n: n
+               };
+       }
+
+       return function( o, n ) {
+               o = o.replace( /\s+$/, "" );
+               n = n.replace( /\s+$/, "" );
+
+               var i, pre,
+                       str = "",
+                       out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
+                       oSpace = o.match(/\s+/g),
+                       nSpace = n.match(/\s+/g);
+
+               if ( oSpace == null ) {
+                       oSpace = [ " " ];
+               }
+               else {
+                       oSpace.push( " " );
+               }
+
+               if ( nSpace == null ) {
+                       nSpace = [ " " ];
+               }
+               else {
+                       nSpace.push( " " );
+               }
+
+               if ( out.n.length === 0 ) {
+                       for ( i = 0; i < out.o.length; i++ ) {
+                               str += "<del>" + out.o[i] + oSpace[i] + "</del>";
+                       }
+               }
+               else {
+                       if ( out.n[0].text == null ) {
+                               for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
+                                       str += "<del>" + out.o[n] + oSpace[n] + "</del>";
+                               }
+                       }
+
+                       for ( i = 0; i < out.n.length; i++ ) {
+                               if (out.n[i].text == null) {
+                                       str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
+                               }
+                               else {
+                                       // `pre` initialized at top of scope
+                                       pre = "";
+
+                                       for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
+                                               pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
+                                       }
+                                       str += " " + out.n[i].text + nSpace[i] + pre;
+                               }
+                       }
+               }
+
+               return str;
+       };
+}());
+
+// for CommonJS enviroments, export everything
+if ( typeof exports !== "undefined" ) {
+       extend(exports, QUnit);
+}
+
+// get at whatever the global object is, like window in browsers
+}( (function() {return this;}.call()) ));
diff --git a/js/modernizr/test/qunit/run-qunit.js b/js/modernizr/test/qunit/run-qunit.js
new file mode 100644 (file)
index 0000000..5617ee4
--- /dev/null
@@ -0,0 +1,72 @@
+/**
+* Wait until the test condition is true or a timeout occurs. Useful for waiting
+* on a server response or for a ui change (fadeIn, etc.) to occur.
+*
+* @param testFx javascript condition that evaluates to a boolean,
+* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
+* as a callback function.
+* @param onReady what to do when testFx condition is fulfilled,
+* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
+* as a callback function.
+* @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used.
+*/
+function waitFor(testFx, onReady, timeOutMillis) {
+    var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3001, //< Default Max Timout is 3s
+        start = new Date().getTime(),
+        condition = false,
+        interval = setInterval(function() {
+            if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) {
+                // If not time-out yet and condition not yet fulfilled
+                condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code
+            } else {
+                if(!condition) {
+                    // If condition still not fulfilled (timeout but condition is 'false')
+                    console.log("'waitFor()' timeout");
+                    phantom.exit(1);
+                } else {
+                    // Condition fulfilled (timeout and/or condition is 'true')
+                    typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled
+                    clearInterval(interval); //< Stop this interval
+                }
+            }
+        }, 100); //< repeat check every 250ms
+};
+
+
+if (phantom.args.length === 0 || phantom.args.length > 2) {
+    console.log('Usage: run-qunit.js URL');
+    phantom.exit();
+}
+
+var page = new WebPage();
+
+// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
+page.onConsoleMessage = function(msg) {
+    console.log(msg);
+};
+
+page.open(phantom.args[0], function(status){
+    if (status !== "success") {
+        console.log("Unable to access network");
+        phantom.exit();
+    } else {
+        waitFor(function(){
+            return page.evaluate(function(){
+                var el = document.getElementById('qunit-testresult');
+                if (el && el.innerText.match('completed')) {
+                    return true;
+                }
+                return false;
+            });
+        }, function(){
+            var failedNum = page.evaluate(function(){
+                var el = document.getElementById('qunit-testresult');
+                try {
+                    return el.getElementsByClassName('failed')[0].innerHTML;
+                } catch (e) { }
+                return 10000;
+            });
+            phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0);
+        });
+    }
+});
\ No newline at end of file
diff --git a/js/vmap/.editorconfig b/js/vmap/.editorconfig
new file mode 100644 (file)
index 0000000..336bf36
--- /dev/null
@@ -0,0 +1,10 @@
+# editorconfig.org
+root = true
+
+[*]
+end_of_line = lf
+charset = utf-8
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/js/vmap/.eslintignore b/js/vmap/.eslintignore
new file mode 100644 (file)
index 0000000..2a70843
--- /dev/null
@@ -0,0 +1,4 @@
+node_modules/**
+jqvmap/data/**
+jqvmap/maps/**
+jqvmap/jquery.vmap.min.js
diff --git a/js/vmap/.eslintrc b/js/vmap/.eslintrc
new file mode 100644 (file)
index 0000000..fb803ab
--- /dev/null
@@ -0,0 +1,20 @@
+{
+  "globals": {
+    "jQuery": true,
+    "JQVMap": true,
+    "VectorCanvas": true,
+    "ColorScale": true
+  },
+  "env": {
+    "browser": true
+  },
+  "rules": {
+    "quotes": [2, "single"],
+    "strict": [2, "never"],
+    "brace-style": [2, "1tbs"],
+    "indent": [2, 2],
+    "linebreak-style": [2, "unix"],
+    "semi": [2, "always"],
+    "new-cap": 0
+  }
+}
diff --git a/js/vmap/.github/PULL_REQUEST_TEMPLATE.md b/js/vmap/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644 (file)
index 0000000..391b22c
--- /dev/null
@@ -0,0 +1,23 @@
+#### What does this PR do ?
+
+_type_response_here_
+
+#### How should this be tested ?
+
+_type_response_here_
+
+#### What are the relevant issues ?
+
+_github_issue_numbers_this_addresses_
+
+#### This Pull Request includes:
+
+- [ ] Bug Fix with passing `npm test`
+- [ ] New Feature with passing `npm test`
+- [ ] Code Improvement with passing `npm test`
+- [ ] Updated Documentation
+- [ ] New Map File & Example HTML
+
+#### What gif best describes how you feel about this work ?
+
+_drag_and_drop_asset_here_
diff --git a/js/vmap/.gitignore b/js/vmap/.gitignore
new file mode 100644 (file)
index 0000000..21dd1cf
--- /dev/null
@@ -0,0 +1,9 @@
+############################################
+## Generic System Ignores
+syntax: glob
+
+!.gitignore
+.DS_Store
+Thumbs.db
+.idea
+node_modules
diff --git a/js/vmap/CHANGELOG.md b/js/vmap/CHANGELOG.md
new file mode 100644 (file)
index 0000000..d3d519a
--- /dev/null
@@ -0,0 +1,118 @@
+![JQVMap](http://jqvmap.com/img/logo.png "JQVMap")
+
+Change Log
+======
+
+Version 1.5.1
+---
+
+`Released on May 17th, 2016`
+
+1. Added a minified css file
+
+2. Removed Post Install Script
+
+3. Updated README.md
+
+4. Added Turkey Map and Example File
+
+5. Moved Github files into `.github` folder
+
+Version 1.5.0
+---
+
+`Released on March 15th, 2016`
+
+1. Updated LICENSE path in packaged dist files
+
+2. Fixed bugs in labels and pins where mouse events were not passing through to clickable region
+
+3. Removed -merc suffix from map files created by map creator ( fixes #204 )
+
+4. Added new example for custom placement of pins `./examples/pins_custom.html`
+
+5. Fixed `onRegionSelect` issue not returning region ( fixes #201 )
+
+6. Added better support to make regions disabled ( see #197 and new `./examples/inactive_regions.html` )
+
+Version 1.4.0
+---
+
+`Released on December 6th, 2015`
+
+1. Added Touch Support for Mobile Devices
+
+2. Added `showLabels` config option to place ISO codes by default
+
+3. Added `onResize` event handler and fixed resize event binding issues
+
+4. Fixed issue when dragging a map and releasing outside map
+
+5. Added `onLoad` event handler
+
+6. Updated `README.md` & `CONTRIBUTING.md` files
+
+Version 1.3.1
+---
+
+`Released on December 5th, 2015`
+
+1. Fixes issue with scaleColors not working.
+
+Version 1.3.0
+---
+
+`Released on December 4th, 2015`
+
+__IMPORTANT:__ This is a backwards breaking change.  You will need to use the new map files with this version of JQVMap.  Our focus was to make any file you create here compatible with the other vector map libraries as well as allow theirs to work with ours.  Everybody wins ... except our old map files.
+
+1. Added `./create` folder for users wishing to create custom maps. Folder has detailed writeup on how to create your own maps.
+
+2. Added Unit Tests to `./tests` folder and added them as part of of the `npm test` suite and build process. These tests can also be run in the browser.
+
+3. Renamed `WorldMap` to `JQVMap` as "WorldMap" did not really make sense as a variable name
+
+4. Removed case sensitivity for reference regions by code.
+
+5. Fixed incorrect license header in distributed files
+
+6. Updated `README.md` & `CONTRIBUTING.md` files
+
+Version 1.2.0
+---
+
+`Released on November 18th, 2015`
+
+1. Switched to using Grunt to build source code. JS files in `./dist` are now generated from `./src` folder.
+
+2. Moved source files to `./src` folder
+
+3. Renamed `./samples` to `./examples`
+
+4. Renamed `./jqvmap` to `./dist`
+
+5. Removed `./website` folder as it is not really needed in this project
+
+6. Updated `README.md` & `CONTRIBUTING.md` files
+
+Version 1.1.0
+---
+
+`Released on October 17th, 2015`
+
+1. Added new maps for Russia, France, Germany, Algeria, Iraq, Iran & Brazil
+
+2. Fixed `regionClickEvent` bug
+
+3. Added event handling for deselecting a region
+
+4. Added Touch Event code example
+
+5. Added sample HTML pages for each map.
+
+Version 1.0.0
+---
+
+`Released on May 6th, 2012`
+
+Initial Release
diff --git a/js/vmap/CONTRIBUTING.md b/js/vmap/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..3871a0b
--- /dev/null
@@ -0,0 +1,118 @@
+![JQVMap](http://jqvmap.com/img/logo.png "JQVMap")
+
+Contributing to JQVMap
+===
+
+Please review the following if you intend to submit an issue or pull request.  Not following the guidelines below most likely means your submission will be rejected.
+
+Reporting an Issue
+---
+
+**ATTENTION:** While creating tickets is the only way to assign a task to be completed, it is equally important to not flood the development team with tickets that are not actually necessary ( might be a duplicate, already being worked on, not actually an issue, etc ).  So before you create a ticket, please check that your issue has not already been reported.
+
+#### Creating a New Issue
+
+To submit a ticket, visit the project's repo on [Github](https://github.com/manifestinteractive/jqvmap), select the **Issues** tab in the right column,  and click the green **New issue** button.
+
+**Please use our [Ticket Template](https://github.com/manifestinteractive/culture/blob/master/templates/ticket-template.md) to make sure you are entering all the information we will need to complete the item you are about to create.**
+
+Map Specific Issues
+---
+
+So you want to create your own maps, or change some existing ones.  Awesome.  Make sure to check out the `./create` folder for details on how to do this.
+
+Making Code Changes
+---
+
+All source code for this project is contained in the `./src` folder.  Do not make any changes to the javascript files in the `./dist` folder, these are automatically generated by the `grunt build` terminal command.  Any Pull Requests that were not generated using the following Grunt Terminal Commands will be automatically rejected in order to maintain structural integrity of this project.
+
+#### Requirements
+
+* [Node.js v0.10](http://nodejs.org/) ( For Application Development )
+
+Grunt Terminal Commands:
+---
+
+You can use the following build commands via terminal:
+
+#### Build for Distribution:
+
+The following command will Concat JS files and generate minified files for Distribution.
+
+This is the most common command you will want to use and is required to view any changes you made in a browser.
+
+```bash
+grunt build
+```
+
+#### Create a Major Release:
+
+The following will:
+
+1. Increase the build's major number ( e.g. v __1__.0.1 => v __2__.0.0 )
+2. Build & Package Distribution Files
+3. Perform a git commit
+
+```bash
+grunt release-major
+```
+
+#### Create a Minor Release:
+
+The following will:
+
+1. Increase the build's minor number ( e.g. v 1.__0__.1 => v 1.__1__.0 )
+2. Build & Package Distribution Files
+3. Perform a git commit
+
+```bash
+grunt release-minor
+```
+
+#### Create a Release Patch:
+
+The following will:
+
+1. Increase the build's patch number ( e.g. v 1.1.__1__ => v 1.1.__2__ )
+2. Build & Package Distribution Files
+3. Perform a git commit
+
+```bash
+grunt release-patch
+```
+
+Submitting a Pull Request
+---
+
+Code will not be merged into the master branch unless it has been submitted as a Pull Request.
+
+All Pull Requests must be reviewed by one of your peers before it can be merged into master.
+
+#### Creating a Pull Request Assumes:
+
+1. You have read and understand our [Coding Culture](https://github.com/manifestinteractive/culture)
+2. You are working off a git branch named after a corresponding Github ticket
+3. You have merged in the latest master branch and resolved all merge conflicts
+
+#### Create Pull Request:
+
+1. Commit and push your Github ticket branch using [Git Best Practices](https://github.com/manifestinteractive/culture/blob/master/docs/git-best-practices.md)
+2. Visit the project's repo on [Github](https://github.com/manifestinteractive/jqvmap) and click **Compare & pull request**
+3. Add a Title that briefly explains the PR
+4. Use the text from our [Pull Request Template](https://github.com/manifestinteractive/culture/blob/master/templates/pr-template.md) as the base of your PR comment
+5. Update the PR comment to complete as much information as you can provide
+6. Add a Label of **Ready for Code Review**
+7. Click **Create pull request**
+
+#### Review Pull Request:
+
+1. Visit the PR you are being asked to review
+2. Before starting your PR Review, remove the Label **Ready for Review** and add the Label **In Code Review**
+3. Review the **Files changed** tab and add any inline comments ( click line number ) you have feedback with
+4. Add any overall feedback as a new comment on the main **Conversation** tab
+5. Once code review is complete, check off the items in the **PR Reviewer** once you have completed them
+6. If the PR fails, remove the Label **In Code Review** and select a new label showing what action is needed
+7. If the PR Passes, remove all Labels and click **Merge pull request**
+8. If you are 100% certain you will never need that branch again, you can delete the branch after merging into master
+9. Contact the PR Author and let them know the results of your review
+10. Stay on top of any PR's you are reviewing until they are able to be successfully merged into master
diff --git a/js/vmap/LICENSE b/js/vmap/LICENSE
new file mode 100644 (file)
index 0000000..1f34f75
--- /dev/null
@@ -0,0 +1,43 @@
+All code in this Github Repository are available under both the MIT and GPL license.
+
+MIT License
+
+Copyright (c) 2016 Manifest Interactive
+
+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.
+
+GPL License
+
+Copyright (c) 2016 Manifest Interactive
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
diff --git a/js/vmap/README.md b/js/vmap/README.md
new file mode 100644 (file)
index 0000000..b827661
--- /dev/null
@@ -0,0 +1,495 @@
+![JQVMap](http://jqvmap.com/img/logo.png "JQVMap")
+
+This project is a heavily modified version of [jVectorMap](https://github.com/bjornd/jvectormap) as it was in April of 2012.  I chose to start fresh rather than fork their project as my intentions were to take it in such a different direction that it would become incompatibale with the original source, rendering it near impossible to merge our projects together without extreme complications.
+
+**Tests:** [![Circle CI](https://circleci.com/gh/manifestinteractive/jqvmap/tree/master.svg?style=svg&circle-token=7bce3b80868ea5ca32009a195c4436db91e5ea67)](https://circleci.com/gh/manifestinteractive/jqvmap/tree/master)
+
+
+jQuery Vector Map
+======
+
+To get started, all you need to do is include the JavaScript and CSS files for the map you want to load ( contained in the `./dist` folder ).
+
+#### Here is a sample HTML page for loading the World Map with default settings:
+
+```html
+<html>
+  <head>
+    <title>JQVMap - World Map</title>
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css">
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.world.js" charset="utf-8"></script>
+
+    <script type="text/javascript">
+    jQuery(document).ready(function() {
+      jQuery('#vmap').vectorMap({ map: 'world_en' });
+    });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 600px; height: 400px;"></div>
+  </body>
+</html>
+```
+
+Making it Pretty
+======
+
+While initializing a map you can provide parameters to change its look and feel.
+
+```js
+jQuery('#vmap').vectorMap(
+{
+    map: 'world_en',
+    backgroundColor: '#a5bfdd',
+    borderColor: '#818181',
+    borderOpacity: 0.25,
+    borderWidth: 1,
+    color: '#f4f3f0',
+    enableZoom: true,
+    hoverColor: '#c9dfaf',
+    hoverOpacity: null,
+    normalizeFunction: 'linear',
+    scaleColors: ['#b6d6ff', '#005ace'],
+    selectedColor: '#c9dfaf',
+    selectedRegions: null,
+    showTooltip: true,
+    onRegionClick: function(element, code, region)
+    {
+        var message = 'You clicked "'
+            + region
+            + '" which has the code: '
+            + code.toUpperCase();
+
+        alert(message);
+    }
+});
+```
+
+More Examples
+------
+
+You can see a variety of examples in the `./examples` folder.
+
+
+Configuration Settings
+------
+
+**map** *'world_en'*
+
+Map you want to load. Must include the javascript file with the name of the map you want. Available maps with this library are world_en, usa_en, europe_en and germany_en
+
+**backgroundColor** *'#a5bfdd'*
+
+Background color of map container in any CSS compatible format.
+
+**borderColor** *'#818181'*
+
+Border Color to use to outline map objects
+
+**borderOpacity** *0.5*
+
+Border Opacity to use to outline map objects ( use anything from 0-1, e.g. 0.5, defaults to 0.25 )
+
+**borderWidth** *3*
+
+Border Width to use to outline map objects ( defaults to 1 )
+
+**color** *'#f4f3f0'*
+
+Color of map regions.
+
+**colors**
+
+Colors of individual map regions. Keys of the colors objects are country codes according to ISO 3166-1 alpha-2 standard. Keys of colors must be in lower case.
+
+**enableZoom** *boolean*
+
+Whether to Enable Map Zoom ( true or false, defaults to true)
+
+**hoverColor** *'#c9dfaf'*
+
+Color of the region when mouse pointer is over it.
+
+**hoverColors**
+
+Colors of individual map regions when mouse pointer is over it. Keys of the colors objects are country codes according to ISO 3166-1 alpha-2 standard. Keys of colors must be in lower case.
+
+**hoverOpacity** *0.5*
+
+Opacity of the region when mouse pointer is over it.
+
+**normalizeFunction** *'linear'*
+
+This function can be used to improve results of visualizations for data with non-linear nature. Function gets raw value as the first parameter and should return value which will be used in calculations of color, with which particular region will be painted.
+
+**scaleColors** *['#b6d6ff', '#005ace']*
+
+This option defines colors, with which regions will be painted when you set option values. Array scaleColors can have more then two elements. Elements should be strings representing colors in RGB hex format.
+
+**selectedColor** *'#333333'*
+
+Color for a region when you select it
+
+**selectedRegions** *['MO', 'FL', 'OR']*
+
+This is the Region that you are looking to have preselected (two letter ISO code, defaults to null ). See [REGIONS.md](REGIONS.md)
+
+**multiSelectRegion** *boolean*
+
+Whether to enable more than one region to be selected at a time.
+
+**showLabels** *boolean*
+
+Whether to show ISO Code Labels ( true or false, defaults to false )
+
+**showTooltip** *boolean*
+
+Whether to show Tooltips on Mouseover ( true or false, defaults to true )
+
+**onLoad** *function(event, map)*
+
+Callback function which will be called when map is loading, returning the map event and map details.
+
+**onLabelShow** *function(event, label, code)*
+
+Callback function which will be called before label is shown. Label DOM object and country code will be passed to the callback as arguments.
+
+**onRegionOver** *function(event, code, region)*
+
+Callback function which will be called when the mouse cursor enters the region path. Country code will be passed to the callback as argument.
+
+**onRegionOut** *function(event, code, region)*
+
+Callback function which will be called when the mouse cursor leaves the region path. Country code will be passed to the callback as argument.
+
+**onRegionClick** *function(event, code, region)*
+
+Callback function which will be called when the user clicks the region path. Country code will be passed to the callback as argument. This callback may be called while the user is moving the map. If you need to distinguish between a "real" click and a click resulting from moving the map, you can inspect **$(event.currentTarget).data('mapObject').isMoving**.
+
+**onRegionSelect** *function(event, code, region)*
+
+Callback function which will be called when the selects a region. Country code will be passed to the callback as argument.
+
+**onRegionDeselect** *function(event, code, region)*
+
+Callback function which will be called when the deselects a region. Country code will be passed to the callback as argument.
+
+**onResize** *function(event, width, height)*
+
+Callback function which will be called when the map is resized.  Return event, width & height.
+
+**pins** *{ "pk" : "pk_pin_metadata", "ru" : "ru_pin_metadata",        ... }*
+
+This option defines pins, which will be placed on the regions. The JSON can have only one element against one country code. Elements should be strings containing the HTML or id of the pin (depends on the 'pinMode' option explained next).
+
+**pinMode** *content*
+
+This option defines if the "pins" JSON contains the HTML strings of the pins or the ids of HTML DOM elements which are to be placed as pins.
+
+If the pin mode is "content" (or not specified) then the parameter "pins" contains the stringified html content to be placed as the pins.
+
+Example:
+
+```js
+jQuery('#vmap').vectorMap({
+    map: 'world_en',
+    pins: { "pk" : "\u003cimg src=\"pk.png\" /\u003e" /*serialized <img src="pk.png" />*/, ... },
+    pinMode: 'content'
+});
+```
+
+If the pin mode is "id" then the parameter "pins" contains the value of "id" attribute of the html (DOM) elements to be placed as pins.
+Example:
+
+```html
+<script>
+  jQuery('#vmap').vectorMap({
+      map: 'world_en',
+      pins: { "pk" : "pin_for_pk", "ru" : "pin_for_ru", ... },
+      pinMode: 'id'
+  });
+</script>
+<div style="display:none">
+  <img id="pin_for_pk" src="pk.png" />
+  <div id="pin_for_ru">...</div>
+</div>
+```
+
+*Note:*
+
+1) The pin is placed at the center of the rectangle bounding the country. So depending on the shape of the country, the pin might not land on the country itself. For instance, the pin for 'US' lands in the center of Alaska and rest of the US, which happens to be in the ocean between them.
+
+2) If the "pinMode" is set to "id", then the html DOM elements having those ids are NOT COPIED to the desired position, they are TRANSFERRED. This means that the elements will be removed from their original positions and placed on the map.
+
+Dynamic Updating
+======
+
+Most of the options can be changed after initialization using the following code:
+
+```js
+jQuery('#vmap').vectorMap('set', 'colors', {us: '#0000ff'});
+```
+
+Instead of colors can be used any parameter except callbacks. Callbacks can be added and deleted using standard jQuery patterns of working with events.
+You can define callback function when you initialize JQVMap:
+
+```js
+jQuery('#vmap').vectorMap(
+{
+    onLoad: function(event, map)
+    {
+
+    },
+    onLabelShow: function(event, label, code)
+    {
+
+    },
+    onRegionOver: function(event, code, region)
+    {
+
+    },
+    onRegionOut: function(event, code, region)
+    {
+
+    },
+    onRegionClick: function(event, code, region)
+    {
+
+    },
+    onResize: function(event, width, height)
+    {
+
+    }
+});
+```
+
+Or later using standard jQuery mechanism:
+
+```js
+jQuery('#vmap').bind('load.jqvmap',
+    function(event, map)
+    {
+
+    }
+);
+jQuery('#vmap').bind('labelShow.jqvmap',
+    function(event, label, code)
+    {
+
+    }
+);
+jQuery('#vmap').bind('regionMouseOver.jqvmap',
+    function(event, code, region)
+    {
+
+    }
+);
+jQuery('#vmap').bind('regionMouseOut.jqvmap',
+    function(event, code, region)
+    {
+
+    }
+);
+jQuery('#vmap').bind('regionClick.jqvmap',
+    function(event, code, region)
+    {
+
+    }
+);
+jQuery('#vmap').bind('resize.jqvmap',
+    function(event, width, height)
+    {
+
+    }
+);
+```
+
+Consider that fact that you can use standard features of jQuery events like event.preventDefault() or returning false from the callback to prevent default behavior of JQVMap (showing label or changing country color on hover). In the following example, when user moves mouse cursor over Canada label won't be shown and color of country won't be changed. At the same label for Russia will have custom text.
+
+```js
+jQuery('#vmap').vectorMap(
+{
+    onLabelShow: function(event, label, code)
+    {
+        if (code == 'ca')
+        {
+            // Hide the label
+            event.preventDefault();
+        }
+        else if (code == 'ru')
+        {
+            // Plain TEXT labels
+            label.text('Bears, vodka, balalaika');
+        }
+        else if (code == 'us')
+        {
+            // HTML Based Labels. You can use any HTML you want, this is just an example
+            label.html('<div class="map-tooltip"><h1 class="header">Header</h1><p class="description">Some Description</p></div>');
+        }
+    },
+    onRegionOver: function(event, code)
+    {
+        if (code == 'ca')
+        {
+            event.preventDefault();
+        }
+    },
+});
+```
+
+Data Visualization
+======
+
+Here I want to demonstrate how visualization of some geographical-related data can be done using JQVMap. Let's visualize information about GDP in 2010 for every country. At first we need some data. Let it be site of International Monetary Fond. There we can get information in xsl format, which can be converted first to csv and then to json with any scripting language. Now we have file gdp-data.js with such content (globals are evil, I know, but just for the sake of simplification):
+
+```js
+var gdpData = {"af":16.63,"al":11.58,"dz":158.97,...};
+```
+
+Then connect it to the page and add some code to make visualization:
+
+```js
+var max = 0,
+    min = Number.MAX_VALUE,
+    cc,
+    startColor = [200, 238, 255],
+    endColor = [0, 100, 145],
+    colors = {},
+    hex;
+
+//find maximum and minimum values
+for (cc in gdpData)
+{
+    if (parseFloat(gdpData[cc]) > max)
+    {
+        max = parseFloat(gdpData[cc]);
+    }
+    if (parseFloat(gdpData[cc]) < min)
+    {
+        min = parseFloat(gdpData[cc]);
+    }
+}
+
+//set colors according to values of GDP
+for (cc in gdpData)
+{
+    if (gdpData[cc] > 0)
+    {
+        colors[cc] = '#';
+        for (var i = 0; i<3; i++)
+        {
+            hex = Math.round(startColor[i]
+                + (endColor[i]
+                - startColor[i])
+                * (gdpData[cc] / (max - min))).toString(16);
+
+            if (hex.length == 1)
+            {
+                hex = '0'+hex;
+            }
+
+            colors[cc] += (hex.length == 1 ? '0' : '') + hex;
+        }
+    }
+}
+
+//initialize JQVMap
+jQuery('#vmap').vectorMap(
+{
+    colors: colors,
+    hoverOpacity: 0.7,
+    hoverColor: false
+});
+```
+
+Functions
+======
+
+There are seven functions that can be called on map container:
+
+**zoomIn()** *Zoom one step in*
+
+Usage:
+
+```js
+jQuery('#vmap').vectorMap('zoomIn');
+```
+
+**zoomOut()** *Zoom one step out*
+
+Usage:
+
+```js
+jQuery('#vmap').vectorMap('zoomOut');
+```
+
+**getPinId(cc)** *Returns the html attribute "id" of the pin placed on the country whose country code is provided in "cc".*
+
+Usage:
+
+```js
+var pinId = jQuery('#vmap').vectorMap('getPinId', 'pk');
+```
+
+**getPin(cc)** *Returns stringified HTML of the pin placed on the country whose country code is provided in "cc".*
+
+Usage:
+
+```js
+var pinContent = jQuery('#vmap').vectorMap('getPin', 'pk');
+```
+
+**getPins()** *Returns an associative JSON string containing stringified HTML of all the pins.*
+
+Usage:
+
+```js
+var pins = jQuery('#vmap').vectorMap('getPins');
+```
+
+**removePin(cc)** *Removes the pin from the country whose country code is specified in "cc".*
+
+Usage:
+
+```js
+jQuery('#vmap').vectorMap('removePin', 'pk');
+```
+
+**removePins()** *Removes all the pins from the map.*
+
+Usage:
+
+```js
+jQuery('#vmap').vectorMap('removePins');
+```
+
+Events
+======
+
+There are three events which you can use to bind your own callbacks to:
+
+**drag** *When the map is dragged, this event is triggered.*
+
+**zoomIn** *When the map is zoomed in, this event is triggered.*
+
+**zoomOut** *When the map is zoomed out, this event is triggered.*
+
+You can bind your routines to any of these events by using jQuery on()
+For example:
+
+```js
+//Do something when the map is dragged
+jQuery('#vmap').on('drag', function(event)
+{
+    console.log('The map is being dragged');
+    //Do something
+});
+```
+
+Custom Maps
+======
+
+So you want to create your own maps, or change some existing ones.  Awesome.  Make sure to check out [./create/README.md](./create) for details on how to do this.
diff --git a/js/vmap/REGIONS.md b/js/vmap/REGIONS.md
new file mode 100644 (file)
index 0000000..64533ae
--- /dev/null
@@ -0,0 +1,405 @@
+       WORLD
+       ------------------------------
+       AE = United Arab Emirates
+       AF = Afghanistan
+       AG = Antigua and Barbuda
+       AL = Albania
+       AM = Armenia
+       AO = Angola
+       AR = Argentina
+       AT = Austria
+       AU = Australia
+       AZ = Azerbaijan
+       BA = Bosnia and Herzegovina
+       BB = Barbados
+       BD = Bangladesh
+       BE = Belgium
+       BF = Burkina Faso
+       BG = Bulgaria
+       BI = Burundi
+       BJ = Benin
+       BN = Brunei Darussalam
+       BO = Bolivia
+       BR = Brazil
+       BS = Bahamas
+       BT = Bhutan
+       BW = Botswana
+       BY = Belarus
+       BZ = Belize
+       CA = Canada
+       CD = Congo
+       CF = Central African Republic
+       CG = Congo
+       CH = Switzerland
+       CI = Cote d'Ivoire
+       CL = Chile
+       CM = Cameroon
+       CN = China
+       CO = Colombia
+       CR = Costa Rica
+       CU = Cuba
+       CV = Cape Verde
+       CY = Cyprus
+       CZ = Czech Republic
+       DE = Germany
+       DJ = Djibouti
+       DK = Denmark
+       DM = Dominica
+       DO = Dominican Republic
+       DZ = Algeria
+       EC = Ecuador
+       EE = Estonia
+       EG = Egypt
+       ER = Eritrea
+       ES = Spain
+       ET = Ethiopia
+       FI = Finland
+       FJ = Fiji
+       FK = Falkland Islands
+       FR = France
+       GA = Gabon
+       GB = United Kingdom
+       GD = Grenada
+       GE = Georgia
+       GF = French Guiana
+       GH = Ghana
+       GL = Greenland
+       GM = Gambia
+       GN = Guinea
+       GQ = Equatorial Guinea
+       GR = Greece
+       GT = Guatemala
+       GW = Guinea-Bissau
+       GY = Guyana
+       HN = Honduras
+       HR = Croatia
+       HT = Haiti
+       HU = Hungary
+       ID = Indonesia
+       IE = Ireland
+       IL = Israel
+       IN = India
+       IQ = Iraq
+       IR = Iran
+       IS = Iceland
+       IT = Italy
+       JM = Jamaica
+       JO = Jordan
+       JP = Japan
+       KE = Kenya
+       KG = Kyrgyz Republic
+       KH = Cambodia
+       KM = Comoros
+       KN = Saint Kitts and Nevis
+       KP = North Korea
+       KR = South Korea
+       KW = Kuwait
+       KZ = Kazakhstan
+       LA = Lao People's Democratic Republic
+       LB = Lebanon
+       LC = Saint Lucia
+       LK = Sri Lanka
+       LR = Liberia
+       LS = Lesotho
+       LT = Lithuania
+       LV = Latvia
+       LY = Libya
+       MA = Morocco
+       MD = Moldova
+       MG = Madagascar
+       MK = Macedonia
+       ML = Mali
+       MM = Myanmar
+       MN = Mongolia
+       MR = Mauritania
+       MT = Malta
+       MU = Mauritius
+       MV = Maldives
+       MW = Malawi
+       MX = Mexico
+       MY = Malaysia
+       MZ = Mozambique
+       NA = Namibia
+       NC = New Caledonia
+       NE = Niger
+       NG = Nigeria
+       NI = Nicaragua
+       NL = Netherlands
+       NO = Norway
+       NP = Nepal
+       NZ = New Zealand
+       OM = Oman
+       PA = Panama
+       PE = Peru
+       PF = French Polynesia
+       PG = Papua New Guinea
+       PH = Philippines
+       PK = Pakistan
+       PL = Poland
+       PT = Portugal
+       PY = Paraguay
+       QA = Qatar
+       RE = Reunion
+       RO = Romania
+       RS = Serbia
+       RU = Russian Federationß
+       RW = Rwanda
+       SA = Saudi Arabia
+       SB = Solomon Islands
+       SC = Seychelles
+       SD = Sudan
+       SE = Sweden
+       SI = Slovenia
+       SK = Slovakia
+       SL = Sierra Leone
+       SN = Senegal
+       SO = Somalia
+       SR = Suriname
+       ST = Sao Tome and Principe
+       SV = El Salvador
+       SY = Syrian Arab Republic
+       SZ = Swaziland
+       TD = Chad
+       TG = Togo
+       TH = Thailand
+       TJ = Tajikistan
+       TL = Timor-Leste
+       TM = Turkmenistan
+       TN = Tunisia
+       TR = Turkey
+       TT = Trinidad and Tobago
+       TW = Taiwan
+       TZ = Tanzania
+       UA = Ukraine
+       UG = Uganda
+       US = United States of America
+       UY = Uruguay
+       UZ = Uzbekistan
+       VE = Venezuela
+       VN = Vietnam
+       VU = Vanuatu
+       YE = Yemen
+       ZA = South Africa
+       ZM = Zambia
+       ZW = Zimbabwe
+
+       USA
+       ------------------------------
+       AK = Alaska
+       AL = Alabama
+       AR = Arkansas
+       AZ = Arizona
+       CA = California
+       CO = Colorado
+       CT = Connecticut
+       DC = District of Columbia
+       DE = Delaware
+       FL = Florida
+       GA = Georgia
+       HI = Hawaii
+       IA = Iowa
+       ID = Idaho
+       IL = Illinois
+       IN = Indiana
+       KS = Kansas
+       KY = Kentucky
+       LA = Louisiana
+       MA = Massachusetts
+       MD = Maryland
+       ME = Maine
+       MI = Michigan
+       MN = Minnesota
+       MO = Missouri
+       MS = Mississippi
+       MT = Montana
+       NC = North Carolina
+       ND = North Dakota
+       NE = Nebraska
+       NH = New Hampshire
+       NJ = New Jersey
+       NM = New Mexico
+       NV = Nevada
+       NY = New York
+       OH = Ohio
+       OK = Oklahoma
+       OR = Oregon
+       PA = Pennsylvania
+       RI = Rhode Island
+       SC = South Carolina
+       SD = South Dakota
+       TN = Tennessee
+       TX = Texas
+       UT = Utah
+       VA = Virginia
+       VT = Vermont
+       WA = Washington
+       WI = Wisconsin
+       WV = West Virginia
+       WY = Wyoming
+
+       EUROPE
+       ------------------------------
+       AD = Andorra
+       AL = Albania
+       AM = Armenia
+       AT = Austria
+       AZ = Azerbaijan
+       BA = Bosnia and Herzegovina
+       BE = Belgium
+       BG = Bulgaria
+       BY = Belarus
+       CH = Switzerland
+       CY = Cyprus
+       CZ = Czech Republic
+       DE = Germany
+       DK = Denmark
+       DZ = Algeria
+       EE = Estonia
+       ES = Spain
+       FI = Finland
+       FR = France
+       GB = United Kingdom
+       GE = Georgia
+       GL = Greenland
+       GR = Greece
+       HR = Croatia
+       HU = Hungary
+       IE = Ireland
+       IL = Israel
+       IQ = Iraq
+       IR = Iran
+       IS = Iceland
+       IT = Italy
+       JO = Jordan
+       KZ = Kazakhstan
+       LB = Lebanon
+       LI = Liechtenstein
+       LT = Lithuania
+       LU = Luxembourg
+       LV = Latvia
+       MA = Morocco
+       MC = Monaco
+       MD = Moldova
+       ME = Montenegro
+       MK = Macedonia
+       MT = Malta
+       NL = Netherlands
+       NO = Norway
+       PL = Poland
+       PT = Portugal
+       RO = Romania
+       RU = Russian Federation
+       SA = Saudi Arabia
+       SE = Sweden
+       SI = Slovenia
+       SK = Slovakia
+       SM = San Marino
+       SR = Suriname
+       SY = Syrian Arab Republic
+       TM = Turkmenistan
+       TN = Tunisia
+       TR = Turkey
+       UA = Ukraine
+
+       GERMANY
+       ------------------------------
+       BB = Brandenburg
+       BE = Berlin
+       BW = Baden-WÃrttemberg
+       BY = Bayern
+       HB = Bremen
+       HE = Hessen
+       HH = Hamburg
+       MV = Mecklenburg-Vorpommern
+       NI = Niedersachsen
+       NW = Nordrhein-Westfalen
+       RP = Rheinland-Pfalz
+       SH = Schleswig-Holstein
+       SL = Saarland
+       SN = Sachsen
+       ST = Sachsen-Anhalt
+       TH = ThÃri
+
+       RUSSIA
+       ------------------------------
+       CH = Chukotka Autonomous Okrug
+       KA = Kamchatka Krai
+       MA = Magadan Oblast
+       SA = Sakha Republic
+       AM = Amur Oblast
+       PR = Primorsky Krai
+       EU = Jewish Autonomous Oblast
+       HA = Khabarovsk Krai
+       SH = Sakhalin Oblast
+       OM = Omsk Oblast
+       NV = Novosibirsk Oblast
+       AL = Altai Krai
+       LT = Altai Republic
+       TV = Tuva Republic
+       HK = Republic of Khakassia
+       KM = Kemerovo Oblast
+       TM = Tomsk Oblast
+       ZB = Zabaykalsky Krai
+       BR = Buryat Republic
+       IR = Irkutsk Oblast
+       KR = Krasnoyarsk Krai
+       YA = Yamalo-Nenets Autonomous Okrug
+       HT = Khanty–Mansi Autonomous Okrug
+       TU = Tyumen Oblast
+       KU = Kurgan Oblast
+       CL = Chelyabinsk Oblast
+       SV = Sverdlovsk Oblast
+       AR = Arkhangelsk Oblast
+       NE = Nenets Autonomous Okrug
+       KO = Komi Republic
+       MU = Murmansk Oblast
+       VO = Vologda Oblast
+       NO = Novgorod Oblast
+       PS = Pskov Oblast
+       LE = Leningrad Oblast
+       KL = Republic of Karelia
+       KN = Kaliningrad Oblast
+       DA = Republic of Dagestan
+       ST = Stavropol Krai
+       SO = Republic of North Ossetia–Alania
+       KB = Kabardino-Balkar Republic
+       KH = Karachay–Cherkess Republic
+       CC = Chechen Republic
+       IN = Republic of Ingushetia
+       AD = Republic of Adygea
+       KS = Krasnodar Krai
+       RO = Rostov Oblast
+       KK = Republic of Kalmykia
+       AS = Astrakhan Oblast
+       VL = Volgograd Oblast
+       TR = Tver Oblast
+       SM = Smolensk Oblast
+       BN = Bryansk Oblast
+       KY = Kursk Oblast
+       BL = Belgorod Oblast
+       OR = Oryol Oblast
+       KJ = Kaluga Oblast
+       TL = Tula Oblast
+       LP = Lipetsk Oblast
+       MC = Moscow Oblast
+       RZ = Ryazan Oblast
+       TB = Tambov Oblast
+       VM = Vladimir Oblast
+       IV = Ivanovo Oblast
+       YR = Yaroslavl Oblast
+       KT = Kostroma Oblast
+       NN = Nizhny Novgorod Oblast
+       MR = Republic of Mordovia
+       PZ = Penza Oblast
+       SR = Saratov Oblast
+       SS = Samara Oblast
+       OB = Orenburg Oblast
+       BS = Republic of Bashkortostan
+       UL = Ulyanovsk Oblast
+       CU = Chuvash Republic
+       TA = Republic of Tatarstan
+       ML = Mari El Republic
+       UD = Udmurt Republic
+       KI = Kirov Oblast
+       PE = Perm Krai
+       VN = Voronezh Oblast
diff --git a/js/vmap/bower.json b/js/vmap/bower.json
new file mode 100644 (file)
index 0000000..be33444
--- /dev/null
@@ -0,0 +1,32 @@
+{
+  "name": "jqvmap",
+  "version": "1.5.0",
+  "homepage": "http://jqvmap.com",
+  "authors": [
+    "JQVMap"
+  ],
+  "license": "(MIT OR GPL-3.0)",
+  "description": "jQuery Vector Map Library",
+  "main": "dist/jquery.vmap.min.js",
+  "keywords": [
+    "jquery",
+    "map",
+    "svg",
+    "vml",
+    "vector"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/manifestinteractive/jqvmap.git"
+  },
+  "dependencies": {
+    "jquery": ">=1.11.3"
+  },
+  "ignore": [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "tests"
+  ]
+}
diff --git a/js/vmap/create/README.md b/js/vmap/create/README.md
new file mode 100644 (file)
index 0000000..b931cfe
--- /dev/null
@@ -0,0 +1,207 @@
+![JQVMap](http://jqvmap.com/img/logo.png "JQVMap")
+
+Creating Custom Maps for JQVMaps
+===
+
+Special thanks again to [jvectormap](http://jvectormap.com) for creating the base converter for this.  I have flushed out the documentation a little more for any Python newbies out there ( like myself ).
+
+Creating maps is actually a bit of work, and should really only be done by those familiar with Python & a Terminal Window, as these are the tools you will need to create maps.  If you are OK with this, here is what you need to know to get started:
+
+Requirements
+---
+
+#### Overview:
+
+You will need to have the following installed:
+
+1. [Python](https://www.python.org/downloads/) _( 2.7+ )_
+2. [GDAL](http://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries) _( OS Binary )_
+3. [GDAL](https://pypi.python.org/pypi/GDAL/) _( Python Package )_
+4. [Shapely](https://pypi.python.org/pypi/Shapely/1.2.16) _( Python Package )_
+5. [Booleano](http://code.gustavonarea.net/booleano/index.html) _( Python Package )_
+
+
+Installing Software:
+---
+
+#### Step #1:
+
+Download & Install Python by clicking one of the Download Python buttons on the [Python Website](https://www.python.org/downloads/).  We are using `v2.7.10`.
+
+#### Step #2:
+
+Open a Terminal window and make sure Python installed correctly by typing the following:
+
+```bash
+which pip
+```
+
+which should return something like ( if it did not, you did not install Python correctly ):
+
+```
+/Library/Frameworks/Python.framework/Versions/2.7/bin/pip
+```
+
+You may also wish to update PIP to disable upgrade warnings in the future:
+
+```bash
+pip install --upgrade pip
+```
+
+#### Step #3:
+
+Now we need to install the [GDAL/OGR binaries](http://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries) and follow the steps they layout for your designated OS.
+
+__OSX:__
+
+Download and install the [GDAL 1.11 Complete](http://www.kyngchaos.com/files/software/frameworks/GDAL_Complete-1.11.dmg) Package.
+
+Alternatively, If you have [Homebew](http://brew.sh/) installed, you can run the following, though I personally had issues with it working 100%
+
+```bash
+brew update
+brew install gdal
+```
+
+__Windows:__
+
+You should be able to run [Maptools](http://www.maptools.org/ms4w/index.phtml?page=downloads.html) custom [MS4W installer](http://www.maptools.org/dl/ms4w/ms4w-3.0.6-setup.exe) to get everything you need.
+
+#### Step #4:
+
+With Python & GDAL Binaries installed, we can now install the required Python packages via the following Terminal Commands:
+
+
+```bash
+sudo easy_install GDAL
+pip install shapely
+pip install booleano
+```
+
+Note: If you have issues installing a Python Package, please visit the links in the Requirements Overview for detailed install instructions.
+
+
+Downloading Map Sources
+---
+
+Before you can create custom maps, you need to download the vector data from the source.  You will need to use a search engine to find the Shapefile for the map you want to create.  This can usually be done by just searching for something like "New York Shapefile" or "Syria Shapefile" in Google.
+
+Once you have the Shapefile you want, just download it and copy the unzipped directory of files you want to the `./create/source` folder in this project.
+
+If you would like to test the sample map config files we have in this project, you will need to download the following ( which are also good sources for maps in general ):
+
+1. [SHP/GeoDB Vector Themes](http://naciscdn.org/naturalearth/packages/natural_earth_vector.zip) from [Natural Earth](http://www.naturalearthdata.com/downloads/).  Unzip the `natural_earth_vector.zip` file and copy the entire `natural_earth_vector` folder to the `./create/source` folder in this project. __TIP:__ If you plan on using this source, `code_field` is `iso_a3` and `name_field` is `name_long`.
+
+2. [Global Administrative Areas](http://www.gadm.org/country) has an updated Shapefile for pretty much every country.  Just select the `Country` you want ( for this example, `Syria` ) and set `File format` to `Shapefile` and press the `OK` button to download.  This will take you to a download page.  Click the `download` link and save the zip file.  For this example, unzip the `SYR_adm_shp.zip` file and copy the entire `SYR_adm_shp` folder to the `./create/source` folder in this project. __TIP:__ If you plan on using this source, `code_field` is `ISO` and `name_field` is `NAME_ENGLI`.
+
+3. [New York - Borough Boundaries (Clipped to Shoreline)](http://www.nyc.gov/html/dcp/download/bytes/nybb_15d.zip) from the [NYC.gov](http://www.nyc.gov/html/dcp/html/bytes/districts_download_metadata.shtml) website.  Unzip the `nybb_15d.zip` file and copy the entire `nybb_15d` folder to the `./create/source` folder in this project.
+
+
+Creating Maps
+---
+
+#### Setup Environment
+
+As detected by [@andreasspeck](https://github.com/andreasspeck) you will need to add the following Environmental Variable to create more complex maps without issues.  In a Terminal Window, run the following command before attempting to create a map:
+
+```bash
+export OGR_ENABLE_PARTIAL_REPROJECTION=TRUE
+```
+
+If you plan on creating multiple maps in the future, you may wish to just add that line above to your profile by editing your `.bash_profile`, `.profile` or `.zshrc` file ( whatever you are using OS ).
+
+If you choose to edit your profile, make sure you run the source command to add it to your current Terminal session.
+
+```bash
+source .bash_profile
+```
+
+#### Map Configurations
+
+You can create a custom JSON file and save it in the `./create/config` folder.
+
+A sample `my-map.json` configuration file would look something like this:
+
+```json
+[
+  {
+    "name": "read_data",
+    "file_name": "./source/some-folder/some-file.shp"
+  },
+  {
+    "name": "write_data",
+    "format": "jqvmap",
+    "file_name": "./output/jquery.vmap.my-map.js",
+    "params": {
+      "code_field": "iso_column",
+      "name_field": "name_column",
+      "name": "my-map"
+    }
+  }
+]
+```
+
+You will need to pay special attention to what the `code_field` and `name_field` parameters are, as these are what are used in the map creator.  These are usually found along side your `.shp` file as either an `.csv` file or `.xml`. You might need to use a DBF Viewer to view the `.dbf` file if a CSV & XML don't exists.
+
+For `code_field` you are just looking for the column name that has the ISO Code ( 2-3 letters ).
+
+For `name_field` you are just looking for the column name that has the ISO Name ( English Name ).
+
+Once you have created a config file, and set the `file_name` for `read_data` and `write_data`, you can run the following command in a Terminal Window.
+
+```bash
+cd /path/to/jqvmap/create
+python jqvmap.py config/my-map.json
+```
+
+The map creator will output the new JQVMap files into the `./create/output` folder.
+
+#### Sample Map Configurations
+
+We have already setup a few custom config files for you to play with. With a Terminal Window open, run the following commands ( make sure to change `/path/to/jqvmap` to wherever you have this project installed. ):
+
+```bash
+cd /path/to/jqvmap/create
+python jqvmap.py config/continent.json
+python jqvmap.py config/new-york.json
+python jqvmap.py config/syria.json
+```
+
+#### Map Configuration JSON Options:
+
+The following are the complete list of JSON configuration options for you to use. Make sure to look at the samples in the config folder to get an idea on how to use these with your map.
+
+|Command|Config|Option|Description|
+|---|---|---|---|
+|`read_data`| | |Read geometries from GIS data file|
+| |`file_name`| |The name of the file to read|
+| |`longitude0`| |Central meridian coordinate|
+| |`projection`| |The map projection to use, currently implemented projections are `merc` (Mercator), `mill` (Miller Cylindrical), `aea` (Albers Equal Area) & `lcc` (Lambert Conformal Conic)|
+|`write_data`| | |Writes geometries to file|
+| |`file_name`| |The name of the file to write|
+| |`format`| |Format of data to write, `jqvmap` for JQVMap compatible format, no value for OGR format|
+| |`params`| |Hash with parameters to supply to writer, the following parameters are used in case of jqvmap format:|
+| | |`code_field`|Name of field to use as a region code|
+| | |`name_field`|Name of field to use as a region name|
+| | |`name`|Map base name|
+|`union`| | |Merges geometries with the same value for one field|
+| |`by`| |The name of the field to merge geometries by|
+|`join_data`| | |Adds or rewrites properties for geoemtry based on equal values in another field, works similar to JOIN operation from SQL|
+| |`data`| |This could raw data to join or file name of CSv file with data to load|
+| |`fields`| |Array describing fields, which data contains|
+| |`on`| |Field to match to join data|
+|`remove`| | |Removes geometries and their properties based on logical expression|
+| |`where `| |Expression to evaluate for each geometry|
+|`remove_fields`| | |Removes fields and associated properties|
+| |`fields`| |Array with field names to remove|
+|`remove_other_fields`| | |Removes all fields and associated properties except the ones provided|
+| |`fields`| |Array with field names to preserve|
+|`buffer`| | |Removes (erosion) or adds (dilation) zone around every geoemtry|
+| |`distance`| | |
+| |`resolution`| | |
+|`simplify_adjancent_polygons`| | |Simplifies polygons taking topology into account (shared borders remain shared after operation)|
+| |`tolerance`| |Simplification tolerance|
+|`intersect_rect`| | |Cuts out everything beyond boubdaries of supplied rectangle|
+| |`rect`| |Array with four values, defining left-top and right-bottom corners of rectange|
+|`remove_small_polygons`| | |Removes polygons which area is less than supplied value|
+| |`minimal_area`| | |
diff --git a/js/vmap/create/config/.gitignore b/js/vmap/create/config/.gitignore
new file mode 100644 (file)
index 0000000..4a5edac
--- /dev/null
@@ -0,0 +1,6 @@
+*
+!continent.json
+!new-york.json
+!syria.json
+!fr_regions_2016_mill.json
+!.gitignore
diff --git a/js/vmap/create/config/continent.json b/js/vmap/create/config/continent.json
new file mode 100644 (file)
index 0000000..1c260ee
--- /dev/null
@@ -0,0 +1,64 @@
+[
+  {
+    "name": "read_data",
+    "file_name": "./source/natural_earth_vector/110m_cultural/ne_110m_admin_0_countries_lakes.shp",
+    "filter": "continent != \"Antarctica\" AND continent != \"Seven seas (open ocean)\"",
+    "longitude0": 11.5
+  },
+  {
+    "name": "join_data",
+    "data": [
+      [
+        "Africa",
+        "AF"
+      ],
+      [
+        "Asia",
+        "AS"
+      ],
+      [
+        "Europe",
+        "EU"
+      ],
+      [
+        "North America",
+        "NA"
+      ],
+      [
+        "South America",
+        "SA"
+      ],
+      [
+        "Oceania",
+        "OC"
+      ]
+    ],
+    "fields": [
+      {
+        "name": "continent",
+        "type": 4,
+        "width": 100
+      },
+      {
+        "name": "cont_code",
+        "type": 4,
+        "width": 4
+      }
+    ],
+    "on": "continent"
+  },
+  {
+    "name": "union",
+    "by": "cont_code"
+  },
+  {
+    "name": "write_data",
+    "format": "jqvmap",
+    "file_name": "./output/jquery.vmap.world.js",
+    "params": {
+      "code_field": "cont_code",
+      "name_field": "continent",
+      "name": "continents"
+    }
+  }
+]
diff --git a/js/vmap/create/config/fr_regions_2016_mill.json b/js/vmap/create/config/fr_regions_2016_mill.json
new file mode 100644 (file)
index 0000000..fb57b0c
--- /dev/null
@@ -0,0 +1,104 @@
+[{
+  "name": "read_data",
+  "file_name": "./source/ne_10m_admin_1_states_provinces_lakes/ne_10m_admin_1_states_provinces_lakes.shp",
+  "filter": "iso_a2 = \"FR\""
+},{
+  "name": "join_data",
+  "data": [
+      ["FR-D", "FR-X1"],
+      ["FR-I", "FR-X1"],
+      ["FR-B", "FR-X2"],
+      ["FR-L", "FR-X2"],
+      ["FR-T", "FR-X2"],
+      ["FR-P", "FR-X3"],
+      ["FR-Q", "FR-X3"],
+      ["FR-A", "FR-X4"],
+      ["FR-G", "FR-X4"],
+      ["FR-M", "FR-X4"],
+      ["FR-K", "FR-X5"],
+      ["FR-N", "FR-X5"],
+      ["FR-O", "FR-X6"],
+      ["FR-S", "FR-X6"],
+      ["FR-C", "FR-X7"],
+      ["FR-V", "FR-X7"],
+      ["FR-E", "FR-E"],
+      ["FR-F", "FR-F"],
+      ["FR-H", "FR-H"],
+      ["FR-J", "FR-J"],
+      ["FR-R", "FR-R"],
+      ["FR-U", "FR-U"],
+      ["FR-GF", "FR-GF"],
+      ["FR-GP", "FR-GP"],
+      ["FR-MQ", "FR-MQ"],
+      ["FR-RE", "FR-RE"],
+      ["FR-YT", "FR-YT"]
+  ],
+  "fields": [{
+      "name": "region_cod",
+      "type": 4,
+      "width": 10
+  },{
+      "name": "iso_new",
+      "type": 4,
+      "width": 5
+  }],
+  "on": "region_cod"
+},{
+  "name": "union",
+  "by": "iso_new"
+},{
+  "name": "join_data",
+  "data": [
+    ["FR-X1", "Bourgogne-Franche-Comté"],
+    ["FR-X2", "Aquitaine-Limousin-Poitou-Charentes"],
+    ["FR-X3", "Normandy"],
+    ["FR-X4", "Alsace-Champagne-Ardenne-Lorraine"],
+    ["FR-X5", "Languedoc-Roussillon-Midi-Pyrénées"],
+    ["FR-X6", "Nord-Pas-de-Calais-Picardie"],
+    ["FR-X7", "Auvergne-Rhône-Alpes"]
+  ],
+  "fields": [{
+    "name": "iso_new",
+    "type": 4,
+    "width": 5
+  },{
+    "name": "region",
+    "type": 4,
+    "width": 100
+  }],
+  "on": "iso_new"
+},{
+  "name": "write_data",
+  "format": "jvectormap",
+  "params": {
+    "code_field": "iso_new",
+    "name_field": "region",
+    "name": "fr_regions_2016",
+    "insets": [{
+      "codes": ["FR-GF"],
+      "width": 100,
+      "left": 0,
+      "top": 600
+    },{
+      "codes": ["FR-GP"],
+      "width": 50,
+      "left": 0,
+      "top": 440
+    },{
+      "codes": ["FR-MQ"],
+      "width": 50,
+      "left": 0,
+      "top": 510
+    },{
+      "codes": ["FR-RE"],
+      "width": 50,
+      "left": 740,
+      "top": 700
+    },{
+      "codes": ["FR-YT"],
+      "width": 40,
+      "left": 640,
+      "top": 690
+    }]
+  }
+}]
\ No newline at end of file
diff --git a/js/vmap/create/config/new-york.json b/js/vmap/create/config/new-york.json
new file mode 100644 (file)
index 0000000..dc0f315
--- /dev/null
@@ -0,0 +1,16 @@
+[
+  {
+    "name": "read_data",
+    "file_name": "./source/nybb_15d/nybb.shp"
+  },
+  {
+    "name": "write_data",
+    "format": "jqvmap",
+    "file_name": "./output/jquery.vmap.new-york.js",
+    "params": {
+      "code_field": "BoroCode",
+      "name_field": "BoroName",
+      "name": "us-ny-new-york"
+    }
+  }
+]
diff --git a/js/vmap/create/config/syria.json b/js/vmap/create/config/syria.json
new file mode 100644 (file)
index 0000000..0aab0e3
--- /dev/null
@@ -0,0 +1,16 @@
+[
+  {
+    "name": "read_data",
+    "file_name": "./source/SYR_adm_shp/SYR_adm0.shp"
+  },
+  {
+    "name": "write_data",
+    "format": "jqvmap",
+    "file_name": "./output/jquery.vmap.syria.js",
+    "params": {
+      "code_field": "ISO",
+      "name_field": "NAME_ENGLI",
+      "name": "syria"
+    }
+  }
+]
diff --git a/js/vmap/create/jqvmap.py b/js/vmap/create/jqvmap.py
new file mode 100644 (file)
index 0000000..fa2114e
--- /dev/null
@@ -0,0 +1,573 @@
+import sys
+import json
+import csv
+import shapely.wkb
+import shapely.geometry
+import shapely.ops
+import os
+import copy
+from osgeo import ogr
+from osgeo import osr
+from booleano.parser import Grammar, EvaluableParseManager, SymbolTable, Bind
+from booleano.operations import Variable
+
+
+class JQVMap:
+  def __init__(self, name, language):
+    self.paths = {}
+    self.name = name
+    self.language = language
+    self.width = 0
+    self.height = 0
+    self.bbox = []
+
+  def addPath(self, path, code, name, desc, post_id):
+    self.paths[code] = {"path": path, "name": name, "desc": desc, "post_id": post_id}
+
+  def getJSCode(self):
+    map = {"paths": self.paths, "width": self.width, "height": self.height, "insets": self.insets, "projection": self.projection}
+    header = "/** JQVMap " + self.projection['type'] + " map for " + self.name + "  */"
+    js = "jQuery.fn.vectorMap('addMap', '" + self.name + "'," + json.dumps(map) + ");"
+    return  header + "\n" + js
+
+
+class Converter:
+  def __init__(self, config):
+    args = {
+      'buffer_distance': -0.4,
+      'simplify_tolerance': 0.2,
+      'longitude0': 0,
+      'projection': 'mill',
+      'name': 'world',
+      'width': 900,
+      'left': 0,
+      'top': 0,
+      'language': 'en',
+      'precision': 2,
+      'insets': []
+    }
+    args.update(config)
+
+    self.config = args
+
+    self.map = JQVMap(args['name'], args.get('language'))
+
+    if args.get('sources'):
+      self.sources = args['sources']
+    else:
+      self.sources = [{
+        'input_file': args.get('input_file'),
+        'where': args.get('where'),
+        'name_field': args.get('name_field'),
+        'code_field': args.get('code_field'),
+        'input_file_encoding': args.get('input_file_encoding')
+      }]
+
+    default_source = {
+      'where': '',
+      'name_field': 0,
+      'code_field': 1,
+      'input_file_encoding': 'iso-8859-1'
+    }
+
+    for index in range(len(self.sources)):
+      for key in default_source:
+        if self.sources[index].get(key) is None:
+          self.sources[index][key] = default_source[key]
+
+    self.features = {}
+    self.width = args.get('width')
+    self.left = args.get('left')
+    self.top = args.get('top')
+    self.minimal_area = args.get('minimal_area')
+    self.longitude0 = float(args.get('longitude0'))
+    self.projection = args.get('projection')
+    self.precision = args.get('precision')
+    self.buffer_distance = args.get('buffer_distance')
+    self.simplify_tolerance = args.get('simplify_tolerance')
+    self.for_each = args.get('for_each')
+    self.emulate_longitude0 = args.get('emulate_longitude0')
+    if args.get('emulate_longitude0') is None and (self.projection == 'merc' or self.projection =='mill') and self.longitude0 != 0:
+      self.emulate_longitude0 = True
+
+    if args.get('viewport'):
+      self.viewport = map(lambda s: float(s), args.get('viewport').split(' '))
+    else:
+      self.viewport = False
+
+    # spatial reference to convert to
+    self.spatialRef = osr.SpatialReference()
+    projString = '+proj='+str(self.projection)+' +a=6381372 +b=6381372 +lat_0=0'
+    if not self.emulate_longitude0:
+      projString += ' +lon_0='+str(self.longitude0)
+    self.spatialRef.ImportFromProj4(projString)
+
+    # handle map insets
+    if args.get('insets'):
+      self.insets = args.get('insets')
+    else:
+      self.insets = []
+
+
+  def convert(self, data_source, output_file):
+    codes = map(lambda g: g.properties[self.config['code_field']], data_source.geometries)
+    main_codes = copy.copy(codes)
+    self.map.insets = []
+    envelope = []
+    for inset in self.insets:
+      insetBbox = self.renderMapInset(data_source, inset['codes'], inset['left'], inset['top'], inset['width'])
+      insetHeight = (insetBbox[3] - insetBbox[1]) * (inset['width'] / (insetBbox[2] - insetBbox[0]))
+      self.map.insets.append({
+        "bbox": [{"x": insetBbox[0], "y": -insetBbox[3]}, {"x": insetBbox[2], "y": -insetBbox[1]}],
+        "left": inset['left'],
+        "top": inset['top'],
+        "width": inset['width'],
+        "height": insetHeight
+      })
+      envelope.append(
+        shapely.geometry.box(
+          inset['left'], inset['top'], inset['left'] + inset['width'], inset['top'] + insetHeight
+        )
+      )
+      for code in inset['codes']:
+        main_codes.remove(code)
+
+    insetBbox = self.renderMapInset(data_source, main_codes, self.left, self.top, self.width)
+    insetHeight = (insetBbox[3] - insetBbox[1]) * (self.width / (insetBbox[2] - insetBbox[0]))
+    envelope.append( shapely.geometry.box( self.left, self.top, self.left + self.width, self.top + insetHeight ) )
+    mapBbox = shapely.geometry.MultiPolygon( envelope ).bounds
+
+    self.map.width = mapBbox[2] + mapBbox[0]
+    self.map.height = mapBbox[3] + mapBbox[1]
+    self.map.insets.append({
+      "bbox": [{"x": insetBbox[0], "y": -insetBbox[3]}, {"x": insetBbox[2], "y": -insetBbox[1]}],
+      "left": self.left,
+      "top": self.top,
+      "width": self.width,
+      "height": insetHeight
+    })
+    self.map.projection = {"type": self.projection, "centralMeridian": float(self.longitude0)}
+
+    open(output_file, 'w').write( self.map.getJSCode() )
+
+    if self.for_each is not None:
+      for code in codes:
+        childConfig = copy.deepcopy(self.for_each)
+        for param in ('input_file', 'output_file', 'where', 'name'):
+          childConfig[param] = childConfig[param].replace('{{code}}', code.lower())
+        converter = Converter(childConfig)
+        converter.convert(childConfig['output_file'])
+
+  def renderMapInset(self, data_source, codes, left, top, width):
+    envelope = []
+    geometries = filter(lambda g: g.properties[self.config['code_field']] in codes, data_source.geometries)
+    for geometry in geometries:
+      envelope.append( geometry.geom.envelope )
+
+    bbox = shapely.geometry.MultiPolygon( envelope ).bounds
+
+    scale = (bbox[2]-bbox[0]) / width
+
+    # generate SVG paths
+    for geometry in geometries:
+      geom = geometry.geom
+      if self.buffer_distance:
+        geom = geom.buffer(self.buffer_distance*scale, 1)
+      if geom.is_empty:
+        continue
+      if self.simplify_tolerance:
+        geom = geom.simplify(self.simplify_tolerance*scale, preserve_topology=True)
+      if isinstance(geom, shapely.geometry.multipolygon.MultiPolygon):
+        polygons = geom.geoms
+      else:
+        polygons = [geom]
+      path = ''
+      for polygon in polygons:
+        rings = []
+        rings.append(polygon.exterior)
+        rings.extend(polygon.interiors)
+        for ring in rings:
+          for pointIndex in range( len(ring.coords) ):
+            point = ring.coords[pointIndex]
+            if pointIndex == 0:
+              path += 'M'+str( round( (point[0]-bbox[0]) / scale + left, self.precision) )
+              path += ','+str( round( (bbox[3] - point[1]) / scale + top, self.precision) )
+            else:
+              path += 'l' + str( round(point[0]/scale - ring.coords[pointIndex-1][0]/scale, self.precision) )
+              path += ',' + str( round(ring.coords[pointIndex-1][1]/scale - point[1]/scale, self.precision) )
+          path += 'Z'
+      self.map.addPath(path, geometry.properties[self.config['code_field']].lower(), geometry.properties[self.config['name_field']])
+    return bbox
+
+
+class Geometry:
+  def __init__(self, geometry, properties):
+    self.geom = geometry
+    self.properties = properties
+
+
+class GeometryProperty(Variable):
+  operations = set(["equality", "membership"])
+
+  def __init__(self, name):
+    self.name = name
+
+  def equals(self, value, context):
+    return context[self.name] == value
+
+  def belongs_to(self, value, context):
+    return value in context[self.name]
+
+  def is_subset(self, value, context):
+    return set(value).issubset(set(context[self.name]))
+
+  def to_python(self, value):
+    return unicode(value[self.name])
+
+
+class DataSource:
+  def __init__(self, config):
+    default_config = {
+      "projection": "merc",
+      "longitude0": 0
+    }
+    default_config.update(config)
+    self.config = default_config
+
+    self.spatialRef = osr.SpatialReference()
+    projString = '+proj='+str(self.config['projection'])+' +a=6381372 +b=6381372 +lat_0=0'
+    #if 'emulate_longitude0' in self.config and not self.config['emulate_longitude0']:
+    projString += ' +lon_0='+str(self.config['longitude0'])
+    self.spatialRef.ImportFromProj4(projString)
+
+  def load_data(self):
+    self.source = ogr.Open( self.config['file_name'], update = 0 )
+    self.layer = self.source.GetLayer(0)
+    if 'filter' in self.config and self.config['filter'] is not None:
+      self.layer.SetAttributeFilter( self.config['filter'].encode('ascii') )
+    self.layer_dfn = self.layer.GetLayerDefn()
+
+    self.fields = []
+    field_count = self.layer_dfn.GetFieldCount()
+    for field_index in range(field_count):
+      field = self.layer_dfn.GetFieldDefn( field_index )
+      self.fields.append({
+        'name': field.GetName(),
+        'type': field.GetType(),
+        'width': field.GetWidth(),
+        'precision': field.GetPrecision()
+      })
+
+    self.geometries = []
+
+    for feature in self.layer:
+      geometry = feature.GetGeometryRef()
+      geometry.TransformTo( self.spatialRef )
+      geometry = shapely.wkb.loads( geometry.ExportToWkb() )
+      if not geometry.is_valid:
+        geometry = geometry.buffer(0)
+      properties = {}
+      for field in self.fields:
+        properties[field['name']] = feature.GetFieldAsString(field['name']).decode('utf-8')
+      self.geometries.append( Geometry(geometry, properties) )
+
+    self.layer.ResetReading()
+
+    self.create_grammar()
+
+  def create_grammar(self):
+    root_table = SymbolTable("root",
+                             map( lambda f: Bind(f['name'], GeometryProperty(f['name'])), self.fields )
+                             )
+
+    tokens = {
+      'not': 'not',
+      'eq': '==',
+      'ne': '!=',
+      'belongs_to': 'in',
+      'is_subset': 'are included in',
+      'or': "or",
+      'and': 'and'
+    }
+    grammar = Grammar(**tokens)
+    self.parse_manager = EvaluableParseManager(root_table, grammar)
+
+  def output(self, output):
+    if output.get('format') == 'jqvmap':
+      self.output_jvm(output)
+    else:
+      self.output_ogr(output)
+
+  def output_ogr(self, output):
+    driver = ogr.GetDriverByName( 'ESRI Shapefile' )
+    if os.path.exists( output['file_name'] ):
+      driver.DeleteDataSource( output['file_name'] )
+    source = driver.CreateDataSource( output['file_name'] )
+    layer = source.CreateLayer( self.layer_dfn.GetName(),
+                                geom_type = self.layer_dfn.GetGeomType(),
+                                srs = self.layer.GetSpatialRef() )
+
+    for field in self.fields:
+      fd = ogr.FieldDefn( str(field['name']), field['type'] )
+      fd.SetWidth( field['width'] )
+      if 'precision' in field:
+        fd.SetPrecision( field['precision'] )
+      layer.CreateField( fd )
+
+    for geometry in self.geometries:
+      if geometry.geom is not None:
+        feature = ogr.Feature( feature_def = layer.GetLayerDefn() )
+        for index, field in enumerate(self.fields):
+          if field['name'] in geometry.properties:
+            feature.SetField( index, geometry.properties[field['name']].encode('utf-8') )
+          else:
+            feature.SetField( index, '' )
+        feature.SetGeometryDirectly(
+          ogr.CreateGeometryFromWkb(
+            shapely.wkb.dumps(
+              geometry.geom
+            )
+          )
+        )
+        layer.CreateFeature( feature )
+        feature.Destroy()
+
+    source.Destroy()
+
+  def output_jvm(self, output):
+    params = copy.deepcopy(output['params'])
+    params.update({
+      "projection": self.config["projection"],
+      "longitude0": self.config["longitude0"]
+    })
+    converter = Converter(params)
+    converter.convert(self, output['file_name'])
+
+class PolygonSimplifier:
+  def __init__(self, geometries):
+    self.format = '%.8f %.8f'
+    self.tolerance = 0.05
+    self.geometries = geometries
+
+    connections = {}
+    counter = 0
+    for geom in geometries:
+      counter += 1
+      polygons = []
+
+      if isinstance(geom, shapely.geometry.Polygon):
+        polygons.append(geom)
+      else:
+        for polygon in geom:
+          polygons.append(polygon)
+
+      for polygon in polygons:
+        if polygon.area > 0:
+          lines = []
+          lines.append(polygon.exterior)
+          for line in polygon.interiors:
+            lines.append(line)
+
+          for line in lines:
+            for i in range(len(line.coords)-1):
+              indexFrom = i
+              indexTo = i+1
+              pointFrom = self.format % line.coords[indexFrom]
+              pointTo = self.format % line.coords[indexTo]
+              if pointFrom == pointTo:
+                continue
+              if not (pointFrom in connections):
+                connections[pointFrom] = {}
+              connections[pointFrom][pointTo] = 1
+              if not (pointTo in connections):
+                connections[pointTo] = {}
+              connections[pointTo][pointFrom] = 1
+    self.connections = connections
+    self.simplifiedLines = {}
+    self.pivotPoints = {}
+
+  def simplifyRing(self, ring):
+    coords = list(ring.coords)[0:-1]
+    simpleCoords = []
+
+    isPivot = False
+    pointIndex = 0
+    while not isPivot and pointIndex < len(coords):
+      pointStr = self.format % coords[pointIndex]
+      pointIndex += 1
+      isPivot = ((len(self.connections[pointStr]) > 2) or (pointStr in self.pivotPoints))
+    pointIndex = pointIndex - 1
+
+    if not isPivot:
+      simpleRing = shapely.geometry.LineString(coords).simplify(self.tolerance)
+      if len(simpleRing.coords) <= 2:
+        return None
+      else:
+        self.pivotPoints[self.format % coords[0]] = True
+        self.pivotPoints[self.format % coords[-1]] = True
+        simpleLineKey = self.format % coords[0]+':'+self.format % coords[1]+':'+self.format % coords[-1]
+        self.simplifiedLines[simpleLineKey] = simpleRing.coords
+        return simpleRing
+    else:
+      points = coords[pointIndex:len(coords)]
+      points.extend(coords[0:pointIndex+1])
+      iFrom = 0
+      for i in range(1, len(points)):
+        pointStr = self.format % points[i]
+        if ((len(self.connections[pointStr]) > 2) or (pointStr in self.pivotPoints)):
+          line = points[iFrom:i+1]
+          lineKey = self.format % line[-1]+':'+self.format % line[-2]+':'+self.format % line[0]
+          if lineKey in self.simplifiedLines:
+            simpleLine = self.simplifiedLines[lineKey]
+            simpleLine = list(reversed(simpleLine))
+          else:
+            simpleLine = shapely.geometry.LineString(line).simplify(self.tolerance).coords
+            lineKey = self.format % line[0]+':'+self.format % line[1]+':'+self.format % line[-1]
+            self.simplifiedLines[lineKey] = simpleLine
+          simpleCoords.extend( simpleLine[0:-1] )
+          iFrom = i
+      if len(simpleCoords) <= 2:
+        return None
+      else:
+        return shapely.geometry.LineString(simpleCoords)
+
+  def simplifyPolygon(self, polygon):
+    simpleExtRing = self.simplifyRing(polygon.exterior)
+    if simpleExtRing is None:
+      return None
+    simpleIntRings = []
+    for ring in polygon.interiors:
+      simpleIntRing = self.simplifyRing(ring)
+      if simpleIntRing is not None:
+        simpleIntRings.append(simpleIntRing)
+    return shapely.geometry.Polygon(simpleExtRing, simpleIntRings)
+
+  def simplify(self):
+    results = []
+    for geom in self.geometries:
+      polygons = []
+      simplePolygons = []
+
+      if isinstance(geom, shapely.geometry.Polygon):
+        polygons.append(geom)
+      else:
+        for polygon in geom:
+          polygons.append(polygon)
+
+      for polygon in polygons:
+        simplePolygon = self.simplifyPolygon(polygon)
+        if not (simplePolygon is None or simplePolygon._geom is None):
+          simplePolygons.append(simplePolygon)
+
+      if len(simplePolygons) > 0:
+        results.append(shapely.geometry.MultiPolygon(simplePolygons))
+      else:
+        results.append(None)
+    return results
+
+
+class Processor:
+  def __init__(self, config):
+    self.config = config
+
+  def process(self):
+    self.data_sources = {}
+    for action in self.config:
+      getattr(self, action['name'])( action, self.data_sources.get(".") )
+
+  def read_data(self, config, data_source):
+    self.data_sources["."] = DataSource( config )
+    self.data_sources["."].load_data()
+
+  def write_data(self, config, data_source):
+    data_source.output( config )
+
+  def union(self, config, data_source):
+    groups = {}
+    geometries = []
+    for geometry in data_source.geometries:
+      if geometry.properties[config['by']] in groups:
+        groups[geometry.properties[config['by']]]['geoms'].append(geometry.geom)
+      else:
+        groups[geometry.properties[config['by']]] = {
+          'geoms': [geometry.geom],
+          'properties': geometry.properties
+        }
+    for key in groups:
+      geometries.append( Geometry(shapely.ops.cascaded_union( groups[key]['geoms'] ), groups[key]['properties']) )
+    data_source.geometries = geometries
+
+  def merge(self, config, data_source):
+    new_geometries = []
+    for rule in config['rules']:
+      expression = data_source.parse_manager.parse( rule['where'] )
+      geometries = filter(lambda g: expression(g.properties), data_source.geometries)
+      geometries = map(lambda g: g.geom, geometries)
+      new_geometries.append( Geometry(shapely.ops.cascaded_union( geometries ), rule['fields']) )
+    data_source.fields = config['fields']
+    data_source.geometries = new_geometries
+
+  def join_data(self, config, data_source):
+    field_names = [f['name'] for f in config['fields']]
+    if 'data' in config:
+      data_col = config['data']
+    else:
+      data_file = open(config['file_name'], 'rb')
+      data_col = csv.reader(data_file, delimiter='\t', quotechar='"')
+    data = {}
+    for row in data_col:
+      row_dict = dict(zip(field_names, row))
+      data[row_dict.pop(config['on'])] = row_dict
+    for geometry in data_source.geometries:
+      if geometry.properties[config['on']] in data:
+        geometry.properties.update( data[geometry.properties[config['on']]] )
+    field_names = map(lambda f: f['name'], data_source.fields)
+    data_source.fields = data_source.fields + filter(lambda f: f['name'] not in field_names, config['fields'])
+
+  def remove(self, config, data_source):
+    expression = data_source.parse_manager.parse( config['where'] )
+    data_source.geometries = filter(lambda g: not expression(g.properties), data_source.geometries)
+
+  def remove_fields(self, config, data_source):
+    data_source.fields = filter(lambda f: f.name not in config['fields'], data_source.fields)
+
+  def remove_other_fields(self, config, data_source):
+    data_source.fields = filter(lambda f: f['name'] in config['fields'], data_source.fields)
+
+  def buffer(self, config, data_source):
+    for geometry in data_source.geometries:
+      geometry.geom = geometry.geom.buffer(config['distance'], config['resolution'])
+
+  def simplify_adjancent_polygons(self, config, data_source):
+    simple_geometries = PolygonSimplifier( map( lambda g: g.geom, data_source.geometries ) ).simplify()
+    for i in range(len(data_source.geometries)):
+      data_source.geometries[i].geom = simple_geometries[i]
+
+  def intersect_rect(self, config, data_source):
+    transform = osr.CoordinateTransformation( data_source.layer.GetSpatialRef(), data_source.spatialRef )
+    point1 = transform.TransformPoint(config['rect'][0], config['rect'][1])
+    point2 = transform.TransformPoint(config['rect'][2], config['rect'][3])
+    rect = shapely.geometry.box(point1[0], point1[1], point2[0], point2[1])
+    for geometry in data_source.geometries:
+      geometry.geom = geometry.geom.intersection(rect)
+
+  def remove_small_polygons(self, config, data_source):
+    for geometry in data_source.geometries:
+      if isinstance(geometry.geom, shapely.geometry.multipolygon.MultiPolygon):
+        polygons = geometry.geom.geoms
+      else:
+        polygons = [geometry.geom]
+      polygons = filter(lambda p: p.area > config['minimal_area'], polygons)
+      if len(polygons) > 0:
+        geometry.geom = shapely.geometry.multipolygon.MultiPolygon(polygons)
+
+
+args = {}
+if len(sys.argv) > 1:
+  paramsJson = open(sys.argv[1], 'r').read()
+else:
+  paramsJson = sys.stdin.read()
+paramsJson = json.loads(paramsJson)
+
+processor = Processor(paramsJson)
+processor.process()
diff --git a/js/vmap/create/output/.gitignore b/js/vmap/create/output/.gitignore
new file mode 100644 (file)
index 0000000..cec9082
--- /dev/null
@@ -0,0 +1,3 @@
+*
+
+!.gitignore
diff --git a/js/vmap/create/source/.gitignore b/js/vmap/create/source/.gitignore
new file mode 100644 (file)
index 0000000..ad64b31
--- /dev/null
@@ -0,0 +1,3 @@
+*
+!ne_10m_admin_1_states_provinces_lakes
+!.gitignore
diff --git a/js/vmap/dist/jquery.vmap.js b/js/vmap/dist/jquery.vmap.js
new file mode 100644 (file)
index 0000000..39c2032
--- /dev/null
@@ -0,0 +1,1347 @@
+/*!
+ * JQVMap: jQuery Vector Map Library
+ * @author JQVMap <me@peterschmalfeldt.com>
+ * @version 1.5.1
+ * @link http://jqvmap.com
+ * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE
+ * @builddate 2016/06/02
+ */
+
+var VectorCanvas = function (width, height, params) {
+  this.mode = window.SVGAngle ? 'svg' : 'vml';
+  this.params = params;
+
+  if (this.mode === 'svg') {
+    this.createSvgNode = function (nodeName) {
+      return document.createElementNS(this.svgns, nodeName);
+    };
+  } else {
+    try {
+      if (!document.namespaces.rvml) {
+        document.namespaces.add('rvml', 'urn:schemas-microsoft-com:vml');
+      }
+      this.createVmlNode = function (tagName) {
+        return document.createElement('<rvml:' + tagName + ' class="rvml">');
+      };
+    } catch (e) {
+      this.createVmlNode = function (tagName) {
+        return document.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
+      };
+    }
+
+    document.createStyleSheet().addRule('.rvml', 'behavior:url(#default#VML)');
+  }
+
+  if (this.mode === 'svg') {
+    this.canvas = this.createSvgNode('svg');
+  } else {
+    this.canvas = this.createVmlNode('group');
+    this.canvas.style.position = 'absolute';
+  }
+
+  this.setSize(width, height);
+};
+
+VectorCanvas.prototype = {
+  svgns: 'http://www.w3.org/2000/svg',
+  mode: 'svg',
+  width: 0,
+  height: 0,
+  canvas: null
+};
+
+var ColorScale = function (colors, normalizeFunction, minValue, maxValue) {
+  if (colors) {
+    this.setColors(colors);
+  }
+  if (normalizeFunction) {
+    this.setNormalizeFunction(normalizeFunction);
+  }
+  if (minValue) {
+    this.setMin(minValue);
+  }
+  if (minValue) {
+    this.setMax(maxValue);
+  }
+};
+
+ColorScale.prototype = {
+  colors: []
+};
+
+var JQVMap = function (params) {
+  params = params || {};
+  var map = this;
+  var mapData = JQVMap.maps[params.map];
+  var mapPins;
+
+  if( !mapData){
+    throw new Error('Invalid "' + params.map + '" map parameter. Please make sure you have loaded this map file in your HTML.');
+  }
+
+  this.selectedRegions = [];
+  this.multiSelectRegion = params.multiSelectRegion;
+
+  this.container = params.container;
+
+  this.defaultWidth = mapData.width;
+  this.defaultHeight = mapData.height;
+
+  this.color = params.color;
+  this.selectedColor = params.selectedColor;
+  this.hoverColor = params.hoverColor;
+  this.hoverColors = params.hoverColors;
+  this.hoverOpacity = params.hoverOpacity;
+  this.setBackgroundColor(params.backgroundColor);
+
+  this.width = params.container.width();
+  this.height = params.container.height();
+
+  this.resize();
+
+  jQuery(window).resize(function () {
+    var newWidth = params.container.width();
+    var newHeight = params.container.height();
+
+    if(newWidth && newHeight){
+      map.width = newWidth;
+      map.height = newHeight;
+      map.resize();
+      map.canvas.setSize(map.width, map.height);
+      map.applyTransform();
+
+      var resizeEvent = jQuery.Event('resize.jqvmap');
+      jQuery(params.container).trigger(resizeEvent, [newWidth, newHeight]);
+
+      if(mapPins){
+        jQuery('.jqvmap-pin').remove();
+        map.pinHandlers = false;
+        map.placePins(mapPins.pins, mapPins.mode);
+      }
+    }
+  });
+
+  this.canvas = new VectorCanvas(this.width, this.height, params);
+  params.container.append(this.canvas.canvas);
+
+  this.makeDraggable();
+
+  this.rootGroup = this.canvas.createGroup(true);
+
+  this.index = JQVMap.mapIndex;
+  this.image_container = jQuery('<div/>').addClass('jqvmap-image_container').appendTo(jQuery('#interactive-map #mapRegionData')).hide();
+  this.image = jQuery('<img/>').addClass('jqvmap-image').appendTo(jQuery('#interactive-map #mapRegionData .jqvmap-image_container'));
+  this.label = jQuery('<div/>').addClass('jqvmap-label').appendTo(jQuery('#interactive-map #mapRegionData')).hide();
+  this.content = jQuery('<div/>').addClass('jqvmap-content').appendTo(jQuery('#interactive-map #mapRegionData')).hide();
+//  this.region_button = jQuery('<a/>').addClass('jqvmap-region_button glm-button button').appendTo(jQuery('#interactive-map #mapRegionData')).hide();
+
+  if (params.enableZoom) {
+    jQuery('<div/>').addClass('jqvmap-zoomin').text('+').appendTo(params.container);
+    jQuery('<div/>').addClass('jqvmap-zoomout').html('&#x2212;').appendTo(params.container);
+  }
+
+  map.countries = [];
+
+  for (var key in mapData.paths) {
+    var path = this.canvas.createPath({
+      path: mapData.paths[key].path
+    });
+
+    path.setFill(this.color);
+    path.id = map.getCountryId(key);
+//    path.setRegionName(mapData.paths[key].regionName);
+    
+//    path.regionLabel = jQuery('<div/>').addClass('jqvmap-namelabel').appendTo(jQuery('#map'));
+//    path.regionLabel.text("tourData[currentRegionId]['title']");
+//    path.regionLabel.show();
+      
+    map.countries[key] = path;
+
+    if (this.canvas.mode === 'svg') {
+      path.setAttribute('class', 'jqvmap-region');
+    } else {
+      jQuery(path).addClass('jqvmap-region');
+    }
+
+    jQuery(this.rootGroup).append(path);
+
+  }
+    jQuery("#interactive-map").find("li").on("hover", function () {
+       jQuery(".jqvmap-label").css("display", "inherit");
+        jQuery(".jqvmap-image, .jqvmap-image_container").css("display", "inherit");
+        jQuery(".jqvmap-content").css("display", "inherit");
+        
+        map.image.attr('src', tourData[592]['image']);
+        map.label.text(tourData[592]['title']);
+        map.content.html(tourData[592]['content']);
+    });
+  jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'mouseover mouseout', function (e) {
+    var containerPath = e.target,
+      code = e.target.id.split('_').pop(),
+      labelShowEvent = jQuery.Event('labelShow.jqvmap'),
+      regionMouseOverEvent = jQuery.Event('regionMouseOver.jqvmap');
+
+    code = code.toLowerCase();
+   
+    if (e.type === 'mouseover') {
+      jQuery(params.container).trigger(regionMouseOverEvent, [code, mapData.paths[code].regionName, mapData.paths[code].content, mapData.paths[code].post_id]);
+      if (!regionMouseOverEvent.isDefaultPrevented()) {
+        map.highlight(code, containerPath);
+      }
+      params.showTooltip = true;
+      if (params.showTooltip) {
+        var currentRegionId = mapData.paths[code].post_id;
+        map.image.attr('src', tourData[currentRegionId]['image']);
+        map.label.text(tourData[currentRegionId]['title']);
+        map.content.html(tourData[currentRegionId]['content']);
+//        map.region_button.attr('href', tourData[currentRegionId]['url']).text("find out more...");
+//        map.content.text(mapData.paths[code].content);
+        //map.post_id.text(mapData.paths[code].post_id);
+        
+        jQuery(params.container).trigger(labelShowEvent, [map.label, map.content, map.post_id, code]);
+
+        if (!labelShowEvent.isDefaultPrevented()) {
+          map.image_container.show();
+          map.label.show();
+          map.content.show();
+//          map.region_button.show();
+          map.labelWidth = map.label.width();
+          map.labelHeight = map.label.height();
+        }
+      }
+    } else {
+      map.unhighlight(code, containerPath);
+      //map.image_container.hide();
+//      map.label.hide();
+//      map.content.hide();
+//      map.post_id.hide();
+      jQuery(params.container).trigger('regionMouseOut.jqvmap', [code, mapData.paths[code].regionName, mapData.paths[code].content, mapData.paths[code].post_id]);
+    }
+  });
+
+  jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'click', function (regionClickEvent) {
+
+    var targetPath = regionClickEvent.target;
+    var code = regionClickEvent.target.id.split('_').pop();
+    var mapClickEvent = jQuery.Event('regionClick.jqvmap');
+
+    code = code.toLowerCase();
+
+    jQuery(params.container).trigger(mapClickEvent, [code, mapData.paths[code].regionName, mapData.paths[code].content, mapData.paths[code].post_id]);
+
+    if ( !params.multiSelectRegion && !mapClickEvent.isDefaultPrevented()) {
+      for (var keyPath in mapData.paths) {
+        map.countries[keyPath].currentFillColor = map.countries[keyPath].getOriginalFill();
+        map.countries[keyPath].setFill(map.countries[keyPath].getOriginalFill());
+      }
+    }
+    
+    var currentRegionId = mapData.paths[code].post_id;
+    var win = window.open(tourData[currentRegionId]['url'], '_self');
+    if (win) {
+        win.focus();
+    } else {
+        alert('Please allow popups for this website');
+    }
+    
+    if ( !mapClickEvent.isDefaultPrevented()) {
+      if (map.isSelected(code)) {
+        map.deselect(code, targetPath);
+      } else {
+        map.select(code, targetPath);
+      }
+    }
+  });
+
+  if (params.showTooltip) {
+    params.container.mousemove(function (e) {
+      if (map.label.is(':visible')) {
+//        var left = e.pageX - 15 - map.labelWidth;
+//        var top = e.pageY - 15 - map.labelHeight;
+//
+//        if(left < 0) {
+//          left = e.pageX + 15;
+//        }
+//        if(top < 0) {
+//          top = e.pageY + 15;
+//        }
+
+//        map.label.css({
+//          left: left,
+//          top: top
+//        });
+      }
+    });
+  }
+
+  this.setColors(params.colors);
+
+  this.canvas.canvas.appendChild(this.rootGroup);
+
+  this.applyTransform();
+
+  this.colorScale = new ColorScale(params.scaleColors, params.normalizeFunction, params.valueMin, params.valueMax);
+
+  if (params.values) {
+    this.values = params.values;
+    this.setValues(params.values);
+  }
+
+  if (params.selectedRegions) {
+    if (params.selectedRegions instanceof Array) {
+      for(var k in params.selectedRegions) {
+        this.select(params.selectedRegions[k].toLowerCase());
+      }
+    } else {
+      this.select(params.selectedRegions.toLowerCase());
+    }
+  }
+
+  this.bindZoomButtons();
+
+  if(params.pins) {
+    mapPins = {
+      pins: params.pins,
+      mode: params.pinMode
+    };
+
+    this.pinHandlers = false;
+    this.placePins(params.pins, params.pinMode);
+  }
+
+  if(params.showLabels){
+    this.pinHandlers = false;
+
+    var pins = {};
+    for (key in map.countries){
+      if (typeof map.countries[key] !== 'function') {
+        if( !params.pins || !params.pins[key] ){
+          pins[key] = key.toUpperCase();
+        }
+      }
+    }
+
+    mapPins = {
+      pins: pins,
+      mode: 'content'
+    };
+
+    this.placePins(pins, 'content');
+  }
+
+  JQVMap.mapIndex++;
+};
+
+JQVMap.prototype = {
+  transX: 0,
+  transY: 0,
+  scale: 1,
+  baseTransX: 0,
+  baseTransY: 0,
+  baseScale: 1,
+  width: 0,
+  height: 0,
+  countries: {},
+  countriesColors: {},
+  countriesData: {},
+  zoomStep: 1.4,
+  zoomMaxStep: 4,
+  zoomCurStep: 1
+};
+
+JQVMap.xlink = 'http://www.w3.org/1999/xlink';
+JQVMap.mapIndex = 1;
+JQVMap.maps = {};
+
+(function(){
+
+  var apiParams = {
+    colors: 1,
+    values: 1,
+    backgroundColor: 1,
+    scaleColors: 1,
+    normalizeFunction: 1,
+    enableZoom: 1,
+    showTooltip: 1,
+    borderColor: 1,
+    borderWidth: 1,
+    borderOpacity: 1,
+    selectedRegions: 1,
+    multiSelectRegion: 1
+  };
+
+  var apiEvents = {
+    onLabelShow: 'labelShow',
+    onLoad: 'load',
+    onRegionOver: 'regionMouseOver',
+    onRegionOut: 'regionMouseOut',
+    onRegionClick: 'regionClick',
+    onRegionSelect: 'regionSelect',
+    onRegionDeselect: 'regionDeselect',
+    onResize: 'resize'
+  };
+
+  jQuery.fn.vectorMap = function (options) {
+
+    var defaultParams = {
+      map: 'world_en',
+      backgroundColor: '#a5bfdd',
+      color: '#f4f3f0',
+      hoverColor: '#c9dfaf',
+      hoverColors: {},
+      selectedColor: '#c9dfaf',
+      scaleColors: ['#b6d6ff', '#005ace'],
+      normalizeFunction: 'linear',
+      enableZoom: true,
+      showTooltip: true,
+      borderColor: '#818181',
+      borderWidth: 1,
+      borderOpacity: 0.25,
+      selectedRegions: null,
+      multiSelectRegion: false
+    }, map = this.data('mapObject');
+
+    if (options === 'addMap') {
+      JQVMap.maps[arguments[1]] = arguments[2];
+    } else if (options === 'set' && apiParams[arguments[1]]) {
+      map['set' + arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1)].apply(map, Array.prototype.slice.call(arguments, 2));
+    } else if (typeof options === 'string' &&
+      typeof map[options] === 'function') {
+      return map[options].apply(map, Array.prototype.slice.call(arguments, 1));
+    } else {
+      jQuery.extend(defaultParams, options);
+      defaultParams.container = this;
+      this.css({ position: 'relative', overflow: 'hidden' });
+
+      map = new JQVMap(defaultParams);
+
+      this.data('mapObject', map);
+
+      this.unbind('.jqvmap');
+
+      for (var e in apiEvents) {
+        if (defaultParams[e]) {
+          this.bind(apiEvents[e] + '.jqvmap', defaultParams[e]);
+        }
+      }
+
+      var loadEvent = jQuery.Event('load.jqvmap');
+      jQuery(defaultParams.container).trigger(loadEvent, map);
+
+      return map;
+    }
+  };
+
+})(jQuery);
+
+ColorScale.arrayToRgb = function (ar) {
+  var rgb = '#';
+  var d;
+  for (var i = 0; i < ar.length; i++) {
+    d = ar[i].toString(16);
+    rgb += d.length === 1 ? '0' + d : d;
+  }
+  return rgb;
+};
+
+ColorScale.prototype.getColor = function (value) {
+  if (typeof this.normalize === 'function') {
+    value = this.normalize(value);
+  }
+
+  var lengthes = [];
+  var fullLength = 0;
+  var l;
+
+  for (var i = 0; i < this.colors.length - 1; i++) {
+    l = this.vectorLength(this.vectorSubtract(this.colors[i + 1], this.colors[i]));
+    lengthes.push(l);
+    fullLength += l;
+  }
+
+  var c = (this.maxValue - this.minValue) / fullLength;
+
+  for (i = 0; i < lengthes.length; i++) {
+    lengthes[i] *= c;
+  }
+
+  i = 0;
+  value -= this.minValue;
+
+  while (value - lengthes[i] >= 0) {
+    value -= lengthes[i];
+    i++;
+  }
+
+  var color;
+  if (i === this.colors.length - 1) {
+    color = this.vectorToNum(this.colors[i]).toString(16);
+  } else {
+    color = (this.vectorToNum(this.vectorAdd(this.colors[i], this.vectorMult(this.vectorSubtract(this.colors[i + 1], this.colors[i]), (value) / (lengthes[i]))))).toString(16);
+  }
+
+  while (color.length < 6) {
+    color = '0' + color;
+  }
+  return '#' + color;
+};
+
+ColorScale.rgbToArray = function (rgb) {
+  rgb = rgb.substr(1);
+  return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];
+};
+
+ColorScale.prototype.setColors = function (colors) {
+  for (var i = 0; i < colors.length; i++) {
+    colors[i] = ColorScale.rgbToArray(colors[i]);
+  }
+  this.colors = colors;
+};
+
+ColorScale.prototype.setMax = function (max) {
+  this.clearMaxValue = max;
+  if (typeof this.normalize === 'function') {
+    this.maxValue = this.normalize(max);
+  } else {
+    this.maxValue = max;
+  }
+};
+
+ColorScale.prototype.setMin = function (min) {
+  this.clearMinValue = min;
+
+  if (typeof this.normalize === 'function') {
+    this.minValue = this.normalize(min);
+  } else {
+    this.minValue = min;
+  }
+};
+
+ColorScale.prototype.setNormalizeFunction = function (f) {
+  if (f === 'polynomial') {
+    this.normalize = function (value) {
+      return Math.pow(value, 0.2);
+    };
+  } else if (f === 'linear') {
+    delete this.normalize;
+  } else {
+    this.normalize = f;
+  }
+  this.setMin(this.clearMinValue);
+  this.setMax(this.clearMaxValue);
+};
+
+ColorScale.prototype.vectorAdd = function (vector1, vector2) {
+  var vector = [];
+  for (var i = 0; i < vector1.length; i++) {
+    vector[i] = vector1[i] + vector2[i];
+  }
+  return vector;
+};
+
+ColorScale.prototype.vectorLength = function (vector) {
+  var result = 0;
+  for (var i = 0; i < vector.length; i++) {
+    result += vector[i] * vector[i];
+  }
+  return Math.sqrt(result);
+};
+
+ColorScale.prototype.vectorMult = function (vector, num) {
+  var result = [];
+  for (var i = 0; i < vector.length; i++) {
+    result[i] = vector[i] * num;
+  }
+  return result;
+};
+
+ColorScale.prototype.vectorSubtract = function (vector1, vector2) {
+  var vector = [];
+  for (var i = 0; i < vector1.length; i++) {
+    vector[i] = vector1[i] - vector2[i];
+  }
+  return vector;
+};
+
+ColorScale.prototype.vectorToNum = function (vector) {
+  var num = 0;
+  for (var i = 0; i < vector.length; i++) {
+    num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1);
+  }
+  return num;
+};
+
+JQVMap.prototype.applyTransform = function () {
+  var maxTransX, maxTransY, minTransX, minTransY;
+  if (this.defaultWidth * this.scale <= this.width) {
+    maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);
+    minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);
+  } else {
+    maxTransX = 0;
+    minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;
+  }
+
+  if (this.defaultHeight * this.scale <= this.height) {
+    maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);
+    minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);
+  } else {
+    maxTransY = 0;
+    minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;
+  }
+
+  if (this.transY > maxTransY) {
+    this.transY = maxTransY;
+  } else if (this.transY < minTransY) {
+    this.transY = minTransY;
+  }
+  if (this.transX > maxTransX) {
+    this.transX = maxTransX;
+  } else if (this.transX < minTransX) {
+    this.transX = minTransX;
+  }
+
+  this.canvas.applyTransformParams(this.scale, this.transX, this.transY);
+};
+
+JQVMap.prototype.bindZoomButtons = function () {
+  var map = this;
+  this.container.find('.jqvmap-zoomin').click(function(){
+    map.zoomIn();
+  });
+  this.container.find('.jqvmap-zoomout').click(function(){
+    map.zoomOut();
+  });
+};
+
+JQVMap.prototype.deselect = function (cc, path) {
+  cc = cc.toLowerCase();
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+
+  if (this.isSelected(cc)) {
+    this.selectedRegions.splice(this.selectIndex(cc), 1);
+
+    jQuery(this.container).trigger('regionDeselect.jqvmap', [cc]);
+    path.currentFillColor = path.getOriginalFill();
+    path.setFill(path.getOriginalFill());
+  } else {
+    for (var key in this.countries) {
+      this.selectedRegions.splice(this.selectedRegions.indexOf(key), 1);
+      this.countries[key].currentFillColor = this.color;
+      this.countries[key].setFill(this.color);
+    }
+  }
+};
+
+JQVMap.prototype.getCountryId = function (cc) {
+  return 'jqvmap' + this.index + '_' + cc;
+};
+
+JQVMap.prototype.getPin = function(cc){
+  var pinObj = jQuery('#' + this.getPinId(cc));
+  return pinObj.html();
+};
+
+JQVMap.prototype.getPinId = function (cc) {
+  return this.getCountryId(cc) + '_pin';
+};
+
+JQVMap.prototype.getPins = function(){
+  var pins = this.container.find('.jqvmap-pin');
+  var ret = {};
+  jQuery.each(pins, function(index, pinObj){
+    pinObj = jQuery(pinObj);
+    var cc = pinObj.attr('for').toLowerCase();
+    var pinContent = pinObj.html();
+    ret[cc] = pinContent;
+  });
+  return JSON.stringify(ret);
+};
+
+JQVMap.prototype.highlight = function (cc, path) {
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+  if (this.hoverOpacity) {
+    path.setOpacity(this.hoverOpacity);
+  } else if (this.hoverColors && (cc in this.hoverColors)) {
+    path.currentFillColor = path.getFill() + '';
+    path.setFill(this.hoverColors[cc]);
+  } else if (this.hoverColor) {
+    path.currentFillColor = path.getFill() + '';
+    path.setFill(this.hoverColor);
+  }
+};
+
+JQVMap.prototype.isSelected = function(cc) {
+  return this.selectIndex(cc) >= 0;
+};
+
+JQVMap.prototype.makeDraggable = function () {
+  var mouseDown = false;
+  var oldPageX, oldPageY;
+  var self = this;
+
+  self.isMoving = false;
+  self.isMovingTimeout = false;
+
+  var lastTouchCount;
+  var touchCenterX;
+  var touchCenterY;
+  var touchStartDistance;
+  var touchStartScale;
+  var touchX;
+  var touchY;
+
+  this.container.mousemove(function (e) {
+
+    if (mouseDown) {
+      self.transX -= (oldPageX - e.pageX) / self.scale;
+      self.transY -= (oldPageY - e.pageY) / self.scale;
+
+      self.applyTransform();
+
+      oldPageX = e.pageX;
+      oldPageY = e.pageY;
+
+      self.isMoving = true;
+      if (self.isMovingTimeout) {
+        clearTimeout(self.isMovingTimeout);
+      }
+
+      self.container.trigger('drag');
+    }
+
+    return false;
+
+  }).mousedown(function (e) {
+
+    mouseDown = true;
+    oldPageX = e.pageX;
+    oldPageY = e.pageY;
+
+    return false;
+
+  }).mouseup(function () {
+
+    mouseDown = false;
+
+    clearTimeout(self.isMovingTimeout);
+    self.isMovingTimeout = setTimeout(function () {
+      self.isMoving = false;
+    }, 100);
+
+    return false;
+
+  }).mouseout(function () {
+
+    if(mouseDown && self.isMoving){
+
+      clearTimeout(self.isMovingTimeout);
+      self.isMovingTimeout = setTimeout(function () {
+        mouseDown = false;
+        self.isMoving = false;
+      }, 100);
+
+      return false;
+    }
+  });
+
+  jQuery(this.container).bind('touchmove', function (e) {
+
+    var offset;
+    var scale;
+    var touches = e.originalEvent.touches;
+    var transformXOld;
+    var transformYOld;
+
+    if (touches.length === 1) {
+      if (lastTouchCount === 1) {
+
+        if(touchX === touches[0].pageX && touchY === touches[0].pageY){
+          return;
+        }
+
+        transformXOld = self.transX;
+        transformYOld = self.transY;
+
+        self.transX -= (touchX - touches[0].pageX) / self.scale;
+        self.transY -= (touchY - touches[0].pageY) / self.scale;
+
+        self.applyTransform();
+
+        if (transformXOld !== self.transX || transformYOld !== self.transY) {
+          e.preventDefault();
+        }
+
+        self.isMoving = true;
+        if (self.isMovingTimeout) {
+          clearTimeout(self.isMovingTimeout);
+        }
+      }
+
+      touchX = touches[0].pageX;
+      touchY = touches[0].pageY;
+
+    } else if (touches.length === 2) {
+
+      if (lastTouchCount === 2) {
+        scale = Math.sqrt(
+            Math.pow(touches[0].pageX - touches[1].pageX, 2) +
+            Math.pow(touches[0].pageY - touches[1].pageY, 2)
+          ) / touchStartDistance;
+
+        self.setScale(
+          touchStartScale * scale,
+          touchCenterX,
+          touchCenterY
+        );
+
+        e.preventDefault();
+
+      } else {
+
+        offset = jQuery(self.container).offset();
+        if (touches[0].pageX > touches[1].pageX) {
+          touchCenterX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2;
+        } else {
+          touchCenterX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2;
+        }
+
+        if (touches[0].pageY > touches[1].pageY) {
+          touchCenterY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2;
+        } else {
+          touchCenterY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2;
+        }
+
+        touchCenterX -= offset.left;
+        touchCenterY -= offset.top;
+        touchStartScale = self.scale;
+
+        touchStartDistance = Math.sqrt(
+          Math.pow(touches[0].pageX - touches[1].pageX, 2) +
+          Math.pow(touches[0].pageY - touches[1].pageY, 2)
+        );
+      }
+    }
+
+    lastTouchCount = touches.length;
+  });
+
+  jQuery(this.container).bind('touchstart', function () {
+    lastTouchCount = 0;
+  });
+
+  jQuery(this.container).bind('touchend', function () {
+    lastTouchCount = 0;
+  });
+};
+
+JQVMap.prototype.placePins = function(pins, pinMode){
+  var map = this;
+
+  if(!pinMode || (pinMode !== 'content' && pinMode !== 'id')) {
+    pinMode = 'content';
+  }
+
+  if(pinMode === 'content') {//treat pin as content
+    jQuery.each(pins, function(index, pin){
+      if(jQuery('#' + map.getCountryId(index)).length === 0){
+        return;
+      }
+
+      var pinIndex = map.getPinId(index);
+      var $pin = jQuery('#' + pinIndex);
+      if($pin.length > 0){
+        $pin.remove();
+      }
+      map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute">' + pin + '</div>');
+    });
+  } else { //treat pin as id of an html content
+    jQuery.each(pins, function(index, pin){
+      if(jQuery('#' + map.getCountryId(index)).length === 0){
+        return;
+      }
+      var pinIndex = map.getPinId(index);
+      var $pin = jQuery('#' + pinIndex);
+      if($pin.length > 0){
+        $pin.remove();
+      }
+      map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute"></div>');
+      $pin.append(jQuery('#' + pin));
+    });
+  }
+
+  this.positionPins();
+  if(!this.pinHandlers){
+    this.pinHandlers = true;
+    var positionFix = function(){
+      map.positionPins();
+    };
+    this.container.bind('zoomIn', positionFix)
+      .bind('zoomOut', positionFix)
+      .bind('drag', positionFix);
+  }
+};
+
+JQVMap.prototype.positionPins = function(){
+  var map = this;
+  var pins = this.container.find('.jqvmap-pin');
+  jQuery.each(pins, function(index, pinObj){
+    pinObj = jQuery(pinObj);
+    var countryId = map.getCountryId(pinObj.attr('for').toLowerCase());
+    var countryObj = jQuery('#' + countryId);
+    var bbox = countryObj[0].getBBox();
+
+    var scale = map.scale;
+    var rootCoords = map.canvas.rootGroup.getBoundingClientRect();
+    var mapCoords = map.container[0].getBoundingClientRect();
+    var coords = {
+      left: rootCoords.left - mapCoords.left,
+      top: rootCoords.top - mapCoords.top
+    };
+
+    var middleX = (bbox.x * scale) + ((bbox.width * scale) / 2);
+    var middleY = (bbox.y * scale) + ((bbox.height * scale) / 2);
+
+    pinObj.css({
+      left: coords.left + middleX - (pinObj.width() / 2),
+      top: coords.top + middleY - (pinObj.height() / 2)
+    });
+  });
+};
+
+JQVMap.prototype.removePin = function(cc) {
+  cc = cc.toLowerCase();
+  jQuery('#' + this.getPinId(cc)).remove();
+};
+
+JQVMap.prototype.removePins = function(){
+  this.container.find('.jqvmap-pin').remove();
+};
+
+JQVMap.prototype.reset = function () {
+  for (var key in this.countries) {
+    this.countries[key].setFill(this.color);
+  }
+  this.scale = this.baseScale;
+  this.transX = this.baseTransX;
+  this.transY = this.baseTransY;
+  this.applyTransform();
+};
+
+JQVMap.prototype.resize = function () {
+  var curBaseScale = this.baseScale;
+  if (this.width / this.height > this.defaultWidth / this.defaultHeight) {
+    this.baseScale = this.height / this.defaultHeight;
+    this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);
+  } else {
+    this.baseScale = this.width / this.defaultWidth;
+    this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);
+  }
+  this.scale *= this.baseScale / curBaseScale;
+  this.transX *= this.baseScale / curBaseScale;
+  this.transY *= this.baseScale / curBaseScale;
+};
+
+JQVMap.prototype.select = function (cc, path) {
+  cc = cc.toLowerCase();
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+
+  if (!this.isSelected(cc)) {
+    if (this.multiSelectRegion) {
+      this.selectedRegions.push(cc);
+    } else {
+      this.selectedRegions = [cc];
+    }
+
+    jQuery(this.container).trigger('regionSelect.jqvmap', [cc]);
+    if (this.selectedColor && path) {
+      path.currentFillColor = this.selectedColor;
+      path.setFill(this.selectedColor);
+    }
+  }
+};
+
+JQVMap.prototype.selectIndex = function (cc) {
+  cc = cc.toLowerCase();
+  for (var i = 0; i < this.selectedRegions.length; i++) {
+    if (cc === this.selectedRegions[i]) {
+      return i;
+    }
+  }
+  return -1;
+};
+
+JQVMap.prototype.setBackgroundColor = function (backgroundColor) {
+  this.container.css('background-color', backgroundColor);
+};
+
+JQVMap.prototype.setColors = function (key, color) {
+  if (typeof key === 'string') {
+    this.countries[key].setFill(color);
+    this.countries[key].setAttribute('original', color);
+  } else {
+    var colors = key;
+
+    for (var code in colors) {
+      if (this.countries[code]) {
+        this.countries[code].setFill(colors[code]);
+        this.countries[code].setAttribute('original', colors[code]);
+      }
+    }
+  }
+};
+
+JQVMap.prototype.setNormalizeFunction = function (f) {
+  this.colorScale.setNormalizeFunction(f);
+
+  if (this.values) {
+    this.setValues(this.values);
+  }
+};
+
+JQVMap.prototype.setScale = function (scale) {
+  this.scale = scale;
+  this.applyTransform();
+};
+
+JQVMap.prototype.setScaleColors = function (colors) {
+  this.colorScale.setColors(colors);
+
+  if (this.values) {
+    this.setValues(this.values);
+  }
+};
+
+JQVMap.prototype.setValues = function (values) {
+  var max = 0,
+    min = Number.MAX_VALUE,
+    val;
+
+  for (var cc in values) {
+    cc = cc.toLowerCase();
+    val = parseFloat(values[cc]);
+
+    if (isNaN(val)) {
+      continue;
+    }
+    if (val > max) {
+      max = values[cc];
+    }
+    if (val < min) {
+      min = val;
+    }
+  }
+
+  if (min === max) {
+    max++;
+  }
+
+  this.colorScale.setMin(min);
+  this.colorScale.setMax(max);
+
+  var colors = {};
+  for (cc in values) {
+    cc = cc.toLowerCase();
+    val = parseFloat(values[cc]);
+    colors[cc] = isNaN(val) ? this.color : this.colorScale.getColor(val);
+  }
+  this.setColors(colors);
+  this.values = values;
+};
+
+JQVMap.prototype.unhighlight = function (cc, path) {
+  cc = cc.toLowerCase();
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+  path.setOpacity(1);
+  if (path.currentFillColor) {
+    path.setFill(path.currentFillColor);
+  }
+};
+
+JQVMap.prototype.zoomIn = function () {
+  var map = this;
+  var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);
+
+  if (map.zoomCurStep < map.zoomMaxStep) {
+    map.transX -= (map.width / map.scale - map.width / (map.scale * map.zoomStep)) / 2;
+    map.transY -= (map.height / map.scale - map.height / (map.scale * map.zoomStep)) / 2;
+    map.setScale(map.scale * map.zoomStep);
+    map.zoomCurStep++;
+
+    var $slider = jQuery('#zoomSlider');
+
+    $slider.css('top', parseInt($slider.css('top'), 10) - sliderDelta);
+
+    map.container.trigger('zoomIn');
+  }
+};
+
+JQVMap.prototype.zoomOut = function () {
+  var map = this;
+  var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);
+
+  if (map.zoomCurStep > 1) {
+    map.transX += (map.width / (map.scale / map.zoomStep) - map.width / map.scale) / 2;
+    map.transY += (map.height / (map.scale / map.zoomStep) - map.height / map.scale) / 2;
+    map.setScale(map.scale / map.zoomStep);
+    map.zoomCurStep--;
+
+    var $slider = jQuery('#zoomSlider');
+
+    $slider.css('top', parseInt($slider.css('top'), 10) + sliderDelta);
+
+    map.container.trigger('zoomOut');
+  }
+};
+
+VectorCanvas.prototype.applyTransformParams = function (scale, transX, transY) {
+  if (this.mode === 'svg') {
+    this.rootGroup.setAttribute('transform', 'scale(' + scale + ') translate(' + transX + ', ' + transY + ')');
+  } else {
+    this.rootGroup.coordorigin = (this.width - transX) + ',' + (this.height - transY);
+    this.rootGroup.coordsize = this.width / scale + ',' + this.height / scale;
+  }
+};
+
+VectorCanvas.prototype.createGroup = function (isRoot) {
+  var node;
+  if (this.mode === 'svg') {
+    node = this.createSvgNode('g');
+  } else {
+    node = this.createVmlNode('group');
+    node.style.width = this.width + 'px';
+    node.style.height = this.height + 'px';
+    node.style.left = '0px';
+    node.style.top = '0px';
+    node.coordorigin = '0 0';
+    node.coordsize = this.width + ' ' + this.height;
+  }
+
+  if (isRoot) {
+    this.rootGroup = node;
+  }
+  return node;
+};
+
+VectorCanvas.prototype.createPath = function (config) {
+  var node;
+  if (this.mode === 'svg') {
+    node = this.createSvgNode('path');
+    node.setAttribute('d', config.path);
+    node.setAttribute('url', config.url);
+
+    if (this.params.borderColor !== null) {
+      node.setAttribute('stroke', this.params.borderColor);
+    }
+    if (this.params.borderWidth > 0) {
+      node.setAttribute('stroke-width', this.params.borderWidth);
+      node.setAttribute('stroke-linecap', 'round');
+      node.setAttribute('stroke-linejoin', 'round');
+    }
+    if (this.params.borderOpacity > 0) {
+      node.setAttribute('stroke-opacity', this.params.borderOpacity);
+    }
+
+    node.setFill = function (color) {
+      this.setAttribute('fill', color);
+      if (this.getAttribute('original') === null) {
+        this.setAttribute('original', color);
+      }
+    };
+    
+    node.setRegionName = function (regionName) {
+        this.setAttribute('regionName', regionName);
+    };
+    
+    node.getRegionName = function() {
+        return this.getAttribute('regionName');
+    };
+
+    node.getFill = function () {
+      return this.getAttribute('fill');
+    };
+
+    node.getOriginalFill = function () {
+      return this.getAttribute('original');
+    };
+
+    node.setOpacity = function (opacity) {
+      this.setAttribute('fill-opacity', opacity);
+    };
+  } else {
+    node = this.createVmlNode('shape');
+    node.coordorigin = '0 0';
+    node.coordsize = this.width + ' ' + this.height;
+    node.style.width = this.width + 'px';
+    node.style.height = this.height + 'px';
+    node.fillcolor = JQVMap.defaultFillColor;
+    node.stroked = false;
+    node.path = VectorCanvas.pathSvgToVml(config.path);
+    node.url = 'www.gaslightmedia.com';
+    node.regionName = 'region';
+
+    var scale = this.createVmlNode('skew');
+    scale.on = true;
+    scale.matrix = '0.01,0,0,0.01,0,0';
+    scale.offset = '0,0';
+
+    node.appendChild(scale);
+
+    var fill = this.createVmlNode('fill');
+    node.appendChild(fill);
+
+    node.setFill = function (color) {
+      this.getElementsByTagName('fill')[0].color = color;
+      if (this.getAttribute('original') === null) {
+        this.setAttribute('original', color);
+      }
+    };
+
+    node.getFill = function () {
+      return this.getElementsByTagName('fill')[0].color;
+    };
+    node.getOriginalFill = function () {
+      return this.getAttribute('original');
+    };
+    node.setOpacity = function (opacity) {
+      this.getElementsByTagName('fill')[0].opacity = parseInt(opacity * 100, 10) + '%';
+    };
+    
+    node.setRegionName = function (regionName) {
+        this.setAttribute('regionName', regionName);
+    };
+    
+    node.getRegionName = function() {
+        return this.getAttribute('regionName');
+    };
+  }
+  return node;
+};
+
+VectorCanvas.prototype.pathSvgToVml = function (path) {
+  var result = '';
+  var cx = 0, cy = 0, ctrlx, ctrly;
+
+  return path.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g, function (segment, letter, coords) {
+    coords = coords.replace(/(\d)-/g, '$1,-').replace(/\s+/g, ',').split(',');
+    if (!coords[0]) {
+      coords.shift();
+    }
+
+    for (var i = 0, l = coords.length; i < l; i++) {
+      coords[i] = Math.round(100 * coords[i]);
+    }
+
+    switch (letter) {
+      case 'm':
+        cx += coords[0];
+        cy += coords[1];
+        result = 't' + coords.join(',');
+        break;
+
+      case 'M':
+        cx = coords[0];
+        cy = coords[1];
+        result = 'm' + coords.join(',');
+        break;
+
+      case 'l':
+        cx += coords[0];
+        cy += coords[1];
+        result = 'r' + coords.join(',');
+        break;
+
+      case 'L':
+        cx = coords[0];
+        cy = coords[1];
+        result = 'l' + coords.join(',');
+        break;
+
+      case 'h':
+        cx += coords[0];
+        result = 'r' + coords[0] + ',0';
+        break;
+
+      case 'H':
+        cx = coords[0];
+        result = 'l' + cx + ',' + cy;
+        break;
+
+      case 'v':
+        cy += coords[0];
+        result = 'r0,' + coords[0];
+        break;
+
+      case 'V':
+        cy = coords[0];
+        result = 'l' + cx + ',' + cy;
+        break;
+
+      case 'c':
+        ctrlx = cx + coords[coords.length - 4];
+        ctrly = cy + coords[coords.length - 3];
+        cx += coords[coords.length - 2];
+        cy += coords[coords.length - 1];
+        result = 'v' + coords.join(',');
+        break;
+
+      case 'C':
+        ctrlx = coords[coords.length - 4];
+        ctrly = coords[coords.length - 3];
+        cx = coords[coords.length - 2];
+        cy = coords[coords.length - 1];
+        result = 'c' + coords.join(',');
+        break;
+
+      case 's':
+        coords.unshift(cy - ctrly);
+        coords.unshift(cx - ctrlx);
+        ctrlx = cx + coords[coords.length - 4];
+        ctrly = cy + coords[coords.length - 3];
+        cx += coords[coords.length - 2];
+        cy += coords[coords.length - 1];
+        result = 'v' + coords.join(',');
+        break;
+
+      case 'S':
+        coords.unshift(cy + cy - ctrly);
+        coords.unshift(cx + cx - ctrlx);
+        ctrlx = coords[coords.length - 4];
+        ctrly = coords[coords.length - 3];
+        cx = coords[coords.length - 2];
+        cy = coords[coords.length - 1];
+        result = 'c' + coords.join(',');
+        break;
+
+      default:
+        break;
+    }
+
+    return result;
+
+  }).replace(/z/g, '');
+};
+
+VectorCanvas.prototype.setSize = function (width, height) {
+  if (this.mode === 'svg') {
+    this.canvas.setAttribute('width', width);
+    this.canvas.setAttribute('height', height);
+  } else {
+    this.canvas.style.width = width + 'px';
+    this.canvas.style.height = height + 'px';
+    this.canvas.coordsize = width + ' ' + height;
+    this.canvas.coordorigin = '0 0';
+    if (this.rootGroup) {
+      var paths = this.rootGroup.getElementsByTagName('shape');
+      for (var i = 0, l = paths.length; i < l; i++) {
+        paths[i].coordsize = width + ' ' + height;
+        paths[i].style.width = width + 'px';
+        paths[i].style.height = height + 'px';
+      }
+      this.rootGroup.coordsize = width + ' ' + height;
+      this.rootGroup.style.width = width + 'px';
+      this.rootGroup.style.height = height + 'px';
+    }
+  }
+  this.width = width;
+  this.height = height;
+};
diff --git a/js/vmap/dist/jquery.vmap.min.js b/js/vmap/dist/jquery.vmap.min.js
new file mode 100644 (file)
index 0000000..4667707
--- /dev/null
@@ -0,0 +1,10 @@
+/*!
+ * JQVMap: jQuery Vector Map Library
+ * @author JQVMap <me@peterschmalfeldt.com>
+ * @version 1.5.1
+ * @link http://jqvmap.com
+ * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE
+ * @builddate 2016/06/02
+ */
+
+var VectorCanvas=function(a,b,c){if(this.mode=window.SVGAngle?"svg":"vml",this.params=c,"svg"===this.mode)this.createSvgNode=function(a){return document.createElementNS(this.svgns,a)};else{try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),this.createVmlNode=function(a){return document.createElement("<rvml:"+a+' class="rvml">')}}catch(d){this.createVmlNode=function(a){return document.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)")}"svg"===this.mode?this.canvas=this.createSvgNode("svg"):(this.canvas=this.createVmlNode("group"),this.canvas.style.position="absolute"),this.setSize(a,b)};VectorCanvas.prototype={svgns:"http://www.w3.org/2000/svg",mode:"svg",width:0,height:0,canvas:null};var ColorScale=function(a,b,c,d){a&&this.setColors(a),b&&this.setNormalizeFunction(b),c&&this.setMin(c),c&&this.setMax(d)};ColorScale.prototype={colors:[]};var JQVMap=function(a){a=a||{};var b,c=this,d=JQVMap.maps[a.map];if(!d)throw new Error('Invalid "'+a.map+'" map parameter. Please make sure you have loaded this map file in your HTML.');this.selectedRegions=[],this.multiSelectRegion=a.multiSelectRegion,this.container=a.container,this.defaultWidth=d.width,this.defaultHeight=d.height,this.color=a.color,this.selectedColor=a.selectedColor,this.hoverColor=a.hoverColor,this.hoverColors=a.hoverColors,this.hoverOpacity=a.hoverOpacity,this.setBackgroundColor(a.backgroundColor),this.width=a.container.width(),this.height=a.container.height(),this.resize(),jQuery(window).resize(function(){var d=a.container.width(),e=a.container.height();if(d&&e){c.width=d,c.height=e,c.resize(),c.canvas.setSize(c.width,c.height),c.applyTransform();var f=jQuery.Event("resize.jqvmap");jQuery(a.container).trigger(f,[d,e]),b&&(jQuery(".jqvmap-pin").remove(),c.pinHandlers=!1,c.placePins(b.pins,b.mode))}}),this.canvas=new VectorCanvas(this.width,this.height,a),a.container.append(this.canvas.canvas),this.makeDraggable(),this.rootGroup=this.canvas.createGroup(!0),this.index=JQVMap.mapIndex,this.label=jQuery("<div/>").addClass("jqvmap-label").appendTo(jQuery("body")).hide(),a.enableZoom&&(jQuery("<div/>").addClass("jqvmap-zoomin").text("+").appendTo(a.container),jQuery("<div/>").addClass("jqvmap-zoomout").html("&#x2212;").appendTo(a.container)),c.countries=[];for(var e in d.paths){var f=this.canvas.createPath({path:d.paths[e].path});f.setFill(this.color),f.id=c.getCountryId(e),c.countries[e]=f,"svg"===this.canvas.mode?f.setAttribute("class","jqvmap-region"):jQuery(f).addClass("jqvmap-region"),jQuery(this.rootGroup).append(f)}if(jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","mouseover mouseout",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("labelShow.jqvmap"),h=jQuery.Event("regionMouseOver.jqvmap");f=f.toLowerCase(),"mouseover"===b.type?(jQuery(a.container).trigger(h,[f,d.paths[f].name]),h.isDefaultPrevented()||c.highlight(f,e),a.showTooltip&&(c.label.text(d.paths[f].name),jQuery(a.container).trigger(g,[c.label,f]),g.isDefaultPrevented()||(c.label.show(),c.labelWidth=c.label.width(),c.labelHeight=c.label.height()))):(c.unhighlight(f,e),c.label.hide(),jQuery(a.container).trigger("regionMouseOut.jqvmap",[f,d.paths[f].name]))}),jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","click",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("regionClick.jqvmap");if(f=f.toLowerCase(),jQuery(a.container).trigger(g,[f,d.paths[f].name]),!a.multiSelectRegion&&!g.isDefaultPrevented())for(var h in d.paths)c.countries[h].currentFillColor=c.countries[h].getOriginalFill(),c.countries[h].setFill(c.countries[h].getOriginalFill());g.isDefaultPrevented()||(c.isSelected(f)?c.deselect(f,e):c.select(f,e))}),a.showTooltip&&a.container.mousemove(function(a){if(c.label.is(":visible")){var b=a.pageX-15-c.labelWidth,d=a.pageY-15-c.labelHeight;0>b&&(b=a.pageX+15),0>d&&(d=a.pageY+15),c.label.css({left:b,top:d})}}),this.setColors(a.colors),this.canvas.canvas.appendChild(this.rootGroup),this.applyTransform(),this.colorScale=new ColorScale(a.scaleColors,a.normalizeFunction,a.valueMin,a.valueMax),a.values&&(this.values=a.values,this.setValues(a.values)),a.selectedRegions)if(a.selectedRegions instanceof Array)for(var g in a.selectedRegions)this.select(a.selectedRegions[g].toLowerCase());else this.select(a.selectedRegions.toLowerCase());if(this.bindZoomButtons(),a.pins&&(b={pins:a.pins,mode:a.pinMode},this.pinHandlers=!1,this.placePins(a.pins,a.pinMode)),a.showLabels){this.pinHandlers=!1;var h={};for(e in c.countries)"function"!=typeof c.countries[e]&&(a.pins&&a.pins[e]||(h[e]=e.toUpperCase()));b={pins:h,mode:"content"},this.placePins(h,"content")}JQVMap.mapIndex++};JQVMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,countries:{},countriesColors:{},countriesData:{},zoomStep:1.4,zoomMaxStep:4,zoomCurStep:1},JQVMap.xlink="http://www.w3.org/1999/xlink",JQVMap.mapIndex=1,JQVMap.maps={},function(){var a={colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,enableZoom:1,showTooltip:1,borderColor:1,borderWidth:1,borderOpacity:1,selectedRegions:1,multiSelectRegion:1},b={onLabelShow:"labelShow",onLoad:"load",onRegionOver:"regionMouseOver",onRegionOut:"regionMouseOut",onRegionClick:"regionClick",onRegionSelect:"regionSelect",onRegionDeselect:"regionDeselect",onResize:"resize"};jQuery.fn.vectorMap=function(c){var d={map:"world_en",backgroundColor:"#a5bfdd",color:"#f4f3f0",hoverColor:"#c9dfaf",hoverColors:{},selectedColor:"#c9dfaf",scaleColors:["#b6d6ff","#005ace"],normalizeFunction:"linear",enableZoom:!0,showTooltip:!0,borderColor:"#818181",borderWidth:1,borderOpacity:.25,selectedRegions:null,multiSelectRegion:!1},e=this.data("mapObject");if("addMap"===c)JQVMap.maps[arguments[1]]=arguments[2];else{if("set"!==c||!a[arguments[1]]){if("string"==typeof c&&"function"==typeof e[c])return e[c].apply(e,Array.prototype.slice.call(arguments,1));jQuery.extend(d,c),d.container=this,this.css({position:"relative",overflow:"hidden"}),e=new JQVMap(d),this.data("mapObject",e),this.unbind(".jqvmap");for(var f in b)d[f]&&this.bind(b[f]+".jqvmap",d[f]);var g=jQuery.Event("load.jqvmap");return jQuery(d.container).trigger(g,e),e}e["set"+arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1)].apply(e,Array.prototype.slice.call(arguments,2))}}}(jQuery),ColorScale.arrayToRgb=function(a){for(var b,c="#",d=0;d<a.length;d++)b=a[d].toString(16),c+=1===b.length?"0"+b:b;return c},ColorScale.prototype.getColor=function(a){"function"==typeof this.normalize&&(a=this.normalize(a));for(var b,c=[],d=0,e=0;e<this.colors.length-1;e++)b=this.vectorLength(this.vectorSubtract(this.colors[e+1],this.colors[e])),c.push(b),d+=b;var f=(this.maxValue-this.minValue)/d;for(e=0;e<c.length;e++)c[e]*=f;for(e=0,a-=this.minValue;a-c[e]>=0;)a-=c[e],e++;var g;for(g=e===this.colors.length-1?this.vectorToNum(this.colors[e]).toString(16):this.vectorToNum(this.vectorAdd(this.colors[e],this.vectorMult(this.vectorSubtract(this.colors[e+1],this.colors[e]),a/c[e]))).toString(16);g.length<6;)g="0"+g;return"#"+g},ColorScale.rgbToArray=function(a){return a=a.substr(1),[parseInt(a.substr(0,2),16),parseInt(a.substr(2,2),16),parseInt(a.substr(4,2),16)]},ColorScale.prototype.setColors=function(a){for(var b=0;b<a.length;b++)a[b]=ColorScale.rgbToArray(a[b]);this.colors=a},ColorScale.prototype.setMax=function(a){this.clearMaxValue=a,"function"==typeof this.normalize?this.maxValue=this.normalize(a):this.maxValue=a},ColorScale.prototype.setMin=function(a){this.clearMinValue=a,"function"==typeof this.normalize?this.minValue=this.normalize(a):this.minValue=a},ColorScale.prototype.setNormalizeFunction=function(a){"polynomial"===a?this.normalize=function(a){return Math.pow(a,.2)}:"linear"===a?delete this.normalize:this.normalize=a,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},ColorScale.prototype.vectorAdd=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]+b[d];return c},ColorScale.prototype.vectorLength=function(a){for(var b=0,c=0;c<a.length;c++)b+=a[c]*a[c];return Math.sqrt(b)},ColorScale.prototype.vectorMult=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]*b;return c},ColorScale.prototype.vectorSubtract=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]-b[d];return c},ColorScale.prototype.vectorToNum=function(a){for(var b=0,c=0;c<a.length;c++)b+=Math.round(a[c])*Math.pow(256,a.length-c-1);return b},JQVMap.prototype.applyTransform=function(){var a,b,c,d;this.defaultWidth*this.scale<=this.width?(a=(this.width-this.defaultWidth*this.scale)/(2*this.scale),c=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(a=0,c=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(b=(this.height-this.defaultHeight*this.scale)/(2*this.scale),d=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(b=0,d=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>b?this.transY=b:this.transY<d&&(this.transY=d),this.transX>a?this.transX=a:this.transX<c&&(this.transX=c),this.canvas.applyTransformParams(this.scale,this.transX,this.transY)},JQVMap.prototype.bindZoomButtons=function(){var a=this;this.container.find(".jqvmap-zoomin").click(function(){a.zoomIn()}),this.container.find(".jqvmap-zoomout").click(function(){a.zoomOut()})},JQVMap.prototype.deselect=function(a,b){if(a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a))this.selectedRegions.splice(this.selectIndex(a),1),jQuery(this.container).trigger("regionDeselect.jqvmap",[a]),b.currentFillColor=b.getOriginalFill(),b.setFill(b.getOriginalFill());else for(var c in this.countries)this.selectedRegions.splice(this.selectedRegions.indexOf(c),1),this.countries[c].currentFillColor=this.color,this.countries[c].setFill(this.color)},JQVMap.prototype.getCountryId=function(a){return"jqvmap"+this.index+"_"+a},JQVMap.prototype.getPin=function(a){var b=jQuery("#"+this.getPinId(a));return b.html()},JQVMap.prototype.getPinId=function(a){return this.getCountryId(a)+"_pin"},JQVMap.prototype.getPins=function(){var a=this.container.find(".jqvmap-pin"),b={};return jQuery.each(a,function(a,c){c=jQuery(c);var d=c.attr("for").toLowerCase(),e=c.html();b[d]=e}),JSON.stringify(b)},JQVMap.prototype.highlight=function(a,b){b=b||jQuery("#"+this.getCountryId(a))[0],this.hoverOpacity?b.setOpacity(this.hoverOpacity):this.hoverColors&&a in this.hoverColors?(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColors[a])):this.hoverColor&&(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColor))},JQVMap.prototype.isSelected=function(a){return this.selectIndex(a)>=0},JQVMap.prototype.makeDraggable=function(){var a,b,c=!1,d=this;d.isMoving=!1,d.isMovingTimeout=!1;var e,f,g,h,i,j,k;this.container.mousemove(function(e){return c&&(d.transX-=(a-e.pageX)/d.scale,d.transY-=(b-e.pageY)/d.scale,d.applyTransform(),a=e.pageX,b=e.pageY,d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout),d.container.trigger("drag")),!1}).mousedown(function(d){return c=!0,a=d.pageX,b=d.pageY,!1}).mouseup(function(){return c=!1,clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){d.isMoving=!1},100),!1}).mouseout(function(){return c&&d.isMoving?(clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){c=!1,d.isMoving=!1},100),!1):void 0}),jQuery(this.container).bind("touchmove",function(a){var b,c,l,m,n=a.originalEvent.touches;if(1===n.length){if(1===e){if(j===n[0].pageX&&k===n[0].pageY)return;l=d.transX,m=d.transY,d.transX-=(j-n[0].pageX)/d.scale,d.transY-=(k-n[0].pageY)/d.scale,d.applyTransform(),(l!==d.transX||m!==d.transY)&&a.preventDefault(),d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout)}j=n[0].pageX,k=n[0].pageY}else 2===n.length&&(2===e?(c=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))/h,d.setScale(i*c,f,g),a.preventDefault()):(b=jQuery(d.container).offset(),f=n[0].pageX>n[1].pageX?n[1].pageX+(n[0].pageX-n[1].pageX)/2:n[0].pageX+(n[1].pageX-n[0].pageX)/2,g=n[0].pageY>n[1].pageY?n[1].pageY+(n[0].pageY-n[1].pageY)/2:n[0].pageY+(n[1].pageY-n[0].pageY)/2,f-=b.left,g-=b.top,i=d.scale,h=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))));e=n.length}),jQuery(this.container).bind("touchstart",function(){e=0}),jQuery(this.container).bind("touchend",function(){e=0})},JQVMap.prototype.placePins=function(a,b){var c=this;if((!b||"content"!==b&&"id"!==b)&&(b="content"),"content"===b?jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute">'+b+"</div>")}}):jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute"></div>'),e.append(jQuery("#"+b))}}),this.positionPins(),!this.pinHandlers){this.pinHandlers=!0;var d=function(){c.positionPins()};this.container.bind("zoomIn",d).bind("zoomOut",d).bind("drag",d)}},JQVMap.prototype.positionPins=function(){var a=this,b=this.container.find(".jqvmap-pin");jQuery.each(b,function(b,c){c=jQuery(c);var d=a.getCountryId(c.attr("for").toLowerCase()),e=jQuery("#"+d),f=e[0].getBBox(),g=a.scale,h=a.canvas.rootGroup.getBoundingClientRect(),i=a.container[0].getBoundingClientRect(),j={left:h.left-i.left,top:h.top-i.top},k=f.x*g+f.width*g/2,l=f.y*g+f.height*g/2;c.css({left:j.left+k-c.width()/2,top:j.top+l-c.height()/2})})},JQVMap.prototype.removePin=function(a){a=a.toLowerCase(),jQuery("#"+this.getPinId(a)).remove()},JQVMap.prototype.removePins=function(){this.container.find(".jqvmap-pin").remove()},JQVMap.prototype.reset=function(){for(var a in this.countries)this.countries[a].setFill(this.color);this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},JQVMap.prototype.resize=function(){var a=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/a,this.transX*=this.baseScale/a,this.transY*=this.baseScale/a},JQVMap.prototype.select=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a)||(this.multiSelectRegion?this.selectedRegions.push(a):this.selectedRegions=[a],jQuery(this.container).trigger("regionSelect.jqvmap",[a]),this.selectedColor&&b&&(b.currentFillColor=this.selectedColor,b.setFill(this.selectedColor)))},JQVMap.prototype.selectIndex=function(a){a=a.toLowerCase();for(var b=0;b<this.selectedRegions.length;b++)if(a===this.selectedRegions[b])return b;return-1},JQVMap.prototype.setBackgroundColor=function(a){this.container.css("background-color",a)},JQVMap.prototype.setColors=function(a,b){if("string"==typeof a)this.countries[a].setFill(b),this.countries[a].setAttribute("original",b);else{var c=a;for(var d in c)this.countries[d]&&(this.countries[d].setFill(c[d]),this.countries[d].setAttribute("original",c[d]))}},JQVMap.prototype.setNormalizeFunction=function(a){this.colorScale.setNormalizeFunction(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setScale=function(a){this.scale=a,this.applyTransform()},JQVMap.prototype.setScaleColors=function(a){this.colorScale.setColors(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setValues=function(a){var b,c=0,d=Number.MAX_VALUE;for(var e in a)e=e.toLowerCase(),b=parseFloat(a[e]),isNaN(b)||(b>c&&(c=a[e]),d>b&&(d=b));d===c&&c++,this.colorScale.setMin(d),this.colorScale.setMax(c);var f={};for(e in a)e=e.toLowerCase(),b=parseFloat(a[e]),f[e]=isNaN(b)?this.color:this.colorScale.getColor(b);this.setColors(f),this.values=a},JQVMap.prototype.unhighlight=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],b.setOpacity(1),b.currentFillColor&&b.setFill(b.currentFillColor)},JQVMap.prototype.zoomIn=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep<a.zoomMaxStep){a.transX-=(a.width/a.scale-a.width/(a.scale*a.zoomStep))/2,a.transY-=(a.height/a.scale-a.height/(a.scale*a.zoomStep))/2,a.setScale(a.scale*a.zoomStep),a.zoomCurStep++;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)-b),a.container.trigger("zoomIn")}},JQVMap.prototype.zoomOut=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep>1){a.transX+=(a.width/(a.scale/a.zoomStep)-a.width/a.scale)/2,a.transY+=(a.height/(a.scale/a.zoomStep)-a.height/a.scale)/2,a.setScale(a.scale/a.zoomStep),a.zoomCurStep--;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)+b),a.container.trigger("zoomOut")}},VectorCanvas.prototype.applyTransformParams=function(a,b,c){"svg"===this.mode?this.rootGroup.setAttribute("transform","scale("+a+") translate("+b+", "+c+")"):(this.rootGroup.coordorigin=this.width-b+","+(this.height-c),this.rootGroup.coordsize=this.width/a+","+this.height/a)},VectorCanvas.prototype.createGroup=function(a){var b;return"svg"===this.mode?b=this.createSvgNode("g"):(b=this.createVmlNode("group"),b.style.width=this.width+"px",b.style.height=this.height+"px",b.style.left="0px",b.style.top="0px",b.coordorigin="0 0",b.coordsize=this.width+" "+this.height),a&&(this.rootGroup=b),b},VectorCanvas.prototype.createPath=function(a){var b;if("svg"===this.mode)b=this.createSvgNode("path"),b.setAttribute("d",a.path),null!==this.params.borderColor&&b.setAttribute("stroke",this.params.borderColor),this.params.borderWidth>0&&(b.setAttribute("stroke-width",this.params.borderWidth),b.setAttribute("stroke-linecap","round"),b.setAttribute("stroke-linejoin","round")),this.params.borderOpacity>0&&b.setAttribute("stroke-opacity",this.params.borderOpacity),b.setFill=function(a){this.setAttribute("fill",a),null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getAttribute("fill")},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.setAttribute("fill-opacity",a)};else{b=this.createVmlNode("shape"),b.coordorigin="0 0",b.coordsize=this.width+" "+this.height,b.style.width=this.width+"px",b.style.height=this.height+"px",b.fillcolor=JQVMap.defaultFillColor,b.stroked=!1,b.path=VectorCanvas.pathSvgToVml(a.path);var c=this.createVmlNode("skew");c.on=!0,c.matrix="0.01,0,0,0.01,0,0",c.offset="0,0",b.appendChild(c);var d=this.createVmlNode("fill");b.appendChild(d),b.setFill=function(a){this.getElementsByTagName("fill")[0].color=a,null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getElementsByTagName("fill")[0].color},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.getElementsByTagName("fill")[0].opacity=parseInt(100*a,10)+"%"}}return b},VectorCanvas.prototype.pathSvgToVml=function(a){var b,c,d="",e=0,f=0;return a.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g,function(a,g,h){h=h.replace(/(\d)-/g,"$1,-").replace(/\s+/g,",").split(","),h[0]||h.shift();for(var i=0,j=h.length;j>i;i++)h[i]=Math.round(100*h[i]);switch(g){case"m":e+=h[0],f+=h[1],d="t"+h.join(",");break;case"M":e=h[0],f=h[1],d="m"+h.join(",");break;case"l":e+=h[0],f+=h[1],d="r"+h.join(",");break;case"L":e=h[0],f=h[1],d="l"+h.join(",");break;case"h":e+=h[0],d="r"+h[0]+",0";break;case"H":e=h[0],d="l"+e+","+f;break;case"v":f+=h[0],d="r0,"+h[0];break;case"V":f=h[0],d="l"+e+","+f;break;case"c":b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"C":b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",");break;case"s":h.unshift(f-c),h.unshift(e-b),b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"S":h.unshift(f+f-c),h.unshift(e+e-b),b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",")}return d}).replace(/z/g,"")},VectorCanvas.prototype.setSize=function(a,b){if("svg"===this.mode)this.canvas.setAttribute("width",a),this.canvas.setAttribute("height",b);else if(this.canvas.style.width=a+"px",this.canvas.style.height=b+"px",this.canvas.coordsize=a+" "+b,this.canvas.coordorigin="0 0",this.rootGroup){for(var c=this.rootGroup.getElementsByTagName("shape"),d=0,e=c.length;e>d;d++)c[d].coordsize=a+" "+b,c[d].style.width=a+"px",c[d].style.height=b+"px";this.rootGroup.coordsize=a+" "+b,this.rootGroup.style.width=a+"px",this.rootGroup.style.height=b+"px"}this.width=a,this.height=b};
\ No newline at end of file
diff --git a/js/vmap/dist/jqvmap.css b/js/vmap/dist/jqvmap.css
new file mode 100644 (file)
index 0000000..202243b
--- /dev/null
@@ -0,0 +1,182 @@
+/*#mapRegionData {
+    background: white none repeat scroll 0 0;
+    border-radius: 3px;
+    color: black;
+    float: left;
+    font-family: sans-serif,Verdana;
+    font-size: smaller;
+    padding: 40px;
+    pointer-events: auto;
+    position: relative;
+    text-align: center;
+    width: 34%;
+    z-index: 99;
+}*/
+#mapRegionData {
+  background: white none repeat scroll 0 0;
+  border-radius: 3px;
+  bottom: 60px;
+  color: black;
+  float: left;
+  font-family: sans-serif,Verdana;
+  font-size: smaller;
+  padding: 40px;
+  pointer-events: auto;
+  position: absolute;
+  right: 0;
+  text-align: center;
+  overflow: hidden;
+  top: 0;
+  width: 34%;
+  z-index: 99;
+  
+}
+.jqvmap-image_container {
+    
+}
+.jqvmap-header {
+    color: #006a71;
+    display: block;
+    font-family: "Josefin Sans",sans-serif;
+    font-size: 1.25rem;
+    font-weight: 600;
+    padding: 12px 0 12px 1.04167rem;
+    text-transform: uppercase;
+    width: 100%;
+}
+.jqvmap-label {
+    color: #006a71;
+    font-size: 19px;
+    font-weight: bold;
+    line-height: 1;
+    padding: 12px 0;
+    text-align: left;
+    font-family: "josefin sans";
+}
+.jqvmap-label {
+    text-align: left;
+}
+.jqvmap-content {
+    text-align: left;
+}
+/*.glm-button.jqvmap-region_button {
+    background-color: #572700;
+    border-radius: 6px;
+    font-size: 18px;
+    height: 40px;
+    line-height: 1;
+    padding: 12px 24px 8px 20px;
+    position: absolute;
+    text-align: center;
+    bottom: 20px;
+    
+}*/
+.glm-button.jqvmap-region_button {
+  background-color: #572700;
+  border-radius: 6px;
+  bottom: 10px;
+  float: none;
+  font-size: 15px;
+  height: 45px;
+  left: inherit;
+  line-height: 1;
+  padding: 12px 24px 8px 20px;
+  position: absolute;
+/*  right: 40px;*/
+  left: 175px;
+  text-align: center;
+  top: initial;
+  cursor: default;
+}
+#interactive-map .dropdown {
+    width: 600px;
+    overflow: hidden;
+    right: -323px !important;
+}
+#interactive-map #map {
+    float: left;
+    width: 66%;
+    height: 560px;
+    margin-top: -20px;
+    margin-left: -10px;
+}
+.jqvmap-pin {
+    pointer-events:none;
+    color: white;
+    font-size: 14px;
+    font-weight: bold;
+    line-height: 1;
+    text-align: center;
+}
+#jqvmap1_fr-e_pin {
+    margin-left: 10px;
+}
+#jqvmap1_fr-x1_pin {
+    margin-top: 10px;
+}
+#jqvmap1_fr-f_pin {
+  margin-top: 10px;
+  margin-left: 5px;
+}
+#jqvmap1_fr-x4_pin {
+    margin-top: 10px;
+}
+#jqvmap1_fr-x6_pin {
+    margin-left: 7px;
+}
+#jqvmap1_fr-x5_pin {
+  margin-top: 5px;
+  margin-left: -10px;
+}
+#jqvmap1_fr-x3_pin {
+  margin-left: 5px;
+  margin-top: 5px;
+}
+#jqvmap1_fr-r_pin {
+  margin-left: 10px;
+  margin-top: -5px;
+}
+#jqvmap1_fr-u_pin {
+  margin-top: 10px;
+  margin-left: 5px;
+}
+#jqvmap1_fr-j_pin {
+  margin-left: 0px;
+  margin-top: 0px;
+}
+#jqvmap1_fr-x2_pin {
+  margin-top: -32px;
+  margin-left: 10px;
+}
+.jqvmap-zoomin, .jqvmap-zoomout
+{
+  background: #006a71 none repeat scroll 0 0;
+  border-radius: 3px;
+  color: white;
+  cursor: pointer;
+  font-size: 24px;
+  height: 15px;
+  left: 10px;
+  line-height: 11px;
+  padding: 1px;
+  position: absolute;
+  text-align: center;
+  width: 15px;
+}
+.jqvmap-zoomin
+{
+    top: 10px;
+}
+.jqvmap-zoomout
+{
+    top: 30px;
+}
+.jqvmap-region
+{
+  cursor: pointer;
+}
+.jqvmap-ajax_response
+{
+  width: 100%;
+  height: 500px;
+}
diff --git a/js/vmap/dist/jqvmap.min.css b/js/vmap/dist/jqvmap.min.css
new file mode 100644 (file)
index 0000000..a3a93a4
--- /dev/null
@@ -0,0 +1 @@
+.jqvmap-label,.jqvmap-pin{pointer-events:none}.jqvmap-label{position:absolute;display:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#292929;color:#fff;font-family:sans-serif,Verdana;font-size:smaller;padding:3px}.jqvmap-zoomin,.jqvmap-zoomout{position:absolute;left:10px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#000;padding:3px;color:#fff;width:10px;height:10px;cursor:pointer;line-height:10px;text-align:center}.jqvmap-zoomin{top:10px}.jqvmap-zoomout{top:30px}.jqvmap-region{cursor:pointer}.jqvmap-ajax_response{width:100%;height:500px}
diff --git a/js/vmap/dist/maps/continents/jquery.vmap.africa.js b/js/vmap/dist/maps/continents/jquery.vmap.africa.js
new file mode 100644 (file)
index 0000000..b0db1da
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'africa_en', {"width":950,"height":550,"paths":{"dz":{"path":"m 419.83634,8.1546547 -9.8215,-3.2979062 -40.87478,7.6790665 -8.90675,6.764318 5.44034,28.092384 -16.24881,0.649952 -9.77336,15.719217 -23.27792,5.584776 0.0722,11.434346 76.6703,58.616072 13.07126,1.10732 43.59495,-34.06231 -4.35709,-5.48849 -8.18458,-1.107324 -4.91075,-8.232729 V 57.551031 l -3.27383,-3.297906 0.55366,-8.786393 -8.71418,-8.786392 -1.08325,-9.340056 3.80342,-2.744243 -1.63691,-9.893719 -2.14244,-6.5476673 0,0 z","name":"Algeria"},"ma":{"path":"m 358.23531,19.68529 h -27.80352 l -5.44034,12.084299 -12.54167,6.042149 -10.3511,28.020167 -20.17259,12.084298 -28.33311,46.676207 27.80352,-0.55366 1.08325,-13.72122 h 7.07726 V 91.637419 h 24.52968 l 0.55367,-24.168597 23.44642,-5.488487 9.82151,-15.935868 15.26184,-0.553663 -4.93482,-25.805514 0,0 z","name":"Morocco"},"mr":{"path":"m 253.78556,126.51819 5.24776,6.86061 -1.08325,29.65708 7.63092,-5.48848 5.44034,-1.10733 7.63093,2.74425 8.71417,12.08429 8.18459,-5.48848 39.79152,-0.55367 -9.8215,-66.463638 10.54367,-0.04815 -19.643,-15.045192 0.0241,9.773357 -24.8667,0.02407 -0.12036,18.656033 -7.14947,-0.0241 -0.91475,13.76936 -29.60894,0.64995 0,0 z","name":"Mauritania"},"sn":{"path":"m 270.94912,158.2455 -4.59781,1.13139 -9.48449,6.90876 -2.16651,3.85157 -0.67403,3.82749 3.44234,2.47945 11.67507,-0.14443 7.51056,-2.02208 0.84253,3.68307 -0.69809,4.88667 0.1685,0.0722 -18.65604,0.28887 3.00904,7.22169 1.63692,-4.4293 22.36317,1.87764 0.14444,0.14443 2.33501,0.0963 7.14948,0.28887 0.28887,-4.21266 -8.64196,-10.37516 -9.62893,-13.09534 -6.01807,-2.47944 z","name":"Senegal"},"gm":{"path":"m 258.57595,178.70696 -0.31294,2.67202 16.65804,-0.24072 0.84253,-2.47945 -0.36109,-2.50352 -4.79039,1.94986 -12.03615,0.60181 0,0 z","name":"Gambia"},"gw":{"path":"m 262.69231,193.60772 3.37013,6.66802 9.46042,-8.13644 0.0963,-2.50352 -11.14547,-1.61284 -1.78136,5.58478 0,0 z","name":"Guinea-Bissau"},"gn":{"path":"m 267.07347,201.81637 7.31799,11.26584 9.53263,-8.28087 9.77336,-0.4333 8.13644,10.80846 6.90875,4.54967 2.59981,-5.05518 2.31094,-1.29991 -0.16851,-11.12141 -4.59781,-13.19162 -14.10637,1.5647 -17.45242,-1.39619 -0.0963,4.47744 -10.15852,8.11237 0,0 z","name":"Guinea"},"sl":{"path":"m 275.52286,214.3099 13.60085,13.14348 9.70114,-11.77136 -6.06622,-9.50856 -8.35309,0.84253 -8.88268,7.29391 0,0 z","name":"Sierra Leone"},"lr":{"path":"m 290.54398,228.89772 26.43139,17.66907 -0.62588,-13.3842 -7.99201,-9.41227 -7.79942,-6.90875 -10.01408,12.03615 0,0 z","name":"Liberia"},"ci":{"path":"m 319.19002,247.09638 10.30295,-7.29391 12.80647,-2.23872 13.07126,2.81646 -6.66803,-10.0863 -1.94986,-6.16251 1.94986,-18.22274 -11.67507,0.55367 -5.29591,-5.05519 -11.1214,0.28887 -5.29591,0.84253 0.55366,12.32502 -2.79238,1.1314 -3.34606,6.16251 8.61789,10.0863 0.84253,14.85261 0,0 z","name":"Cote d'Ivoire"},"ml":{"path":"m 288.83484,172.68888 7.41427,-5.07926 41.21179,-0.24072 -9.53263,-66.29514 10.88068,-0.31294 52.64614,40.17669 7.07726,1.01103 -2.67203,22.3391 -33.09942,3.00904 -25.54072,19.06527 -4.64595,13.04719 -17.7413,0.74624 -4.52559,-13.02312 -13.60085,0.9629 0.52959,-4.2608 -8.40124,-11.14548 0,0 z","name":"Mali"},"bf":{"path":"m 363.77194,168.9336 8.76232,-0.6981 14.37116,20.31703 -13.33605,10.06223 -9.653,-2.47945 -12.97497,0.1685 -2.09429,7.60685 -10.88069,0.52959 -2.98496,-4.06822 3.85157,-12.37316 24.93891,-19.06527 0,0 z","name":"Burkina Faso"},"ne":{"path":"m 388.56641,187.51742 6.13844,-0.14443 5.53663,-8.30495 9.29191,-1.66099 9.89372,6.04215 21.11142,0.60181 16.32102,-6.64396 6.13844,-5.27183 0.45737,-6.93283 11.38621,-11.48249 3.00903,-25.34814 -7.48648,-15.69514 -19.16156,-4.67003 -44.34119,34.56783 -6.28287,-0.60181 -2.6961,24.0001 -22.62797,2.26279 13.31198,19.28192 0,0 z","name":"Niger"},"gh":{"path":"m 348.72674,223.74625 2.6961,6.33101 7.02912,11.02512 3.89971,-0.14443 10.63996,-6.04215 -0.74624,-34.39933 -8.23273,-2.40723 -11.53064,0.31294 -3.75528,25.32407 0,0 z","name":"Ghana"},"tg":{"path":"m 374.91741,233.85661 6.45138,-3.77935 -0.14443,-24.91484 -4.18858,-6.78839 -2.6961,2.2628 0.57773,33.21978 0,0 z","name":"Togo"},"bj":{"path":"m 383.31865,229.61989 h 5.10333 l 0.28887,-14.49153 6.45138,-9.36413 -0.28887,-16.29695 -5.84957,-0.14444 -10.03816,7.84758 4.18859,7.992 0.14443,24.45747 0,0 z","name":"Benin"},"ng":{"path":"m 390.20333,229.33102 9.43635,0.45737 11.3862,12.68611 5.53663,1.51656 4.33301,-2.11837 6.59582,-0.91474 2.23872,-9.19563 8.97897,-5.89771 9.72521,-0.45738 17.81351,-32.76241 -0.28887,-7.3902 -8.23273,-6.33101 -16.46545,7.24576 -22.02617,-0.31294 -10.49552,-6.64395 -7.48649,1.66098 -3.89971,6.7884 -0.28887,19.16155 -6.28287,8.90676 -0.57774,13.60085 0,0 z","name":"Nigeria"},"tn":{"path":"m 422.31579,7.7694978 13.31199,-5.3681247 4.38116,2.8405323 0.1685,3.4664124 -2.04614,2.6720262 0.31294,4.742245 2.04614,1.107326 v 8.521597 l -2.35908,3.947858 0.31294,2.527593 8.93082,3.153472 -7.19762,11.193623 -2.81646,-0.168506 -0.48144,9.003043 -3.1294,0.481446 -2.67203,-2.359086 0.62588,-9.147477 -8.76232,-8.521597 -1.10733,-7.414271 4.23673,-3.321978 -3.75528,-17.3561342 0,0 z","name":"Tunisia"},"ly":{"path":"m 434.68896,57.599175 3.75528,-0.62588 1.10732,-8.666031 h 1.87764 l 7.67907,-12.613889 18.9449,5.512559 5.17555,8.04015 18.63197,8.521597 9.70114,-4.092292 -0.93882,-4.092292 -4.23673,-4.092293 0.48145,-2.840532 6.88468,-5.825498 h 13.62492 l 5.17555,6.932824 10.9529,1.588773 1.42027,88.802739 -8.13644,-0.31294 -49.15566,-25.56479 -5.31998,3.00904 -20.19666,-5.05518 -5.48849,-7.245767 -7.99201,-1.107326 -4.06822,-7.245765 0.12037,-33.027207 0,0 z","name":"Libya"},"eg":{"path":"m 535.50378,45.635238 6.42731,0.168506 12.5176,3.466413 5.94586,0.168506 7.36612,-6.162511 h 3.44234 l 6.2588,3.466412 h 7.91979 l 1.42027,-0.09629 5.00704,14.39524 1.42027,4.645956 1.32397,6.956897 -2.35908,1.733206 -4.06822,-2.046146 -4.6941,-15.309988 -4.23673,-0.31294 -0.31294,5.199618 2.81646,9.003044 22.55575,27.923877 0.48145,11.988012 -6.57174,7.58278 -61.7214,-0.6981 -0.93882,-72.072493 0,0 z","name":"Egypt"},"td":{"path":"m 465.35708,173.07404 0.31294,-7.10133 11.41027,-11.09734 3.05718,-27.24985 -7.60685,-14.53967 5.31998,-2.72018 51.51474,26.84063 -0.31294,26.3351 -9.07526,7.72721 v 13.57679 l 5.94586,11.50656 h -10.49552 l -17.38021,17.18763 -0.45737,5.19962 -12.83054,-0.16851 -0.16851,2.35909 -7.31798,-0.9629 -5.00704,-9.46041 -3.75528,-1.85357 0.48144,-2.88868 4.71818,-3.61085 v -16.89876 l -6.5236,-1.01103 -7.87164,-5.84957 6.04215,-5.31998 0,0 0,0 z","name":"Chad"},"sd":{"path":"m 531.21891,164.48022 0.4333,-28.47754 5.92179,0.16851 -0.67402,-15.81551 62.10655,0.55367 8.88268,-8.9549 19.16156,30.64404 -10.49553,12.37317 v 18.89676 l -16.5136,35.50666 -5.68107,2.50352 1.80543,9.89372 h 7.07726 l 9.60485,13.93786 -7.70314,0.98697 -1.97393,3.58677 -0.19258,5.17555 -23.10941,-0.40923 -2.35909,-3.58678 -16.15252,-0.91474 -29.65708,-30.52369 2.96089,-1.78135 0.79439,-7.17355 -7.10133,-4.18858 -6.47545,-12.7824 0.36108,-11.89172 8.97897,-7.72721 0,0 z","name":"Sudan"},"cm":{"path":"m 429.32083,241.15052 7.75128,7.12541 -0.55366,11.02511 42.5117,-0.98696 3.46641,-3.89971 -12.18059,-13.11941 -1.80542,-4.74225 7.75128,-14.5156 -5.27183,-9.62892 -4.42931,-2.38316 v -4.88668 l 5.1274,-3.34605 0.28887,-15.2137 -4.06822,-0.45737 -0.0722,7.992 -17.86165,33.34015 -10.92883,0.55366 -7.48648,5.15148 -2.23873,7.992 0,0 z","name":"Cameroon"},"er":{"path":"m 619.22727,169.94464 -0.60181,-14.17859 9.53263,-11.12141 2.57574,1.97393 4.6941,15.69515 22.53168,16.77839 -4.09229,5.03112 -16.48953,-14.17859 h -18.15052 l 0,0 z","name":"Eritrea"},"dj":{"path":"m 654.78207,186.4101 -1.37212,8.08829 9.53263,-0.14443 0.14443,-11.89172 -3.49048,-2.14244 -4.81446,6.0903 0,0 z","name":"Djibouti"},"et":{"path":"m 601.84706,211.01199 17.52464,-38.99713 17.40428,0.0963 15.43035,13.40828 -1.08325,11.04919 h 11.96393 l 1.22769,6.64396 19.35414,11.57878 11.93986,0.6018 -22.70018,24.38525 -31.17364,9.60485 h -7.72721 l -13.76936,-11.74728 -5.44035,-2.28687 -10.54367,-15.52664 -6.95689,0.0963 -0.81846,-7.1254 5.36812,-1.78136 0,0 z","name":"Ethiopia"},"so":{"path":"m 665.03687,194.8354 9.8215,6.6921 2.91275,-0.14443 24.38525,-8.37716 2.76832,8.93082 -1.94986,7.53464 -5.27184,4.18858 -13.16755,-0.84253 -18.84862,-11.57878 -0.64995,-6.40324 0,0 m 39.06936,-2.38316 10.5196,-4.04414 3.7312,2.23872 -0.40923,9.34006 -9.70114,27.63501 -52.5017,56.23291 -6.09029,-4.18858 -0.40923,-23.7353 7.89571,-9.07526 16.75433,-5.17555 24.57783,-25.94994 6.4273,-5.72921 1.80543,-8.37717 -2.59981,-9.17155 0,0 z","name":"Somalia"},"cf":{"path":"m 472.26583,240.59686 11.21769,12.13244 4.42931,-5.72921 7.05318,0.28887 1.51656,-5.58477 6.93282,-4.33302 14.39525,9.91779 8.30494,-8.23273 32.23282,1.42027 -29.8978,-30.8607 4.02007,-2.50352 0.55366,-5.44034 -6.78839,-3.20162 h -9.96593 l -16.05623,15.9118 -0.55367,6.54767 -12.73425,-0.40923 -0.40923,2.79238 -8.30494,-0.84253 -7.48649,14.22674 1.54063,3.89971 0,0 z","name":"Central African Republic"},"gq":{"path":"m 426.96174,248.68516 -1.10732,4.74224 3.32198,1.80542 3.17754,-2.38315 -1.10732,-4.88668 -4.28488,0.72217 0,0 m 9.99001,12.71017 -0.14443,3.34606 10.92883,0.55366 -0.14444,-3.77935 -10.63996,-0.12037 0,0 z","name":"Equatorial Guinea"},"ga":{"path":"m 449.9508,261.2509 -0.28887,5.99401 -13.57678,-0.28887 -8.30495,16.05623 19.52264,21.35213 4.83854,-4.04414 -0.14444,-4.18858 -3.32197,-1.54063 v -2.93682 l 7.48648,-4.74225 6.64396,5.03111 7.34206,0.14444 -0.14444,-25.25185 -11.62692,-0.55367 -0.14444,-5.2959 -8.28087,0.26479 0,0 z","name":"Gabon"},"cg":{"path":"m 461.04813,260.98611 -0.14443,3.49048 11.50656,0.28887 0.40923,29.87373 -10.5196,-0.28887 -6.09029,-4.74224 -4.71817,2.64795 -0.21665,1.32398 2.4313,1.17954 0.6981,6.13844 -6.49953,5.58478 1.3962,2.93682 7.19762,-5.58478 h 3.46641 l 1.10733,3.34605 4.57373,1.94986 14.68411,-12.42131 -0.28887,-9.07526 3.05719,-7.3902 9.41227,-6.98097 2.52759,-23.61493 -6.6921,0.0241 -7.75128,10.61589 -19.54672,0.6981 0,0 z","name":"Congo"},"ao":{"path":"m 450.33596,310.83986 4.18858,5.44034 5.41627,-5.1274 -1.58878,-5.31998 -1.34804,-0.0963 -6.66803,5.10333 0,0 m 4.98296,8.37716 8.20866,30.64405 -0.19258,9.67706 -12.01208,12.90276 -1.80542,20.96698 46.21883,0.40923 15.02112,5.44034 12.39724,-1.61284 -7.22169,-9.05119 0.0241,-25.85366 14.20266,-0.60181 v -10.08629 l -11.53064,-0.48145 -2.31094,-23.87973 -4.8626,0.0722 -2.62389,-2.35909 -2.8646,0.14444 -3.80343,7.36612 H 487.5277 l -3.39419,-3.41827 1.01103,-4.83853 -3.996,-5.84957 -25.82959,0.40923 0,0 z","name":"Angola"},"cd":{"path":"m 457.14842,316.80979 24.81855,-0.4333 5.03111,7.14947 -0.19258,5.27184 1.85357,1.68506 h 12.32502 l 3.53863,-6.9569 h 5.03111 l 2.04615,2.07022 6.90875,-0.19258 2.04615,24.26489 11.93986,0.38516 v 1.87764 l 32.08839,14.46745 1.49248,2.81646 h 6.71618 l -0.74625,-10.15851 -12.13244,-5.8255 0.74624,-7.70314 5.22369,-12.22873 11.93987,-0.38516 -10.2548,-34.03824 0.19257,-14.46746 16.22474,-25.37221 0.19258,-3.5627 -2.4313,-1.32398 0.0963,-6.88468 -2.96089,-0.2648 -2.98497,-3.80342 -48.98714,-2.21465 -8.97897,8.73825 -14.70818,-9.67707 -5.17555,3.17754 -3.75528,31.60694 -9.29191,7.17355 -2.79239,6.35509 0.50552,9.41227 -16.75433,13.69715 -4.45337,-2.02208 0.6018,2.62388 -4.95889,4.74225 0,0 z","name":"Congo"},"rw":{"path":"m 573.75468,278.75147 6.76432,6.23473 -0.28887,6.66803 -10.49553,0.21665 v -7.36613 l 4.02008,-5.75328 0,0 z","name":"Rwanda"},"bi":{"path":"m 569.87904,293.9411 10.27887,-0.21666 -2.67202,9.00305 -2.59981,2.26279 h -3.17755 l -2.26279,-6.09029 0.4333,-4.95889 0,0 z","name":"Burundi"},"ug":{"path":"m 574.91015,276.80161 7.29391,6.83654 4.57374,-2.91275 12.37316,-2.02208 2.11837,0.21666 0.79438,-4.6941 6.98097,-14.68411 -5.87364,-12.22874 -19.0412,0.12037 -0.12036,5.03111 2.55167,2.45537 -0.38516,5.03112 -11.26584,16.85061 0,0 z","name":"Uganda"},"ke":{"path":"m 605.07275,246.54272 6.40324,12.49353 -7.67907,16.10437 -1.01104,4.88668 38.34719,23.71122 11.89172,-18.68011 -6.01808,-4.88667 -0.12036,-24.6019 7.53463,-8.23273 -12.01208,3.996 -9.07526,0.12036 -14.20266,-11.98801 -4.47745,-1.92578 -8.30495,0.77031 -1.46841,2.45538 0.19258,5.77735 0,0 z","name":"Kenya"},"tz":{"path":"m 604.44687,354.62738 42.05432,-5.15147 -9.46041,-18.29495 -0.50552,-17.52464 3.05718,-8.37717 -40.00817,-25.13149 -12.54168,2.07022 -4.35708,3.22569 -0.38516,7.34205 -2.81646,10.18259 -2.93682,3.49049 -4.21266,0.38515 8.06423,27.94795 13.16755,6.18659 9.07526,0.26479 1.80542,13.3842 0,0 z","name":"Tanzania"},"zm":{"path":"m 517.73842,386.59541 7.63092,10.59181 11.8195,0.72217 4.18858,2.31095 12.37317,0.14443 10.66403,-14.9489 29.80152,-13.33606 2.59981,-11.74729 -3.46641,-16.82654 -15.55071,-8.85861 -10.37517,0.72217 -5.17554,11.45842 0.14443,5.22369 12.22873,5.94586 0.72217,12.92683 -10.5196,0.57773 -2.59981,-4.35709 -29.22378,-12.46945 -0.8666,9.58078 -13.81751,0.4333 -0.57773,21.9058 0,0 z","name":"Zambia"},"mw":{"path":"m 596.23821,373.83709 7.48649,7.8235 -0.14443,10.01408 1.44434,4.21265 9.94186,-10.73625 -1.15547,-13.649 -5.31998,-4.06822 -4.74225,-23.95194 -8.20865,-0.28887 3.73121,17.25984 -3.03312,13.38421 0,0 z","name":"Malawi"},"mz":{"path":"m 581.8189,455.39407 6.47545,5.36812 15.26185,-9.29191 2.45537,-13.79343 v -22.77241 l 24.48154,-20.02816 4.18858,0.14444 14.82854,-14.22674 -2.31094,-29.32007 -39.31008,4.9589 1.15547,8.85861 6.76432,5.22369 1.58877,15.95994 -13.23977,12.92683 -3.17754,-7.24577 0.57773,-9.58078 -7.63092,-8.28087 -18.72825,8.71417 17.42835,8.85861 0.57773,25.82959 -11.53063,17.11541 0.14443,20.58183 0,0 z","name":"Mozambique"},"zw":{"path":"m 542.07552,404.89036 21.59286,24.38525 16.56175,4.21265 11.09733,-17.40427 -0.8666,-23.06128 -18.00609,-9.29191 -6.76431,3.05719 -10.0863,15.3822 -13.96194,-0.14443 0.4333,2.8646 0,0 z","name":"Zimbabwe"},"na":{"path":"m 474.40826,476.28883 8.06423,0.57773 4.74224,4.79039 11.24177,0.14444 2.74424,-31.91988 v -20.89477 l 7.19762,-1.44434 2.74425,-21.9058 18.29495,-0.57773 6.47545,-5.36813 -10.9529,-0.4333 -14.82854,2.02208 -15.98401,-5.80143 h -44.91893 l 1.15547,12.75832 14.97298,22.05024 -2.59981,11.31398 0.14443,5.94586 11.50656,28.74234 0,0 z","name":"Namibia"},"bw":{"path":"m 503.19874,450.45924 5.17555,1.58877 -0.72217,14.80447 5.31998,0.72217 12.22873,-11.02511 14.68411,1.58877 3.89972,-9.86965 18.58382,-16.97098 -22.31503,-25.68515 -0.28887,-4.21265 -2.45538,-0.72217 -6.76431,6.23473 -17.57279,0.4333 -2.45537,21.9058 -6.90876,1.58877 -0.40923,19.61893 0,0 z","name":"Botswana"},"sz":{"path":"m 581.09673,457.12727 -6.04215,1.01104 -2.59981,7.10133 4.62189,4.21265 h 5.60885 l 4.74224,-6.81246 -6.33102,-5.51256 0,0 z","name":"Swaziland"},"ls":{"path":"m 548.69541,484.54563 7.34205,-5.65699 3.46641,0.14443 4.18858,5.22369 -0.4333,5.22369 -7.05318,2.59981 v 2.02208 l -7.77536,-0.43331 -1.87764,-5.65699 2.14244,-3.46641 0,0 z","name":"Lesotho"},"za":{"path":"m 564.94421,432.16429 -19.01712,17.57278 -4.52559,10.85661 -15.06927,-1.87764 -12.54167,11.14548 -8.32902,-0.81846 0.67403,-15.40627 -2.9609,-1.03511 -2.07022,31.51065 -14.78039,-0.14444 -4.45338,-5.24776 -6.5236,-0.0722 5.94586,17.06727 10.61589,10.03815 -7.58278,8.83454 4.91076,11.07326 11.36212,4.33302 9.05119,-7.70314 25.92588,0.14443 1.85357,-2.31094 11.50656,-2.02207 38.92492,-38.75642 -0.14443,-12.20466 -4.16451,5.3922 h -6.23473 l -7.58278,-6.35509 3.85157,-9.58078 6.61989,-1.34805 -0.60181,-19.69115 -14.66004,-3.39419 0,0 z m -9.1234,44.53377 3.63492,-0.14444 5.89771,6.40324 -0.1685,7.41427 -6.90876,3.49048 -0.4333,2.45538 -10.54367,0.12036 -3.2979,-7.94386 3.00903,-5.8255 8.81047,-5.96993 0,0 z","name":"South Africa"},"mg":{"path":"m 704.90061,358.23823 -5.1274,12.18059 -8.78639,15.50256 -15.38221,1.10733 -6.59581,7.75128 1.10733,23.63901 -9.53264,11.07326 1.10733,18.82455 8.06422,9.21969 9.53264,-1.10733 9.53263,-7.02911 -2.19058,-11.07326 21.97802,-38.03425 -4.40523,-4.79039 4.40523,-9.21969 4.76632,1.46841 1.46841,-3.68306 -4.40524,-18.82455 -2.57573,-7.75128 -2.9609,0.74624 0,0 z","name":"Madagascar"}}});
diff --git a/js/vmap/dist/maps/continents/jquery.vmap.asia.js b/js/vmap/dist/maps/continents/jquery.vmap.asia.js
new file mode 100644 (file)
index 0000000..7405f63
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'asia_en', {"width":950,"height":550,"paths":{"id":{"path":"m 615.27242,460.80117 -3.29462,12.37981 -17.87084,6.03301 -5.34842,-6.27548 -2.59577,0.71313 4.84924,18.71232 7.25958,0.81296 9.6842,3.66545 v 3.66545 l 4.43562,-0.81296 6.46089,-8.94255 v -7.31664 l 3.63692,-7.31663 4.03627,0.81296 -4.84923,-10.16912 -0.74165,-6.54647 -5.66219,0.58476 0,0 m -84.43367,-9.74124 -0.39934,3.25183 9.6842,16.27345 h 2.82396 l 20.18136,33.75921 8.07254,0.81296 4.03627,-11.79505 -6.46088,-4.06479 -1.21231,-6.50368 -36.7258,-31.73393 0,0 m 95.62969,44.98374 3.22331,3.9507 -2.09658,5.93318 v 1.12673 h 4.76366 l 1.68297,-14.83294 1.54034,0.42787 2.79544,13.54932 2.66708,0.71313 2.52445,-5.79056 -2.52445,-8.75714 -2.09658,-3.80807 6.58925,-4.80644 -1.54035,-2.12511 -6.304,4.09332 h -1.68296 l -3.08069,-4.52119 0.98411,-1.98248 5.19153,-2.53872 7.84434,2.3961 2.38183,-0.14263 5.89039,-5.5053 -2.38183,-2.39609 -5.46252,4.23594 h -3.50856 l -5.31989,-2.53871 -3.77955,0.14262 -4.20742,6.77466 -2.66707,11.72373 -1.42625,4.67808 0,0 m 35.17119,-26.5424 -2.66708,6.48941 4.20742,5.5053 h 1.39772 l 1.82559,-3.66545 0.98411,-1.26935 -1.82559,-1.98248 -2.66708,-0.98411 -1.25509,-4.09332 0,0 m 8.27222,21.32235 -5.74777,1.26936 -1.68297,1.83985 1.39772,2.39609 3.77955,-1.41198 2.38183,-1.41198 3.50856,2.82396 1.54034,-1.26935 -2.79544,-3.39447 -2.38182,-0.84148 0,0 m -95.30166,18.35576 -3.92217,2.68134 0.84149,2.25347 12.47964,2.82396 6.304,1.12674 2.66707,2.82396 7.14549,0.5705 3.36593,2.82396 3.08069,-0.71312 2.8097,-2.53871 -5.19153,-2.39609 -4.4784,-3.80808 -11.63816,-2.82396 -13.46375,-2.82397 0,0 m 40.79059,12.27997 -3.08068,1.69723 1.82559,1.98248 4.47841,-1.69723 -3.22332,-1.98248 0,0 m 5.3199,-1.26936 0.55623,2.68134 3.22331,0.84149 1.2551,-1.55461 -1.39772,-2.12511 -3.63692,0.15689 0,0 m 7.71598,7.05991 -3.92217,0.5705 3.50856,2.96659 h 2.79544 l -2.38183,-3.53709 0,0 m 1.11247,-4.66382 -0.84149,1.69723 6.30401,0.98411 4.90628,-2.82396 -2.79544,-0.84149 -4.47841,1.26936 -1.68297,-1.41198 -1.41198,1.12673 0,0 m 57.39207,-40.47681 -5.94744,0.67033 -3.82233,2.79544 1.58313,3.19479 6.47515,1.19804 v 1.19805 l -4.09332,3.32315 1.98248,6.91728 1.98248,0.12836 1.71149,-6.78892 h 3.16626 l 1.32641,6.6463 15.44623,12.77915 0.39935,9.98371 5.2771,5.71924 2.38183,-0.12836 0.52771,-35.25676 -8.97108,-6.24695 -8.45763,5.71924 -3.0379,1.86838 -5.02038,-3.19479 -0.12836,-10.11207 -2.78118,-0.41361 0,0 z","name":"Indonesia"},"ye":{"path":"m 355.61037,425.50163 3.0379,3.39446 4.10758,-2.48167 1.4833,-0.49918 -1.88265,-1.8256 -3.6084,1.06969 -3.13773,0.3423 0,0 m -39.40714,-14.86147 2.0538,6.10433 v 5.9617 l 4.9348,4.4784 34.77184,-14.1626 0.32804,-3.89365 -5.57662,-10.01224 -13.99146,4.46415 -8.02975,7.90139 -9.31338,-5.5053 -5.17727,4.66382 0,0 z","name":"Yemen"},"my":{"path":"m 590.2561,472.95278 4.30725,4.97759 16.51591,-5.71924 3.2661,-12.608 7.35942,-0.52771 6.73188,-4.87776 -8.72862,-6.36105 -1.99674,-3.4943 -4.30726,7.94419 1.58313,4.56398 -2.62429,3.80807 -4.94906,-1.26936 -11.99472,8.79993 0.31377,5.09169 -5.47677,-0.32803 0,0 m -44.82687,-24.91649 2.86676,6.43236 0.64181,8.35779 3.83659,5.94744 9.25633,5.6194 3.50856,0.32804 -0.64181,-5.79055 -3.0379,-7.38795 -4.44988,-9.456 -0.37083,1.65444 -5.36268,-0.24246 -3.85086,-5.53382 -2.39609,0.0713 0,0 z","name":"Malaysia"},"bn":{"path":"m 612.5483,453.45602 -4.10759,4.97759 3.36594,1.05542 1.8969,-2.65281 -1.15525,-3.3802 0,0 z","name":"Brunei Darussalam"},"tl":{"path":"m 650.15836,523.58445 -7.28811,6.0758 0.69886,1.55461 3.08069,-0.5705 3.63692,-3.39446 7.14549,-0.98411 -1.39772,-2.39609 -5.87613,-0.28525 0,0 z","name":"Timor-Leste"},"ph":{"path":"m 626.24024,422.47799 -1.22657,2.33904 -0.6846,2.88101 -6.81744,8.65731 0.41361,1.7828 2.86675,-0.41361 8.85698,-9.89814 -3.40873,-5.34841 0,0 m 11.03913,-3.29463 -0.14262,7.14549 2.59576,2.61002 0.95559,5.07743 2.59576,0.55624 1.22657,-3.16626 -2.03953,-1.51182 -0.54197,-8.92829 -4.64956,-1.78281 0,0 m 7.37369,2.75265 -0.14263,6.31827 1.49756,2.4674 2.59576,-3.02364 -0.68459,-5.49104 -3.2661,-0.27099 0,0 m 1.62592,-5.5053 2.59576,3.43725 1.22657,3.29463 h 2.32478 l -0.41361,-5.63367 -2.59577,-1.78281 -3.13773,0.6846 0,0 m 5.0489,12.92178 0.54197,4.12184 -4.77791,3.85086 -3.9507,0.41361 -4.22169,4.53546 0.14263,2.06805 3.9507,-1.24083 2.72412,-1.7828 2.32478,5.90465 4.09332,2.88101 1.64018,-0.55623 1.49756,-1.78281 -3.2661,-3.29462 1.91117,-1.51182 2.18215,1.7828 1.49756,-2.4674 -1.49756,-3.02364 -0.27098,-6.73187 -4.5212,-3.16626 0,0 m -22.22089,-41.90306 -3.67971,2.61002 -0.41361,8.2437 5.7335,11.1247 1.91117,1.51182 2.45314,-1.65444 4.22169,0.68459 0.81295,3.70824 3.13774,0.27099 1.49756,-2.0538 -1.91117,-2.61002 -2.32478,-2.19642 -4.90628,-0.54197 -2.59576,-4.26447 2.99511,-4.53546 0.27099,-3.97922 -2.03953,-5.07743 -5.16301,-1.24083 0,0 m 1.91117,24.58845 1.08395,3.85086 1.91116,1.24083 1.3692,-1.7828 -2.18216,-3.02364 -2.18215,-0.28525 0,0 z","name":"Philippines"},"cn":{"path":"m 584.10898,383.45594 -3.40872,0.95558 -2.45314,3.02364 2.03953,3.97922 2.99511,0.27099 3.40872,-3.02364 0.81296,-3.97922 -3.39446,-1.22657 0,0 m -127.54903,-142.76706 -4.93481,12.40832 -6.80319,-0.35656 -7.174,15.70295 6.09006,7.75877 -12.55095,17.32887 -6.44663,-1.08394 -4.30725,5.41972 1.06968,3.25184 5.02038,0.35656 2.51019,5.77629 5.02038,1.08395 15.4177,19.86758 v 10.11208 l 7.53057,4.69234 8.24369,-1.44051 10.39733,6.13285 12.55095,3.6084 6.09006,-0.72738 6.81745,-0.72739 14.33375,-9.38469 4.66382,0.72739 1.78281,4.23595 3.9507,1.18378 5.37694,7.94418 -3.57988,7.94418 2.15363,5.41973 6.09007,2.16789 1.06968,6.50368 7.17401,0.72738 1.06968,-3.25184 10.39732,-5.41973 6.44663,0.35657 7.53057,8.30074 5.02038,-2.16789 3.22331,0.35656 1.44051,3.97922 2.51019,0.35656 3.57987,-5.04891 14.33376,-5.41972 12.90751,-15.53181 4.30726,-14.80441 -0.35656,-9.75551 -5.37694,-1.08395 3.22331,-3.6084 -0.71312,-5.77629 -13.62064,-13.72047 v -6.86023 l 3.93644,-5.04891 3.93643,-1.81133 0.35656,-3.97922 H 598.2288 l -1.79707,5.41973 -4.66382,-1.08395 -5.7335,-6.13285 3.57988,-9.38469 5.02038,-5.41973 4.66382,0.35656 -0.71313,8.30075 2.51019,2.16789 6.09007,-6.13285 2.15363,-0.35656 -0.71313,-4.69235 5.73351,-6.86023 4.30725,0.35656 2.51019,-7.94418 2.93807,-1.55461 0.29951,-4.94907 -2.85249,-2.99511 -0.24246,-7.81582 5.49104,-0.35656 -0.35656,-20.15284 -3.85086,2.31052 -1.44051,5.16301 -6.43236,-0.0143 -18.64101,-10.48289 -13.46375,-16.23066 -13.66342,-0.14263 -3.48004,3.02364 4.42136,10.12633 -1.54035,9.49879 -5.5053,2.28199 -3.09495,-0.24246 -0.2282,9.39895 3.22331,0.72739 5.73351,-2.52446 7.53057,3.6084 v 3.6084 l -5.37694,0.35656 -4.30726,9.38469 -3.93644,0.35656 -13.97719,18.41282 -14.69032,6.50367 -10.04076,0.72739 -6.80319,-4.69235 -9.6842,5.06317 -10.39732,-3.25184 -2.51019,-6.86023 -17.55707,-1.08395 -9.31337,-15.16098 h -3.93644 l -3.16626,-7.03138 -3.76528,-0.29951 z","name":"China"},"tw":{"path":"m 623.51612,352.27824 -5.04891,3.85086 -0.27099,7.41647 4.36431,5.07743 1.08395,-0.95558 -0.12836,-15.38918 0,0 z","name":"Taiwan"},"jp":{"path":"m 646.00799,306.7953 -2.32478,2.33905 0.95558,3.29462 2.03953,0.14262 1.3692,7.14549 1.64018,1.7828 2.86675,-2.61002 1.22657,-4.67808 -3.55135,-5.07743 -4.22168,-2.33905 0,0 m 12.55095,-4.66381 -3.9507,3.70823 -0.14262,4.26447 0.95558,1.24083 5.31989,-4.53545 -0.41361,-4.53546 -1.76854,-0.14262 0,0 m -5.46252,-8.79993 -6.96007,7.9727 1.22657,1.92543 3.40873,0.41361 6.40383,-4.94906 4.50694,-0.82723 4.09332,4.80645 3.13773,-1.09821 1.22657,-4.67808 5.86187,-0.14263 5.7335,-6.87449 -2.99511,-11.40996 -1.3692,-6.04728 2.99512,-2.4674 -6.81745,-10.29748 -1.76854,0.14262 -3.67971,4.12185 v 3.43725 l 1.64018,1.92543 0.54197,9.07091 -4.22168,5.22006 -2.45314,-1.51182 -1.91117,4.26447 -0.41361,3.97922 1.49755,2.33904 -0.95558,1.78281 -3.13774,-2.61003 h -2.18215 l -1.91117,1.09821 -1.49756,0.41361 0,0 m 11.738,-62.09868 -2.18216,1.92543 1.09821,4.12184 1.91117,1.92543 -0.14263,6.31827 -2.45314,0.95558 -1.91117,4.26447 5.59088,7.68746 3.67971,-1.24084 0.6846,-1.92543 -3.9507,-3.56561 2.45314,-3.16626 2.59577,0.41361 2.03953,2.19642 0.14262,-4.53546 5.59088,-4.53546 3.13774,-0.82722 -2.59577,-4.39283 -1.22657,-1.92543 -2.03953,1.36919 -1.76854,2.19642 -3.82233,-0.82722 -3.9507,-2.61003 -2.88101,-3.82233 0,0 z","name":"Japan"},"ru":{"path":"m 222.95538,214.51729 -2.13937,-0.21393 -3.85086,4.60676 v 2.15363 l 1.28362,0.49919 2.49593,0.0713 4.13611,-3.3802 0.57049,-1.15526 -2.49592,-2.5815 0,0 m 462.45974,12.45112 -3.82233,5.36267 0.27098,2.61003 1.91117,-0.82722 4.49267,-5.63367 -2.85249,-1.51181 0,0 m 5.04891,-7.83009 -1.3692,3.70824 0.14263,2.4674 2.32478,-1.51182 2.18215,-4.39283 v -1.64018 l -3.28036,1.36919 0,0 m 8.04402,-32.70378 -1.76855,2.19642 0.14263,3.43724 1.64018,-0.14262 2.72413,-4.80644 -2.73839,-0.6846 0,0 m -3.2661,8.38632 v 6.04727 l 1.91116,0.6846 1.3692,-2.19642 v -4.66382 l -3.28036,0.12837 0,0 m -55.78042,-21.85007 -0.12836,8.79993 11.03913,17.04362 3.95069,14.83294 6.96008,13.19276 2.72412,0.95559 2.32478,-1.92543 1.08395,-3.16627 -9.95519,-10.85372 0.27099,-5.63366 2.18215,-0.95558 0.54198,-3.29463 -19.49677,-27.61209 -1.49755,-1.38346 0,0 m 76.91736,-27.3411 -2.72413,0.27098 1.64018,2.33904 3.40873,2.33905 0.95558,-1.09821 -3.28036,-3.85086 0,0 m 5.30563,1.65444 0.41361,2.33904 4.22168,1.24083 0.41361,-1.65444 -5.0489,-1.92543 0,0 m -439.95361,-93.832618 2.45314,0.984108 -1.72576,2.966589 v 4.207421 l -3.67971,2.224941 h -3.92217 l -2.21068,-2.724127 0.24246,-2.966588 1.72576,-2.224942 h 3.43725 l 3.67971,-2.467402 0,0 m 9.32764,-2.724127 v 2.966588 l 2.45314,1.98248 3.43724,-0.242462 2.95233,-2.724126 v -1.98248 h -2.6956 l -2.21068,0.741647 -1.72576,-1.98248 -2.21067,1.240833 0,0 m 14.00572,0.256724 1.72575,3.708235 3.43725,0.242462 2.45314,-0.984109 -1.22657,-3.465774 -3.19479,-0.741647 -3.19478,1.240833 0,0 m 13.99145,-4.949068 -2.6956,-0.499186 -2.45314,2.481666 1.22657,2.224941 0.74165,3.465774 3.19479,-2.467403 0.74164,-2.724127 -0.75591,-2.481665 0,0 m 14.97557,26.228634 -0.74165,3.465774 -5.64793,4.949068 -12.0375,2.724127 -9.82682,16.330498 -1.72576,4.706608 9.82683,2.48166 1.46903,-5.93317 2.95232,-9.156492 7.61615,-3.964959 6.38957,-4.949068 4.66382,-1.98248 h 2.45314 v -6.674824 l -5.3912,-1.996742 0,0 m -31.67689,36.126775 6.63204,0.74164 2.21068,7.6732 5.64792,5.93317 -1.96821,3.96496 h -3.43725 l -3.19479,-3.70823 -7.11696,-0.24246 -2.95232,-3.96496 v -2.72413 l 4.42135,-1.24083 -0.24246,-6.43236 0,0 m 103.64518,-84.376623 -3.19479,-1.982479 h -3.67971 l -0.74164,2.224941 -3.92218,2.224941 -2.95232,0.984109 -0.48492,2.966588 6.87449,0.499186 8.10107,-6.917286 0,0 m 7.60188,0.741647 -1.72575,3.708236 -3.43725,-0.242462 -5.40547,3.96496 -1.46903,4.949068 h 3.43725 l 1.96822,-3.223313 4.66382,3.465774 4.42135,-1.982479 3.19479,-2.724127 -1.22657,-4.207421 -1.72575,-2.966589 -2.69561,-0.741647 0,0 m 7.13123,2.724127 1.72575,6.931548 2.6956,6.432362 2.95233,-5.191529 5.64793,-1.240833 v -3.708236 l -3.67971,-2.724126 -9.3419,-0.499186 0,0 m 134.75157,-11.096181 3.83659,3.223312 2.72413,-1.126733 0.7987,-4.521195 -5.59088,-3.865122 -3.67971,2.424615 -8.95681,0.81296 v 4.036271 l -9.44174,0.156887 v 6.603512 l 11.03913,8.215168 2.88101,-2.09658 -0.64181,-5.804814 7.04565,-1.768543 -1.44051,-2.73839 -2.55297,-2.581502 3.97922,-0.969846 0,0 m 10.24043,-3.865123 2.55298,4.834969 9.92666,-1.126733 2.72413,-3.551349 -0.64181,-3.0664252 -2.72413,-1.1267331 -2.55298,1.9396923 -7.35942,1.611656 -1.92543,0.484923 0,0 m -0.64181,18.854951 -4.96333,-1.28362 -2.86675,3.066426 -1.28362,4.193158 6.71761,-0.64181 5.12022,-2.581502 -2.72413,-2.752652 0,0 m 128.63298,-27.8830777 -4.16463,-1.2836199 -4.79218,1.768543 -2.39609,3.5513486 3.0379,4.036272 8.00123,-3.5513489 1.59739,-1.7685431 -1.28362,-2.7526517 0,0 m -26.68503,98.6533297 2.51019,8.67156 5.02038,1.44051 5.02038,-7.94418 -2.86675,-5.419732 1.06968,-4.692344 h 7.53058 l -1.79707,3.608399 0.71312,13.007347 -10.75388,26.72782 1.06968,5.77629 -0.35656,9.75551 20.06726,29.25228 3.93643,1.08394 0.35656,-23.83254 3.93644,-3.6084 -4.30726,-9.38469 3.57987,-3.97922 -7.88713,-10.46863 -4.30726,0.35656 -1.42624,-17.32887 11.11044,-2.89528 0.71313,-5.06317 5.7335,-1.4405 3.22331,2.89527 3.93643,-15.88836 6.80319,-11.55258 5.37694,-2.895276 4.66382,0.356561 v -5.419729 l -7.53057,-1.440506 -10.39732,-8.671566 5.02038,-5.77629 -4.30726,-9.755512 3.57987,-3.608398 4.30726,5.77629 10.75389,3.979221 11.82356,1.083946 1.44051,-5.048905 -6.09007,-6.132851 6.80319,-9.384688 -15.4177,-5.419729 -3.93644,7.944182 -5.02038,-6.503675 -28.31095,-9.755512 -26.8847,4.692344 -3.93644,2.167892 v 2.167891 l 5.7335,2.895277 -0.71312,6.860235 -10.39732,-4.335783 -22.93401,9.028127 -3.93644,-8.300742 h -15.77426 l -7.17401,7.58762 -25.4442,-5.77629 -23.29057,4.692344 -2.86675,7.216797 3.57987,1.083946 -0.35656,5.419728 -22.57745,2.524453 1.44051,7.216797 -20.79464,-3.608399 5.02038,-9.384688 -21.15121,-1.083946 1.79707,9.755512 -6.80318,3.251837 -5.73351,-5.419728 -23.29057,3.979221 -8.95681,8.300743 -0.35656,5.048905 -5.73351,0.356561 -0.71312,-5.77629 18.28445,-15.888362 V 44.380597 l -11.82356,-3.251837 -15.4177,5.048905 -6.44663,-6.503674 h -2.86675 l -3.57987,7.216796 2.86675,3.251838 -20.43808,11.196018 -17.55707,13.36391 -10.75389,14.804417 v 6.132851 l 11.46701,4.692349 -5.7335,4.33578 -12.18013,-4.33578 -5.02038,4.33578 -7.53057,-8.671568 -1.44051,3.251837 8.24369,26.000431 2.15363,0.72739 5.73351,-2.89528 2.86675,2.16789 v 4.69235 l -5.37694,-2.16789 -3.22332,2.52445 2.15363,4.69234 -1.79707,12.27997 -11.11044,1.08394 -0.71312,-3.97922 6.44662,-3.97922 1.44051,-10.83946 -7.17401,-9.38469 -2.51019,-16.24492 -11.467,-1.81133 -1.06969,5.77629 2.15363,2.89528 -4.66382,3.97922 1.79707,10.83946 6.80319,2.89527 1.4405,7.94418 -6.81745,-4.33578 -17.55706,-3.25184 -2.15363,5.77629 -13.9772,5.04891 -2.15363,-3.6084 -18.28445,10.11207 -0.35656,6.86024 -7.17401,1.08394 2.15363,-5.0489 v -5.04891 l -7.17401,-2.52445 -4.66382,1.81133 3.93643,7.58762 2.86676,5.04891 v 3.97922 l -5.37695,-1.08395 -1.06968,-1.08394 -5.37694,5.77629 2.86675,5.0489 -12.18013,-0.35656 3.93644,5.06317 -1.06969,2.16789 h -6.44662 l -4.66382,-3.25184 -1.06968,-9.02812 -7.53057,-2.89528 v -3.6084 l 15.77426,3.25184 8.60025,0.72738 3.57988,-5.41973 -3.22331,-5.77629 -22.93401,-9.02812 -7.91566,1.96821 -2.70987,2.32478 0.84149,5.34842 3.36594,0.58476 -0.78444,8.41484 10.38306,24.38878 -7.50205,11.89488 -0.51344,2.68134 3.80807,2.68134 -3.43725,2.26773 -2.28199,0.0428 0.42787,10.4829 3.152,4.46415 0.0428,4.33578 4.03627,0.37082 6.17564,2.35331 6.5322,8.98534 0.0713,2.36756 -2.1251,3.63692 4.87775,-0.27098 4.7494,1.36919 6.4181,9.08518 15.80278,1.44051 -0.68459,10.81093 -5.44826,4.66382 1.12674,1.82559 -5.37694,5.77629 -1.42625,5.41973 3.22331,4.69234 10.39733,3.6084 4.30725,-2.52445 27.59783,10.46863 1.06969,-2.89527 -5.73351,-5.41973 v -6.86024 l -3.57987,-1.08394 0.71312,-5.77629 5.7335,-6.86024 -10.28322,-7.70172 0.71312,-10.71109 10.99635,-7.23106 12.90751,0.72738 2.15363,3.97922 13.26407,0.72739 9.6842,-5.41973 -5.02038,-5.41973 1.06969,-10.11207 25.08763,-12.27997 19.29709,8.70009 6.44663,-5.77629 18.99757,18.05626 14.33376,-1.44051 5.02038,5.04891 13.62063,1.4405 8.95682,-12.27996 11.467,5.06317 6.09006,1.08394 6.09007,-5.41973 -5.37694,-3.60839 4.66382,-7.2168 13.26407,4.33578 2.86675,5.77629 5.7335,0.35656 3.57988,-2.52445 9.6842,-0.35656 1.06968,2.52445 11.11044,0.72739 7.53057,-7.94418 15.41771,1.81133 4.66381,-1.81133 1.42625,-8.67157 -4.66382,-10.46863 4.66382,-3.97923 h 14.69032 l 13.97719,16.61575 17.91363,10.11207 h 5.37694 l 0.71312,-4.33578 6.44663,-3.97922 0.71312,23.47598 -5.7335,0.35656 v 5.77629 l 3.22331,3.97922 -0.59902,5.16301 2.38183,0.98411 1.4405,-3.6084 2.15363,0.72738 1.42625,1.44051 6.44662,-1.44051 6.44663,-18.78363 0.71312,-23.47599 -8.24369,-18.78364 -10.39733,-12.63652 -5.02038,0.72738 v 3.97922 l -12.18012,-4.69234 4.66382,-10.11207 3.93643,-26.72782 16.48739,-5.04891 7.88713,-5.0489 h 8.60025 l -2.15363,2.89527 2.15363,3.6084 7.53057,-7.94418 4.30726,0.35656 -0.71312,-4.69234 -6.81745,-1.44051 4.66382,-16.97231 6.14711,-5.81907 0,0 z","name":"Russian Federation"},"mv":{"path":"m 436.59252,455.60965 0.42788,3.72249 2.38183,0.87001 0.42787,-3.28036 -3.23758,-1.31214 0,0 m 3.0379,7.87286 -0.21393,4.59251 1.74002,0.87001 1.52608,-3.06643 -3.05217,-2.39609 0,0 m 0.44214,8.97108 -1.52608,1.52608 1.74002,1.52608 2.16789,-1.52608 -2.38183,-1.52608 0,0 z","name":"Maldives"},"lk":{"path":"m 471.02206,437.48208 0.35657,3.87938 0.35656,2.82397 -2.09658,0.35656 1.05542,6.34679 3.152,1.76854 4.89202,-2.82396 -1.39772,-6.68909 0.35656,-2.4674 -4.54972,-4.22169 -2.12511,1.0269 0,0 z","name":"Sri Lanka"},"mn":{"path":"m 461.40918,240.8315 8.30074,-11.01061 9.96945,4.60677 6.77466,1.81133 8.30074,-7.61614 -5.63366,-4.15037 3.70823,-5.23432 11.06766,3.90791 3.83659,6.28974 6.93155,0.18541 3.62266,-2.6956 7.45926,-0.29951 1.62592,2.76691 12.39406,0.62755 7.84435,-8.00123 10.85372,1.14099 -0.62755,10.89651 4.74939,1.08395 5.83334,-2.65282 6.17564,3.05216 -0.14262,1.54035 -4.47841,0.12836 -4.66382,9.78404 -3.62266,0.35656 -14.09129,18.41281 -14.39081,6.34679 -8.9996,0.69886 -7.47352,-4.82071 -9.55584,5.10596 -9.41321,-2.9238 -2.66708,-6.83171 -17.82806,-1.2551 -9.12796,-15.47475 -4.43562,-0.28525 -2.29625,-5.49104 0,0 z","name":"Mongolia"},"kp":{"path":"m 610.42319,275.20399 2.62429,1.09821 0.7987,9.18501 5.20579,0.29951 4.90628,-5.74776 -1.69723,-1.51182 0.19967,-6.16138 4.50694,-5.44825 -2.29626,-4.13611 1.49756,-1.71149 0.82722,-4.27873 -2.61003,-1.18379 -2.22494,1.12674 -2.75265,8.35779 -4.44988,-0.38509 -5.14874,6.0758 0.61328,4.42136 0,0 z","name":"North Korea"},"kr":{"path":"m 624.77121,280.80913 8.81419,7.18827 1.49756,6.96008 -0.29951,3.73676 -4.30726,4.84923 -3.70824,0.19967 -4.20742,-9.08518 -1.59739,-4.33578 1.69723,-1.31214 -0.39935,-1.81133 -2.09658,-0.94132 4.60677,-5.44826 0,0 z","name":"South Korea"},"kz":{"path":"m 322.90658,267.14571 5.84761,-2.49593 6.53219,-0.2282 0.4564,9.98371 h -3.82233 l -2.9238,4.76366 3.82233,6.34679 5.63367,3.18052 0.51344,3.63693 2.06806,-0.6846 1.91117,-2.26773 3.152,0.6846 1.58313,3.18052 h 4.05053 v -4.07906 l -2.48166,-7.25958 -1.12674,-5.89039 7.20254,-3.18052 9.6842,1.58313 6.0758,6.11859 13.73473,-1.35494 7.65893,10.88225 8.99961,0.4564 2.48166,-4.07906 3.152,-0.6846 0.4564,-4.53546 4.72087,-0.2282 2.48166,2.95233 2.48167,-5.89039 21.3794,2.95233 3.59414,-4.76366 -6.0758,-7.48778 8.10107,-17.68543 6.5322,0.45639 4.50693,-10.88224 -8.9996,-0.9128 -5.17727,-4.99185 -14.26245,1.65444 -18.37002,-17.75674 -6.47515,5.74776 -19.63939,-8.91402 -24.08927,11.79504 -0.67033,8.38631 5.63366,6.57499 -10.98208,6.20416 -14.24818,-0.31377 -2.98085,-4.37857 -11.16749,-0.61329 -10.58274,6.80319 -0.2282,9.29911 9.85535,7.91566 0,0 z","name":"Kazakhstan"},"tm":{"path":"m 347.38094,294.20157 -0.88427,3.75102 h -5.91892 v 5.07743 l 6.36105,4.19316 -1.96822,5.74776 v 2.65282 l 2.63856,0.44213 3.50856,-4.63529 7.90139,-1.76854 16.88673,6.40383 0.21394,4.6353 9.42748,0.88427 10.52568,-11.0534 -1.31214,-3.53708 -7.01713,-1.54035 -19.73922,-12.82193 -0.88427,-4.6353 h -7.45926 l -3.29462,6.1899 h -3.29463 l -5.69071,0.0143 0,0 z","name":"Turkmenistan"},"uz":{"path":"m 397.39933,310.56059 4.39283,0.2282 v -7.51631 l -4.16463,-2.42461 7.01712,-8.84272 h 2.85249 l 2.85249,3.32315 7.45926,-2.86675 -10.31175,-3.53709 -0.39935,-2.13936 -2.45314,0.59902 -2.41035,4.19316 -10.39733,-0.3423 -7.6304,-10.79667 -13.4067,1.32641 -6.38957,-6.33253 -8.84272,-1.49756 -6.4181,2.61003 3.7225,12.3798 0.0428,4.16464 2.70986,0.0571 3.32315,-6.33253 8.84271,0.1141 1.31215,4.86349 18.95479,12.57948 7.33089,1.68297 2.01101,4.50693 0,0 z","name":"Uzbekistan"},"tj":{"path":"m 399.21066,300.26311 5.86186,-7.27385 h 2.21068 l 0.77017,1.62592 -2.70986,1.96821 v 1.62592 l 1.7828,1.28362 8.57173,0.51345 2.79544,-1.19804 1.26936,0.25672 0.85575,2.73839 5.09169,0.51345 2.55298,5.3912 -0.77018,1.62592 -1.01263,0.0856 -1.01263,-2.05379 -2.21068,-0.17115 -3.82234,0.51345 -0.25672,3.59414 -3.82233,-0.25673 0.17114,-4.53545 -2.79543,-2.73839 -4.25021,3.50856 0.0856,2.31051 -3.73676,1.28362 h -2.21068 l 0.17115,-7.95844 -3.57987,-2.65281 0,0 z","name":"Tajikistan"},"kg":{"path":"m 408.6524,282.24964 -0.44214,3.6084 0.35656,2.22494 12.40833,4.16463 -10.89651,4.39283 -1.24083,-1.02689 -2.35331,1.51182 0.1141,0.82722 1.2551,0.5705 7.64467,0.19967 3.87938,-1.16952 4.9776,-6.27547 6.23269,1.08394 7.5163,-10.41158 -20.11004,-2.73839 -2.78118,6.74613 -3.50856,-3.76528 -3.05216,0.0571 0,0 z","name":"Kyrgyz Republic"},"af":{"path":"m 376.29091,321.95628 2.26773,17.77101 5.64793,1.24083 0.52771,3.19479 -4.05054,3.3802 7.54484,6.09006 14.66179,-5.2771 1.16952,-6.24695 9.2278,-5.76203 3.53709,-13.34965 2.63855,-2.83823 -2.73839,-4.76365 8.92829,-5.51957 -1.141,-1.59739 -4.12184,0.25672 -0.37083,3.79381 -5.53382,-0.0571 -0.0998,-5.06316 -1.78281,-2.12511 -2.99511,2.72413 0.0856,2.49593 -4.52119,1.71149 -8.34353,-0.52771 -10.83946,11.3529 -9.69846,-0.88427 0,0 z","name":"Afghanistan"},"pk":{"path":"m 389.14137,354.46039 3.70824,5.50531 -0.35656,2.83822 -4.93481,1.95396 -0.35656,4.62103 h 5.64793 l 1.93969,-1.5974 h 10.75388 l 9.69847,8.52895 1.24083,-4.09332 h 7.23106 l 0.17115,-5.14875 -7.40221,-7.10269 1.58313,-3.90791 7.58762,-0.52771 10.22617,-21.32236 -5.64793,-4.43562 -2.11084,-7.45926 13.749,-1.24083 -8.11533,-11.55258 -4.32152,-1.16952 -1.76855,2.13937 -1.3264,0.0998 -8.11533,5.14875 2.65281,4.44988 -2.99511,3.19479 -3.70824,13.67768 -9.17075,5.86187 -1.24083,6.40383 -14.61901,5.13448 0,0 z","name":"Pakistan"},"in":{"path":"m 457.38717,444.55625 6.5322,-3.19479 3.87938,-14.03424 -0.17115,-17.22903 22.22089,-23.98943 v -5.69072 l 4.57824,-1.78281 -0.17114,-6.57498 -4.93481,-9.59863 2.82396,-5.14874 6.17564,5.69072 7.92992,0.35656 v 3.19478 l -2.4674,2.66708 0.52771,1.42625 4.23594,0.17115 0.88428,4.79218 h 1.24083 l 3.18052,-5.69072 1.58313,-14.91851 5.29137,-3.73677 0.17115,-5.14874 -2.11084,-4.09332 -3.35168,-0.17115 -13.12144,8.67157 0.82722,5.57661 -9.21354,-0.0285 -3.25184,-3.97922 -1.76854,0.2282 0.59902,5.53382 -19.92463,-1.42624 -12.35128,-5.5053 -0.65607,-6.77466 -8.22943,-5.10596 -0.0998,-10.51142 -5.64793,-6.46089 -12.97882,1.24083 1.41198,5.64793 6.36105,5.14874 -10.99634,22.50614 -7.35942,0.55624 -1.21231,2.70986 7.24532,6.70335 -0.35656,6.77466 -7.40221,-0.1141 -0.7987,3.36594 6.14712,-0.27099 0.17115,2.66708 -4.4071,2.31051 2.82396,5.33416 5.46252,1.7828 3.35167,-2.48166 1.58314,-4.43562 1.93969,-0.88427 2.29625,2.31051 -0.69886,5.69072 -1.58313,2.66708 0.35656,4.62103 23.4332,48.63493 0,0 z","name":"India"},"np":{"path":"m 457.68668,344.07733 0.65607,6.09007 11.52406,5.22005 18.46986,1.3692 -0.69886,-4.46415 -12.33701,-3.39446 -10.46864,-6.23269 -7.14548,1.41198 0,0 z","name":"Nepal"},"bt":{"path":"m 492.21606,351.9502 2.21067,3.02364 7.47353,0.0571 -0.75591,-4.13611 -8.92829,1.05542 0,0 z","name":"Bhutan"},"bd":{"path":"m 492.45852,359.12421 -1.86838,3.3802 4.84923,9.21354 0.14262,7.18827 0.88427,1.92543 5.69072,0.0998 3.22331,-3.09495 2.33904,1.41198 0.47066,4.37857 1.86838,-1.16952 0.1141,-5.59088 -1.56887,-0.18541 -0.9841,-4.74939 -3.96496,-0.14263 -0.98411,-2.63855 2.42461,-3.23758 0.0428,-1.59739 h -7.04565 l -5.63366,-5.19153 0,0 z","name":"Bangladesh"},"mm":{"path":"m 540.76542,431.2066 -3.9507,-6.33252 2.86675,-4.02201 -2.70986,-4.97759 -2.55298,-0.48493 -0.48493,-8.35779 -3.82233,-7.40221 -1.11247,1.76855 -2.55298,4.33578 -3.19479,0.48492 -1.59739,-2.09658 -0.7987,-5.63366 -2.39609,-4.50694 -9.75551,-9.19927 2.39609,-1.58313 0.44214,-6.66056 3.56561,-5.99023 1.54034,-14.90425 5.16301,-3.52283 0.17115,-5.43399 3.09495,1.0269 4.87775,7.05991 -3.62266,7.75877 2.43888,6.09006 6.03301,2.36756 1.09821,6.63204 8.10107,1.2551 -2.2392,3.86512 -10.21191,4.02201 -1.11247,6.58925 7.50204,9.64141 0.31377,5.14874 -1.75428,1.76854 0.15689,1.61166 5.59088,8.20091 0.15689,8.51468 -1.64018,2.96658 0,0 z","name":"Myanmar"},"th":{"path":"m 541.6069,383.88381 4.62103,5.94744 v 7.23106 l 1.59739,0.7987 7.34516,-3.53709 1.44051,0.48493 8.7714,10.12633 -0.31377,6.91729 -2.86675,-0.48493 -2.55298,-1.61165 -1.91117,0.15688 -3.35167,5.61941 0.64181,3.05216 2.70986,1.44051 -0.15688,3.3802 -1.91117,0.96984 -6.54646,-4.50693 v -4.02201 l -2.70987,-0.15689 -1.11247,1.76855 -0.5705,17.9992 4.23595,7.73025 7.50205,7.23106 -0.31378,2.09657 -3.99348,-0.15688 -3.66545,-5.46252 h -3.8366 l -4.79218,-3.86512 -1.44051,-4.02201 2.06806,-3.3802 0.71312,-3.05216 2.25347,-3.99349 -0.0998,-9.18501 -5.5053,-7.95844 -0.2282,-0.96985 1.7828,-1.79707 -0.41361,-6.31826 -7.33089,-9.28485 0.85574,-5.34842 9.08518,-3.8366 0,0 z","name":"Thailand"},"kh":{"path":"m 556.51115,425.2449 5.83334,6.23269 10.85372,-8.04402 0.95559,-12.69357 -5.60514,3.86512 -2.90954,-1.62592 -3.9507,-0.52771 -2.21068,-1.55461 -1.06968,0.0571 -2.89528,4.7494 0.47066,2.19641 2.93807,1.64018 -0.35656,4.46415 -2.0538,1.24083 0,0 z","name":"Cambodia"},"la":{"path":"m 549.36567,373.12993 -3.45151,1.75428 -2.86675,8.35779 4.79218,6.10433 -0.7987,6.74614 0.7987,0.32803 7.9727,-3.86512 10.69684,11.95193 -0.25673,7.53057 2.32478,1.25509 5.74777,-4.66382 -0.47066,-3.69397 -16.58723,-15.76 0.15689,-2.41035 2.06805,-1.44051 -1.4405,-4.02201 -6.86024,-1.12673 -1.82559,-7.04565 0,0 z","name":"Lao People's Democratic Republic"},"vn":{"path":"m 563.04335,432.3476 1.69723,2.66708 0.31378,3.05216 4.46414,0.48492 5.41973,-7.23106 5.10596,-1.4405 2.70986,-7.38795 -1.26936,-11.89488 -5.26284,-7.23106 -5.54809,-4.43562 -7.05991,-12.12307 5.06317,-8.4719 -7.24532,-8.315 -5.80482,-0.25673 -5.22005,2.80971 1.5546,6.71761 6.96008,1.22657 1.86838,5.17726 -2.45314,1.5974 0.15688,1.28362 16.3305,15.97394 0.64181,4.69234 -0.98411,14.83294 -11.43848,8.27222 0,0 z","name":"Vietnam"},"ir":{"path":"m 312.86582,308.97746 -1.74002,1.81133 0.17115,2.86675 2.1679,3.0379 7.68745,8.41484 -1.16952,3.36594 h -1.34067 l -0.67033,3.36594 4.35004,5.56235 4.00775,0.3423 8.02976,11.11044 4.50693,0.3423 3.50856,2.52445 0.17115,5.04891 13.87736,8.0868 h 5.17726 l 3.18053,-2.6956 4.00775,-0.17115 2.33904,5.39121 14.98982,2.08231 0.44214,-5.5053 4.96333,-1.79707 0.2282,-1.96822 -3.9507,-5.3912 -8.79992,-7.07417 4.62103,-4.20742 -0.32804,-1.85412 -5.79055,-0.89853 -2.45314,-19.53955 -0.28525,-4.49267 -15.70295,-6.00449 -6.96007,1.56887 -3.89365,4.77792 -3.45151,-0.2282 -0.99837,0.84148 -7.68746,-0.49918 -9.69846,-7.07418 -3.6084,-3.95069 -1.65444,0.39935 -2.98086,3.40872 -5.26284,-0.99837 0,0 z","name":"Iran"},"tr":{"path":"m 297.24845,296.48356 -3.18053,3.36593 -11.6952,-0.34229 -7.01713,-4.20743 -6.84597,-0.17114 -7.85861,5.56235 -7.35942,0.3423 -0.67033,4.20742 h -8.35779 l -3.33742,3.0379 v 1.68297 l 2.01101,1.68297 v 1.85411 l -0.84148,2.19642 0.84148,1.85412 2.68134,-1.34067 2.68134,2.86675 -0.67034,2.02527 -0.99837,1.35493 1.49756,1.68297 7.35942,1.51182 5.17727,-2.19642 v -3.19479 l 2.51019,0.49919 6.01875,3.53708 6.51794,-1.01263 2.83822,-2.6956 1.83986,0.67033 v 3.0379 h 2.51019 l 2.16789,-4.20742 19.05462,-2.02526 8.31501,-1.01264 -2.19642,-2.88101 -0.0428,-3.89365 1.6687,-1.99674 -6.0758,-4.87776 0.32804,-4.20742 h -3.33742 l -5.53382,-2.70986 0,0 m -50.8884,0.72738 -0.2282,5.06317 4.42135,-1.35493 2.02527,-1.35493 -0.59902,-2.19642 -2.09658,-1.66871 -3.52282,1.51182 0,0 z","name":"Turkey"},"om":{"path":"m 353.84182,398.67397 10.53995,-6.0758 1.86838,-8.91403 -2.31052,-1.32641 0.95559,-9.55583 2.011,-1.16953 2.15363,3.3802 12.82194,6.70335 v 3.7225 l -15.5318,22.8627 -7.14549,0.24246 -5.36268,-9.86961 0,0 z","name":"Oman"},"ae":{"path":"m 347.60914,375.99668 1.24083,4.96333 14.06277,1.24084 0.98411,-10.18339 2.70986,-1.48329 0.74165,-3.7225 -4.43562,1.24083 -4.93481,7.45926 -10.36879,0.48492 0,0 z","name":"United Arab Emirates"},"qa":{"path":"m 345.64092,367.55332 -0.74165,5.71924 2.19642,1.6687 1.99674,-0.18541 0.74165,-7.20253 -1.72576,-1.24084 -2.4674,1.24084 0,0 z","name":"Qatar"},"kw":{"path":"m 332.3198,350.65232 -3.20905,-1.74002 -2.22495,2.23921 0.24247,4.4784 5.17726,1.98248 0.0143,-6.96007 0,0 z","name":"Kuwait"},"sa":{"path":"m 333.33243,359.30962 9.99797,13.93441 3.22332,2.56724 1.4405,6.24695 15.38918,1.21231 1.74002,0.9128 -1.72576,7.70172 -10.11207,5.9617 -14.79016,4.4784 -7.88713,7.70172 -9.37042,-5.46251 -5.67646,4.96333 -7.90139,-12.90751 -5.41973,-2.48167 -1.96822,-2.98085 v -6.46089 l -19.72496,-23.8468 -0.74164,-4.22169 h 5.67645 l 6.90302,-5.9617 0.24246,-2.98085 -1.96821,-1.98248 3.95069,-3.22331 8.38632,0.49918 14.30523,11.92341 8.44337,-0.38509 0.54197,2.08232 7.04565,2.70986 0,0 z","name":"Saudi Arabia"},"sy":{"path":"m 280.09073,324.92287 -0.49919,3.62266 4.02201,1.68297 -0.17115,10.04076 4.02201,-0.0856 4.02201,-3.0379 1.51182,-0.25673 9.12796,-7.25958 1.83986,-10.53995 -18.24167,1.85412 -1.92543,4.22168 -3.70823,-0.24246 0,0 z","name":"Syrian Arab Republic"},"iq":{"path":"m 305.24968,319.07527 -2.22494,10.99634 -9.21354,7.6732 0.58476,3.62266 8.9996,0.61328 14.33376,11.66668 8.01549,-0.2282 0.21394,-2.6956 2.93806,-3.152 4.10758,2.32478 0.54198,-0.51345 -7.94419,-10.56847 -3.76528,-0.2282 -5.00612,-6.43236 0.99837,-4.73513 1.52608,-0.19968 0.52771,-2.09658 -6.81744,-7.174 -7.81582,1.12673 0,0 z","name":"Iraq"},"jo":{"path":"m 283.27125,341.53862 -3.50856,12.23717 -0.15689,1.86839 h 5.51957 l 6.17564,-5.44826 0.15688,-2.06805 -2.52445,-2.58151 4.5212,-3.75102 -0.65608,-3.48003 -1.24083,0.28524 -3.76528,2.69561 -4.5212,0.24246 0,0 z","name":"Jordan"},"lb":{"path":"m 279.42039,329.64374 0.0856,2.78118 -1.16952,4.22168 4.022,0.3423 0.25673,-5.99023 -3.19479,-1.35493 0,0 z","name":"Lebanon"},"il":{"path":"m 278.1653,337.65923 -2.25347,7.17401 2.9238,8.60026 3.35168,-12.56522 v -2.6956 l -4.02201,-0.51345 0,0 z","name":"Israel"}}});
diff --git a/js/vmap/dist/maps/continents/jquery.vmap.australia.js b/js/vmap/dist/maps/continents/jquery.vmap.australia.js
new file mode 100644 (file)
index 0000000..a0ab0f6
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'australia_en', {"width":950,"height":550,"paths":{"pg":{"path":"m 484.34788,3.4935749 -1.05721,69.8328711 10.05776,-0.54289 13.22939,-15.458095 11.11497,0.542891 7.1433,6.400394 2.37157,19.715499 22.74426,12.000739 5.82893,-2.142989 v -7.200443 l -18.25827,-15.200936 -9.00055,-20.801281 7.1433,-3.457356 -5.28604,-11.457848 -10.57208,-0.257159 -2.65731,-12.257897 -28.0303,-18.9154509 -4.77172,-0.8000492 0,0 m 79.20488,2.0286963 -2.51444,3.5716485 13.7437,12.1721783 1.88583,7.143297 3.74309,-0.428598 0.4286,-7.343309 -4.17169,-3.771661 -13.11509,-11.3435558 0,0 m 6.88614,17.2296328 -2.71446,0.62861 -1.65724,7.343309 -5.20032,3.371636 -15.62954,2.743026 0.62861,5.886077 16.45816,-0.828622 10.42921,-6.514687 -0.62861,-11.343556 -1.68581,-1.285793 0,0 m 18.54399,12.800788 3.54308,9.85775 6.25753,6.086089 1.88583,-1.685818 -0.62861,-6.514687 -7.08615,-8.60053 -3.97168,0.857196 0,0 z","name":"Papua New Guinea"},"au":{"path":"m 222.64605,231.19331 -1.00006,72.51875 -11.14354,8.17193 -1.00007,7.1433 15.20094,10.20063 37.5166,-7.1433 h 19.25833 l 7.08615,-10.2292 42.57405,-8.17193 30.40187,9.20056 -2.0287,12.2579 4.05739,12.2579 23.31573,-4.08597 1.00006,6.11467 -15.20094,11.22926 5.05746,4.08596 11.14354,-4.08596 -3.02876,33.71636 21.28703,16.34386 12.17217,-4.08596 6.08609,6.11466 35.4879,-5.1146 33.45921,-54.14619 12.17217,-3.05733 24.31579,-44.94563 6.08609,-38.80239 -15.20094,-19.40119 6.08609,-4.08597 -12.17218,-37.80232 -13.17224,-9.20057 2.0287,-51.06029 -12.17218,-9.20056 -3.02876,-28.601766 h -6.08609 l -20.28696,67.404146 -11.14354,1.02864 -25.34442,-25.54443 14.20087,-37.80233 -26.34448,-5.114599 -29.40181,8.171929 -8.11478,23.48716 -13.17224,3.05733 -1.00006,-16.34386 -53.7176,32.68773 1.00006,12.2579 -8.11478,11.22926 h -20.28696 l -43.60269,18.37256 -15.22951,40.97395 0,0 m 184.49708,195.09773 -5.05746,20.42983 1.00006,14.28659 15.20094,-1.02863 17.22963,-26.5445 -28.37317,-7.14329 0,0 z","name":"Australia"},"nz":{"path":"m 656.52991,385.43138 3.02876,33.71636 -4.05739,15.31523 -15.20094,11.22926 1.00006,13.28653 v 14.2866 l 4.05739,5.1146 41.57399,-35.74506 v -8.17193 H 676.7883 l -14.20087,-48.00296 -6.05752,-1.02863 0,0 m -30.40187,73.54738 8.11478,15.31523 -22.31566,21.45847 -2.02869,11.22926 -15.20094,2.0287 -25.34442,23.48716 -23.31572,-11.22927 -2.02869,-8.17193 42.57405,-18.37256 39.54529,-35.74506 0,0 z","name":"New Zealand"},"nc":{"path":"m 638.30022,209.73485 -1.00006,5.1146 13.17223,18.37256 7.08616,3.05733 1.00006,-7.1433 -20.25839,-19.40119 0,0 z","name":"New Caledonia"},"sb":{"path":"m 606.26967,50.23931 0.4286,6.514687 3.97167,3.771661 3.74309,-2.314428 -3.34306,-6.943285 -4.8003,-1.028635 0,0 m 5.00031,16.172425 -3.34306,3.571648 3.54307,6.514687 4.17169,1.25722 -0.20001,-4.40027 -4.17169,-6.943285 0,0 m 8.14336,-3.771661 2.91446,7.143297 5.62892,6.714699 3.11448,-5.028881 -4.17169,-7.143297 -7.48617,-1.685818 0,0 m 14.6009,10.714946 1.65724,8.829115 3.97168,5.457479 3.34306,-6.914712 -8.97198,-7.371882 0,0 m 4.57171,19.744072 -1.45723,2.514441 4.80029,6.314677 3.34306,0.20001 -2.08584,-8.200505 -4.60028,-0.828623 0,0 m -10.62923,12.572208 -5.00031,2.31442 4.3717,6.08609 3.74309,-2.11441 -3.11448,-6.2861 0,0 z","name":"Solomon Islands"},"vu":{"path":"m 678.95986,143.30218 -3.54307,4.74315 1.4858,5.34319 1.77154,1.20007 3.22877,-4.17168 -2.94304,-7.11473 0,0 m 1.77154,14.54376 0.28573,3.85738 3.82881,1.20007 2.65731,-1.48581 -2.65731,-4.17168 -4.11454,0.60004 0,0 m 5.60035,34.45926 -1.77154,2.68588 2.6573,2.97161 4.42885,-1.4858 -5.31461,-4.17169 0,0 z","name":"Vanuatu"},"fj":{"path":"m 758.25046,186.36198 -3.54308,4.74315 -0.28573,5.34318 4.11454,4.17169 -0.28573,-14.25802 0,0 z","name":"Fiji"}}});
diff --git a/js/vmap/dist/maps/continents/jquery.vmap.europe.js b/js/vmap/dist/maps/continents/jquery.vmap.europe.js
new file mode 100644 (file)
index 0000000..4279958
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'europe_en', {"width":950,"height":550,"paths":{"ee":{"path":"m 579.52752,247.70418 -14.10713,-0.50382 -8.94292,5.46651 -0.12596,4.0558 5.79401,5.46652 18.01178,3.04815 -0.62978,-17.53316 0,0 m -27.73563,10.02615 -3.90466,-0.12596 -2.26721,2.29241 1.63743,2.41836 3.90465,0.25192 2.01531,-2.92219 -1.38552,-1.91454 0,0 z","name":"Estonia"},"pt":{"path":"m 213.92602,432.50764 -3.42602,3.45121 6.14668,3.45121 0.68017,-4.81154 -3.40083,-2.09088 0,0 m 18.46523,-2.06569 -4.10618,2.74586 3.42602,2.74585 5.46651,-1.38552 -4.78635,-4.10619 0,0 m 2.72067,9.64828 -2.0405,5.51689 2.72066,3.45121 3.42602,-2.74585 -4.10618,-6.22225 0,0 m 16.39954,11.0086 -1.36033,3.45121 2.04049,2.06569 5.46652,-3.45121 -6.14668,-2.06569 0,0 m 51.94448,30.27995 -2.72066,3.45121 2.72066,3.45121 4.10619,-2.06568 -4.10619,-4.83674 0,0 m 57.31023,-63.43172 -1.56186,21.79049 -4.45886,4.03061 0.45345,2.46875 3.12372,5.16421 -2.01531,6.29783 3.35045,1.13361 7.8093,-0.90689 -0.45344,-6.29782 5.11384,-29.19673 -1.10842,-4.03061 -10.25287,-0.45345 0,0 z","name":"Portugal"},"es":{"path":"m 322.19828,524.98494 -4.40848,2.54433 2.04049,2.06568 2.36799,-4.61001 0,0 m -15.31632,0.47864 -5.46651,1.38552 2.72066,4.13138 h 4.10618 l -1.36033,-5.5169 0,0 m -12.99872,-4.13138 -3.42601,3.45121 4.78635,4.13138 2.72066,-6.19706 -4.081,-1.38553 0,0 M 404.67463,402.22769 H 372.5809 l -6.47417,-2.9222 -3.12372,0.22673 -3.7787,7.85968 1.33514,8.08642 12.26817,1.1336 1.56186,5.16422 -5.34056,30.10362 0.22673,5.39094 8.691,4.71078 10.02614,0.68016 20.05228,-4.9375 9.79942,-12.34374 0.22673,-12.57046 17.382,-15.71938 0.8817,-6.9528 -15.82015,-0.22672 -15.82014,-7.68335 0,0 m 32.09373,30.75859 -4.00542,1.36033 0.8817,3.60235 h 5.794 l 2.44356,-2.69547 -5.11384,-2.26721 0,0 z","name":"Spain"},"is":{"path":"m 298.87112,181.32508 -4.93749,-2.79624 -6.65051,4.20695 -5.71843,5.29018 0.15115,2.94738 7.40625,0.93208 -0.45345,5.29018 -2.61989,2.64508 0.62978,1.71301 7.40624,0.47864 v 8.56504 l 10.65593,1.86416 6.32302,3.57717 7.10395,0.30229 12.19259,-6.0711 9.42155,-12.44451 0.15115,-8.4139 -5.71843,-4.83673 -4.78635,-4.0558 -2.16645,1.56186 -3.24968,4.20695 -3.70312,-0.47864 -3.70312,-4.0558 -4.78635,0.45345 -6.9528,5.76881 -4.18176,4.50924 -2.3176,-2.0153 -0.15115,-4.98788 2.3176,-1.56187 -1.66263,-2.5947 0,0 z","name":"Iceland"},"no":{"path":"m 505.18796,21.738124 -4.15657,-4.181757 -9.22002,4.484053 h -16.92856 l -2.67028,9.874994 9.49713,8.388706 4.15657,-0.604591 5.94514,-10.17729 5.03827,3.602358 -3.57717,7.179523 -1.78858,10.479586 4.15656,6.574932 8.91773,-14.963639 11.588,-14.081943 -4.45886,-3.879462 -6.49936,-2.69547 0,0 m 5.03826,-17.9614046 -7.43143,6.8772276 4.45886,6.877228 h 8.01084 l 3.27487,4.484054 9.79942,5.088644 11.2857,-6.574932 7.73374,-6.574932 -2.67028,-5.3909405 -7.73374,-4.4840534 -5.64285,5.0886449 -3.85427,-4.7863491 -2.97257,0.3022957 -3.85428,8.3887064 -5.64285,-5.6932361 -0.60459,-3.8794619 -4.15657,0.2771044 0,0 m 16.92856,30.8341646 -5.94515,5.390941 -5.03826,3.879462 2.36799,4.181757 4.76115,1.486288 7.73374,-3.602358 3.57716,-4.484053 -3.27487,-5.390941 -4.18176,-1.461096 0,0 m 46.55355,108.498976 5.08864,-3.72831 -0.45344,-4.18176 -3.22449,-1.86416 0.45344,-5.11383 h 2.77105 v -2.79624 l -12.01626,-3.24968 -18.01178,1.86416 -1.83897,7.91007 -4.15657,-1.38552 -2.77104,-4.66039 -8.79177,0.45344 -0.93208,8.84215 -4.15656,1.86416 -2.3176,-4.6604 -18.49043,14.88807 3.70313,4.18176 -6.92761,3.24967 -15.71938,31.18685 -5.54209,3.72831 0.45344,2.79624 5.54209,2.79623 -1.38552,6.04592 -9.24521,-0.47864 -2.77105,-3.24968 -5.99553,6.978 -3.70312,2.79623 -0.93208,6.52455 -3.22449,1.86416 -8.31313,1.86416 -4.15657,13.04909 2.77105,21.41262 3.22449,9.77423 3.70312,3.72831 8.31313,-0.45344 12.01626,-11.63839 4.61001,-7.91007 1.38552,11.63839 7.85969,-13.95599 0.45344,-39.12211 6.39859,-4.03061 1.91454,-21.58895 19.39731,-27.93716 9.24521,-3.24968 4.15657,-5.11384 13.85522,3.24968 6.92761,4.18176 2.3176,-11.63839 11.56281,-6.97799 6.95281,12.11702 0,0 z","name":"Norway"},"ge":{"path":"m 674.47357,400.11162 8.23756,10.75669 10.27805,4.73596 6.32302,-0.0252 10.85746,-2.94738 2.72066,-4.25733 -32.11892,-12.01626 -6.29783,3.75351 0,0 z","name":"Georgia"},"am":{"path":"m 710.39638,414.54624 12.09183,15.76976 -3.55198,4.15656 -8.56504,-1.48628 -10.63073,-9.52232 0.5794,-6.24744 10.07652,-2.67028 0,0 z","name":"Armenia"},"az":{"path":"m 714.65371,409.07972 -2.54432,4.33291 11.86511,15.56823 4.13137,-1.33514 6.80166,7.12914 2.94738,-12.49489 7.38105,1.18399 -0.30229,-3.57717 -12.14221,-10.63073 -2.3176,6.24745 -15.82015,-6.42379 0,0 z","name":"Azerbaijan"},"cy":{"path":"m 643.61421,464.8029 3.09854,2.24203 -9.59789,9.09406 -4.58482,-0.15115 -3.40083,-2.39317 0.45344,-4.45886 6.95281,-0.45345 7.07875,-3.87946 0,0 z","name":"Cyprus"},"gb":{"path":"m 399.03178,261.35787 -4.61001,6.978 1.83896,2.79623 h 10.63074 v 4.6604 l -2.77105,3.72831 1.83897,9.77423 5.99553,11.63838 4.61001,10.70631 7.38105,2.79624 3.22449,5.59247 -0.45344,5.11383 -4.61001,2.79624 -0.45345,2.3176 3.22449,1.86416 -2.77104,3.72831 -6.47417,2.79624 -12.4697,-1.38553 -19.4225,8.84215 -6.47417,-3.24967 18.49043,-10.70631 -2.3176,-1.38552 -9.69866,-0.93208 5.99553,-8.84215 0.93208,-7.45663 7.85969,-0.93208 -1.38552,-14.43462 -9.24521,-0.45344 -2.77105,-3.24968 0.45345,-10.70631 -5.54209,0.45344 5.54209,-18.61638 10.17729,-7.45662 3.27487,3.22448 0,0 m -19.39731,31.21204 -8.31314,0.93208 -0.45344,7.45663 5.54209,3.72831 5.99553,-1.38552 2.3176,-4.18176 -5.08864,-6.54974 0,0 z","name":"United Kingdom"},"ie":{"path":"m 382.38032,305.36709 -2.29241,15.11479 -20.32939,7.45663 h -6.47416 l -4.61001,-3.24968 v -2.79624 l 10.17729,-6.52454 -2.77105,-5.59248 0.45344,-7.91007 8.79177,0.45345 4.03061,-9.47194 -0.52902,8.4139 6.82685,5.41613 6.72608,-1.30995 0,0 z","name":"Ireland"},"se":{"path":"m 529.01894,149.25654 4.9375,4.55963 h 9.24521 l 5.08864,9.77423 1.38553,16.75222 -12.4697,8.84215 v 8.84215 l -8.79177,12.11702 -5.08865,0.45344 -6.92761,11.63839 0.45345,11.18494 12.01625,8.84215 -0.93208,5.11384 -4.61001,6.97799 -6.92761,6.04591 0.45345,20.0271 -10.63074,3.72831 -3.70312,7.91007 h -5.08864 l -2.77105,-13.95598 -11.56281,-17.73469 9.49713,-15.89571 0.65497,-39.27326 6.54974,-3.60236 1.58705,-22.47064 18.66676,-26.72799 8.96811,-3.14891 0,0 m 1.93973,114.84719 -5.31536,4.20695 2.67027,6.17187 4.71078,-4.58482 -2.06569,-5.794 0,0 z","name":"Sweden"},"fi":{"path":"m 551.86746,180.393 5.2146,2.29241 3.22449,6.04591 -3.22449,4.18176 -16.17282,17.6843 -2.77104,9.32079 3.70312,13.50254 12.4697,9.32079 16.62626,-7.91008 13.40178,-1.86415 12.4697,-20.0271 -9.24521,-21.89124 -8.79177,-20.95918 1.38552,-13.50254 -5.54209,-0.93208 -1.4359,-9.8498 -7.45663,-12.1674 -8.26275,5.71843 -3.24968,13.27582 -8.76657,-5.26499 -12.1926,-2.97257 -2.72066,3.1741 4.68558,4.23214 8.53986,-0.15115 6.87723,11.10937 1.23437,17.63392 0,0 z","name":"Finland"},"lv":{"path":"m 580.28326,267.12668 -17.25605,-2.79623 0.37787,9.64827 15.99648,9.77423 6.54974,-1.91454 -0.37787,-7.35586 -5.29017,-7.35587 0,0 z","name":"Latvia"},"lt":{"path":"m 561.99437,275.51539 -5.41613,-0.12596 -7.43144,7.10395 h -6.29783 l 0.37787,8.89254 -3.7787,6.97799 13.60331,0.12596 3.90465,-0.50383 3.90466,4.71078 8.94291,-0.37787 8.56505,-10.90784 -0.50383,-6.47417 -15.87052,-9.42155 0,0 z","name":"Lithuania"},"by":{"path":"m 561.6165,304.71212 3.77869,6.22225 -1.51147,4.96269 0.25191,3.92985 1.38552,4.71077 7.80931,-4.43367 9.69865,0.25191 6.80166,2.79624 h 17.25604 l 5.03827,-12.06664 3.02295,-4.55962 v -3.04815 l -10.83226,-15.24075 -9.5727,-3.80388 -7.8093,-0.8817 -6.80166,2.16645 0.25191,6.85204 -9.44674,11.94068 -9.32078,0.20153 0,0 z","name":"Belarus"},"pl":{"path":"m 563.6318,326.04916 2.14126,3.92985 0.50383,4.18175 -1.76339,4.0558 -4.03061,7.75893 -3.40083,1.53667 -4.40848,-1.91454 -2.64509,0.12595 -6.42378,2.41837 -7.30548,-2.16645 -11.83992,-8.38871 -11.588,-6.22225 -4.66039,-7.10395 -0.8817,-16.75222 9.06887,-7.88488 11.83992,-3.92985 4.40848,-0.50382 -1.76339,3.55197 1.13361,1.38552 19.92632,0.37787 4.28253,-0.12595 7.05356,10.80707 -1.76339,4.43367 0.75574,5.2146 1.36033,5.2146 0,0 z","name":"Poland"},"it":{"path":"m 478.23326,423.338 -6.6757,3.37564 0.8817,13.02391 5.34055,0.90688 4.00542,-3.82907 v -12.34375 l -3.55197,-1.13361 0,0 m -13.32621,-41.31375 -1.56186,3.95504 0.42826,4.30771 6.02072,7.02838 9.47193,-0.32749 20.90879,24.28443 13.0491,3.77869 7.70854,7.28029 1.83897,16.60108 4.13137,-2.41837 3.57717,-9.04368 -0.8817,-6.49936 6.12149,-0.55421 0.8817,-3.67793 -17.25605,-8.26275 -16.37435,-16.09725 -6.52455,-9.62308 -1.58706,-9.14444 8.33833,-1.99012 -2.14126,-6.02072 -5.11384,-4.30771 -4.40848,-0.20153 -6.14668,1.68781 -5.794,8.11161 -3.50159,2.3176 -5.41614,-3.32526 -5.76881,2.14126 0,0 m 50.81088,65.59818 -3.65274,-1.96492 -12.4697,1.96492 0.42825,3.37563 11.21014,5.64286 1.68781,1.83896 2.94739,0.42826 -0.15115,-11.28571 0,0 z","name":"Italy"},"fr":{"path":"m 478.91342,407.16518 -4.9123,4.9375 -0.45345,4.48405 4.00542,2.46875 1.56186,-0.22672 0.8817,-6.52455 -1.08323,-5.13903 0,0 m -43.90845,-71.19064 -5.56728,1.36033 -11.13456,12.11702 -3.35045,0.22672 -4.45886,-3.14891 -2.897,0.68016 -2.21683,6.9528 -16.27359,0.45345 0.45344,3.60236 11.13456,7.40624 12.92315,10.32844 -0.22673,12.34374 -6.90242,12.11702 14.93845,7.17952 15.16517,0.45345 4.68558,-5.39094 9.5727,0.22672 2.67028,2.46875 9.5727,-0.68017 4.91231,-6.29783 -6.24745,-7.40624 -0.45344,-4.71078 1.33514,-5.16421 -3.12373,-4.48406 -5.34055,1.56186 -0.68017,-4.03061 11.81473,-13.0239 v -7.85969 l -7.80931,-4.48406 -4.00542,-0.68016 -18.49042,-12.11702 0,0 z","name":"France"},"nl":{"path":"m 459.41535,309.7 -11.41167,5.61766 2.41837,2.19165 0.25191,5.61766 -2.41836,-0.47864 -2.67028,-4.15656 -6.3734,10.10171 9.79942,2.0405 3.65274,3.85427 1.93973,0.0504 1.28476,-8.71619 6.17187,-2.59471 -2.64509,-13.52773 0,0 z","name":"Netherlands"},"be":{"path":"m 438.05312,330.48283 -1.61225,4.03061 17.33163,11.43686 4.98787,1.18399 0.17634,-5.41613 -4.35809,-4.88712 h -2.67028 l -3.65274,-4.15656 -10.20248,-2.19165 0,0 z","name":"Belgium"},"de":{"path":"m 462.06044,308.71754 8.99329,-1.4611 v -6.34821 l 7.53221,-1.23437 4.13137,4.15656 4.3581,0.47864 6.80165,-2.94738 6.07111,1.71301 5.34056,4.6352 0.73054,17.35681 5.34056,7.10395 -7.02837,0.98246 -11.66358,7.33067 0.98246,2.44356 10.4292,9.77423 -0.73054,4.88711 -9.69866,4.88712 -8.9933,0.25191 -2.19164,4.6352 h -4.61001 l -2.19165,-4.88711 -8.01083,-1.96493 -0.25192,-8.06122 -6.80165,-4.6352 0.73055,-5.86957 -4.61001,-6.34821 1.20918,-8.31313 6.29783,-2.94739 -2.16645,-15.61861 0,0 z","name":"Germany"},"dk":{"path":"m 476.24314,267.45417 -10.45439,11.56281 -0.37787,7.53221 4.76116,12.41931 7.45663,-1.41071 -0.93208,-10.1521 5.13903,-5.74362 -0.10077,-4.50924 -3.62755,-9.39636 -1.86416,-0.3023 0,0 m 11.76435,20.50573 -2.3428,-0.10077 -3.07334,2.82143 0.37787,4.40848 7.28029,0.20153 0.37787,-4.98788 -2.61989,-2.34279 0,0 z","name":"Denmark"},"ch":{"path":"m 466.5193,362.87886 -10.98341,11.68877 0.22672,1.18399 4.50924,-1.41072 4.0558,5.64286 6.85204,-2.41837 4.73597,3.67793 1.93973,-1.10841 5.84438,-9.16964 -1.48628,-1.41071 -5.76881,-0.15115 -2.79624,-5.71843 -7.12914,-0.80612 0,0 z","name":"Switzerland"},"cz":{"path":"m 505.61621,351.51758 h 7.48182 3.67793 l 5.97034,4.25733 11.05899,-9.19483 -10.7315,-7.65816 -10.63073,-5.13903 -7.28029,1.30995 -9.87499,6.34821 10.32843,10.07653 0,0 z","name":"Czech Republic"},"sk":{"path":"m 524.28297,357.21081 1.73821,1.53667 0.22672,2.6199 19.22097,-0.42825 14.2079,-6.12149 -0.22673,-6.22226 -2.72066,1.20919 -3.90465,-2.09088 -2.39317,-0.10077 -6.29783,2.51913 -8.56505,-2.06568 -11.28571,9.14444 0,0 z","name":"Slovakia"},"at":{"path":"m 485.96699,364.74301 -1.63743,3.40083 1.41071,2.41837 5.86957,-1.20919 h 4.98788 l 5.41614,4.58482 11.51242,-2.09088 8.46429,-5.03826 2.16645,-3.40082 -0.32749,-4.38329 -7.60777,-5.69324 -10.20249,0.10077 -0.8565,5.794 -10.7315,5.23979 -8.46428,0.2771 0,0 z","name":"Austria"},"hu":{"path":"m 526.55019,363.43307 -2.92219,4.58482 0.22672,7.00318 4.66039,2.39317 14.33386,0.42826 19.97671,-16.8278 0.10077,-3.72831 -2.16646,-1.08323 -14.43462,6.54974 -19.77518,0.68017 0,0 z","name":"Hungary"},"si":{"path":"m 521.66308,369.45379 -6.39859,3.82908 -11.94069,2.6199 2.39318,6.90241 8.36351,0.10077 7.70854,-6.44898 -0.12595,-7.00318 0,0 z","name":"Slovenia"},"hr":{"path":"m 523.72877,377.43944 -8.89254,7.33067 h -9.01849 l -1.08322,6.34821 4.13137,1.08322 2.06569,-3.07334 3.24968,2.84662 2.5947,9.06887 17.81026,8.31314 1.76339,-2.01531 -18.06217,-18.64157 1.83897,-3.40083 17.15528,-0.65497 1.7382,-5.46651 -11.18494,0.32748 -4.10618,-2.06568 0,0 z","name":"Croatia"},"ba":{"path":"m 521.66308,386.96175 -0.93208,1.53667 16.90337,17.43239 6.19706,-9.11926 -0.22672,-3.60235 -5.41613,-6.57494 -16.5255,0.32749 0,0 z","name":"Bosnia and Herzegovina"},"mt":{"path":"m 516.14618,466.38995 -4.20695,0.85651 0.15115,4.66039 3.7787,1.25957 1.68781,-1.41072 -1.41071,-5.36575 0,0 z","name":"Malta"},"ua":{"path":"m 573.98543,321.99336 -7.30548,4.10618 1.81378,7.75893 -6.75128,14.23309 0.0504,6.27263 3.1741,2.01531 20.35458,1.00765 5.69324,-4.71077 6.09629,2.04049 8.74139,11.66358 -6.39859,11.48724 7.60777,2.21683 9.95057,-11.46204 5.69324,1.03284 5.29017,3.67793 -4.66039,6.14668 6.29783,9.82461 h 6.70089 l 3.45121,-6.54974 7.10395,-1.4359 0.20153,-5.31537 -13.20025,-2.0405 0.40306,-5.71842 h 12.79719 l 13.80483,-11.05899 6.0963,-5.31537 1.00765,-16.77741 -27.20661,-2.44356 -11.15975,-15.74456 -7.70854,-2.64509 -9.34598,0.40306 -4.20695,10.40401 -19.1454,0.25191 -6.22225,-2.87181 -9.01849,-0.45344 0,0 z","name":"Ukraine"},"md":{"path":"m 587.03453,358.67191 7.80931,12.01625 -0.65498,6.80166 2.79624,0.12595 6.62531,-11.21013 -7.96045,-9.87499 -4.50925,-1.86416 -4.10618,4.00542 0,0 z","name":"Moldova"},"ro":{"path":"m 565.44558,358.3948 -0.65498,3.72832 -14.58577,12.14221 12.1926,17.88583 7.8093,5.46652 h 14.05676 l 4.6352,-3.87947 6.22225,-0.80612 4.6352,2.79624 8.21237,-9.34598 -1.58705,-4.68558 -8.33833,-2.14126 -5.69323,-0.27711 0.2771,-8.01084 -7.55739,-11.89029 -19.62403,-0.98247 0,0 z","name":"Romania"},"rs":{"path":"m 548.74374,375.87757 -5.16422,3.87947 h -2.51913 l -1.71301,5.34055 6.0963,7.07876 0.40306,5.61766 -7.5574,10.68112 1.05804,3.1993 4.38329,0.80612 3.45121,-4.68558 1.86415,-0.12596 3.17411,3.07334 9.67346,-2.94738 -0.80612,-13.75446 -12.34374,-18.16294 0,0 z","name":"Serbia"},"bg":{"path":"m 563.58142,395.65275 0.40306,12.54528 4.23214,8.81696 15.89572,0.2771 7.15433,-5.06345 7.02838,-2.79624 -1.71301,-8.01084 1.58705,-4.28252 -3.57717,-1.86416 -4.9123,0.40306 -3.85427,3.87947 -16.17282,0.12595 -6.07111,-4.03061 0,0 z","name":"Bulgaria"},"al":{"path":"m 544.88947,414.21875 v 11.61319 l 3.32525,6.27264 2.39317,-0.2771 4.10619,-7.48182 -2.39318,-3.35045 -0.93207,-8.28794 -3.17411,-2.94738 -3.32525,4.45886 0,0 z","name":"Albania"},"mk":{"path":"m 562.27147,409.81027 -8.48947,2.79624 0.40306,7.20471 1.99011,2.54432 10.07653,-4.68558 -3.98023,-7.85969 0,0 z","name":"Macedonia"},"gr":{"path":"m 551.66593,433.96874 -0.2771,3.35044 11.66357,5.86958 5.56728,2.14126 -2.92219,3.07334 -6.49936,0.65497 -0.93208,2.94739 2.24203,5.06345 7.28029,3.87946 3.1741,0.27711 0.40306,-8.69101 4.76116,-5.74362 -12.99871,-15.3667 1.71301,-5.2146 3.04814,-0.12595 4.63521,3.72831 2.92219,-1.46109 0.93208,-5.21461 13.65369,0.12596 0.52901,-8.01084 -5.69323,4.00542 -16.70184,-0.40306 -10.85746,5.61766 -5.64285,9.49713 0,0 m 25.31727,32.72351 4.10618,0.12596 1.71301,2.54432 h 5.97034 l 3.98023,-1.4611 1.33514,1.61225 -2.64509,3.4764 -11.66358,0.40306 -2.11607,-2.79624 -2.24202,-1.33514 1.56186,-2.56951 0,0 z","name":"Greece"}}});
diff --git a/js/vmap/dist/maps/continents/jquery.vmap.north-america.js b/js/vmap/dist/maps/continents/jquery.vmap.north-america.js
new file mode 100644 (file)
index 0000000..f9c5a7c
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'north-america_en', {"width":950,"height":550,"paths":{"mx":{"path":"m 330.70592,371.79351 8.52959,26.86025 -3.97341,2.22511 0.44149,5.3332 7.50533,5.77469 v 10.68406 l 9.27129,8.90044 -3.97341,-26.24217 -5.29788,-17.35939 1.32447,-12.00853 4.4149,0.44149 1.76596,4.00873 -1.76596,10.22491 22.95748,44.92603 v 16.01726 l 18.54259,21.79195 20.30854,9.34193 8.38831,-4.89171 11.92023,9.78342 7.06384,-7.11682 -3.09043,-8.01745 10.15428,-3.10809 3.09043,1.78361 3.09043,-3.10809 h 4.85639 l 8.8298,-15.57577 -4.4149,-4.00872 -17.21811,4.00872 -3.97342,11.56704 -10.15427,1.78362 -11.92023,-4.89171 -5.29788,-16.90024 4.00873,-21.31514 -8.19406,-5.10362 -3.90277,-20.46748 -3.26702,-1.39511 -5.96895,6.05724 -6.85193,-3.65553 -2.68426,-13.65088 -27.14281,-2.84319 -14.02172,-10.54279 -13.35066,0.68873 0,0 z","name":"Mexico"},"gl":{"path":"m 655.00687,62.11471 -2.40171,3.832134 4.32661,4.326603 -1.9249,4.326603 6.2515,8.158736 7.68193,-2.401706 10.08363,-0.953618 11.53172,12.485339 7.68193,20.644079 -6.23384,12.96215 8.63554,-1.44809 4.80342,2.87851 0.4768,6.2515 -10.56044,0.47681 5.75703,5.75703 7.20512,1.44809 -15.84066,21.12089 -1.9249,12.96214 3.35532,10.56045 -2.4017,6.2515 4.3266,13.43895 8.15874,9.13002 2.4017,-0.47681 5.28023,-1.44809 0.4768,7.68193 3.35533,4.80341 6.23384,-0.47681 4.80341,-17.76556 14.41024,-17.76556 21.61535,-8.63555 13.43896,-16.81194 6.23384,2.87852 h 12.96215 l 10.56044,-10.56044 12.96215,-5.28023 1.44809,-8.15873 -8.15874,-7.20512 -7.20512,-2.40171 -3.84979,-10.08363 9.13001,-5.28022 14.41024,7.68193 4.80341,-5.28023 -7.68193,-4.3266 16.33514,-22.092161 -2.87852,-9.606824 -7.68193,-0.47681 2.87852,-8.635545 9.60682,-4.326603 19.69046,-17.288752 -5.75703,-6.233839 -22.09216,1.924896 -11.53172,11.531721 6.7283,-14.887045 -7.68192,-1.924897 -4.32661,7.681927 -6.23384,-5.280221 -17.28875,1.924897 4.80342,-7.681928 28.326,-0.953618 -7.20512,-9.606824 -30.72771,-5.757031 -12.48534,1.924897 0.47681,6.251499 -12.96215,-4.326602 0.47681,-4.326603 -9.13001,1.924897 -1.9249,4.803412 9.60682,3.355324 -10.08363,7.205118 -7.20512,-8.158736 -10.08363,-2.878516 -1.44809,7.681928 h -10.08363 l -3.84979,-8.158737 -15.84067,-2.401706 -8.63554,4.326603 -0.47681,5.757031 -11.03726,-1.448088 -6.7283,2.878515 0.47681,6.728309 v 3.355325 l -12.48534,2.401706 -5.75703,-3.832134 -3.8498,6.23384 5.75703,6.251499 12.00853,-1.448087 0.95362,3.849793 -9.13001,4.326603 -8.14108,-3.885113 0,0 m 38.4273,74.91204 2.87851,4.3266 -1.44809,5.28022 h -2.87851 l -3.8498,-4.3266 0.95362,-3.35533 4.34427,-1.92489 0,0 m 120.04998,-12.00853 8.15873,2.4017 -0.47681,6.72831 -8.63554,-4.3266 -1.9249,-2.40171 2.87852,-2.4017 0,0 z","name":"Greenland"},"us":{"path":"m 210.05551,67.90706 6.11022,11.425763 3.92044,-0.88298 v -3.955751 l -10.03066,-6.587032 0,0 m -34.45388,100.5008 -0.30022,5.31554 3.81448,-0.88298 v -2.36639 l -3.51426,-2.06617 0,0 m -5.86299,2.36639 -7.62895,3.84979 1.18319,4.13235 2.9315,-2.36639 5.86299,-2.6666 -2.34873,-2.94915 0,0 m -31.69899,5.01532 -5.28022,-1.18319 -0.88298,2.36639 0.58277,4.43256 5.58043,-5.61576 0,0 m -11.16087,-0.28255 -4.99767,-2.06617 -1.76596,3.24936 3.23171,3.24937 3.53192,-4.43256 0,0 m -17.30641,-4.73277 -2.34873,-3.24937 -2.34872,0.88298 v 4.43256 l 2.64894,1.76596 2.04851,-3.83213 0,0 M 90.5,149.77698 l 2.931494,2.06617 -0.88298,2.36639 H 90.5 v -4.43256 l 0,0 m 15.06364,263.11042 -0.24723,4.11469 3.60256,2.41937 2.15447,-1.9249 -5.5098,-4.60916 0,0 m 9.34193,6.05725 -3.35532,2.41936 2.87851,3.62022 3.35533,-2.89617 -2.87852,-3.14341 0,0 m 6.72831,5.79235 -2.87852,3.86745 0.95362,2.41937 4.07937,-1.9249 -2.15447,-4.36192 0,0 m 4.78575,7.48767 -1.67766,9.6598 1.67766,3.62022 5.5098,-1.69532 2.87851,-4.83873 -6.00426,-5.56278 -2.38405,-1.18319 0,0 m 440.14795,37.80921 -4.66214,-1.5717 -3.74383,2.34872 1.87191,2.18979 6.37512,0.93596 0.15894,-3.90277 0,0 M 252.3326,52.967036 l -14.81641,3.514261 3.05512,16.688325 16.12321,4.397241 0.86532,3.514261 -23.96408,7.470012 -13.50959,22.392374 4.78575,23.71685 7.84086,5.26256 6.11023,-5.70405 1.7483,3.51426 -7.41704,8.77682 -28.76749,13.17407 -18.31301,4.39724 -0.44149,6.58703 42.27709,-12.29108 17.43003,-4.83874 16.12322,-19.76109 17.87151,-11.84959 -9.14767,15.36385 10.03065,1.32447 17.0062,-7.47001 3.05511,12.29108 11.7613,2.63128 12.20278,11.8496 0.86533,8.77682 -1.74831,2.18979 2.17214,8.33533 h 3.05511 l 0.44149,-14.05704 h 3.47894 l 0.86532,34.68346 8.72384,-7.47001 -6.11022,-36.00793 h -9.14767 L 316.80781,141.6359 366.06044,58.194278 317.2493,19.996557 262.76943,30.53934 l -2.17213,16.688325 11.76129,7.028522 -4.36192,11.425763 -15.66407,-12.714914 0,0 m 98.27569,200.348194 -1.76596,7.09916 -6.1632,-3.99107 h -3.07277 l -1.76596,7.54065 -21.56238,48.31668 5.72172,42.10049 7.04618,3.54958 1.32447,11.53172 h 14.51619 l 14.0747,10.63108 27.70792,2.6666 3.07277,14.18066 4.39724,3.10809 6.16321,-6.19852 4.83873,2.20745 4.39724,20.37918 7.47001,4.87406 6.1632,-11.53173 18.91344,-13.73917 12.30874,5.75703 10.56044,0.88298 0.44149,-6.64001 21.98621,0.44149 4.39724,4.87405 0.88298,11.07257 -2.63128,6.19853 3.07277,10.63108 h 6.60469 l 6.60469,-10.18959 -2.63128,-4.87405 -2.63128,-10.63109 3.95575,-11.97321 18.03046,-15.50513 13.63321,-3.99107 -1.76596,-12.85619 18.91343,-20.39684 18.91344,-3.10809 -3.07277,-10.61342 18.47194,-10.63108 v -14.18066 l -1.76596,-0.88298 -6.60469,2.20745 -0.88298,8.68852 -21.95089,0.26489 -17.20045,11.42577 -27.00153,8.8298 -4.30895,-5.28022 12.25577,-18.54259 -6.05724,-5.77469 -4.11469,-7.84086 -8.52959,-6.85193 -9.27129,-0.77702 -17.51833,-11.95555 -124.57084,-20.5028 0,0 z","name":"United States of America"},"bb":{"path":"m 586.02846,499.68435 -2.17213,1.57171 1.71298,3.14341 2.80788,-1.57171 -2.34873,-3.14341 0,0 z","name":"Barbados"},"tt":{"path":"m 586.32867,511.92246 -1.87191,1.73064 -2.03086,0.31787 v 2.50767 l 3.74384,3.44362 1.55404,-2.50767 0.93596,-2.82553 -0.31787,-2.34873 -2.0132,-0.31787 0,0 z","name":"Trinidad and Tobago"},"do":{"path":"m 552.54585,468.93898 -9.34193,-6.11022 -4.4149,-1.50106 -1.4834,10.59576 1.55404,2.98447 2.03085,-2.34873 5.91597,-1.5717 5.13895,1.09489 0.60042,-3.14341 0,0 z","name":"Dominican Republic"},"ht":{"path":"m 530.91284,460.00323 6.0749,0.63574 -0.72404,7.45235 -0.60043,3.92044 -7.0815,-0.38852 -1.25383,1.88958 -2.17213,-0.15893 -0.77702,-4.07937 7.47001,-0.61809 -0.45915,-4.2383 -3.42596,-1.41277 2.94915,-3.00213 0,0 z","name":"Haiti"},"cu":{"path":"m 477.91637,445.0632 v 2.24277 l 9.39491,0.1766 4.43256,-2.57831 0.68872,1.88958 9.21832,2.24277 8.19405,7.39938 -1.87192,2.5783 0.33554,2.93149 6.83426,1.71298 6.83427,-3.09043 3.07277,-3.09043 -4.43256,-2.24277 -22.86919,-13.4213 -8.01746,-0.86532 -11.81427,4.11469 0,0 z","name":"Cuba"},"bs":{"path":"m 511.04579,431.30637 -2.22511,-0.68872 -0.1766,4.29128 2.73724,2.7549 1.87192,-2.7549 -2.20745,-3.60256 0,0 m 4.43256,6.71065 -3.07278,1.71298 2.89618,4.13235 1.53639,-2.06618 -1.35979,-3.77915 0,0 m 9.90703,3.09043 -3.24936,-0.1766 0.33553,2.06618 2.38405,3.44362 2.04851,-2.24277 -1.51873,-3.09043 0,0 m -1.53638,-4.11469 -5.29788,-2.24277 -1.02426,-5.3332 2.04851,-0.86532 2.04852,4.13235 2.04851,1.55404 0.1766,2.7549 0,0 m -5.12129,-10.84299 -2.73724,-0.68873 -0.51212,-3.44362 -2.89618,-1.02426 1.87192,-1.88958 3.4083,1.20086 2.56064,1.55404 -1.69532,4.29129 0,0 z","name":"Bahamas"},"jm":{"path":"m 509.84493,467.43792 -6.14554,1.55404 v 1.71298 l 3.5849,2.06618 h 3.7615 l 2.38404,-2.7549 -3.5849,-2.5783 0,0 z","name":"Jamaica"},"ca":{"path":"m 447.68313,37.073393 0.38851,7.099161 -14.09236,14.604491 3.53192,11.831934 10.17193,-2.754898 5.88065,-8.688524 14.86938,-5.527456 12.13215,-0.794682 -9.39491,-10.26023 -4.69745,3.549581 -3.53192,-1.183194 -1.96022,-4.344262 -4.30894,-4.344263 -8.98874,0.812342 0,0 m 18.40131,-20.90897 -3.12575,5.527456 15.27555,5.527456 5.47448,-8.282354 2.34873,5.527456 h 3.92043 l 7.43469,-8.282354 -9.0064,-2.366387 -3.53192,-2.754898 -4.69745,4.732774 -14.09236,0.370851 0,0 m 26.63068,11.054912 -12.13215,5.121285 v 3.938091 l 15.66407,5.915967 -3.53192,3.938092 2.34872,5.121284 9.78342,-4.344262 h 8.22938 l 3.92043,6.304478 6.65767,-6.710649 -1.5717,-6.322138 -5.47448,1.977876 -0.77702,-7.893843 2.73724,-4.732773 h -2.73724 l -4.30895,2.754898 -1.96021,1.571704 1.18319,5.527456 -3.12575,2.366387 -4.69745,-0.388511 -1.1832,-7.099161 -9.02405,-7.046181 0,0 m 16.05258,-12.238105 -1.1832,3.938091 7.4347,3.54958 5.47447,-3.161068 -0.38851,-2.366387 -11.33746,-1.960216 0,0 m 5.86298,-6.7106493 -5.47447,1.9778753 0.38851,2.754898 12.13215,-0.794682 -0.38851,-2.7548979 -6.65768,-1.1831934 0,0 m 26.24217,6.7106493 -0.77702,2.754898 -1.96021,2.754898 v 3.938091 l 7.43469,-1.183193 7.8232,6.710649 h 2.73724 v -6.710649 l -7.8232,-8.688525 -7.4347,0.423831 0,0 m 19.97302,7.893842 3.12575,3.549581 -2.73724,4.732773 1.96021,5.121285 8.61789,-4.732774 v -3.54958 l -5.08597,-5.915967 -5.88064,0.794682 0,0 m 11.35512,-9.077036 0.38851,6.304479 h 10.5781 l 2.73724,2.366386 -0.38851,2.754899 -9.39491,1.183193 6.65767,9.077036 9.0064,1.571705 12.52066,-5.527456 -18.0128,-27.231108 -5.47447,3.5495802 0.38851,4.7327738 -6.26916,-2.366387 -2.73724,3.584899 0,0 m -91.22951,44.590498 -14.86938,3.938091 -8.61789,7.505332 0.77702,8.282354 15.66407,4.732773 -3.53192,7.893843 -11.35513,-7.099161 -3.12575,5.915967 7.4347,5.121285 -0.38851,8.282352 11.35512,3.16107 13.70385,-0.79468 2.34873,-4.34426 10.17193,11.44342 7.04618,-2.36639 1.1832,-7.89384 5.08596,3.54958 0.77702,-7.893843 -6.26915,-3.938091 0.38851,-24.847061 -5.47448,-4.344263 -5.86299,7.893843 -16.44109,-14.198321 0,0 m 47.76923,17.35939 -5.08597,-2.366387 -2.73724,3.54958 5.47448,8.688525 0.38851,8.282354 11.74364,-7.099161 V 76.542606 l 4.30894,-4.344262 -4.30894,-3.161069 h -7.04618 l -2.73724,6.710649 0,0 m 25.05897,-3.54958 -8.22937,6.710649 1.96022,8.282353 h 5.08596 l 2.34873,-4.344262 3.53192,3.54958 3.53192,-0.388511 9.39491,-7.893842 -17.62429,-5.915967 0,0 m -0.79468,-13.032787 -1.96021,3.938091 8.61788,3.161069 2.34873,-3.54958 -9.0064,-3.54958 0,0 m -5.08596,-14.993003 -8.61789,1.183193 -5.08597,4.732774 9.39491,0.388511 -2.73724,7.09916 1.96022,3.161069 2.73724,-0.388511 6.65767,-10.648741 -4.30894,-5.527455 0,0 m 14.88704,-2.754898 -4.69745,1.571704 0.77702,6.304478 7.8232,5.121285 0.38852,3.938092 -2.34873,2.366387 1.18319,7.893842 30.14494,9.854059 8.22938,2.754898 8.22937,-7.099161 -9.78342,-7.893842 -9.00639,2.366387 -12.52066,-1.183194 -4.69746,-4.732773 -1.18319,-13.015128 -7.8232,-3.938091 -4.71512,-4.308943 0,0 m 24.65281,41.040917 -8.61789,-0.794682 -10.17193,3.938091 -5.47448,7.487672 1.57171,20.520456 16.8296,0.79468 16.05258,7.89385 11.35512,13.01512 8.61789,-0.38851 -2.34873,12.22045 -7.8232,13.01513 -8.61789,3.93809 -6.26916,-1.1832 -3.12575,-2.75489 -4.69745,6.30447 1.96021,6.30448 6.65768,0.38851 8.22937,-3.93809 7.04618,18.15407 17.62429,11.44343 12.13214,-15.38152 -10.17193,-16.5647 5.88065,-6.71065 8.22937,13.80981 14.86939,-13.01513 -2.73724,-5.91597 -10.17193,3.16107 -7.04618,-19.33727 6.65767,-11.03725 -13.31534,-14.19832 -7.43469,5.12129 -7.04619,-15.38152 -14.86938,1.97788 -3.92043,-18.542585 -12.13215,8.282354 -1.18319,10.260231 h -6.65767 l 0.77702,-9.077038 9.34193,-13.809809 0,0 m 17.62428,7.09916 -3.12575,3.161069 2.73724,4.344263 12.92683,1.571704 -8.22938,-8.688524 -4.30894,-0.388512 0,0 M 592.56251,44.967236 v 3.54958 l -8.61788,1.977875 2.34872,3.938092 9.78342,3.938091 10.96662,1.183194 7.8232,5.527456 7.82321,-4.344263 -5.47448,-5.527456 h 7.04618 l 4.30894,-4.732773 10.57811,-1.571705 V 46.53894 l -5.88065,-3.938091 0.77702,-4.344262 16.44109,2.754898 24.28195,-9.465548 -9.00639,-2.754898 2.34872,-3.161069 h 18.78982 l 3.12575,-3.161069 -37.9858,-13.4212978 -9.0064,-3.1610689 -9.78342,7.0991607 -10.96662,-9.0770363 -5.88064,-0.3885112 -1.1832,7.5053315 -7.43469,-6.7106494 -8.61789,2.7548981 1.57171,4.3442623 12.92683,2.754898 -0.77702,6.304478 7.04618,4.344263 17.23577,-4.344263 0.38851,5.915967 -14.09236,6.710649 -8.61789,-6.710649 -7.8232,0.794682 7.8232,11.054912 -3.92043,1.977876 -5.88065,-5.121285 -4.30894,2.754898 3.92043,7.487671 h 6.65767 l -1.5717,7.099161 -5.47448,-0.794682 -7.04618,-7.505332 -4.66214,0.830002 0,0 m -34.89537,108.588894 -7.47001,9.39491 -0.45915,10.34853 6.53405,-3.76149 h 7.92916 l 5.59809,5.17426 5.13895,-4.23831 -17.27109,-16.9179 0,0 m 90.96461,122.20446 -18.6662,17.87152 1.87192,4.2383 22.85153,8.45895 3.26702,-5.63341 -1.87192,-9.39491 -7.47001,0.93596 -4.20298,-4.69746 6.9932,-7.04618 -2.77256,-4.73277 0,0 M 367.31428,59.624706 l 3.51426,5.315541 1.76596,7.09916 8.79448,2.20745 6.1632,-6.64001 5.28022,2.6666 14.95769,1.32447 10.56044,-4.43256 1.76596,14.622151 h 6.1632 v -6.198521 l 6.1632,0.44149 15.39918,18.171732 10.11895,6.198521 -5.28022,8.42363 2.20745,2.20745 19.76109,3.99107 0.44149,8.86512 5.28023,0.88298 1.32447,-13.29768 8.35299,-2.20745 6.1632,9.30661 13.19172,6.19852 6.60469,1.32447 4.39725,-5.31554 0.44149,-8.42363 7.9115,-4.87405 2.63128,7.09916 -7.04618,12.4147 0.88298,6.19852 3.95575,-6.19852 7.9115,-7.09916 0.44149,-9.30661 -4.39724,-7.09916 1.32447,-5.757031 10.56044,-5.31554 4.83873,3.54958 0.88298,31.027921 7.47002,-6.64001 4.39724,2.6666 -6.16321,10.63108 7.91151,1.76596 11.44342,-17.73024 9.67746,10.18959 -3.95575,18.17173 -9.67746,5.31554 -9.23597,-4.43256 -16.70599,3.54958 1.76596,5.75703 -4.39724,7.09916 -13.63321,3.10809 -15.39918,11.97322 -13.63321,18.17173 -1.76596,5.75703 9.23597,3.54958 3.51426,8.86512 12.75024,12.85619 20.2379,8.86512 -4.39724,20.37918 -0.44149,5.75703 5.28022,3.54958 7.04618,-9.30661 0.88298,-17.73024 11.00194,-0.44149 5.28022,-10.18959 0.88298,-15.50513 14.0747,-27.47834 17.58897,6.19852 9.23597,12.85619 -3.95575,12.85619 7.04618,3.99107 17.14747,-11.53172 4.83873,31.46941 15.84067,19.05471 0.44149,9.7481 -17.58897,4.43256 -8.35299,8.86512 -17.58896,-3.99107 -8.79449,-0.44149 -15.39917,11.97321 9.23597,-2.20745 11.44343,-2.20745 2.20745,2.6666 -3.07277,9.7481 0.44149,8.86513 5.28022,3.54958 5.28022,-1.32447 2.64894,-3.99107 h 3.51426 l -5.72171,10.63108 -11.00193,0.44149 -4.83874,7.09916 h -6.1632 l -1.76596,-5.31554 8.79448,-8.86512 -10.56044,3.54958 -0.47681,-15.06365 -3.03745,-1.76596 -9.23597,3.99107 -0.88298,7.54065 h -21.12089 l -18.03045,12.41471 -24.19366,7.98214 -2.63128,-3.54958 12.18513,-18.18939 -6.92257,-6.65768 -4.39724,-8.44129 -8.95342,-6.83426 -9.60682,-0.79468 -17.21811,-12.06151 -124.87106,-20.52046 -2.06617,-8.45895 -11.44342,-10.63108 v -8.86512 l 1.76596,-7.98214 -0.88298,-4.43256 -4.39724,-4.43256 -0.88298,-7.09916 11.44342,-7.98215 -7.04618,-38.10942 -9.67746,-0.44149 -8.79449,-11.53172 48.31668,-82.099494 0,0 m -43.07178,140.835334 -3.00213,5.75703 1.04192,4.07937 1.96021,1.21851 -0.45914,1.66 -2.1015,0.60043 0.60043,6.05724 2.26043,2.27809 1.80128,-1.96021 -2.26043,-5.89831 1.34213,-4.69745 3.30234,-4.39725 -2.4017,-4.07936 -2.08384,-0.61809 0,0 m 9.9247,34.50686 -2.70192,1.05958 4.96235,5.75703 1.20085,6.81661 4.96235,5.29788 4.20299,-0.75936 v -6.95789 l -5.10363,-3.17873 -7.52299,-8.03512 0,0 z","name":"Canada"},"gt":{"path":"m 432.05438,488.50582 10.47215,7.66427 10.56044,-13.12108 -1.80128,-2.71958 -3.60256,-0.12362 v -7.68193 l -2.70192,-1.64234 -8.1764,2.43703 3.12575,7.20511 -7.87618,7.98214 0,0 z","name":"Guatemala"},"hn":{"path":"m 454.4291,483.66709 16.31747,-0.61808 4.83873,5.75703 -3.01979,-0.68873 -5.81001,0.24724 -7.59363,7.13448 -3.24937,7.22278 -2.13681,-1.13022 -0.0177,-7.9115 -4.69745,-3.14341 5.36852,-6.86959 0,0 z","name":"Honduras"},"sv":{"path":"m 444.00993,496.89414 8.30002,4.13234 -0.12362,-6.55171 -4.25597,-2.59596 -3.92043,5.01533 0,0 z","name":"El Salvador"},"ni":{"path":"m 472.42423,489.54774 3.86746,0.77702 0.12361,7.92917 -4.50319,12.85619 -12.13215,-1.20086 -2.70192,-6.19852 3.60256,-7.52299 6.83426,-6.35746 4.90937,-0.28255 0,0 z","name":"Nicaragua"},"cr":{"path":"m 471.78849,512.27565 2.45468,4.80341 1.99554,2.64894 -2.68426,7.96448 -5.12129,-3.60256 -8.37065,-7.66426 v -5.06831 l 11.72598,0.9183 0,0 z","name":"Costa Rica"},"pa":{"path":"m 477.45722,520.45205 -2.5783,8.05278 8.51193,2.20745 5.28022,1.04191 0.90064,-6.23384 5.66873,-2.86085 5.03299,2.59596 1.97787,3.16107 2.40171,-0.28256 1.88958,-5.73937 -6.28682,-2.59596 -4.76809,-2.59596 -4.7681,3.24937 -5.66873,2.86085 -5.79235,-2.33107 -1.80128,-0.52978 0,0 z","name":"Panama"},"bz":{"path":"m 449.14888,472.40027 -0.0883,6.44575 h 1.48341 l 5.05064,-9.43023 h -3.42596 l -3.01979,2.98448 0,0 z","name":"Belize"}}});
diff --git a/js/vmap/dist/maps/continents/jquery.vmap.south-america.js b/js/vmap/dist/maps/continents/jquery.vmap.south-america.js
new file mode 100644 (file)
index 0000000..cb1690f
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'south-america_en', {"width":950,"height":550,"paths":{"fk":{"path":"m 534.552,493.51923 -6.16906,-0.68024 -6.14561,4.12835 4.45674,4.83204 7.85793,-8.28015 0,0 m 6.14561,-3.09626 -2.04072,6.54437 -5.81721,5.16043 0.35184,1.71233 9.92211,-3.79996 4.10489,-5.16043 -6.52091,-4.45674 0,0 z","name":"Falkland Islands"},"ec":{"path":"m 352.17758,89.293073 -11.09493,6.896216 -0.79752,10.227041 -2.22837,3.35428 6.99004,6.70857 -3.02589,3.30737 0.70369,8.44434 12.50233,2.97898 18.92941,-22.40097 -0.0469,-7.81102 -9.07767,-0.58642 -12.85417,-11.118387 0,0 z","name":"Ecuador"},"co":{"path":"m 407.37077,4.6854166 -4.83205,-0.4925868 -31.94777,26.3416682 -3.37774,9.265325 -4.36291,0.492586 1.94689,20.47754 -11.14185,27.326842 12.10356,10.250498 15.50476,0.985174 10.64926,15.622037 15.4813,0.49259 -0.49258,11.7048 h 5.79376 l 6.28634,-21.46271 -5.81721,-7.318434 1.4543,-13.651693 12.10356,-0.985174 -1.4543,-31.713211 -27.11574,-8.772737 -6.28634,-17.076345 15.50476,-21.4861694 0,0 z","name":"Colombia"},"ve":{"path":"m 399.70048,19.087718 1.03209,6.075238 7.62337,2.416021 1.73578,-11.188758 8.04559,-8.3270639 8.04558,9.4295199 18.50719,5.043151 15.66896,-3.283912 10.67271,13.159106 8.04559,5.043151 -8.81965,13.440584 2.95552,10.180128 -5.04315,6.239434 -5.23081,4.386369 -11.32949,-5.699934 -2.60368,2.62713 v 8.115955 l 8.28015,3.940695 -6.09869,6.591281 -6.09869,6.591281 -8.04559,-0.656782 -8.0925,-8.89002 -1.71232,-33.448993 -27.63178,-9.42952 -5.0197,-14.707236 5.11352,-7.646825 0,0 z","name":"Venezuela"},"gy":{"path":"m 480.83658,38.345519 16.9356,15.340562 -6.73202,7.787563 -0.5395,4.620934 8.84311,9.124585 -0.21111,8.772738 -15.38747,5.864129 -9.21842,-12.455411 1.97035,-14.965258 -3.94069,-11.141845 8.28015,-12.947997 0,0 z","name":"Guyana"},"sr":{"path":"m 499.78944,54.788537 4.78513,4.386369 7.41226,-4.597478 6.75548,0.211109 -0.86789,2.62713 -2.83824,5.911042 -0.44567,14.707236 -13.4875,5.488825 0.65678,-9.42952 -8.70237,-8.115954 0.44568,-4.17526 6.28634,-7.013499 0,0 z","name":"Suriname"},"gf":{"path":"m 520.90031,56.336667 13.72206,8.561629 -7.17769,14.261562 -2.60368,3.283912 -7.62337,-4.386368 0.21111,-15.364019 3.47157,-6.356716 0,0 z","name":"French Guiana"},"pe":{"path":"m 340.05056,121.35813 -4.55056,4.59748 0.30493,7.34189 39.73534,72.43372 41.26002,26.59969 6.38017,-10.69617 1.52467,-23.52688 -3.33082,-14.66033 -11.23568,-18.95286 -6.6851,2.13454 -3.02589,3.35428 -13.34676,-15.29365 3.33082,-18.03806 15.48131,-10.0863 -1.21974,-9.47643 -15.76278,-0.60987 -8.18633,-13.74552 -4.55056,-1.52468 0.30493,8.2567 -20.31334,24.13675 -15.17637,-3.65921 -0.93826,-8.58509 0,0 z","name":"Peru"},"bo":{"path":"m 419.05211,175.94145 19.30471,-8.42089 6.38018,0.60987 4.24563,17.73312 29.41447,9.78137 4.8555,14.98872 12.12702,1.52467 5.16043,12.83071 -3.63576,11.61098 -19.72693,1.52467 -7.27152,18.64793 -15.4813,-0.30493 -4.8555,-0.9148 -8.93693,8.67891 -4.40983,-0.42222 -15.17636,-35.16132 4.19871,-6.28635 1.47776,-24.8639 -3.75304,-14.80107 -3.91724,-6.75547 0,0 z","name":"Bolivia"},"py":{"path":"m 496.5759,238.61726 5.16043,5.62956 -0.60987,11.91592 14.87144,-0.91481 11.23567,14.37885 -0.91481,12.83071 -7.27152,11.00111 -14.87143,0.60987 -0.60987,-6.12215 4.24563,-10.08631 -14.5665,-9.17149 h -12.12701 l -9.10113,-9.78137 6.61473,-18.90595 17.94424,-1.38394 0,0 z","name":"Paraguay"},"uy":{"path":"m 516.7485,314.66329 -4.80858,5.13698 1.9938,27.63177 15.106,4.38637 19.21089,-19.2578 -31.50211,-17.89732 0,0 z","name":"Uruguay"},"ar":{"path":"m 528.73478,282.45749 4.55057,4.26909 -17.28745,25.68488 -6.07524,6.73202 2.11108,29.34411 13.34676,16.20845 -11.21221,19.56273 -8.49126,3.65922 h -9.711 l 2.72096,15.27019 -15.17637,5.20735 3.63576,12.83072 -9.10113,29.03916 11.23567,9.1715 -6.07523,14.96526 -10.32087,16.20845 5.46537,11.30604 -13.34676,2.13455 -10.93074,-13.44059 -1.82961,-41.86988 -16.98252,-71.12016 5.13698,-24.86391 -10.93074,-31.78358 7.27153,-41.26001 6.6851,-7.95176 -1.64195,-6.02833 8.58508,-7.83447 19.14052,1.31356 10.69617,11.42333 12.36159,0.21111 12.66651,7.74065 -3.72958,8.72582 0.89135,8.81965 17.94423,-0.84443 8.39743,-12.83072 0,0 m -38.82053,235.94911 0.60987,13.44058 10.32087,-0.9148 8.79619,-5.81722 -14.87143,-3.04935 -4.8555,-3.65921 0,0 z","name":"Argentina"},"cl":{"path":"m 480.81312,507.40549 -10.01593,22.00221 17.28745,1.82961 0.30494,-14.66032 -7.57646,-9.1715 0,0 m -3.40119,-3.44811 -7.52955,8.32706 -0.9148,9.78137 -14.5665,-8.25669 -15.4813,-22.30715 -4.55056,-7.95176 6.38017,-8.25669 -0.60987,-10.39124 -7.27152,-3.04935 -5.7703,-4.26908 1.21974,-5.81722 7.57645,-2.13454 1.52467,-33.61319 -11.82208,-6.73202 -7.71719,-174.96216 1.9938,-3.47157 15.106,34.83293 4.83204,0.0938 1.57159,5.55919 -6.42709,7.78757 -7.3888,41.91679 10.50852,32.27617 -4.8555,24.44169 17.12325,71.87077 1.80616,42.03408 12.26776,14.19119 12.99491,-1.89998 0,0 m -49.98584,-87.93848 -3.02589,4.57402 1.52467,7.95176 3.02589,0.30493 1.52468,-10.0863 -3.04935,-2.74441 0,0 z","name":"Chile"},"br":{"path":"m 549.30615,330.8952 14.66032,-28.19473 0.5395,-23.69109 27.3503,-17.6393 h 15.31711 l 12.03319,-20.38371 2.18146,-39.12547 -4.92587,-10.46161 28.99225,-26.45895 1.10246,-29.20336 -39.38349,-19.28126 -47.56982,-14.87143 -22.42443,-2.204914 6.02833,-12.666519 -1.64196,-19.281257 -4.90241,-1.6185 -7.24807,14.402301 -3.79995,4.761673 -9.75791,-4.315999 -32.81567,11.564063 -10.93074,-13.768975 1.75924,-14.378845 -10.32087,10.508519 -11.39986,-6.145607 -1.14937,1.6185 0.0235,4.996238 9.82828,5.277716 -14.75414,15.551671 -9.31224,-0.09383 -9.42952,-9.593716 -10.67272,0.328391 -1.31356,11.399868 6.12215,7.435722 -7.22461,23.15158 -8.44434,0.65678 -13.44059,8.49126 -3.28391,16.67759 11.65789,12.47886 2.13454,-2.41602 8.18633,-2.20491 6.99004,11.77517 20.00841,-8.58509 7.7641,0.44568 5.34809,18.92941 28.54658,9.05421 4.92587,15.106 12.15048,1.4543 5.79375,14.42576 -3.91723,12.83072 5.11352,6.70856 -0.75061,9.99248 13.6986,-1.29011 12.54924,15.8566 -0.98517,11.14185 7.43571,6.28635 -17.82695,26.99845 31.38482,17.56893 0,0 z","name":"Brazil"}}});
diff --git a/js/vmap/dist/maps/jquery.vmap.algeria.js b/js/vmap/dist/maps/jquery.vmap.algeria.js
new file mode 100644 (file)
index 0000000..58fdfb3
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add Algeria Map Data Points */
+jQuery.fn.vectorMap('addMap', 'dz_fr', {"width": 600, "height": 400, "paths": {"1": {"path":"M 268.306 457.87 c 0 0 2.249 -0.725 2.249 -0.725 c 0 0 -0.496 -2.893 -0.496 -2.893 c 0 0 -3.133 -7.454 -3.133 -7.454 c 0 0 -2.249 -3.262 -2.249 -3.262 c 0 0 0.031 -6.131 0.031 -6.131 c 0 0 -1.682 -5.848 -1.682 -5.848 c 0 0 -2.49 -5.061 -2.49 -5.061 c 0 0 -6.095 -6.187 -6.095 -6.187 c 0 0 -1.521 -7.254 -1.521 -7.254 c 0 0 -4.417 -0.47 -4.417 -0.47 c 0 0 -4.163 0.675 -4.163 0.675 c 0 0 0.63 -56.826 0.63 -56.826 c 0 0 -0.259 -38.388 -0.259 -38.388 c 0 0 -8.571 -12.135 -8.571 -12.135 c 0 0 -2.714 -6.038 -2.714 -6.038 c 0 0 7.482 -7.683 7.482 -7.683 c 0 0 1.19 -2.448 1.19 -2.448 c 0 0 2.635 -0.807 2.635 -0.807 c 0 0 0.883 0.813 0.883 0.813 c 0 0 1.749 -0.209 1.749 -0.209 c 0 0 0.138 0.823 0.138 0.823 c 0 0 2.35 -1.681 2.35 -1.681 c 0 0 0.465 -8.884 0.465 -8.884 c 0 0 2.565 -6.436 2.565 -6.436 c 0 0 -1.848 -2.78 -1.848 -2.78 c 0 0 -0.051 -6.214 -0.051 -6.214 c 0 0 1.856 -3.176 1.856 -3.176 c 0 0 0.81 -10.075 0.81 -10.075 c 0 0 3.164 -5.032 3.164 -5.032 c 0 0 1.104 -3.51 1.104 -3.51 c 0 0 0.784 -10.595 0.784 -10.595 c 0 0 1.118 -4.885 1.118 -4.885 c 0 0 -4.273 -23.743 -4.273 -23.743 c 0 0 2.643 -13.284 2.643 -13.284 c 0 0 0.684 -28.618 0.684 -28.618 c 0 0 -21.085 13.188 -21.085 13.188 c 0 0 -15.816 11.178 -15.816 11.178 c 0 0 -8.624 9.693 -8.624 9.693 c 0 0 -3.966 6.909 -3.966 6.909 c 0 0 -10.189 7.171 -10.189 7.171 c 0 0 -1.53 5.245 -1.53 5.245 c 0 0 1.021 6.805 1.021 6.805 c 0 0 -0.608 2.721 -0.608 2.721 c 0 0 -5.818 4.933 -5.818 4.933 c 0 0 -11.195 0.456 -11.195 0.456 c 0 0 -13.243 3.621 -13.243 3.621 c 0 0 -6.827 9.299 -6.827 9.299 c 0 0 -6.535 4.925 -6.535 4.925 c 0 0 -1.732 3.77 -1.732 3.77 c 0 0 -6.146 7.528 -6.146 7.528 c 0 0 -3.367 10.625 -3.367 10.625 c 0 0 1.165 1.254 1.165 1.254 c 0 0 -3.322 10.957 -3.322 10.957 c 0 0 -1.78 1.059 -1.78 1.059 c 0 0 -7.687 -0.561 -7.687 -0.561 c 0 0 -3.857 1.585 -3.857 1.585 c 0 0 -2.317 1.98 -2.317 1.98 c 0 0 -7.18 9.722 -7.18 9.722 c 0 0 -3.038 6.72 -3.038 6.72 c 0 0 -14.179 -0.237 -14.179 -0.237 c 0 0 -7.204 6.951 -7.204 6.951 c -0.001 0 -12.962 4.238 -12.962 4.238 c 0 0 37.868 29.441 37.868 29.441 c 0 0 91.412 67.584 91.412 67.584 c 0 0 0.398 1.977 0.398 1.977 c 0 0 27.738 18.602 27.738 18.602 c 0 0 0.568 2.959 0.568 2.959 c 0 0 -0.822 5.766 -0.822 5.766 c 0 0 0.463 1.174 0.463 1.174 c 0 0 3.119 -0.263 3.119 -0.263 c 0 0 1.575 2.019 1.575 2.019 c 0 0 6.354 2.238 6.354 2.238 c 0 0 0.896 4.331 0.896 4.331 c 0 0 3.206 2.918 3.206 2.918 c 0 0 1.768 -0.039 1.768 -0.039 c 0 0 0.994 1.532 0.994 1.532 c 0 0 1.018 -0.565 1.018 -0.565 c 0 0 1.242 0.478 1.242 0.478 c 0 0 0.795 -0.395 0.795 -0.395 c 0 0 1.279 1.151 1.279 1.151 c 0 0 1.88 -1.958 1.88 -1.958 c 0 0 1.563 0.354 1.563 0.354 c 0 0 2.465 2.305 2.465 2.305 c 0 0 1.674 3.077 1.674 3.077 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Adrar"},"2":{"path":"M 251.147 52.1578 c 0 0 0.255 -1.759 0.255 -1.759 c 0 0 -1.269 -0.908 -1.269 -0.908 c 0 0 -0.683 -1.607 -0.683 -1.607 c 0 0 0.258 -1.099 0.258 -1.099 c 0 0 -0.801 0.179 -0.801 0.179 c 0 0 -0.68 -0.703 -0.68 -0.703 c 0 0 -0.004 -1.019 -0.004 -1.019 c 0 0 1.33 -0.886 1.33 -0.886 c 0 0 -1.829 -0.536 -1.829 -0.536 c 0 0 1.196 -1.169 1.196 -1.169 c 0 0 -1.496 -1.623 -1.496 -1.623 c 0 0 0.13 -1.172 0.13 -1.172 c 0 0 2.229 -1.641 2.229 -1.641 c 0 0 1.099 -2.467 1.099 -2.467 c 0 0 -4.333 0.653 -4.333 0.653 c 0 0 -2.668 -0.688 -2.668 -0.688 c 0 0 -1.591 1.201 -1.591 1.201 c 0 0 -4.207 0.314 -4.207 0.314 c 0 0 -3.056 1.182 -3.056 1.182 c 0 0 -0.989 1.688 -0.989 1.688 c 0 0 -3.115 1.248 -3.115 1.248 c 0 0 -1 3.282 -1 3.282 c 0 0 2.055 0.32 2.055 0.32 c 0 0 2.173 -0.8 2.173 -0.8 c 0 0 0.468 1.895 0.468 1.895 c 0 0 0.537 0.021 0.537 0.021 c 0 0 -0.826 1.687 -0.826 1.687 c 0 0 0.509 -0.155 0.509 -0.155 c 0 0 0.519 1.997 0.519 1.997 c 0 0 1.774 -0.663 1.774 -0.663 c 0 0 -0.347 0.243 -0.347 0.243 c 0 0 0.593 0.041 0.593 0.041 c 0 0 0.541 1.18 0.541 1.18 c 0 0 1.563 0.984 1.563 0.984 c 0 0 2.838 -0.813 2.838 -0.813 c 0 0 2.173 3.286 2.173 3.286 c 0 0 0.06 -1.414 0.06 -1.414 c 0 0 0.518 -0.333 0.518 -0.333 c 0 0 -0.384 -0.349 -0.384 -0.349 c 0 0 2.264 -0.619 2.264 -0.619 c 0 0 0.035 -0.865 0.035 -0.865 c 0 0 1.22 -1.163 1.22 -1.163 c 0 0 1.035 1.876 1.035 1.876 c 0 0 1.906 1.174 1.906 1.174 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Chlef"},"3":{"path":"M 311.039 126.689 c 0 0 -3.193 -5.374 -3.193 -5.374 c 0 0 -4.008 -3.915 -4.008 -3.915 c 0 0 -1.49 -1.064 -1.49 -1.064 c 0 0 -8.125 -3.061 -8.125 -3.061 c 0 0 -1.408 -2.328 -1.408 -2.328 c 0 0 -3.983 -3.588 -3.983 -3.588 c 0 0 -5.242 -1.505 -5.242 -1.505 c 0 0 -1.604 -3.201 -1.604 -3.201 c 0 0 0.146 -1.212 0.146 -1.212 c 0 0 -2.38 -6.709 -2.38 -6.709 c 0 0 -1.252 0.433 -1.252 0.433 c 0 0 0.124 -0.432 0.124 -0.432 c 0 0 -1.456 -0.758 -1.456 -0.758 c 0 0 -2.267 2.288 -2.267 2.288 c 0 0 0.026 1.448 0.026 1.448 c 0 0 -0.695 -0.262 -0.695 -0.262 c 0 0 -2.258 1.064 -2.258 1.064 c 0 0 -1.209 -0.324 -1.209 -0.324 c 0 0 -3.377 -4.766 -3.377 -4.766 c 0 0 -0.441 0.087 -0.441 0.087 c 0 0 -1.244 -3.591 -1.244 -3.591 c 0 0 -0.566 -6.331 -0.566 -6.331 c 0 0 -3.015 0.373 -3.015 0.373 c 0 0 -0.437 1.043 -0.437 1.043 c 0 0 -1.978 0.888 -1.978 0.888 c 0 0 -2.349 2.563 -2.349 2.563 c 0 0 -4.876 1.753 -4.876 1.753 c 0 0 -1.839 2.088 -1.839 2.088 c 0 0 -0.366 2.438 -0.366 2.438 c 0 0 -1.644 0.977 -1.644 0.977 c 0 0 -0.273 -1.14 -0.273 -1.14 c 0 0 -3.773 2.229 -3.773 2.229 c 0 0 0.808 1.346 0.808 1.346 c 0 0 -2.194 1.46 -2.194 1.46 c 0 0 0.863 1.461 0.863 1.461 c 0 0 -0.165 0.989 -0.165 0.989 c 0 0 2.206 0.969 2.206 0.969 c 0 0 1.613 1.795 1.613 1.795 c 0 0 3.495 -0.817 3.495 -0.817 c 0 0 1.828 1.584 1.828 1.584 c 0 0 0.565 1.551 0.565 1.551 c 0 0 -0.247 2.655 -0.247 2.655 c 0 0 1.457 0.411 1.457 0.411 c 0 0 0.124 0.991 0.124 0.991 c 0 0 1.142 1.009 1.142 1.009 c 0 0 -0.82 1.435 -0.82 1.435 c 0 0 -0.285 2.856 -0.285 2.856 c 0 0 3.122 0.287 3.122 0.287 c 0 0 -0.206 1.673 -0.206 1.673 c 0 0 3.521 1.138 3.521 1.138 c 0 0 2.073 -0.452 2.073 -0.452 c 0 0 -0.203 3.901 -0.203 3.901 c 0 0 -3.998 0.134 -3.998 0.134 c 0 0 0.641 0.886 0.641 0.886 c 0 0 -0.146 1.528 -0.146 1.528 c 0 0 3.112 6.564 3.112 6.564 c 0 0 10.825 -0.946 10.825 -0.946 c 0 0 5.37 -1.604 5.37 -1.604 c 0 0 8.55 2.039 8.55 2.039 c 0 0 -0.331 -2.903 -0.331 -2.903 c 0 0 -3.66 -2.23 -3.66 -2.23 c 0 0 7.853 -0.362 7.853 -0.362 c 0 0 0.945 -0.734 0.945 -0.734 c 0 0 0.439 0.318 0.439 0.318 c 0 0 0.417 -0.754 0.417 -0.754 c 0 0 0.305 0.512 0.305 0.512 c 0 0 0.903 -0.387 0.903 -0.387 c 0 0 2.684 1.107 2.684 1.107 c 0 0 0.77 -0.422 0.77 -0.422 c 0 0 13.076 0.901 13.076 0.901 c 0 0 0 0 0 0","name":"Laghouat"},"4":{"path":"M 377.235 49.5529 c 0 0 0.701 0.387 0.701 0.387 c 0 0 0.531 2.116 0.531 2.116 c 0 0 1.615 0.739 1.615 0.739 c 0 0 -0.772 0.688 -0.772 0.688 c 0 0 0.142 1.093 0.142 1.093 c 0 0 1.311 2.659 1.311 2.659 c 0 0 -4.046 1.621 -4.046 1.621 c 0 0 -1.879 2.798 -1.879 2.798 c 0 0 -0.624 0.112 -0.624 0.112 c 0 0 -0.659 -1.052 -0.659 -1.052 c 0 0 -0.692 -0.06 -0.692 -0.06 c 0 0 -0.333 -1.191 -0.333 -1.191 c 0 0 -0.393 -0.313 -0.393 -0.313 c 0 0 -0.6 0.601 -0.6 0.601 c 0 0 0.179 -0.579 0.179 -0.579 c 0 0 -1.313 -0.926 -1.313 -0.926 c 0 0 -0.409 1.399 -0.409 1.399 c 0 0 -1.049 0.308 -1.049 0.308 c 0 0 0.063 -2.163 0.063 -2.163 c 0 0 -1.771 -0.877 -1.771 -0.877 c 0 0 -0.118 0.548 -0.118 0.548 c 0 0 -1.816 -0.27 -1.816 -0.27 c 0 0 -0.957 2.009 -0.957 2.009 c 0 0 -1.647 -0.482 -1.647 -0.482 c 0 0 0.408 -1.016 0.408 -1.016 c 0 0 -0.614 -0.53 -0.614 -0.53 c 0 0 -4.031 0.608 -4.031 0.608 c 0 0 -0.774 -1.596 -0.774 -1.596 c 0 0 -2.106 -2.413 -2.106 -2.413 c 0 0 -1.569 -0.717 -1.569 -0.717 c 0 0 -2.67 1.215 -2.67 1.215 c 0 0 -0.353 -0.517 -0.353 -0.517 c 0 0 0.464 -0.385 0.464 -0.385 c 0 0 -0.535 -0.365 -0.535 -0.365 c 0 0 0.359 -0.917 0.359 -0.917 c 0 0 -2.605 -0.267 -2.605 -0.267 c 0 0 -0.109 -0.587 -0.109 -0.587 c 0 0 -1.551 1.313 -1.551 1.313 c 0 0 -2.433 -1.298 -2.433 -1.298 c 0 0 0.803 -2.113 0.803 -2.113 c 0 0 1.65 -0.227 1.65 -0.227 c 0 0 0.715 0.51 0.715 0.51 c 0 0 -0.213 -0.771 -0.213 -0.771 c 0 0 0.78 0.116 0.78 0.116 c 0 0 1.221 -1.532 1.221 -1.532 c 0 0 0.161 -2.791 0.161 -2.791 c 0 0 2.365 -0.863 2.365 -0.863 c 0 0 -0.381 0.438 -0.381 0.438 c 0 0 0.595 1.16 0.595 1.16 c 0 0 1.011 0.369 1.011 0.369 c 0 0 -0.465 -0.805 -0.465 -0.805 c 0 0 1.122 0.603 1.122 0.603 c 0 0 0.375 -1.067 0.375 -1.067 c 0 0 2.243 -0.16 2.243 -0.16 c 0 0 0.264 -1.443 0.264 -1.443 c 0 0 1.445 1.166 1.445 1.166 c 0 0 3.62 0.066 3.62 0.066 c 0 0 -0.201 1.256 -0.201 1.256 c 0 0 1.267 0.551 1.267 0.551 c 0 0 -0.196 0.957 -0.196 0.957 c 0 0 0.998 0.166 0.998 0.166 c 0 0 2.784 -1.372 2.784 -1.372 c 0 0 0.683 -1.773 0.683 -1.773 c 0 0 1.257 -0.076 1.257 -0.076 c 0 0 0.424 2.263 0.424 2.263 c 0 0 0.736 0.045 0.736 0.045 c 0 0 0.649 2.12 0.649 2.12 c 0 0 1.024 1.332 1.024 1.332 c 0 0 2.675 0.939 2.675 0.939 c 0 0 -0.031 1.478 -0.031 1.478 c 0 0 2.814 -0.213 2.814 -0.213 c 0 0 -0.354 -1.537 -0.354 -1.537 c 0 0 0.815 -0.485 0.815 -0.485 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Oum El-Bouaghi"},"5":{"path":"M 354.598 79.5648 c 0 0 -0.634 -2.146 -0.634 -2.146 c 0 0 0.812 -0.795 0.812 -0.795 c 0 0 -0.611 -0.482 -0.611 -0.482 c 0 0 0.499 -0.58 0.499 -0.58 c 0 0 -1.347 -2.257 -1.347 -2.257 c 0 0 -0.802 -0.146 -0.802 -0.146 c 0 0 0.401 -0.844 0.401 -0.844 c 0 0 -0.438 -1.353 -0.438 -1.353 c 0 0 1.308 -1.429 1.308 -1.429 c 0 0 -0.23 -2.636 -0.23 -2.636 c 0 0 1.644 -1.396 1.644 -1.396 c 0 0 -1.052 -0.219 -1.052 -0.219 c 0 0 0.178 -1.438 0.178 -1.438 c 0 0 -0.634 -1.333 -0.634 -1.333 c 0 0 1.491 -1.386 1.491 -1.386 c 0 0 2.418 -0.599 2.418 -0.599 c 0 0 0.612 -1.514 0.612 -1.514 c 0 0 -0.74 -1.491 -0.74 -1.491 c 0 0 0.214 -1.337 0.214 -1.337 c 0 0 -2.106 -2.414 -2.106 -2.414 c 0 0 -1.569 -0.716 -1.569 -0.716 c 0 0 -2.67 1.214 -2.67 1.214 c 0 0 -0.353 -0.518 -0.353 -0.518 c 0 0 0.464 -0.385 0.464 -0.385 c 0 0 -0.535 -0.365 -0.535 -0.365 c 0 0 0.36 -0.917 0.36 -0.917 c 0 0 -2.606 -0.267 -2.606 -0.267 c 0 0 -0.11 -0.587 -0.11 -0.587 c 0 0 -1.55 1.313 -1.55 1.313 c 0 0 -2.433 -1.298 -2.433 -1.298 c 0 0 -3.583 -0.418 -3.583 -0.418 c 0 0 -0.49 0.384 -0.49 0.384 c 0 0 -0.965 0.569 -0.965 0.569 c 0 0 0.445 1.163 0.445 1.163 c 0 0 -2.807 -2.418 -2.807 -2.418 c 0 0 -1.214 0.316 -1.214 0.316 c 0 0 -1.424 1.56 -1.424 1.56 c 0 0 0.121 0.773 0.121 0.773 c 0 0 1.212 0.402 1.212 0.402 c 0 0 -0.792 1.303 -0.792 1.303 c 0 0 -0.682 -0.238 -0.682 -0.238 c 0 0 -0.502 0.541 -0.502 0.541 c 0 0 -2.294 -0.948 -2.294 -0.948 c 0 0 -0.241 0.685 -0.241 0.685 c 0 0 -0.797 -0.078 -0.797 -0.078 c 0 0 -1.382 1.093 -1.382 1.093 c 0 0 0.234 1.001 0.234 1.001 c 0 0 -0.78 1.759 -0.78 1.759 c 0 0 -1.127 -0.332 -1.127 -0.332 c 0 0 -2.661 2.963 -2.661 2.963 c 0 0 -1.817 0.906 -1.817 0.906 c 0 0 -0.723 -1.068 -0.723 -1.068 c 0 0 -1.061 -0.012 -1.061 -0.012 c 0 0 -0.828 0.921 -0.828 0.921 c 0 0 -0.075 -0.786 -0.075 -0.786 c 0 0 -0.958 1.506 -0.958 1.506 c 0 0 -1.945 -1.698 -1.945 -1.698 c 0 0 0.822 4.4 0.822 4.4 c 0 0 -0.38 2.546 -0.38 2.546 c 0 0 -0.915 1.547 -0.915 1.547 c 0 0 -0.525 -0.186 -0.525 -0.186 c 0 0 -1.186 1.173 -1.186 1.173 c 0 0 0.194 0.605 0.194 0.605 c 0 0 2.929 0.061 2.929 0.061 c 0 0 2.126 1.396 2.126 1.396 c 0 0 0.583 -0.342 0.583 -0.342 c 0 0 2.02 0.968 2.02 0.968 c 0 0 0.73 1.103 0.73 1.103 c 0 0 1.017 -0.474 1.017 -0.474 c 0 0 1.503 0.709 1.503 0.709 c 0 0 0.559 -0.079 0.559 -0.079 c 0 0 0.341 -1.11 0.341 -1.11 c 0 0 3.911 -0.103 3.911 -0.103 c 0 0 1.787 -0.953 1.787 -0.953 c 0 0 0.162 -0.935 0.162 -0.935 c 0 0 -0.656 -0.975 -0.656 -0.975 c 0 0 -1.454 -0.28 -1.454 -0.28 c 0 0 -0.321 -0.952 -0.321 -0.952 c 0 0 2.216 0.152 2.216 0.152 c 0 0 3.561 -2.397 3.561 -2.397 c 0 0 2.817 1.882 2.817 1.882 c 0 0 1.857 -0.219 1.857 -0.219 c 0 0 -2.247 2.121 -2.247 2.121 c 0 0 0.993 1.373 0.993 1.373 c 0 0 -0.826 1.425 -0.826 1.425 c 0 0 0.764 -0.211 0.764 -0.211 c 0 0 0.976 1.769 0.976 1.769 c 0 0 2.263 -2.836 2.263 -2.836 c 0 0 1.025 0.388 1.025 0.388 c 0 0 -0.085 1.186 -0.085 1.186 c 0 0 2.13 0.699 2.13 0.699 c 0 0 0.685 -1.448 0.685 -1.448 c 0 0 2.061 -0.262 2.061 -0.262 c 0 0 1.65 -1.111 1.65 -1.111 c 0 0 1.29 1.626 1.29 1.626 c 0 0 -0.779 1.125 -0.779 1.125 c 0 0 0.506 0.944 0.506 0.944 c 0 0 -0.438 2.539 -0.438 2.539 c 0 0 2.456 1.971 2.456 1.971 c 0 0 1.033 -0.363 1.033 -0.363 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Batna"},"6":{"path":"M 314.203 38.1218 c 0 0 -0.336 1.124 -0.336 1.124 c 0 0 -2.016 0.919 -2.016 0.919 c 0 0 -0.034 2.49 -0.034 2.49 c 0 0 -4.18 1.099 -4.18 1.099 c 0 0 -0.776 -1.701 -0.776 -1.701 c 0 0 0.222 -0.601 0.222 -0.601 c 0 0 -0.75 -0.99 -0.75 -0.99 c 0 0 0.743 -0.487 0.743 -0.487 c 0 0 0.148 -1.306 0.148 -1.306 c 0 0 -0.678 -1.324 -0.678 -1.324 c 0 0 1.795 -0.83 1.795 -0.83 c 0 0 2.18 -2.443 2.18 -2.443 c 0 0 -0.406 -0.66 -0.406 -0.66 c 0 0 1.259 -1.582 1.259 -1.582 c 0 0 -1.778 -0.942 -1.778 -0.942 c 0 0 0.148 -0.646 0.148 -0.646 c 0 0 1.229 -0.36 1.229 -0.36 c 0 0 0.704 0.539 0.704 0.539 c 0 0 0.672 -0.653 0.672 -0.653 c 0 0 -0.069 -1.338 -0.069 -1.338 c 0 0 -1.397 -1.952 -1.397 -1.952 c 0 0 3.611 -0.405 3.611 -0.405 c 0 0 3.398 1.061 3.398 1.061 c 0 0 2.038 1.439 2.038 1.439 c 0 0 1.871 0.364 1.871 0.364 c 0 0 -0.442 1.715 -0.442 1.715 c 0 0 2.887 1.563 2.887 1.563 c 0 0 4.324 -0.311 4.324 -0.311 c 0 0 0.029 1.315 0.029 1.315 c 0 0 0.916 0.194 0.916 0.194 c 0 0 -0.184 1.479 -0.184 1.479 c 0 0 -2.389 1.071 -2.389 1.071 c 0 0 0.252 0.685 0.252 0.685 c 0 0 -1.314 1.474 -1.314 1.474 c 0 0 0.471 0.919 0.471 0.919 c 0 0 -0.748 0.375 -0.748 0.375 c 0 0 -1.656 0.241 -1.656 0.241 c 0 0 0.025 -0.935 0.025 -0.935 c 0 0 -0.569 0.197 -0.569 0.197 c 0 0 0.023 -2.689 0.023 -2.689 c 0 0 0.535 -0.694 0.535 -0.694 c 0 0 -2.159 -1.465 -2.159 -1.465 c 0 0 -0.039 0.448 -0.039 0.448 c 0 0 -0.928 -0.088 -0.928 -0.088 c 0 0 -0.447 1.378 -0.447 1.378 c 0 0 -3.62 -0.479 -3.62 -0.479 c 0 0 -0.048 1.35 -0.048 1.35 c 0 0 -2.517 1.442 -2.517 1.442 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Béjaïa"},"7":{"path":"M 354.598 79.5648 c 0 0 -1.037 0.363 -1.037 0.363 c 0 0 -2.456 -1.971 -2.456 -1.971 c 0 0 0.438 -2.539 0.438 -2.539 c 0 0 -0.506 -0.943 -0.506 -0.943 c 0 0 0.779 -1.125 0.779 -1.125 c 0 0 -1.289 -1.626 -1.289 -1.626 c 0 0 -1.651 1.111 -1.651 1.111 c 0 0 -2.061 0.261 -2.061 0.261 c 0 0 -0.685 1.448 -0.685 1.448 c 0 0 -2.13 -0.699 -2.13 -0.699 c 0 0 0.085 -1.186 0.085 -1.186 c 0 0 -1.025 -0.387 -1.025 -0.387 c 0 0 -2.263 2.835 -2.263 2.835 c 0 0 -0.975 -1.768 -0.975 -1.768 c 0 0 -0.765 0.21 -0.765 0.21 c 0 0 0.826 -1.425 0.826 -1.425 c 0 0 -0.993 -1.373 -0.993 -1.373 c 0 0 2.247 -2.121 2.247 -2.121 c 0 0 -1.857 0.22 -1.857 0.22 c 0 0 -2.817 -1.883 -2.817 -1.883 c 0 0 -3.56 2.397 -3.56 2.397 c 0 0 -2.217 -0.152 -2.217 -0.152 c 0 0 0.321 0.952 0.321 0.952 c 0 0 1.454 0.28 1.454 0.28 c 0 0 0.656 0.975 0.656 0.975 c 0 0 -0.162 0.935 -0.162 0.935 c 0 0 -1.787 0.954 -1.787 0.954 c 0 0 -3.911 0.102 -3.911 0.102 c 0 0 -0.341 1.11 -0.341 1.11 c 0 0 -0.558 0.08 -0.558 0.08 c 0 0 -1.503 -0.709 -1.503 -0.709 c 0 0 -1.018 0.473 -1.018 0.473 c 0 0 -0.729 -1.102 -0.729 -1.102 c 0 0 -2.02 -0.969 -2.02 -0.969 c 0 0 -0.584 0.343 -0.584 0.343 c 0 0 0.446 3.492 0.446 3.492 c 0 0 0.547 0.305 0.547 0.305 c 0 0 -0.537 0.065 -0.537 0.065 c 0 0 -0.684 1.586 -0.684 1.586 c 0 0 -5.437 1.63 -5.437 1.63 c 0 0 -0.941 1.502 -0.941 1.502 c 0 0 -1.002 0.173 -1.002 0.173 c 0 0 1.299 1.086 1.299 1.086 c 0 0 -1.021 0.547 -1.021 0.547 c 0 0 -0.658 -0.445 -0.658 -0.445 c 0 0 -1.831 1.14 -1.831 1.14 c 0 0 -4.807 0.046 -4.807 0.046 c 0 0 -0.876 1.823 -0.876 1.823 c 0 0 -2.192 1.835 -2.192 1.835 c 0 0 0.522 0.302 0.522 0.302 c 0 0 0.418 3.083 0.418 3.083 c 0 0 1.216 1.271 1.216 1.271 c 0 0 -0.307 0.725 -0.307 0.725 c 0 0 1.814 0.933 1.814 0.933 c 0 0 -0.773 1.006 -0.773 1.006 c 0 0 -1.99 0.525 -1.99 0.525 c 0 0 -0.442 0.687 -0.442 0.687 c 0 0 0.935 1.143 0.935 1.143 c 0 0 1.888 0.264 1.888 0.264 c 0 0 0.385 1.491 0.385 1.491 c 0 0 2.354 0.396 2.354 0.396 c 0 0 0.57 0.73 0.57 0.73 c 0 0 -1.197 -0.003 -1.197 -0.003 c 0 0 -1.375 1.475 -1.375 1.475 c 0 0 -1.342 0.124 -1.342 0.124 c 0 0 -0.397 0.525 -0.397 0.525 c 0 0 0.45 0.688 0.45 0.688 c 0 0 6.57 2.831 6.57 2.831 c 0 0 1.081 1.471 1.081 1.471 c 0 0 3.26 0.627 3.26 0.627 c 0 0 0.39 0.95 0.39 0.95 c 0 0 1.965 -0.327 1.965 -0.327 c 0 0 0.724 1.225 0.724 1.225 c 0 0 4.001 0.998 4.001 0.998 c 0 0 -0.522 0.879 -0.522 0.879 c 0 0 0.117 1.904 0.117 1.904 c 0 0 3.919 3.499 3.919 3.499 c 0 0 0.91 -1.858 0.91 -1.858 c 0 0 0.663 -1.724 0.663 -1.724 c 0 0 -0.688 -1.585 -0.688 -1.585 c 0 0 -0.35 -4.63 -0.35 -4.63 c 0 0 -1.083 -2.091 -1.083 -2.091 c 0 0 0.858 -4.001 0.858 -4.001 c 0 0 1.969 -4.693 1.969 -4.693 c 0 0 -3.667 -3.257 -3.667 -3.257 c 0 0 0.702 -1.852 0.702 -1.852 c 0 0 -1.199 -1.354 -1.199 -1.354 c 0 0 1.889 -1.327 1.889 -1.327 c 0 0 -0.72 -0.627 -0.72 -0.627 c 0 0 1.104 -0.631 1.104 -0.631 c 0 0 2.287 1.521 2.287 1.521 c 0 0 11.929 1.271 11.929 1.271 c 0 0 5.31 -1.304 5.31 -1.304 c 0 0 5.733 2.047 5.733 2.047 c 0 0 1.45 1.393 1.45 1.393 c 0 0 1.654 -0.581 1.654 -0.581 c 0 0 1.726 -2.196 1.726 -2.196 c 0 0 -0.517 -1.926 -0.517 -1.926 c 0 0 1.047 -2.039 1.047 -2.039 c 0 0 -0.163 -3.493 -0.163 -3.493 c 0 0 0.727 -2.389 0.727 -2.389 c 0 0 -0.822 0.197 -0.822 0.197 c 0 0 0.415 -0.997 0.415 -0.997 c 0 0 -1.047 -1.056 -1.047 -1.056 c 0 0 0.4 -0.473 0.4 -0.473 c 0 0 -1.139 0.062 -1.139 0.062 c 0 0 -0.737 1.719 -0.737 1.719 c 0 0 -1.087 0.596 -1.087 0.596 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Biskra"},"8":{"path":"M 189.561 141.431 c 0 0 0.163 2.393 0.163 2.393 c 0 0 1.428 0.123 1.428 0.123 c 0 0 -0.542 2.863 -0.542 2.863 c 0 0 1.384 0.042 1.384 0.042 c 0 0 0.298 1.563 0.298 1.563 c 0 0 5.834 -3.103 5.834 -3.103 c 0 0 6.79 1.902 6.79 1.902 c 0 0 1.803 -1.33 1.803 -1.33 c 0 0 2.417 0.518 2.417 0.518 c 0 0 1.629 -2.4 1.629 -2.4 c 0 0 -0.953 4.385 -0.953 4.385 c 0 0 -2.081 -0.471 -2.081 -0.471 c 0 0 -1.103 0.817 -1.103 0.817 c 0 0 -1.05 2.219 -1.05 2.219 c 0 0 -0.139 4.177 -0.139 4.177 c 0 0 0.68 2.281 0.68 2.281 c 0 0 -0.686 0.065 -0.686 0.065 c 0 0 0.179 0.967 0.179 0.967 c 0 0 -0.602 0.846 -0.602 0.846 c 0 0 0.955 1.182 0.955 1.182 c 0 0 -1.242 1.209 -1.242 1.209 c 0 0 1.247 2.015 1.247 2.015 c 0 0 -1.014 1.204 -1.014 1.204 c 0 0 0.036 1.863 0.036 1.863 c 0 0 0.853 1.823 0.853 1.823 c 0 0 2.917 2.352 2.917 2.352 c 0 0 -0.818 2.98 -0.818 2.98 c 0 0 14.029 11.903 14.029 11.903 c 0 0 -8.624 9.693 -8.624 9.693 c 0 0 -3.966 6.909 -3.966 6.909 c 0 0 -10.189 7.171 -10.189 7.171 c 0 0 -1.53 5.245 -1.53 5.245 c 0 0 1.021 6.804 1.021 6.804 c 0 0 -0.608 2.722 -0.608 2.722 c 0 0 -5.818 4.933 -5.818 4.933 c 0 0 -11.195 0.456 -11.195 0.456 c 0 0 -13.243 3.621 -13.243 3.621 c 0 0 -6.827 9.299 -6.827 9.299 c 0 0 -6.535 4.925 -6.535 4.925 c 0 0 -1.732 3.771 -1.732 3.771 c 0 0 -6.146 7.526 -6.146 7.526 c 0 0 -3.367 10.625 -3.367 10.625 c 0 0 1.165 1.256 1.165 1.256 c 0 0 -13.244 -1.684 -13.244 -1.684 c 0 0 -3.001 -2.418 -3.001 -2.418 c 0 0 -5.835 -7.1 -5.835 -7.1 c 0 0 -0.084 -7.644 -0.084 -7.644 c 0 0 -6.775 -12.676 -6.775 -12.676 c 0 0 -5.777 -21.184 -5.777 -21.184 c 0 0 -5.817 -3.173 -5.817 -3.173 c 0 0 -8.409 -0.352 -8.409 -0.352 c 0 0 -4.977 -4.181 -4.977 -4.181 c 0 0 4.214 -5.384 4.214 -5.384 c 0 0 0.024 -1.372 0.024 -1.372 c 0 0 1.014 -1.498 1.014 -1.498 c 0 0 8.097 -5.763 8.097 -5.763 c 0 0 7.482 -3.241 7.482 -3.241 c 0 0 6.645 -5.965 6.645 -5.965 c 0 0 3.927 -1.254 3.927 -1.254 c 0 0 6.729 -0.776 6.729 -0.776 c 0 0 4.574 -1.715 4.574 -1.715 c 0 0 0.583 -0.765 0.583 -0.765 c 0 0 -1.006 -1.718 -1.006 -1.718 c 0 0 0.712 -1.927 0.712 -1.927 c 0 0 0.439 0.271 0.439 0.271 c 0 0 1.753 -2.209 1.753 -2.209 c 0 0 0.06 -2.135 0.06 -2.135 c 0 0 -0.201 -0.656 -0.201 -0.656 c 0 0 -0.495 0.514 -0.495 0.514 c 0 0 -0.386 -0.407 -0.386 -0.407 c 0 0 -0.456 -1.584 -0.456 -1.584 c 0 0 -0.47 0.188 -0.47 0.188 c 0 0 0.021 -1.495 0.021 -1.495 c 0 0 -0.024 1.793 -0.024 1.793 c 0 0 -0.667 0.211 -0.667 0.211 c 0 0 0.487 0.234 0.487 0.234 c 0 0 -0.779 -0.15 -0.779 -0.15 c 0 0 0.248 -1.646 0.248 -1.646 c 0 0 -0.643 -0.663 -0.643 -0.663 c 0 0 -0.118 0.998 -0.118 0.998 c 0 0 -0.614 -0.265 -0.614 -0.265 c 0 0 0.041 0.743 0.041 0.743 c 0 0 -0.644 -0.249 -0.644 -0.249 c 0 0 -0.354 0.62 -0.354 0.62 c 0 0 0.437 -2.005 0.437 -2.005 c 0 0 -0.625 -1.467 -0.625 -1.467 c 0 0 0.73 -0.664 0.73 -0.664 c 0 0 -0.554 -0.775 -0.554 -0.775 c 0 0 0.872 -1.707 0.872 -1.707 c 0 0 0.565 0.509 0.565 0.509 c 0 0 1.714 -1.251 1.714 -1.251 c 0 0 -0.12 -6.14 -0.12 -6.14 c 0 0 18.347 -3.483 18.347 -3.483 c 0 0 -2.126 -6.029 -2.126 -6.029 c 0 0 0.609 -2.241 0.609 -2.241 c 0 0 6.877 0.41 6.877 0.41 c 0 0 3.008 -1.097 3.008 -1.097 c 0 0 4.058 -0.094 4.058 -0.094 c 0 0 2.286 0.737 2.286 0.737 c 0 0 3.44 -0.906 3.44 -0.906 c 0 0 9.396 2.568 9.396 2.568 c 0 0 7.359 0.568 7.359 0.568 c 0 0 1.897 -1.269 1.897 -1.269 c 0 0 -1.222 -1.218 -1.222 -1.218 c 0 0 -1.895 0.225 -1.895 0.225 c 0 0 1.267 -1.027 1.267 -1.027 c 0 0 -0.083 -3.115 -0.083 -3.115 c 0 0 1.147 -1.937 1.147 -1.937 c 0 0 1.524 -0.259 1.524 -0.259 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Béchar"},"9":{"path":"M 284.26 36.7689 c 0 0 0.247 -1.279 0.247 -1.279 c 0 0 -0.585 -0.271 -0.585 -0.271 c 0 0 0.385 -0.414 0.385 -0.414 c 0 0 -0.471 -0.855 -0.471 -0.855 c 0 0 0.536 -0.479 0.536 -0.479 c 0 0 -0.888 0.351 -0.888 0.351 c 0 0 -0.756 -1.312 -0.756 -1.312 c 0 0 -1.009 0.771 -1.009 0.771 c 0 0 -0.61 -0.303 -0.61 -0.303 c 0 0 -0.7 1.808 -0.7 1.808 c 0 0 -1.118 0.075 -1.118 0.075 c 0 0 0.107 -1.082 0.107 -1.082 c 0 0 -1.49 1.068 -1.49 1.068 c 0 0 -3.771 -1.583 -3.771 -1.583 c 0 0 0.339 1.023 0.339 1.023 c 0 0 -2.109 0.599 -2.109 0.599 c 0 0 -1.479 1.646 -1.479 1.646 c 0 0 -1.06 0.141 -1.06 0.141 c 0 0 0.442 0.803 0.442 0.803 c 0 0 -0.447 0.64 -0.447 0.64 c 0 0 -1.568 -0.302 -1.568 -0.302 c 0 0 -1.037 1.464 -1.037 1.464 c 0 0 2.993 2.104 2.993 2.104 c 0 0 1.509 -1.087 1.509 -1.087 c 0 0 2.894 0.205 2.894 0.205 c 0 0 1.567 -1.178 1.567 -1.178 c 0 0 0.671 1.507 0.671 1.507 c 0 0 1.48 0.008 1.48 0.008 c 0 0 0.866 -0.967 0.866 -0.967 c 0 0 -0.188 -1.356 -0.188 -1.356 c 0 0 0.474 0.955 0.474 0.955 c 0 0 0.732 -0.597 0.732 -0.597 c 0 0 0.693 0.698 0.693 0.698 c 0 0 1.156 -1.154 1.156 -1.154 c 0 0 0.085 -1.381 0.085 -1.381 c 0 0 1.631 0.27 1.631 0.27 c 0 0 0.479 -0.536 0.479 -0.536 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Blida"},"10":{"path":"M 300.562 48.4998 c 0 0 1.468 -1.134 1.468 -1.134 c 0 0 0.186 -2.385 0.186 -2.385 c 0 0 1.708 -0.861 1.708 -0.861 c 0 0 0.796 -1.241 0.796 -1.241 c 0 0 1.361 0.091 1.361 0.091 c 0 0 0.781 -0.917 0.781 -0.917 c 0 0 0.224 -0.601 0.224 -0.601 c 0 0 -0.75 -0.99 -0.75 -0.99 c 0 0 0.742 -0.488 0.742 -0.488 c 0 0 0.148 -1.305 0.148 -1.305 c 0 0 -0.679 -1.324 -0.679 -1.324 c 0 0 -2.513 0.268 -2.513 0.268 c 0 0 -0.274 -0.535 -0.274 -0.535 c 0 0 -1.008 0.543 -1.008 0.543 c 0 0 -5.654 0.163 -5.654 0.163 c 0 0 -1.333 -0.33 -1.333 -0.33 c 0 0 -0.937 -1.637 -0.937 -1.637 c 0 0 -0.781 0.04 -0.781 0.04 c 0 0 -0.892 -1.236 -0.892 -1.236 c 0 0 -4.715 -0.709 -4.715 -0.709 c 0 0 -0.479 0.983 -0.479 0.983 c 0 0 -1.366 0.715 -1.366 0.715 c 0 0 -2.088 -0.118 -2.088 -0.118 c 0 0 -0.247 1.278 -0.247 1.278 c 0 0 2.723 2.63 2.723 2.63 c 0 0 1.561 -1.479 1.561 -1.479 c 0 0 1.357 0.704 1.357 0.704 c 0 0 -0.438 0.687 -0.438 0.687 c 0 0 0.997 1.391 0.997 1.391 c 0 0 -1.07 0.599 -1.07 0.599 c 0 0 -0.442 1.267 -0.442 1.267 c 0 0 1.07 0.978 1.07 0.978 c 0 0 -0.182 0.811 -0.182 0.811 c 0 0 -1.427 0.413 -1.427 0.413 c 0 0 -0.228 0.854 -0.228 0.854 c 0 0 0.655 1.041 0.655 1.041 c 0 0 -0.407 0.485 -0.407 0.485 c 0 0 -0.899 0.935 -0.899 0.935 c 0 0 -1.014 -0.015 -1.014 -0.015 c 0 0 0.479 0.781 0.479 0.781 c 0 0 2.788 0.435 2.788 0.435 c 0 0 1.405 2.648 1.405 2.648 c 0 0 0.532 -0.81 0.532 -0.81 c 0 0 1.537 0.153 1.537 0.153 c 0 0 0.654 0.925 0.654 0.925 c 0 0 1.071 0.222 1.071 0.222 c 0 0 0.351 1.005 0.351 1.005 c 0 0 0.802 0.049 0.802 0.049 c 0 0 1.27 -1.216 1.27 -1.216 c 0 0 2.542 0.892 2.542 0.892 c 0 0 -0.443 -1.387 -0.443 -1.387 c 0 0 1.058 -3.268 1.058 -3.268 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Bouira"},"11":{"path":"M 340.615 208.544 c 0 0 -43.124 33.261 -43.124 33.261 c 0 0 0.146 -0.413 0.146 -0.413 c 0 0 -17.526 -14.179 -17.526 -14.179 c 0 0 -11.145 0.971 -11.145 0.971 c 0 0 -10.264 3.806 -10.264 3.806 c 0 0 -0.784 10.595 -0.784 10.595 c 0 0 -1.104 3.51 -1.104 3.51 c 0 0 -3.164 5.032 -3.164 5.032 c 0 0 -0.81 10.075 -0.81 10.075 c 0 0 -1.856 3.177 -1.856 3.177 c 0 0 0.051 6.213 0.051 6.213 c 0 0 1.848 2.781 1.848 2.781 c 0 0 -2.565 6.435 -2.565 6.435 c 0 0 -0.465 8.885 -0.465 8.885 c 0 0 -2.35 1.68 -2.35 1.68 c 0 0 -0.139 -0.823 -0.139 -0.823 c 0 0 -1.748 0.209 -1.748 0.209 c 0 0 -0.883 -0.813 -0.883 -0.813 c 0 0 -2.635 0.807 -2.635 0.807 c 0 0 -1.19 2.448 -1.19 2.448 c 0 0 -7.482 7.684 -7.482 7.684 c 0 0 2.714 6.037 2.714 6.037 c 0 0 8.571 12.137 8.571 12.137 c 0 0 0.259 38.387 0.259 38.387 c 0 0 -0.63 56.825 -0.63 56.825 c 0 0 4.163 -0.675 4.163 -0.675 c 0 0 4.417 0.47 4.417 0.47 c 0 0 1.521 7.254 1.521 7.254 c 0 0 6.095 6.187 6.095 6.187 c 0 0 2.49 5.061 2.49 5.061 c 0 0 1.682 5.848 1.682 5.848 c 0 0 -0.031 6.131 -0.031 6.131 c 0 0 2.249 3.263 2.249 3.263 c 0 0 3.133 7.454 3.133 7.454 c 0 0 0.496 2.892 0.496 2.892 c 0 0 -2.249 0.725 -2.249 0.725 c 0 0 1.485 0.058 1.485 0.058 c 0 0 2.693 1.431 2.693 1.431 c 0 0 3.086 -0.021 3.086 -0.021 c 0 0 6.312 1.33 6.312 1.33 c 0 0 6.54 3.166 6.54 3.166 c 0 0 -0.412 3.706 -0.412 3.706 c 0 0 0.537 0.907 0.537 0.907 c 0 0 -0.542 1.742 -0.542 1.742 c 0 0 0.979 1.557 0.979 1.557 c 0 0 -0.357 0.987 -0.357 0.987 c 0 0 0.917 2.147 0.917 2.147 c 0 0 -1.474 1.56 -1.474 1.56 c 0 0 -0.373 1.711 -0.373 1.711 c 0 0 -2.086 2.864 -2.086 2.864 c 0 0 0.506 1.159 0.506 1.159 c 0 0 5.114 3.9 5.114 3.9 c 0 0 60.512 -13.771 60.512 -13.771 c 0 0 38.057 -37.723 38.057 -37.723 c 0 0 64.331 -46.843 64.331 -46.843 c 0 0 -0.719 -20.563 -0.719 -20.563 c 0 0 -7.48 -4.23 -7.48 -4.23 c 0 0 -2.209 0.049 -2.209 0.049 c 0 0 -1.657 -1.011 -1.657 -1.011 c 0 0 -13.903 0.818 -13.903 0.818 c 0 0 -12.891 9.613 -12.891 9.613 c 0 0 -17.177 4.161 -17.177 4.161 c 0 0 -6.243 -4.392 -6.243 -4.392 c 0 0 1.974 -2.233 1.974 -2.233 c 0 0 -5.578 -12.361 -5.578 -12.361 c 0 0 -1.04 -10.938 -1.04 -10.938 c 0 0 0.237 -3.784 0.237 -3.784 c 0 0 -5.594 -8.032 -5.594 -8.032 c 0 0 -4.477 -0.141 -4.477 -0.141 c 0 0 -2.836 -2.179 -2.836 -2.179 c 0 0 -3.687 -6.237 -3.687 -6.237 c 0 0 -1.628 -4.169 -1.628 -4.169 c 0 0 -5.061 -6.142 -5.061 -6.142 c 0 0 -5.932 -16.141 -5.932 -16.141 c 0 0 -1.532 -1.132 -1.532 -1.132 c 0 0 -0.138 -1.005 -0.138 -1.005 c 0 0 -2.248 -0.6 -2.248 -0.6 c 0 0 -1.181 -1.556 -1.181 -1.556 c 0 0 1.06 -3.062 1.06 -3.062 c 0 0 2.819 -2.351 2.819 -2.351 c 0 0 -0.418 -1.914 -0.418 -1.914 c 0 0 -12.688 -11.21 -12.688 -11.21 c 0 0 -0.039 -8.717 -0.039 -8.717 c 0 0 -3.73 -17.581 -3.73 -17.581 c 0 0 1.772 -8.354 1.772 -8.354 c 0 0 -1.292 -33.81 -1.292 -33.81 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tamanrasset"},"12":{"path":"M 377.235 49.5529 c 0 0 0.397 -1.363 0.397 -1.363 c 0 0 1.877 1.4 1.877 1.4 c 0 0 1.622 -0.03 1.622 -0.03 c 0 0 2.103 -2.353 2.103 -2.353 c 0 0 1.256 0.156 1.256 0.156 c 0 0 2.499 -1.112 2.499 -1.112 c 0 0 2.176 1.081 2.176 1.081 c 0 0 -0.663 1.284 -0.663 1.284 c 0 0 0.469 0.414 0.469 0.414 c 0 0 -0.029 4.161 -0.029 4.161 c 0 0 1.961 1.389 1.961 1.389 c 0 0 0.321 3.785 0.321 3.785 c 0 0 0.61 0.972 0.61 0.972 c 0 0 -1.389 1.917 -1.389 1.917 c 0 0 0.063 2.599 0.063 2.599 c 0 0 2.079 1.616 2.079 1.616 c 0 0 1.524 0.072 1.524 0.072 c 0 0 -2.348 3.782 -2.348 3.782 c 0 0 -0.661 3.932 -0.661 3.932 c 0 0 -1.401 0.803 -1.401 0.803 c 0 0 0.931 3.721 0.931 3.721 c 0 0 0.876 0.981 0.876 0.981 c 0 0 -1.63 1.313 -1.63 1.313 c 0 0 0.909 0.787 0.909 0.787 c 0 0 -1.388 1.372 -1.388 1.372 c 0 0 0.229 0.686 0.229 0.686 c 0 0 -1.096 0.116 -1.096 0.116 c 0 0 -1.104 1.673 -1.104 1.673 c 0 0 -5.352 2.981 -5.352 2.981 c 0 0 -0.735 4.246 -0.735 4.246 c 0 0 -8.26 -0.416 -8.26 -0.416 c 0 0 -4.263 -1.484 -4.263 -1.484 c 0 0 0.773 -5.083 0.773 -5.083 c 0 0 2.108 -3.938 2.108 -3.938 c 0 0 0.024 -1.697 0.024 -1.697 c 0 0 -0.637 -0.956 -0.637 -0.956 c 0 0 0.749 -2.004 0.749 -2.004 c 0 0 -0.869 -2.387 -0.869 -2.387 c 0 0 -1.271 -0.098 -1.271 -0.098 c 0 0 -0.661 0.97 -0.661 0.97 c 0 0 -0.441 1.352 -0.441 1.352 c 0 0 0.5 -0.146 0.5 -0.146 c 0 0 -0.088 1.582 -0.088 1.582 c 0 0 -0.908 -2.111 -0.908 -2.111 c 0 0 1.39 -3.602 1.39 -3.602 c 0 0 1.306 -0.817 1.306 -0.817 c 0 0 1.429 -2.436 1.429 -2.436 c 0 0 -1.051 -1.558 -1.051 -1.558 c 0 0 0.787 -1.188 0.787 -1.188 c 0 0 -0.763 -0.573 -0.763 -0.573 c 0 0 -0.117 -2.443 -0.117 -2.443 c 0 0 3.133 -1.132 3.133 -1.132 c 0 0 0.624 -0.112 0.624 -0.112 c 0 0 1.879 -2.798 1.879 -2.798 c 0 0 4.046 -1.621 4.046 -1.621 c 0 0 -1.311 -2.658 -1.311 -2.658 c 0 0 -0.142 -1.094 -0.142 -1.094 c 0 0 0.772 -0.688 0.772 -0.688 c 0 0 -1.615 -0.739 -1.615 -0.739 c 0 0 -0.531 -2.116 -0.531 -2.116 c 0 0 -0.698 -0.39 -0.698 -0.39 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tébessa"},"13":{"path":"M 193.764 72.7758 c 0 0 -0.686 0.069 -0.686 0.069 c 0 0 -0.264 -0.909 -0.264 -0.909 c 0 0 -3.488 -1.748 -3.488 -1.748 c 0 0 -0.331 0.33 -0.331 0.33 c 0 0 -0.372 -0.771 -0.372 -0.771 c 0 0 -1.081 0.455 -1.081 0.455 c 0 0 -2.338 -0.793 -2.338 -0.793 c 0 0 -0.918 1.336 -0.918 1.336 c 0 0 -1.082 0.265 -1.082 0.265 c 0 0 -1.053 -0.668 -1.053 -0.668 c 0 0 0.202 -0.954 0.202 -0.954 c 0 0 -0.848 -0.622 -0.848 -0.622 c 0 0 -3.998 2.927 -3.998 2.927 c 0 0 -0.671 -0.354 -0.671 -0.354 c 0 0 -2.174 1.167 -2.174 1.167 c 0 0 -3.447 0.248 -3.447 0.248 c 0 0 -1.838 -0.844 -1.838 -0.844 c 0 0 -1.167 0.414 -1.167 0.414 c 0 0 -0.104 0.95 -0.104 0.95 c 0 0 2.603 2.448 2.603 2.448 c 0 0 1.057 0.802 1.057 0.802 c 0 0 1.388 -0.219 1.388 -0.219 c 0 0 0.027 1.49 0.027 1.49 c 0 0 1.617 0.96 1.617 0.96 c 0 0 0.088 0.883 0.088 0.883 c 0 0 3.129 1.718 3.129 1.718 c 0 0 -2.502 3.209 -2.502 3.209 c 0 0 0.771 0.313 0.771 0.313 c 0 0 1.368 2.382 1.368 2.382 c 0 0 1.285 0.582 1.285 0.582 c 0 0 -2.119 2.566 -2.119 2.566 c 0 0 1.582 2.156 1.582 2.156 c 0 0 -0.213 1.807 -0.213 1.807 c 0 0 1.198 3.756 1.198 3.756 c 0 0 3.61 -2.621 3.61 -2.621 c 0 0 4.992 0.022 4.992 0.022 c 0 0 1.227 -1.408 1.227 -1.408 c 0 0 1.529 -0.482 1.529 -0.482 c 0 0 6.093 -5.633 6.093 -5.633 c 0 0 -0.362 -0.793 -0.362 -0.793 c 0 0 -0.956 -0.198 -0.956 -0.198 c 0 0 1.609 -0.95 1.609 -0.95 c 0 0 1.285 -2.754 1.285 -2.754 c 0 0 -0.23 -0.686 -0.23 -0.686 c 0 0 0.496 0.037 0.496 0.037 c 0 0 -0.273 -1.005 -0.273 -1.005 c 0 0 -2.376 0.271 -2.376 0.271 c 0 0 0.434 -3.193 0.434 -3.193 c 0 0 -1.177 0.239 -1.177 0.239 c 0 0 0.804 -1.134 0.804 -1.134 c 0 0 -1.191 -0.046 -1.191 -0.046 c 0 0 -0.506 -1.828 -0.506 -1.828 c 0 0 1.313 -2.126 1.313 -2.126 c 0 0 -1.942 -1.063 -1.942 -1.063 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tlemcen"},"14":{"path":"M 258.955 61.8178 c 0 0 -1.327 0.262 -1.327 0.262 c 0 0 0.221 1.396 0.221 1.396 c 0 0 6.776 4.105 6.776 4.105 c 0 0 1.052 1.839 1.052 1.839 c 0 0 2.688 -2.3 2.688 -2.3 c 0 0 1.052 0.797 1.052 0.797 c 0 0 0.327 1.125 0.327 1.125 c 0 0 1.748 0.418 1.748 0.418 c 0 0 -0.01 1.521 -0.01 1.521 c 0 0 -0.677 0.26 -0.677 0.26 c 0 0 -1.121 2.251 -1.121 2.251 c 0 0 1.432 1.277 1.432 1.277 c 0 0 -3.229 1.273 -3.229 1.273 c 0 0 -1.447 4.661 -1.447 4.661 c 0 0 -1.47 0.458 -1.47 0.458 c 0 0 0.167 2.428 0.167 2.428 c 0 0 -3.015 0.372 -3.015 0.372 c 0 0 -0.437 1.044 -0.437 1.044 c 0 0 -1.978 0.888 -1.978 0.888 c 0 0 -2.348 2.563 -2.348 2.563 c 0 0 -4.877 1.753 -4.877 1.753 c 0 0 -1.839 2.088 -1.839 2.088 c 0 0 -0.365 2.438 -0.365 2.438 c 0 0 -1.645 0.978 -1.645 0.978 c 0 0 -0.272 -1.14 -0.272 -1.14 c 0 0 -3.774 2.229 -3.774 2.229 c 0 0 0.808 1.346 0.808 1.346 c 0 0 -2.194 1.46 -2.194 1.46 c 0 0 -1.118 -1.577 -1.118 -1.577 c 0 0 -0.216 -1.843 -0.216 -1.843 c 0 0 -5.541 0.295 -5.541 0.295 c 0 0 0.672 -4.883 0.672 -4.883 c 0 0 -3.973 -0.827 -3.973 -0.827 c 0 0 1.657 -2.906 1.657 -2.906 c 0 0 -2.975 -1.225 -2.975 -1.225 c 0 0 -0.316 -0.531 -0.316 -0.531 c 0 0 0.755 -0.53 0.755 -0.53 c 0 0 -0.449 -1.181 -0.449 -1.181 c 0 0 -1.062 0.458 -1.062 0.458 c 0 0 -1.729 -3.065 -1.729 -3.065 c 0 0 0.385 -1.708 0.385 -1.708 c 0 0 -0.557 -0.922 -0.557 -0.922 c 0 0 3.161 -2.329 3.161 -2.329 c 0 0 -1.595 -2.433 -1.595 -2.433 c 0 0 -1.402 -0.632 -1.402 -0.632 c 0 0 -0.281 -0.991 -0.281 -0.991 c 0 0 -3.297 0.388 -3.297 0.388 c 0 0 1.071 -1.77 1.071 -1.77 c 0 0 1.552 -1.101 1.552 -1.101 c 0 0 -0.245 -0.949 -0.245 -0.949 c 0 0 1.176 -1.409 1.176 -1.409 c 0 0 1.083 -0.161 1.083 -0.161 c 0 0 1.521 0.789 1.521 0.789 c 0 0 1.112 -0.354 1.112 -0.354 c 0 0 0.873 -2.104 0.873 -2.104 c 0 0 0.688 -0.28 0.688 -0.28 c 0 0 -1.49 -1.555 -1.49 -1.555 c 0 0 0.9 -0.182 0.9 -0.182 c 0 0 1.728 -2.878 1.728 -2.878 c 0 0 1.215 -0.098 1.215 -0.098 c 0 0 0.112 -0.867 0.112 -0.867 c 0 0 0.812 0.11 0.812 0.11 c 0 0 0.164 -0.913 0.164 -0.913 c 0 0 2.058 0.206 2.058 0.206 c 0 0 0.567 -0.985 0.567 -0.985 c 0 0 1.449 -0.572 1.449 -0.572 c 0 0 1.345 1.67 1.345 1.67 c 0 0 0.589 -2.298 0.589 -2.298 c 0 0 1.271 0.93 1.271 0.93 c 0 0 0.538 -0.303 0.538 -0.303 c 0 0 1.353 0.765 1.353 0.765 c 0 0 0.063 1.414 0.063 1.414 c 0 0 1.952 -0.174 1.952 -0.174 c 0 0 1.046 1.72 1.046 1.72 c 0 0 0.813 0.153 0.813 0.153 c 0 0 0.172 -1.047 0.172 -1.047 c 0 0 0.958 0.973 0.958 0.973 c 0 0 3.798 -0.432 3.798 -0.432 c 0 0 2.435 -1.337 2.435 -1.337 c 0 0 -0.56 0.67 -0.56 0.67 c 0 0 1.55 0.067 1.55 0.067 c 0 0 -0.034 0.954 -0.034 0.954 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tiaret"},"15":{"path":"M 310.88 26.4728 c 0 0 1.398 1.952 1.398 1.952 c 0 0 0.068 1.338 0.068 1.338 c 0 0 -0.67 0.654 -0.67 0.654 c 0 0 -0.705 -0.539 -0.705 -0.539 c 0 0 -1.229 0.36 -1.229 0.36 c 0 0 -0.147 0.646 -0.147 0.646 c 0 0 1.777 0.943 1.777 0.943 c 0 0 -1.26 1.581 -1.26 1.581 c 0 0 0.406 0.661 0.406 0.661 c 0 0 -2.179 2.442 -2.179 2.442 c 0 0 -1.795 0.831 -1.795 0.831 c 0 0 -2.514 0.268 -2.514 0.268 c 0 0 -0.273 -0.535 -0.273 -0.535 c 0 0 -1.01 0.543 -1.01 0.543 c 0 0 -5.653 0.163 -5.653 0.163 c 0 0 -1.334 -0.33 -1.334 -0.33 c 0 0 -0.935 -1.637 -0.935 -1.637 c 0 0 -0.782 0.04 -0.782 0.04 c 0 0 -0.892 -1.236 -0.892 -1.236 c 0 0 -0.219 -1.694 -0.219 -1.694 c 0 0 1.417 -0.319 1.417 -0.319 c 0 0 0.845 0.592 0.845 0.592 c 0 0 -0.163 -1.288 -0.163 -1.288 c 0 0 1.354 0.313 1.354 0.313 c 0 0 -0.771 -0.862 -0.771 -0.862 c 0 0 0.386 -1.441 0.386 -1.441 c 0 0 1.042 0.231 1.042 0.231 c 0 0 0.179 -0.604 0.179 -0.604 c 0 0 0.945 -0.077 0.945 -0.077 c 0 0 0.045 -0.779 0.045 -0.779 c 0 0 1.354 -1.163 1.354 -1.163 c 0 0 -0.135 -1.239 -0.135 -1.239 c 0 0 5.439 -0.32 5.439 -0.32 c 0 0 1.851 0.426 1.851 0.426 c 0 0 0.986 -0.547 0.986 -0.547 c 0 0 3.174 0.626 3.174 0.626 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tizi-Ouzou"},"16":{"path":"M 285.549 29.5858 c 0 0 -0.27 0.609 -0.27 0.609 c 0 0 0.656 -0.216 0.656 -0.216 c 0 0 0.031 1.021 0.031 1.021 c 0 0 -2.278 0.745 -2.278 0.745 c 0 0 -0.66 -0.482 -0.66 -0.482 c 0 0 0.391 0.701 0.391 0.701 c 0 0 -0.688 0.546 -0.688 0.546 c 0 0 -1.01 0.771 -1.01 0.771 c 0 0 -0.609 -0.302 -0.609 -0.302 c 0 0 -0.701 1.807 -0.701 1.807 c 0 0 -1.117 0.075 -1.117 0.075 c 0 0 0.107 -1.082 0.107 -1.082 c 0 0 -1.49 1.068 -1.49 1.068 c 0 0 -3.771 -1.583 -3.771 -1.583 c 0 0 -0.135 -1.446 -0.135 -1.446 c 0 0 0.607 -1.614 0.607 -1.614 c 0 0 0.9 -0.174 0.9 -0.174 c 0 0 0.272 -0.944 0.272 -0.944 c 0 0 1.205 -0.234 1.205 -0.234 c 0 0 1.831 0.088 1.831 0.088 c 0 0 0.494 1.2 0.494 1.2 c 0 0 1.162 0.524 1.162 0.524 c 0 0 2.119 -0.622 2.119 -0.622 c 0 0 0.155 -1.295 0.155 -1.295 c 0 0 2.799 0.839 2.799 0.839 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Alger"},"17":{"path":"M 303.711 95.2648 c 0 0 -4.303 -3.584 -4.303 -3.584 c 0 0 0.313 -2.084 0.313 -2.084 c 0 0 -1.836 -1.982 -1.836 -1.982 c 0 0 0.299 -2.041 0.299 -2.041 c 0 0 -0.719 -4.249 -0.719 -4.249 c 0 0 -3.906 -0.974 -3.906 -0.974 c 0 0 -1.411 0.479 -1.411 0.479 c 0 0 -0.14 -1.652 -0.14 -1.652 c 0 0 -1.402 -0.321 -1.402 -0.321 c 0 0 0.209 -2.972 0.209 -2.972 c 0 0 -0.698 -0.953 -0.698 -0.953 c 0 0 0.551 -0.067 0.551 -0.067 c 0 0 0.504 -1.54 0.504 -1.54 c 0 0 -1.839 0.736 -1.839 0.736 c 0 0 -1.138 -3.13 -1.138 -3.13 c 0 0 4.281 -3.605 4.281 -3.605 c 0 0 -0.424 -1.941 -0.424 -1.941 c 0 0 0.865 -0.632 0.865 -0.632 c 0 0 0.075 -1.772 0.075 -1.772 c 0 0 -4.719 -3.806 -4.719 -3.806 c 0 0 -1.903 -1.954 -1.903 -1.954 c 0 0 -0.313 -1.257 -0.313 -1.257 c 0 0 -1.091 0.049 -1.091 0.049 c 0 0 -0.854 -1.716 -0.854 -1.716 c 0 0 -1.031 1.021 -1.031 1.021 c 0 0 0.104 1.206 0.104 1.206 c 0 0 -0.753 1.37 -0.753 1.37 c 0 0 -2.786 0.7 -2.786 0.7 c 0 0 -0.185 -2.199 -0.185 -2.199 c 0 0 -0.699 0.144 -0.699 0.144 c 0 0 -0.693 -2.337 -0.693 -2.337 c 0 0 -2.585 0.707 -2.585 0.707 c 0 0 0.677 5.005 0.677 5.005 c 0 0 -0.578 -0.259 -0.578 -0.259 c 0 0 -1.83 1.359 -1.83 1.359 c 0 0 -1.605 2.564 -1.605 2.564 c 0 0 -1.292 0.661 -1.292 0.661 c 0 0 -2.698 -1.908 -2.698 -1.908 c 0 0 -0.229 0.56 -0.229 0.56 c 0 0 -2.476 0.813 -2.476 0.813 c 0 0 -2.139 0.167 -2.139 0.167 c 0 0 -0.658 -2.362 -0.658 -2.362 c 0 0 -3.699 0.315 -3.699 0.315 c 0 0 -1.327 0.263 -1.327 0.263 c 0 0 0.221 1.396 0.221 1.396 c 0 0 6.777 4.106 6.777 4.106 c 0 0 1.051 1.838 1.051 1.838 c 0 0 2.688 -2.299 2.688 -2.299 c 0 0 1.052 0.796 1.052 0.796 c 0 0 0.327 1.125 0.327 1.125 c 0 0 1.748 0.418 1.748 0.418 c 0 0 -0.01 1.521 -0.01 1.521 c 0 0 -0.677 0.259 -0.677 0.259 c 0 0 -1.122 2.251 -1.122 2.251 c 0 0 1.432 1.277 1.432 1.277 c 0 0 -3.229 1.273 -3.229 1.273 c 0 0 -1.446 4.661 -1.446 4.661 c 0 0 -1.471 0.458 -1.471 0.458 c 0 0 0.169 2.428 0.169 2.428 c 0 0 0.566 6.331 0.566 6.331 c 0 0 1.244 3.59 1.244 3.59 c 0 0 0.441 -0.086 0.441 -0.086 c 0 0 3.376 4.766 3.376 4.766 c 0 0 1.209 0.325 1.209 0.325 c 0 0 2.258 -1.065 2.258 -1.065 c 0 0 0.695 0.262 0.695 0.262 c 0 0 -0.026 -1.447 -0.026 -1.447 c 0 0 2.266 -2.289 2.266 -2.289 c 0 0 1.456 0.758 1.456 0.758 c 0 0 -0.123 0.432 -0.123 0.432 c 0 0 1.253 -0.433 1.253 -0.433 c 0 0 2.38 6.709 2.38 6.709 c 0 0 -0.146 1.212 -0.146 1.212 c 0 0 1.604 3.201 1.604 3.201 c 0 0 5.243 1.505 5.243 1.505 c 0 0 3.983 3.588 3.983 3.588 c 0 0 1.407 2.328 1.407 2.328 c 0 0 8.125 3.061 8.125 3.061 c 0 0 1.49 1.064 1.49 1.064 c 0 0 4.01 3.915 4.01 3.915 c 0 0 3.191 5.374 3.191 5.374 c 0 0 11.872 3.224 11.872 3.224 c 0 0 -2.209 -11.442 -2.209 -11.442 c 0 0 2.42 -5.131 2.42 -5.131 c 0 0 -0.116 -1.902 -0.116 -1.902 c 0 0 0.521 -0.88 0.521 -0.88 c 0 0 -4 -0.997 -4 -0.997 c 0 0 -0.725 -1.226 -0.725 -1.226 c 0 0 -1.964 0.328 -1.964 0.328 c 0 0 -0.39 -0.95 -0.39 -0.95 c 0 0 -3.261 -0.627 -3.261 -0.627 c 0 0 -1.081 -1.472 -1.081 -1.472 c 0 0 -6.57 -2.83 -6.57 -2.83 c 0 0 -0.45 -0.689 -0.45 -0.689 c 0 0 0.395 -0.524 0.395 -0.524 c 0 0 1.344 -0.124 1.344 -0.124 c 0 0 1.375 -1.476 1.375 -1.476 c 0 0 1.195 0.003 1.195 0.003 c 0 0 -0.568 -0.73 -0.568 -0.73 c 0 0 -2.354 -0.395 -2.354 -0.395 c 0 0 -0.386 -1.492 -0.386 -1.492 c 0 0 -1.887 -0.264 -1.887 -0.264 c 0 0 -0.935 -1.142 -0.935 -1.142 c 0 0 0.443 -0.693 0.443 -0.693 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Djelfa"},"18":{"path":"M 335.112 34.2048 c 0 0 1.112 -0.339 1.112 -0.339 c 0 0 1.367 0.723 1.367 0.723 c 0 0 1.504 -0.446 1.504 -0.446 c 0 0 1.242 -1.671 1.242 -1.671 c 0 0 4.855 0.813 4.855 0.813 c 0 0 1.86 -1.232 1.86 -1.232 c 0 0 0.435 0.64 0.435 0.64 c 0 0 2.741 0.479 2.741 0.479 c 0 0 -0.254 -1.387 -0.254 -1.387 c 0 0 0.828 -0.194 0.828 -0.194 c 0 0 0.3 -0.784 0.3 -0.784 c 0 0 -2.966 -1.426 -2.966 -1.426 c 0 0 -0.699 -3.309 -0.699 -3.309 c 0 0 -1.636 -0.354 -1.636 -0.354 c 0 0 0.278 -1.183 0.278 -1.183 c 0 0 -0.458 -0.661 -0.458 -0.661 c 0 0 -5.771 2.994 -5.771 2.994 c 0 0 -3.482 0.854 -3.482 0.854 c 0 0 -0.857 -0.566 -0.857 -0.566 c 0 0 -1.676 0.329 -1.676 0.329 c 0 0 -2.381 1.442 -2.381 1.442 c 0 0 -1.033 2.037 -1.033 2.037 c 0 0 -1.852 0.936 -1.852 0.936 c 0 0 0.027 1.315 0.027 1.315 c 0 0 0.917 0.194 0.917 0.194 c 0 0 0.751 -0.023 0.751 -0.023 c 0 0 0.402 1.854 0.402 1.854 c 0 0 0.979 0.076 0.979 0.076 c 0 0 0.992 -0.957 0.992 -0.957 c 0 0 1.248 0.676 1.248 0.676 c 0 0 1.227 -0.83 1.227 -0.83 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Jijel"},"19":{"path":"M 335.112 34.2048 c 0 0 0.558 0.717 0.558 0.717 c 0 0 -0.125 2.048 -0.125 2.048 c 0 0 1.244 0.953 1.244 0.953 c 0 0 -0.114 1.348 -0.114 1.348 c 0 0 1.395 0.426 1.395 0.426 c 0 0 -0.097 1.172 -0.097 1.172 c 0 0 2.188 2.367 2.188 2.367 c 0 0 -0.978 0.521 -0.978 0.521 c 0 0 0.049 1.868 0.049 1.868 c 0 0 1.715 0.399 1.715 0.399 c 0 0 0.284 2.085 0.284 2.085 c 0 0 -0.688 0.604 -0.688 0.604 c 0 0 1.162 1.212 1.162 1.212 c 0 0 -1.2 1.294 -1.2 1.294 c 0 0 -0.965 0.569 -0.965 0.569 c 0 0 0.444 1.163 0.444 1.163 c 0 0 -2.806 -2.418 -2.806 -2.418 c 0 0 -1.214 0.316 -1.214 0.316 c 0 0 -1.424 1.56 -1.424 1.56 c 0 0 0.121 0.773 0.121 0.773 c 0 0 1.212 0.402 1.212 0.402 c 0 0 -0.792 1.303 -0.792 1.303 c 0 0 -0.682 -0.238 -0.682 -0.238 c 0 0 -0.502 0.541 -0.502 0.541 c 0 0 -2.294 -0.948 -2.294 -0.948 c 0 0 -0.241 0.685 -0.241 0.685 c 0 0 -0.797 -0.078 -0.797 -0.078 c 0 0 -1.382 1.093 -1.382 1.093 c 0 0 0.234 1.001 0.234 1.001 c 0 0 -0.78 1.759 -0.78 1.759 c 0 0 -1.127 -0.334 -1.127 -0.334 c 0 0 -3.493 -0.469 -3.493 -0.469 c 0 0 -0.547 -0.806 -0.547 -0.806 c 0 0 0.417 -0.537 0.417 -0.537 c 0 0 -0.486 -0.518 -0.486 -0.518 c 0 0 -1.107 0.239 -1.107 0.239 c 0 0 -1.474 -1.041 -1.474 -1.041 c 0 0 0.169 -0.628 0.169 -0.628 c 0 0 -0.018 -1.602 -0.018 -1.602 c 0 0 2.088 -0.288 2.088 -0.288 c 0 0 -0.484 -2.927 -0.484 -2.927 c 0 0 1.669 -2.858 1.669 -2.858 c 0 0 -0.97 -0.972 -0.97 -0.972 c 0 0 0.127 -2.078 0.127 -2.078 c 0 0 -0.963 -0.273 -0.963 -0.273 c 0 0 -1.48 -2.546 -1.48 -2.546 c 0 0 -1.203 -0.362 -1.203 -0.362 c 0 0 -0.961 0.653 -0.961 0.653 c 0 0 -2.854 0.298 -2.854 0.298 c 0 0 -0.779 -0.983 -0.779 -0.983 c 0 0 0.302 -1.874 0.302 -1.874 c 0 0 -1.26 -0.672 -1.26 -0.672 c 0 0 2.517 -1.449 2.517 -1.449 c 0 0 0.048 -1.349 0.048 -1.349 c 0 0 3.62 0.479 3.62 0.479 c 0 0 0.447 -1.378 0.447 -1.378 c 0 0 0.928 0.088 0.928 0.088 c 0 0 0.039 -0.447 0.039 -0.447 c 0 0 2.159 1.465 2.159 1.465 c 0 0 -0.535 0.692 -0.535 0.692 c 0 0 -0.024 2.691 -0.024 2.691 c 0 0 0.57 -0.199 0.57 -0.199 c 0 0 -0.025 0.937 -0.025 0.937 c 0 0 1.656 -0.241 1.656 -0.241 c 0 0 0.748 -0.375 0.748 -0.375 c 0 0 -0.471 -0.92 -0.471 -0.92 c 0 0 1.314 -1.474 1.314 -1.474 c 0 0 -0.252 -0.684 -0.252 -0.684 c 0 0 2.389 -1.072 2.389 -1.072 c 0 0 0.184 -1.478 0.184 -1.478 c 0 0 0.751 -0.023 0.751 -0.023 c 0 0 0.403 1.854 0.403 1.854 c 0 0 0.979 0.077 0.979 0.077 c 0 0 0.992 -0.958 0.992 -0.958 c 0 0 1.248 0.676 1.248 0.676 c 0 0 1.224 -0.831 1.224 -0.831 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Sétif"},"20":{"path":"M 233.026 90.7739 c 0 0 -2.853 -0.734 -2.853 -0.734 c 0 0 -4.583 3.134 -4.583 3.134 c 0 0 -1.732 -2.296 -1.732 -2.296 c 0 0 -2.898 2.009 -2.898 2.009 c 0 0 -2.172 -0.253 -2.172 -0.253 c 0 0 -2.096 -2.128 -2.096 -2.128 c 0 0 -2.331 -0.763 -2.331 -0.763 c 0 0 -1.5 -1.498 -1.5 -1.498 c 0 0 -2.199 1.248 -2.199 1.248 c 0 0 -0.138 -2.153 -0.138 -2.153 c 0 0 -0.979 -1.096 -0.979 -1.096 c 0 0 0.256 -1.511 0.256 -1.511 c 0 0 2.491 1.248 2.491 1.248 c 0 0 0.646 1.884 0.646 1.884 c 0 0 1.12 -1.667 1.12 -1.667 c 0 0 -1.379 -2.84 -1.379 -2.84 c 0 0 -2.113 -1.373 -2.113 -1.373 c 0 0 -0.294 -1.104 -0.294 -1.104 c 0 0 -1.77 -0.163 -1.77 -0.163 c 0 0 0.403 -1.189 0.403 -1.189 c 0 0 -1.328 -0.901 -1.328 -0.901 c 0 0 1.163 -0.801 1.163 -0.801 c 0 0 -0.396 -2.087 -0.396 -2.087 c 0 0 1.813 -0.197 1.813 -0.197 c 0 0 -0.485 -1.763 -0.485 -1.763 c 0 0 0.353 -0.945 0.353 -0.945 c 0 0 1.317 -0.403 1.317 -0.403 c 0 0 0.982 0.007 0.982 0.007 c 0 0 0.665 -1.239 0.665 -1.239 c 0 0 0.345 1.976 0.345 1.976 c 0 0 2.583 -0.188 2.583 -0.188 c 0 0 1.301 0.867 1.301 0.867 c 0 0 1.081 -0.098 1.081 -0.098 c 0 0 0.205 0.906 0.205 0.906 c 0 0 1.011 0.663 1.011 0.663 c 0 0 2.493 -1.648 2.493 -1.648 c 0 0 0.773 0.891 0.773 0.891 c 0 0 0.999 0.119 0.999 0.119 c 0 0 1.539 -1.518 1.539 -1.518 c 0 0 3.298 -0.388 3.298 -0.388 c 0 0 0.28 0.989 0.28 0.989 c 0 0 1.403 0.633 1.403 0.633 c 0 0 1.595 2.433 1.595 2.433 c 0 0 -3.162 2.329 -3.162 2.329 c 0 0 0.558 0.923 0.558 0.923 c 0 0 -0.385 1.708 -0.385 1.708 c 0 0 1.729 3.064 1.729 3.064 c 0 0 1.062 -0.458 1.062 -0.458 c 0 0 0.449 1.181 0.449 1.181 c 0 0 -0.755 0.531 -0.755 0.531 c 0 0 0.315 0.529 0.315 0.529 c 0 0 2.975 1.226 2.975 1.226 c 0 0 -1.655 2.904 -1.655 2.904 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Saida"},"21":{"path":"M 368.508 30.2198 c 0 0 -0.538 0.351 -0.538 0.351 c 0 0 -0.418 -0.446 -0.418 -0.446 c 0 0 -0.55 1.052 -0.55 1.052 c 0 0 -3.584 1.265 -3.584 1.265 c 0 0 -0.653 0.873 -0.653 0.873 c 0 0 0.42 1.242 0.42 1.242 c 0 0 -2.629 0.698 -2.629 0.698 c 0 0 -0.062 1.543 -0.062 1.543 c 0 0 -1.254 -0.13 -1.254 -0.13 c 0 0 -0.397 -0.7 -0.397 -0.7 c 0 0 -1.124 0.208 -1.124 0.208 c 0 0 0.207 -2.014 0.207 -2.014 c 0 0 0.97 -1.018 0.97 -1.018 c 0 0 -1.8 0.36 -1.8 0.36 c 0 0 -2.274 -0.424 -2.274 -0.424 c 0 0 -0.369 -1.324 -0.369 -1.324 c 0 0 -1.066 1.389 -1.066 1.389 c 0 0 -2.188 -0.147 -2.188 -0.147 c 0 0 -0.967 0.174 -0.967 0.174 c 0 0 -0.254 -1.387 -0.254 -1.387 c 0 0 0.828 -0.194 0.828 -0.194 c 0 0 0.3 -0.783 0.3 -0.783 c 0 0 -2.966 -1.427 -2.966 -1.427 c 0 0 -0.699 -3.309 -0.699 -3.309 c 0 0 -1.635 -0.354 -1.635 -0.354 c 0 0 0.277 -1.183 0.277 -1.183 c 0 0 -0.458 -0.661 -0.458 -0.661 c 0 0 -0.486 -1.046 -0.486 -1.046 c 0 0 0.477 -1.133 0.477 -1.133 c 0 0 1.46 -1.163 1.46 -1.163 c 0 0 2.801 -0.643 2.801 -0.643 c 0 0 1.617 0.827 1.617 0.827 c 0 0 0.77 2.041 0.77 2.041 c 0 0 2.885 0.665 2.885 0.665 c 0 0 0.642 -0.521 0.642 -0.521 c 0 0 0.391 0.479 0.391 0.479 c 0 0 1.646 -0.394 1.646 -0.394 c 0 0 0.779 1.6 0.779 1.6 c 0 0 1.483 0.237 1.483 0.237 c 0 0 2.637 -1.094 2.637 -1.094 c 0 0 1.659 0.04 1.659 0.04 c 0 0 2.043 -1.929 2.043 -1.929 c 0 0 -0.279 -1.044 -0.279 -1.044 c 0 0 -1.836 -1.298 -1.836 -1.298 c 0 0 2.469 0.061 2.469 0.061 c 0 0 0.865 0.703 0.865 0.703 c 0 0 -0.27 0.649 -0.27 0.649 c 0 0 0.934 1.558 0.934 1.558 c 0 0 -0.102 0.528 -0.102 0.528 c 0 0 -0.618 -0.109 -0.618 -0.109 c 0 0 1.345 1.255 1.345 1.255 c 0 0 0.646 3.424 0.646 3.424 c 0 0 -0.074 0.896 -0.074 0.896 c 0 0 -1.197 0.49 -1.197 0.49 c 0 0 0.196 1.267 0.196 1.267 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Skikda"},"22":{"path":"M 204.15 64.0609 c 0 0 -0.642 0.992 -0.642 0.992 c 0 0 0.241 0.965 0.241 0.965 c 0 0 -1.503 0.747 -1.503 0.747 c 0 0 -0.184 -0.672 -0.184 -0.672 c 0 0 -2.838 0.497 -2.838 0.497 c 0 0 -0.066 0.729 -0.066 0.729 c 0 0 -0.969 0.457 -0.969 0.457 c 0 0 -0.813 -0.548 -0.813 -0.548 c 0 0 -0.78 1.395 -0.78 1.395 c 0 0 -0.673 -0.18 -0.673 -0.18 c 0 0 0.286 1.945 0.286 1.945 c 0 0 -1.38 0.462 -1.38 0.462 c 0 0 -0.248 1.449 -0.248 1.449 c 0 0 -0.818 0.477 -0.818 0.477 c 0 0 1.942 1.063 1.942 1.063 c 0 0 -1.313 2.126 -1.313 2.126 c 0 0 0.506 1.828 0.506 1.828 c 0 0 1.191 0.045 1.191 0.045 c 0 0 -0.804 1.135 -0.804 1.135 c 0 0 1.177 -0.239 1.177 -0.239 c 0 0 -0.433 3.193 -0.433 3.193 c 0 0 2.376 -0.271 2.376 -0.271 c 0 0 0.272 1.004 0.272 1.004 c 0 0 -0.496 -0.036 -0.496 -0.036 c 0 0 0.23 0.687 0.23 0.687 c 0 0 -1.285 2.753 -1.285 2.753 c 0 0 -1.609 0.95 -1.609 0.95 c 0 0 0.956 0.198 0.956 0.198 c 0 0 0.362 0.793 0.362 0.793 c 0 0 -6.093 5.633 -6.093 5.633 c 0 0 1.08 1.632 1.08 1.632 c 0 0 2.133 -1.567 2.133 -1.567 c 0 0 0.589 1.018 0.589 1.018 c 0 0 0.342 -0.416 0.342 -0.416 c 0 0 2.966 0.896 2.966 0.896 c 0 0 4.055 -2.511 4.055 -2.511 c 0 0 1.843 1.041 1.843 1.041 c 0 0 3.133 9.769 3.133 9.769 c 0 0 0.314 -1.128 0.314 -1.128 c 0 0 0.854 0.04 0.854 0.04 c 0 0 2.091 -2.885 2.091 -2.885 c 0 0 1.632 -0.712 1.632 -0.712 c 0 0 1.374 0.198 1.374 0.198 c 0 0 1.501 -3.065 1.501 -3.065 c 0 0 0.941 -0.691 0.941 -0.691 c 0 0 -1.231 -5.509 -1.231 -5.509 c 0 0 -1.5 -1.498 -1.5 -1.498 c 0 0 -2.199 1.248 -2.199 1.248 c 0 0 -0.138 -2.153 -0.138 -2.153 c 0 0 -0.979 -1.096 -0.979 -1.096 c 0 0 0.256 -1.511 0.256 -1.511 c 0 0 2.491 1.248 2.491 1.248 c 0 0 0.646 1.884 0.646 1.884 c 0 0 1.12 -1.667 1.12 -1.667 c 0 0 -1.379 -2.84 -1.379 -2.84 c 0 0 -2.113 -1.373 -2.113 -1.373 c 0 0 -0.294 -1.104 -0.294 -1.104 c 0 0 -1.77 -0.163 -1.77 -0.163 c 0 0 0.403 -1.189 0.403 -1.189 c 0 0 -1.328 -0.901 -1.328 -0.901 c 0 0 1.163 -0.801 1.163 -0.801 c 0 0 -0.396 -2.087 -0.396 -2.087 c 0 0 1.813 -0.197 1.813 -0.197 c 0 0 -0.485 -1.763 -0.485 -1.763 c 0 0 0.353 -0.945 0.353 -0.945 c 0 0 1.317 -0.403 1.317 -0.403 c 0 0 -0.804 -2.202 -0.804 -2.202 c 0 0 0.376 -0.966 0.376 -0.966 c 0 0 1.477 -0.712 1.477 -0.712 c 0 0 -0.955 -0.354 -0.955 -0.354 c 0 0 -1.221 1.019 -1.221 1.019 c 0 0 -0.218 -0.549 -0.218 -0.549 c 0 0 1.312 -0.857 1.312 -0.857 c 0 0 0.38 -0.986 0.38 -0.986 c 0 0 -2.728 -0.854 -2.728 -0.854 c 0 0 -0.353 -0.632 -0.353 -0.632 c 0 0 -0.752 0.882 -0.752 0.882 c 0 0 -1.563 -0.12 -1.563 -0.12 c 0 0 0.231 -2.255 0.231 -2.255 c 0 0 -1.589 0.603 -1.589 0.603 c 0 0 -0.783 -0.393 -0.783 -0.393 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Sidi Bel Abbes"},"23":{"path":"M 375.158 30.0759 c 0 0 0.57 -1.447 0.57 -1.447 c 0 0 -0.427 -0.747 -0.427 -0.747 c 0 0 0.969 -1.14 0.969 -1.14 c 0 0 0.939 0.143 0.939 0.143 c 0 0 0.031 -1.328 0.031 -1.328 c 0 0 1.139 -0.009 1.139 -0.009 c 0 0 -0.366 -0.685 -0.366 -0.685 c 0 0 -1.192 -0.868 -1.192 -0.868 c 0 0 0.534 -2.257 0.534 -2.257 c 0 0 -1.771 0.605 -1.771 0.605 c 0 0 -1.04 -0.711 -1.04 -0.711 c 0 0 -0.714 0.503 -0.714 0.503 c 0 0 -2.358 -1.985 -2.358 -1.985 c 0 0 -2.144 0.188 -2.144 0.188 c 0 0 -0.479 -1.129 -0.479 -1.129 c 0 0 -2.073 0.349 -2.073 0.349 c 0 0 0.865 0.705 0.865 0.705 c 0 0 -0.27 0.648 -0.27 0.648 c 0 0 0.934 1.558 0.934 1.558 c 0 0 -0.102 0.529 -0.102 0.529 c 0 0 -0.618 -0.109 -0.618 -0.109 c 0 0 1.345 1.253 1.345 1.253 c 0 0 0.647 3.425 0.647 3.425 c 0 0 -0.075 0.896 -0.075 0.896 c 0 0 -1.196 0.49 -1.196 0.49 c 0 0 0.201 1.266 0.201 1.266 c 0 0 1.15 -0.122 1.15 -0.122 c 0 0 0.438 0.876 0.438 0.876 c 0 0 0.199 -0.74 0.199 -0.74 c 0 0 1.104 -0.509 1.104 -0.509 c 0 0 0.176 1.188 0.176 1.188 c 0 0 2.713 0.503 2.713 0.503 c 0 0 0.871 -1.339 0.871 -1.339 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Annaba"},"24":{"path":"M 375.158 30.0759 c 0 0 0.936 -0.309 0.936 -0.309 c 0 0 0.688 0.501 0.688 0.501 c 0 0 1.188 2.609 1.188 2.609 c 0 0 1.169 -0.383 1.169 -0.383 c 0 0 0.201 0.543 0.201 0.543 c 0 0 -0.047 -0.771 -0.047 -0.771 c 0 0 1.299 0.584 1.299 0.584 c 0 0 0.92 1.851 0.92 1.851 c 0 0 -1.832 1.544 -1.832 1.544 c 0 0 -1.021 -0.411 -1.021 -0.411 c 0 0 -0.195 1.316 -0.195 1.316 c 0 0 1.08 1.383 1.08 1.383 c 0 0 -0.374 0.437 -0.374 0.437 c 0 0 -2.218 0.173 -2.218 0.173 c 0 0 -2.16 2.08 -2.16 2.08 c 0 0 -1.194 -0.271 -1.194 -0.271 c 0 0 -2.52 0.934 -2.52 0.934 c 0 0 -2.854 -0.539 -2.854 -0.539 c 0 0 -0.494 1.348 -0.494 1.348 c 0 0 0.75 0.918 0.75 0.918 c 0 0 -1.257 0.076 -1.257 0.076 c 0 0 -0.683 1.774 -0.683 1.774 c 0 0 -2.784 1.371 -2.784 1.371 c 0 0 -0.998 -0.165 -0.998 -0.165 c 0 0 0.196 -0.958 0.196 -0.958 c 0 0 -1.267 -0.551 -1.267 -0.551 c 0 0 0.201 -1.256 0.201 -1.256 c 0 0 -0.077 -0.57 -0.077 -0.57 c 0 0 0.855 -0.474 0.855 -0.474 c 0 0 0.104 -1.688 0.104 -1.688 c 0 0 -0.561 -1.442 -0.561 -1.442 c 0 0 -1.225 -0.221 -1.225 -0.221 c 0 0 0.6 -0.717 0.6 -0.717 c 0 0 -1.052 -0.557 -1.052 -0.557 c 0 0 0.532 -0.551 0.532 -0.551 c 0 0 -0.572 -0.892 -0.572 -0.892 c 0 0 0.062 -1.543 0.062 -1.543 c 0 0 2.629 -0.698 2.629 -0.698 c 0 0 -0.42 -1.242 -0.42 -1.242 c 0 0 0.653 -0.873 0.653 -0.873 c 0 0 3.583 -1.265 3.583 -1.265 c 0 0 0.55 -1.052 0.55 -1.052 c 0 0 0.419 0.446 0.419 0.446 c 0 0 0.538 -0.351 0.538 -0.351 c 0 0 1.15 -0.122 1.15 -0.122 c 0 0 0.438 0.876 0.438 0.876 c 0 0 0.199 -0.741 0.199 -0.741 c 0 0 1.104 -0.509 1.104 -0.509 c 0 0 0.176 1.188 0.176 1.188 c 0 0 2.713 0.503 2.713 0.503 c 0 0 0.872 -1.333 0.872 -1.333 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Guelma"},"25":{"path":"M 361.888 43.9039 c 0 0 -0.077 -0.57 -0.077 -0.57 c 0 0 0.855 -0.474 0.855 -0.474 c 0 0 0.104 -1.688 0.104 -1.688 c 0 0 -0.561 -1.442 -0.561 -1.442 c 0 0 -1.224 -0.221 -1.224 -0.221 c 0 0 0.599 -0.717 0.599 -0.717 c 0 0 -1.052 -0.557 -1.052 -0.557 c 0 0 0.532 -0.551 0.532 -0.551 c 0 0 -0.572 -0.892 -0.572 -0.892 c 0 0 -1.253 -0.13 -1.253 -0.13 c 0 0 -0.398 -0.7 -0.398 -0.7 c 0 0 -1.124 0.208 -1.124 0.208 c 0 0 0.207 -2.014 0.207 -2.014 c 0 0 0.969 -1.018 0.969 -1.018 c 0 0 -1.799 0.36 -1.799 0.36 c 0 0 -2.274 -0.424 -2.274 -0.424 c 0 0 -0.368 -1.324 -0.368 -1.324 c 0 0 -1.067 1.389 -1.067 1.389 c 0 0 -2.188 -0.147 -2.188 -0.147 c 0 0 -0.02 1.6 -0.02 1.6 c 0 0 -3.298 0.766 -3.298 0.766 c 0 0 0.284 2.021 0.284 2.021 c 0 0 -0.922 1.877 -0.922 1.877 c 0 0 1.319 -0.403 1.319 -0.403 c 0 0 1.126 0.879 1.126 0.879 c 0 0 -0.265 1.487 -0.265 1.487 c 0 0 0.788 0.495 0.788 0.495 c 0 0 1.019 -0.295 1.019 -0.295 c 0 0 0.938 0.805 0.938 0.805 c 0 0 -0.108 1.354 -0.108 1.354 c 0 0 -0.381 0.438 -0.381 0.438 c 0 0 0.595 1.159 0.595 1.159 c 0 0 1.01 0.369 1.01 0.369 c 0 0 -0.464 -0.804 -0.464 -0.804 c 0 0 1.122 0.604 1.122 0.604 c 0 0 0.375 -1.069 0.375 -1.069 c 0 0 2.243 -0.159 2.243 -0.159 c 0 0 0.263 -1.444 0.263 -1.444 c 0 0 1.446 1.166 1.446 1.166 c 0 0 3.621 0.066 3.621 0.066 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Constantine"},"26":{"path":"M 291.189 51.9288 c 0 0 0.272 0.795 0.272 0.795 c 0 0 -1.143 0.688 -1.143 0.688 c 0 0 0.551 0.367 0.551 0.367 c 0 0 -2.021 0.685 -2.021 0.685 c 0 0 0.86 1.28 0.86 1.28 c 0 0 0.034 2.966 0.034 2.966 c 0 0 -2.708 -4.154 -2.708 -4.154 c 0 0 -0.896 0.141 -0.896 0.141 c 0 0 0.406 0.771 0.406 0.771 c 0 0 -0.488 0.495 -0.488 0.495 c 0 0 -1.09 0.049 -1.09 0.049 c 0 0 -0.854 -1.716 -0.854 -1.716 c 0 0 -1.031 1.021 -1.031 1.021 c 0 0 0.104 1.206 0.104 1.206 c 0 0 -0.753 1.37 -0.753 1.37 c 0 0 -2.786 0.7 -2.786 0.7 c 0 0 -0.185 -2.199 -0.185 -2.199 c 0 0 -0.699 0.144 -0.699 0.144 c 0 0 -0.693 -2.337 -0.693 -2.337 c 0 0 -2.585 0.707 -2.585 0.707 c 0 0 0.677 5.005 0.677 5.005 c 0 0 -0.578 -0.259 -0.578 -0.259 c 0 0 -1.83 1.359 -1.83 1.359 c 0 0 -1.605 2.564 -1.605 2.564 c 0 0 -1.292 0.661 -1.292 0.661 c 0 0 -2.698 -1.908 -2.698 -1.908 c 0 0 -0.229 0.56 -0.229 0.56 c 0 0 -2.476 0.813 -2.476 0.813 c 0 0 -2.139 0.167 -2.139 0.167 c 0 0 -0.658 -2.362 -0.658 -2.362 c 0 0 0.71 -1.968 0.71 -1.968 c 0 0 -2.811 -0.738 -2.811 -0.738 c 0 0 -0.347 -1.359 -0.347 -1.359 c 0 0 0.503 -0.62 0.503 -0.62 c 0 0 2.227 0.229 2.227 0.229 c 0 0 0.902 -3.906 0.902 -3.906 c 0 0 1.051 -1.104 1.051 -1.104 c 0 0 -0.339 -0.876 -0.339 -0.876 c 0 0 1.986 0.073 1.986 0.073 c 0 0 0.315 -2.775 0.315 -2.775 c 0 0 0.86 0.234 0.86 0.234 c 0 0 1.842 -1.11 1.842 -1.11 c 0 0 0.062 -1.843 0.062 -1.843 c 0 0 -1.344 -0.306 -1.344 -0.306 c 0 0 -0.085 -1.369 -0.085 -1.369 c 0 0 -0.709 -0.199 -0.709 -0.199 c 0 0 0.625 -1.909 0.625 -1.909 c 0 0 1.348 0.043 1.348 0.043 c 0 0 0.756 -0.614 0.756 -0.614 c 0 0 1.51 -1.087 1.51 -1.087 c 0 0 2.893 0.205 2.893 0.205 c 0 0 1.568 -1.178 1.568 -1.178 c 0 0 0.67 1.507 0.67 1.507 c 0 0 1.481 0.008 1.481 0.008 c 0 0 0.867 -0.967 0.867 -0.967 c 0 0 -0.189 -1.356 -0.189 -1.356 c 0 0 0.474 0.956 0.474 0.956 c 0 0 0.732 -0.598 0.732 -0.598 c 0 0 0.692 0.698 0.692 0.698 c 0 0 1.158 -1.154 1.158 -1.154 c 0 0 0.084 -1.381 0.084 -1.381 c 0 0 1.63 0.271 1.63 0.271 c 0 0 0.479 -0.537 0.479 -0.537 c 0 0 2.722 2.629 2.722 2.629 c 0 0 1.562 -1.479 1.562 -1.479 c 0 0 1.356 0.703 1.356 0.703 c 0 0 -0.439 0.687 -0.439 0.687 c 0 0 0.998 1.392 0.998 1.392 c 0 0 -1.071 0.599 -1.071 0.599 c 0 0 -0.441 1.267 -0.441 1.267 c 0 0 1.069 0.979 1.069 0.979 c 0 0 -0.181 0.809 -0.181 0.809 c 0 0 -1.426 0.414 -1.426 0.414 c 0 0 -0.229 0.854 -0.229 0.854 c 0 0 0.656 1.042 0.656 1.042 c 0 0 -0.409 0.485 -0.409 0.485 c 0 0 -0.898 0.936 -0.898 0.936 c 0 0 -1.014 -0.016 -1.014 -0.016 c 0 0 0.479 0.781 0.479 0.781 c 0 0 2.788 0.434 2.788 0.434 c 0 0 1.41 2.635 1.41 2.635 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Médéa"},"27":{"path":"M 212.85 55.2648 c 0 0 2.964 -1.85 2.964 -1.85 c 0 0 2.338 -4.67 2.338 -4.67 c 0 0 1.846 -1.942 1.846 -1.942 c 0 0 9.188 -5.395 9.188 -5.395 c 0 0 1.74 -0.06 1.74 -0.06 c 0 0 -1.001 3.283 -1.001 3.283 c 0 0 -1.979 2.472 -1.979 2.472 c 0 0 1.289 1.351 1.289 1.351 c 0 0 -0.634 0.698 -0.634 0.698 c 0 0 0.359 0.87 0.359 0.87 c 0 0 -2.126 0.093 -2.126 0.093 c 0 0 -0.555 0.604 -0.555 0.604 c 0 0 -1.226 -0.57 -1.226 -0.57 c 0 0 -0.846 1.017 -0.846 1.017 c 0 0 0.313 0.769 0.313 0.769 c 0 0 0.674 -0.036 0.674 -0.036 c 0 0 -0.59 0.992 -0.59 0.992 c 0 0 0.229 0.908 0.229 0.908 c 0 0 -1.332 1.438 -1.332 1.438 c 0 0 -0.877 -0.373 -0.877 -0.373 c 0 0 -0.867 0.539 -0.867 0.539 c 0 0 -1.744 2.073 -1.744 2.073 c 0 0 -0.903 -0.138 -0.903 -0.138 c 0 0 -0.604 0.964 -0.604 0.964 c 0 0 -0.03 -0.763 -0.03 -0.763 c 0 0 -1.07 0.18 -1.07 0.18 c 0 0 -1.028 -1.427 -1.028 -1.427 c 0 0 -2.252 0.6 -2.252 0.6 c 0 0 -1.276 -1.627 -1.276 -1.627 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Mostaganem"},"28":{"path":"M 320.989 54.6068 c 0 0 -0.17 0.627 -0.17 0.627 c 0 0 1.475 1.042 1.475 1.042 c 0 0 1.106 -0.24 1.106 -0.24 c 0 0 0.486 0.518 0.486 0.518 c 0 0 -0.417 0.537 -0.417 0.537 c 0 0 0.547 0.807 0.547 0.807 c 0 0 3.493 0.469 3.493 0.469 c 0 0 -2.661 2.962 -2.661 2.962 c 0 0 -1.817 0.906 -1.817 0.906 c 0 0 -0.722 -1.068 -0.722 -1.068 c 0 0 -1.062 -0.011 -1.062 -0.011 c 0 0 -0.828 0.921 -0.828 0.921 c 0 0 -0.074 -0.787 -0.074 -0.787 c 0 0 -0.96 1.506 -0.96 1.506 c 0 0 -1.945 -1.698 -1.945 -1.698 c 0 0 0.823 4.4 0.823 4.4 c 0 0 -0.379 2.546 -0.379 2.546 c 0 0 -0.916 1.548 -0.916 1.548 c 0 0 -0.524 -0.186 -0.524 -0.186 c 0 0 -1.187 1.172 -1.187 1.172 c 0 0 0.194 0.606 0.194 0.606 c 0 0 2.929 0.06 2.929 0.06 c 0 0 2.125 1.396 2.125 1.396 c 0 0 0.447 3.492 0.447 3.492 c 0 0 0.547 0.305 0.547 0.305 c 0 0 -0.538 0.065 -0.538 0.065 c 0 0 -0.683 1.586 -0.683 1.586 c 0 0 -5.438 1.63 -5.438 1.63 c 0 0 -0.942 1.502 -0.942 1.502 c 0 0 -1.001 0.173 -1.001 0.173 c 0 0 1.298 1.086 1.298 1.086 c 0 0 -1.021 0.547 -1.021 0.547 c 0 0 -0.657 -0.445 -0.657 -0.445 c 0 0 -1.832 1.14 -1.832 1.14 c 0 0 -4.806 0.046 -4.806 0.046 c 0 0 -0.876 1.823 -0.876 1.823 c 0 0 -2.191 1.835 -2.191 1.835 c 0 0 0.521 0.302 0.521 0.302 c 0 0 0.417 3.083 0.417 3.083 c 0 0 1.218 1.271 1.218 1.271 c 0 0 -0.307 0.725 -0.307 0.725 c 0 0 1.813 0.933 1.813 0.933 c 0 0 -0.773 1.007 -0.773 1.007 c 0 0 -1.99 0.525 -1.99 0.525 c 0 0 -4.303 -3.585 -4.303 -3.585 c 0 0 0.313 -2.084 0.313 -2.084 c 0 0 -1.836 -1.982 -1.836 -1.982 c 0 0 0.299 -2.042 0.299 -2.042 c 0 0 -0.719 -4.248 -0.719 -4.248 c 0 0 -3.906 -0.975 -3.906 -0.975 c 0 0 -1.411 0.479 -1.411 0.479 c 0 0 -0.14 -1.65 -0.14 -1.65 c 0 0 -1.402 -0.322 -1.402 -0.322 c 0 0 0.209 -2.972 0.209 -2.972 c 0 0 -0.698 -0.953 -0.698 -0.953 c 0 0 0.551 -0.068 0.551 -0.068 c 0 0 0.504 -1.539 0.504 -1.539 c 0 0 -1.839 0.736 -1.839 0.736 c 0 0 -1.138 -3.13 -1.138 -3.13 c 0 0 4.282 -3.606 4.282 -3.606 c 0 0 -0.425 -1.94 -0.425 -1.94 c 0 0 0.865 -0.633 0.865 -0.633 c 0 0 0.075 -1.772 0.075 -1.772 c 0 0 -4.719 -3.806 -4.719 -3.806 c 0 0 -1.903 -1.953 -1.903 -1.953 c 0 0 -0.313 -1.258 -0.313 -1.258 c 0 0 0.489 -0.494 0.489 -0.494 c 0 0 -0.405 -0.771 -0.405 -0.771 c 0 0 0.895 -0.14 0.895 -0.14 c 0 0 2.709 4.154 2.709 4.154 c 0 0 -0.037 -2.966 -0.037 -2.966 c 0 0 -0.859 -1.281 -0.859 -1.281 c 0 0 2.022 -0.685 2.022 -0.685 c 0 0 -0.551 -0.367 -0.551 -0.367 c 0 0 1.144 -0.686 1.144 -0.686 c 0 0 -0.274 -0.796 -0.274 -0.796 c 0 0 0.533 -0.809 0.533 -0.809 c 0 0 1.537 0.153 1.537 0.153 c 0 0 0.654 0.924 0.654 0.924 c 0 0 1.07 0.224 1.07 0.224 c 0 0 0.352 1.004 0.352 1.004 c 0 0 0.802 0.048 0.802 0.048 c 0 0 1.271 -1.214 1.271 -1.214 c 0 0 2.542 0.89 2.542 0.89 c 0 0 -0.444 -1.385 -0.444 -1.385 c 0 0 1.058 -3.265 1.058 -3.265 c 0 0 0.57 1.104 0.57 1.104 c 0 0 2.211 -0.769 2.211 -0.769 c 0 0 2.755 0.986 2.755 0.986 c 0 0 3.391 -1.461 3.391 -1.461 c 0 0 0.865 2.774 0.865 2.774 c 0 0 -1.615 0.625 -1.615 0.625 c 0 0 -0.69 2.095 -0.69 2.095 c 0 0 2.823 0.292 2.823 0.292 c 0 0 -0.36 -0.99 -0.36 -0.99 c 0 0 1.328 -0.64 1.328 -0.64 c 0 0 -0.386 1.092 -0.386 1.092 c 0 0 0.663 0.766 0.663 0.766 c 0 0 2.07 -1.562 2.07 -1.562 c 0 0 2.721 -0.533 2.721 -0.533 c 0 0 1.33 1.67 1.33 1.67 c 0 0 1.165 -0.05 1.165 -0.05 c 0 0 0.184 1.218 0.184 1.218 c 0 0 1.399 -0.516 1.399 -0.516 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"M'Sila"},"29":{"path":"M 220.012 57.4758 c 0 0 0.578 0.193 0.578 0.193 c 0 0 1.217 3.61 1.217 3.61 c 0 0 1.717 -0.492 1.717 -0.492 c 0 0 0.125 0.523 0.125 0.523 c 0 0 0.858 -0.611 0.858 -0.611 c 0 0 1.282 1.803 1.282 1.803 c 0 0 1.891 -0.041 1.891 -0.041 c 0 0 0.918 0.917 0.918 0.917 c 0 0 1.721 -0.085 1.721 -0.085 c 0 0 0.296 0.662 0.296 0.662 c 0 0 2.047 0.317 2.047 0.317 c 0 0 1.49 1.555 1.49 1.555 c 0 0 -0.688 0.28 -0.688 0.28 c 0 0 -0.874 2.105 -0.874 2.105 c 0 0 -1.111 0.353 -1.111 0.353 c 0 0 -1.521 -0.788 -1.521 -0.788 c 0 0 -1.084 0.159 -1.084 0.159 c 0 0 -1.175 1.41 -1.175 1.41 c 0 0 0.246 0.949 0.246 0.949 c 0 0 -1.553 1.1 -1.553 1.1 c 0 0 -1.071 1.771 -1.071 1.771 c 0 0 -1.54 1.518 -1.54 1.518 c 0 0 -0.999 -0.12 -0.999 -0.12 c 0 0 -0.773 -0.89 -0.773 -0.89 c 0 0 -2.493 1.648 -2.493 1.648 c 0 0 -1.011 -0.662 -1.011 -0.662 c 0 0 -0.205 -0.907 -0.205 -0.907 c 0 0 -1.081 0.098 -1.081 0.098 c 0 0 -1.301 -0.867 -1.301 -0.867 c 0 0 -2.583 0.188 -2.583 0.188 c 0 0 -0.345 -1.976 -0.345 -1.976 c 0 0 -0.665 1.238 -0.665 1.238 c 0 0 -0.982 -0.007 -0.982 -0.007 c 0 0 -0.804 -2.203 -0.804 -2.203 c 0 0 0.376 -0.965 0.376 -0.965 c 0 0 1.477 -0.712 1.477 -0.712 c 0 0 -0.955 -0.354 -0.955 -0.354 c 0 0 -1.222 1.019 -1.222 1.019 c 0 0 -0.217 -0.549 -0.217 -0.549 c 0 0 1.312 -0.856 1.312 -0.856 c 0 0 0.38 -0.987 0.38 -0.987 c 0 0 -2.728 -0.854 -2.728 -0.854 c 0 0 -0.352 -0.632 -0.352 -0.632 c 0 0 -0.753 0.882 -0.753 0.882 c 0 0 -1.563 -0.12 -1.563 -0.12 c 0 0 0.231 -2.254 0.231 -2.254 c 0 0 -1.59 0.602 -1.59 0.602 c 0 0 -0.786 -0.382 -0.786 -0.382 c 0 0 0.318 -0.749 0.318 -0.749 c 0 0 1.029 -0.085 1.029 -0.085 c 0 0 -0.37 -0.949 -0.37 -0.949 c 0 0 1.582 -0.382 1.582 -0.382 c 0 0 0.264 -1.739 0.264 -1.739 c 0 0 2.625 -2.104 2.625 -2.104 c 0 0 -0.667 -0.006 -0.667 -0.006 c 0 0 0.89 -1.532 0.89 -1.532 c 0 0 1.433 1.089 1.433 1.089 c 0 0 1.581 -2.289 1.581 -2.289 c 0 0 1.287 1.577 1.287 1.577 c 0 0 2.252 -0.6 2.252 -0.6 c 0 0 1.029 1.428 1.029 1.428 c 0 0 1.069 -0.181 1.069 -0.181 c 0 0 0.03 0.763 0.03 0.763 c 0 0 0.605 -0.963 0.605 -0.963 c 0 0 0.906 0.136 0.906 0.136 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Mascara"},"30":{"path":"M 327.951 114.981 c 0 0 -0.91 1.857 -0.91 1.857 c 0 0 -3.919 -3.5 -3.919 -3.5 c 0 0 -2.42 5.13 -2.42 5.13 c 0 0 2.209 11.443 2.209 11.443 c 0 0 -5.039 9.304 -5.039 9.304 c 0 0 -6.763 7.312 -6.763 7.312 c 0 0 -0.766 17.01 -0.766 17.01 c 0 0 -3.171 8.157 -3.171 8.157 c 0 0 -10.495 36.704 -10.495 36.704 c 0 0 -1.579 1.093 -1.579 1.093 c 0 0 -6.763 14.091 -6.763 14.091 c 0 0 -8.226 3.631 -8.226 3.631 c 0 0 17.526 14.179 17.526 14.179 c 0 0 -0.146 0.413 -0.146 0.413 c 0 0 43.124 -33.261 43.124 -33.261 c 0 0 15.876 -8.912 15.876 -8.912 c 0 0 2.795 0.889 2.795 0.889 c 0 0 63.493 -16.461 63.493 -16.461 c 0 0 -11.392 -38.443 -11.392 -38.443 c 0 0 -39.729 4.259 -39.729 4.259 c 0 0 -5.501 -6.366 -5.501 -6.366 c 0 0 -7.777 -11.58 -7.777 -11.58 c 0 0 -8.097 -22.969 -8.097 -22.969 c 0 0 -1.219 -7.663 -1.219 -7.663 c 0 0 -0.319 0.807 -0.319 0.807 c 0 0 -0.521 -1.04 -0.521 -1.04 c 0 0 -0.762 0.111 -0.762 0.111 c 0 0 -2.721 2.136 -2.721 2.136 c 0 0 -0.552 -1.05 -0.552 -1.05 c 0 0 -0.665 0.606 -0.665 0.606 c 0 0 -0.047 1.4 -0.047 1.4 c 0 0 1.138 2.602 1.138 2.602 c 0 0 0.039 2.557 0.039 2.557 c 0 0 -0.953 1.07 -0.953 1.07 c 0 0 1.171 1.467 1.171 1.467 c 0 0 0.374 2.7 0.374 2.7 c 0 0 -17.293 0.317 -17.293 0.317 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Ouargla"},"31":{"path":"M 204.15 64.0609 c 0 0 0.319 -0.749 0.319 -0.749 c 0 0 1.029 -0.085 1.029 -0.085 c 0 0 -0.37 -0.95 -0.37 -0.95 c 0 0 1.582 -0.381 1.582 -0.381 c 0 0 0.264 -1.74 0.264 -1.74 c 0 0 2.625 -2.104 2.625 -2.104 c 0 0 -0.667 -0.006 -0.667 -0.006 c 0 0 0.89 -1.532 0.89 -1.532 c 0 0 1.433 1.09 1.433 1.09 c 0 0 1.597 -2.34 1.597 -2.34 c 0 0 -3.432 -0.925 -3.432 -0.925 c 0 0 -0.636 -0.732 -0.636 -0.732 c 0 0 0.279 -0.764 0.279 -0.764 c 0 0 -0.896 -0.845 -0.896 -0.845 c 0 0 -0.981 0.025 -0.981 0.025 c 0 0 -0.675 0.67 -0.675 0.67 c 0 0 -1.5 0.109 -1.5 0.109 c 0 0 -0.331 2.201 -0.331 2.201 c 0 0 -2.492 1.917 -2.492 1.917 c 0 0 -1.325 0.012 -1.325 0.012 c 0 0 -0.406 -0.761 -0.406 -0.761 c 0 0 -2.549 -0.737 -2.549 -0.737 c 0 0 -0.751 1.339 -0.751 1.339 c 0 0 -0.854 0.255 -0.854 0.255 c 0 0 -0.794 -0.59 -0.794 -0.59 c 0 0 -2.608 2.264 -2.608 2.264 c 0 0 1.342 1.429 1.342 1.429 c 0 0 -0.223 0.719 -0.223 0.719 c 0 0 1.009 0.007 1.009 0.007 c 0 0 -0.384 1.019 -0.384 1.019 c 0 0 -0.893 0.252 -0.893 0.252 c 0 0 0.174 1.591 0.174 1.591 c 0 0 0.012 -0.62 0.012 -0.62 c 0 0 0.895 -0.047 0.895 -0.047 c 0 0 -0.201 -0.596 -0.201 -0.596 c 0 0 0.82 0.656 0.82 0.656 c 0 0 1.569 0.021 1.569 0.021 c 0 0 5.066 -1.624 5.066 -1.624 c 0 0 0.775 2.922 0.775 2.922 c 0 0 -0.772 0.564 -0.772 0.564 c 0 0 -0.026 1.101 -0.026 1.101 c 0 0 0.184 0.673 0.184 0.673 c 0 0 1.502 -0.747 1.502 -0.747 c 0 0 -0.24 -0.964 -0.24 -0.964 c 0 0 0.64 -0.997 0.64 -0.997 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Oran"},"32":{"path":"M 233.026 90.7739 c 0 0 -2.853 -0.734 -2.853 -0.734 c 0 0 -4.583 3.134 -4.583 3.134 c 0 0 -1.732 -2.296 -1.732 -2.296 c 0 0 -2.898 2.009 -2.898 2.009 c 0 0 -2.172 -0.253 -2.172 -0.253 c 0 0 -2.096 -2.128 -2.096 -2.128 c 0 0 -2.331 -0.763 -2.331 -0.763 c 0 0 1.232 5.509 1.232 5.509 c 0 0 -0.942 0.691 -0.942 0.691 c 0 0 -1.501 3.065 -1.501 3.065 c 0 0 0.176 2.472 0.176 2.472 c 0 0 1.795 -0.807 1.795 -0.807 c 0 0 1.055 0.748 1.055 0.748 c 0 0 -0.204 2.644 -0.204 2.644 c 0 0 0.751 0.279 0.751 0.279 c 0 0 0.729 1.792 0.729 1.792 c 0 0 0.76 0.113 0.76 0.113 c 0 0 -2.122 1.127 -2.122 1.127 c 0 0 0.828 2.979 0.828 2.979 c 0 0 -2.93 13.106 -2.93 13.106 c 0 0 0.842 2.448 0.842 2.448 c 0 0 -0.887 0.991 -0.887 0.991 c 0 0 0.673 0.434 0.673 0.434 c 0 0 -0.593 1.588 -0.593 1.588 c 0 0 -1.563 0.854 -1.563 0.854 c 0 0 -0.278 1.842 -0.278 1.842 c 0 0 0.827 0.472 0.827 0.472 c 0 0 -0.269 1.131 -0.269 1.131 c 0 0 0.979 1.097 0.979 1.097 c 0 0 -0.397 1.534 -0.397 1.534 c 0 0 0.431 2.391 0.431 2.391 c 0 0 -2.988 5.758 -2.988 5.758 c 0 0 -0.953 4.385 -0.953 4.385 c 0 0 -2.081 -0.471 -2.081 -0.471 c 0 0 -1.103 0.817 -1.103 0.817 c 0 0 -1.05 2.219 -1.05 2.219 c 0 0 -0.139 4.177 -0.139 4.177 c 0 0 0.68 2.281 0.68 2.281 c 0 0 -0.686 0.065 -0.686 0.065 c 0 0 0.179 0.967 0.179 0.967 c 0 0 -0.602 0.846 -0.602 0.846 c 0 0 0.955 1.181 0.955 1.181 c 0 0 -1.242 1.21 -1.242 1.21 c 0 0 1.247 2.015 1.247 2.015 c 0 0 -1.014 1.203 -1.014 1.203 c 0 0 0.036 1.864 0.036 1.864 c 0 0 0.852 1.823 0.852 1.823 c 0 0 2.918 2.352 2.918 2.352 c 0 0 -0.818 2.98 -0.818 2.98 c 0 0 14.029 11.903 14.029 11.903 c 0 0 15.816 -11.179 15.816 -11.179 c 0 0 21.085 -13.183 21.085 -13.183 c 0 0 4.648 -5.149 4.648 -5.149 c 0 0 -0.721 -8.611 -0.721 -8.611 c 0 0 2.573 -1.672 2.573 -1.672 c 0 0 -1.918 -7.688 -1.918 -7.688 c 0 0 -0.564 -6.182 -0.564 -6.182 c 0 0 -3.111 -6.564 -3.111 -6.564 c 0 0 0.146 -1.528 0.146 -1.528 c 0 0 -0.641 -0.886 -0.641 -0.886 c 0 0 3.997 -0.134 3.997 -0.134 c 0 0 0.203 -3.901 0.203 -3.901 c 0 0 -2.073 0.452 -2.073 0.452 c 0 0 -3.52 -1.138 -3.52 -1.138 c 0 0 0.205 -1.673 0.205 -1.673 c 0 0 -3.122 -0.287 -3.122 -0.287 c 0 0 0.285 -2.856 0.285 -2.856 c 0 0 0.82 -1.435 0.82 -1.435 c 0 0 -1.142 -1.009 -1.142 -1.009 c 0 0 -0.124 -0.991 -0.124 -0.991 c 0 0 -1.457 -0.411 -1.457 -0.411 c 0 0 0.247 -2.655 0.247 -2.655 c 0 0 -0.565 -1.551 -0.565 -1.551 c 0 0 -1.828 -1.584 -1.828 -1.584 c 0 0 -3.495 0.817 -3.495 0.817 c 0 0 -1.613 -1.795 -1.613 -1.795 c 0 0 -2.206 -0.969 -2.206 -0.969 c 0 0 0.165 -0.989 0.165 -0.989 c 0 0 -0.863 -1.461 -0.863 -1.461 c 0 0 -1.119 -1.576 -1.119 -1.576 c 0 0 -0.215 -1.844 -0.215 -1.844 c 0 0 -5.541 0.295 -5.541 0.295 c 0 0 0.672 -4.884 0.672 -4.884 c 0 0 -3.971 -0.823 -3.971 -0.823 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"El-Bayadh"},"33":{"path":"M 454.129 387.74 c 0 0 -0.719 -20.563 -0.719 -20.563 c 0 0 -7.48 -4.23 -7.48 -4.23 c 0 0 -2.209 0.049 -2.209 0.049 c 0 0 -1.657 -1.011 -1.657 -1.011 c 0 0 -13.903 0.818 -13.903 0.818 c 0 0 -12.891 9.613 -12.891 9.613 c 0 0 -17.177 4.161 -17.177 4.161 c 0 0 -6.243 -4.393 -6.243 -4.393 c 0 0 1.974 -2.232 1.974 -2.232 c 0 0 -5.578 -12.361 -5.578 -12.361 c 0 0 -1.04 -10.938 -1.04 -10.938 c 0 0 0.237 -3.784 0.237 -3.784 c 0 0 -5.594 -8.033 -5.594 -8.033 c 0 0 -4.477 -0.14 -4.477 -0.14 c 0 0 -2.836 -2.179 -2.836 -2.179 c 0 0 -3.687 -6.237 -3.687 -6.237 c 0 0 -1.628 -4.169 -1.628 -4.169 c 0 0 -5.061 -6.142 -5.061 -6.142 c 0 0 -5.932 -16.141 -5.932 -16.141 c 0 0 -1.532 -1.133 -1.532 -1.133 c 0 0 -0.138 -1.004 -0.138 -1.004 c 0 0 -2.248 -0.6 -2.248 -0.6 c 0 0 -1.181 -1.556 -1.181 -1.556 c 0 0 1.06 -3.063 1.06 -3.063 c 0 0 2.819 -2.35 2.819 -2.35 c 0 0 -0.418 -1.914 -0.418 -1.914 c 0 0 -12.688 -11.211 -12.688 -11.211 c 0 0 -0.038 -8.717 -0.038 -8.717 c 0 0 -3.731 -17.58 -3.731 -17.58 c 0 0 1.773 -8.354 1.773 -8.354 c 0 0 -1.295 -33.809 -1.295 -33.809 c 0 0 15.876 -8.912 15.876 -8.912 c 0 0 2.796 0.888 2.796 0.888 c 0 0 63.493 -16.461 63.493 -16.461 c 0 0 2.411 8.262 2.411 8.262 c 0 0 -3.099 1.292 -3.099 1.292 c 0 0 -0.465 1.084 -0.465 1.084 c 0 0 0.689 2.608 0.689 2.608 c 0 0 2.979 3.429 2.979 3.429 c 0 0 6.166 11.784 6.166 11.784 c 0 0 2.729 9.976 2.729 9.976 c 0 0 1.149 6.791 1.149 6.791 c 0 0 -0.747 12.151 -0.747 12.151 c 0 0 3.65 10.479 3.65 10.479 c 0 0 -0.548 4.821 -0.548 4.821 c 0 0 -1.157 2.46 -1.157 2.46 c 0 0 -1.083 0.37 -1.083 0.37 c 0 0 1.397 0.222 1.397 0.222 c 0 0 -0.245 1.499 -0.245 1.499 c 0 0 -1.049 1.133 -1.049 1.133 c 0 0 -0.483 2.826 -0.483 2.826 c 0 0 0.133 2.473 0.133 2.473 c 0 0 2.239 7.597 2.239 7.597 c 0 0 1.692 2.23 1.692 2.23 c 0 0 0.099 5.493 0.099 5.493 c 0 0 -0.928 3.311 -0.928 3.311 c 0 0 -7.815 3.964 -7.815 3.964 c 0 0 -1.079 3.438 -1.079 3.438 c 0 0 -1.214 1.554 -1.214 1.554 c 0 0 16.01 20.327 16.01 20.327 c 0 0 0.78 10.061 0.78 10.061 c 0 0 4.756 7.704 4.756 7.704 c 0 0 3.475 2.664 3.475 2.664 c 0 0 4.406 -0.238 4.406 -0.238 c 0 0 1.539 -1.13 1.539 -1.13 c 0 0 2.129 -0.146 2.129 -0.146 c 0 0 1.531 1.491 1.531 1.491 c 0 0 1.29 -1.619 1.29 -1.619 c 0 0 1.709 0.246 1.709 0.246 c 0 0 1.289 0.52 1.289 0.52 c 0 0 2.539 2.53 2.539 2.53 c 0 0 2.012 0.66 2.012 0.66 c 0 0 7.08 4.37 7.08 4.37 c 0 0 4.112 -1.98 4.112 -1.98 c 0 0 10.551 17.862 10.551 17.862 c 0 0 -39.276 29.119 -39.276 29.119 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Illizi"},"34":{"path":"M 320.989 54.6068 c 0 0 -0.019 -1.603 -0.019 -1.603 c 0 0 2.087 -0.288 2.087 -0.288 c 0 0 -0.482 -2.927 -0.482 -2.927 c 0 0 1.669 -2.858 1.669 -2.858 c 0 0 -0.971 -0.972 -0.971 -0.972 c 0 0 0.127 -2.078 0.127 -2.078 c 0 0 -0.963 -0.272 -0.963 -0.272 c 0 0 -1.479 -2.545 -1.479 -2.545 c 0 0 -1.203 -0.363 -1.203 -0.363 c 0 0 -0.962 0.653 -0.962 0.653 c 0 0 -2.853 0.298 -2.853 0.298 c 0 0 -0.779 -0.983 -0.779 -0.983 c 0 0 0.3 -1.875 0.3 -1.875 c 0 0 -1.258 -0.672 -1.258 -0.672 c 0 0 -0.336 1.124 -0.336 1.124 c 0 0 -2.018 0.919 -2.018 0.919 c 0 0 -0.034 2.49 -0.034 2.49 c 0 0 -4.18 1.099 -4.18 1.099 c 0 0 -0.774 -1.701 -0.774 -1.701 c 0 0 -0.783 0.919 -0.783 0.919 c 0 0 -1.362 -0.093 -1.362 -0.093 c 0 0 -0.794 1.241 -0.794 1.241 c 0 0 -1.708 0.861 -1.708 0.861 c 0 0 -0.186 2.385 -0.186 2.385 c 0 0 -1.469 1.134 -1.469 1.134 c 0 0 0.569 1.104 0.569 1.104 c 0 0 2.211 -0.77 2.211 -0.77 c 0 0 2.755 0.987 2.755 0.987 c 0 0 3.392 -1.461 3.392 -1.461 c 0 0 0.863 2.774 0.863 2.774 c 0 0 -1.616 0.625 -1.616 0.625 c 0 0 -0.689 2.095 -0.689 2.095 c 0 0 2.823 0.292 2.823 0.292 c 0 0 -0.36 -0.99 -0.36 -0.99 c 0 0 1.328 -0.64 1.328 -0.64 c 0 0 -0.387 1.092 -0.387 1.092 c 0 0 0.664 0.766 0.664 0.766 c 0 0 2.07 -1.562 2.07 -1.562 c 0 0 2.722 -0.532 2.722 -0.532 c 0 0 1.327 1.669 1.327 1.669 c 0 0 1.167 -0.05 1.167 -0.05 c 0 0 0.184 1.218 0.184 1.218 c 0 0 1.407 -0.51 1.407 -0.51 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Bord-Bou-Arréridj"},"35":{"path":"M 284.507 35.4899 c 0 0 2.089 0.118 2.089 0.118 c 0 0 1.365 -0.714 1.365 -0.714 c 0 0 0.479 -0.984 0.479 -0.984 c 0 0 4.716 0.709 4.716 0.709 c 0 0 -0.218 -1.694 -0.218 -1.694 c 0 0 1.416 -0.319 1.416 -0.319 c 0 0 0.847 0.593 0.847 0.593 c 0 0 -0.165 -1.289 -0.165 -1.289 c 0 0 1.354 0.313 1.354 0.313 c 0 0 -0.771 -0.862 -0.771 -0.862 c 0 0 0.386 -1.441 0.386 -1.441 c 0 0 1.042 0.231 1.042 0.231 c 0 0 0.18 -0.604 0.18 -0.604 c 0 0 0.944 -0.077 0.944 -0.077 c 0 0 0.045 -0.779 0.045 -0.779 c 0 0 1.354 -1.163 1.354 -1.163 c 0 0 -0.135 -1.239 -0.135 -1.239 c 0 0 -3.063 -0.523 -3.063 -0.523 c 0 0 -3.242 1.034 -3.242 1.034 c 0 0 -0.906 1.079 -0.906 1.079 c 0 0 -3.85 1.986 -3.85 1.986 c 0 0 -2.822 -0.274 -2.822 -0.274 c 0 0 -0.271 0.609 -0.271 0.609 c 0 0 0.658 -0.216 0.658 -0.216 c 0 0 0.03 1.021 0.03 1.021 c 0 0 -2.279 0.745 -2.279 0.745 c 0 0 -0.66 -0.482 -0.66 -0.482 c 0 0 0.392 0.701 0.392 0.701 c 0 0 -0.689 0.547 -0.689 0.547 c 0 0 0.756 1.311 0.756 1.311 c 0 0 0.888 -0.351 0.888 -0.351 c 0 0 -0.536 0.479 -0.536 0.479 c 0 0 0.471 0.856 0.471 0.856 c 0 0 -0.385 0.413 -0.385 0.413 c 0 0 0.58 0.266 0.58 0.266 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Boumerdès"},"36":{"path":"M 378.015 24.8629 c 0 0 0.366 0.686 0.366 0.686 c 0 0 -1.139 0.009 -1.139 0.009 c 0 0 -0.031 1.328 -0.031 1.328 c 0 0 -0.939 -0.144 -0.939 -0.144 c 0 0 -0.969 1.141 -0.969 1.141 c 0 0 0.427 0.747 0.427 0.747 c 0 0 -0.57 1.447 -0.57 1.447 c 0 0 0.937 -0.31 0.937 -0.31 c 0 0 0.687 0.501 0.687 0.501 c 0 0 1.188 2.609 1.188 2.609 c 0 0 1.168 -0.382 1.168 -0.382 c 0 0 0.201 0.542 0.201 0.542 c 0 0 -0.047 -0.771 -0.047 -0.771 c 0 0 1.299 0.586 1.299 0.586 c 0 0 0.92 1.85 0.92 1.85 c 0 0 1.383 -0.02 1.383 -0.02 c 0 0 0.272 1.761 0.272 1.761 c 0 0 0.823 -1.258 0.823 -1.258 c 0 0 1.821 -0.823 1.821 -0.823 c 0 0 -0.327 -0.753 -0.327 -0.753 c 0 0 0.471 -0.48 0.471 -0.48 c 0 0 2.326 -0.796 2.326 -0.796 c 0 0 2.308 -2.13 2.308 -2.13 c 0 0 0.916 -0.119 0.916 -0.119 c 0 0 0.696 -2.05 0.696 -2.05 c 0 0 -0.425 -1.147 -0.425 -1.147 c 0 0 -0.861 -0.401 -0.861 -0.401 c 0 0 2.97 -0.532 2.97 -0.532 c 0 0 1.982 -1.323 1.982 -1.323 c 0 0 0.178 -0.521 0.178 -0.521 c 0 0 -1.188 -0.337 -1.188 -0.337 c 0 0 0.199 -2.228 0.199 -2.228 c 0 0 -4.452 1.441 -4.452 1.441 c 0 0 -1.429 -0.654 -1.429 -0.654 c 0 0 -1.822 0.272 -1.822 0.272 c 0 0 -0.981 -0.861 -0.981 -0.861 c 0 0 -4.735 2.676 -4.735 2.676 c 0 0 -3.623 0.444 -3.623 0.444 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"El-Taref"},"37":{"path":"M 144.372 270.771 c 0 0 -13.244 -1.683 -13.244 -1.683 c 0 0 -3.001 -2.419 -3.001 -2.419 c 0 0 -5.835 -7.099 -5.835 -7.099 c 0 0 -0.084 -7.644 -0.084 -7.644 c 0 0 -6.775 -12.676 -6.775 -12.676 c 0 0 -5.777 -21.184 -5.777 -21.184 c 0 0 -5.817 -3.172 -5.817 -3.172 c 0 0 -8.409 -0.353 -8.409 -0.353 c 0 0 -4.977 -4.181 -4.977 -4.181 c 0 0 -1.59 2.116 -1.59 2.116 c 0 0 -2.652 -1.77 -2.652 -1.77 c 0 0 -1.38 0.46 -1.38 0.46 c 0 0 0.685 -1.695 0.685 -1.695 c 0 0 -1.662 -0.829 -1.662 -0.829 c 0 0 -5.937 0.964 -5.937 0.964 c 0 0 -2.253 -0.648 -2.253 -0.648 c 0 0 -5.062 0.498 -5.062 0.498 c 0 0 -1.257 -0.472 -1.257 -0.472 c 0 0 -1.854 1.008 -1.854 1.008 c 0 0 -3.731 -0.108 -3.731 -0.108 c 0 0 -1.934 1.228 -1.934 1.228 c 0 0 -8.19 -2.131 -8.19 -2.131 c 0 0 -5.64 3.248 -5.64 3.248 c 0 0 -4.957 -0.147 -4.957 -0.147 c 0 0 -1.001 1.766 -1.001 1.766 c 0 0 -3.104 0.861 -3.104 0.861 c 0 0 -4.236 3.001 -4.236 3.001 c 0 0 -5.013 2.403 -5.013 2.403 c 0 0 -6.767 5.049 -6.767 5.049 c 0 0 -4.839 1.729 -4.839 1.729 c 0 0 -3.193 35.971 -3.193 35.971 c 0 0 65.958 50.321 65.958 50.321 c 0 0 12.962 -4.238 12.962 -4.238 c -0.001 0 7.204 -6.951 7.204 -6.951 c 0 0 14.179 0.237 14.179 0.237 c 0 0 3.038 -6.721 3.038 -6.721 c 0 0 7.18 -9.721 7.18 -9.721 c 0 0 2.317 -1.98 2.317 -1.98 c 0 0 3.858 -1.585 3.858 -1.585 c 0 0 7.686 0.562 7.686 0.562 c 0 0 1.78 -1.06 1.78 -1.06 c 0 0 3.324 -10.955 3.324 -10.955 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tindouf"},"38":{"path":"M 244.49 53.8549 c 0 0 0.771 0.672 0.771 0.672 c 0 0 -1.122 1.335 -1.122 1.335 c 0 0 -0.706 -0.143 -0.706 -0.143 c 0 0 -0.332 -0.894 -0.332 -0.894 c 0 0 -0.993 0.542 -0.993 0.542 c 0 0 0.206 1.651 0.206 1.651 c 0 0 -0.649 1.073 -0.649 1.073 c 0 0 1.344 1.67 1.344 1.67 c 0 0 0.59 -2.298 0.59 -2.298 c 0 0 1.271 0.932 1.271 0.932 c 0 0 0.538 -0.305 0.538 -0.305 c 0 0 1.353 0.765 1.353 0.765 c 0 0 0.062 1.415 0.062 1.415 c 0 0 1.953 -0.175 1.953 -0.175 c 0 0 1.045 1.72 1.045 1.72 c 0 0 0.813 0.154 0.813 0.154 c 0 0 0.172 -1.047 0.172 -1.047 c 0 0 0.958 0.974 0.958 0.974 c 0 0 3.797 -0.434 3.797 -0.434 c 0 0 2.436 -1.337 2.436 -1.337 c 0 0 -0.56 0.671 -0.56 0.671 c 0 0 1.55 0.067 1.55 0.067 c 0 0 -0.029 0.951 -0.029 0.951 c 0 0 3.701 -0.316 3.701 -0.316 c 0 0 0.708 -1.967 0.708 -1.967 c 0 0 -2.81 -0.739 -2.81 -0.739 c 0 0 -0.347 -1.359 -0.347 -1.359 c 0 0 0.504 -0.619 0.504 -0.619 c 0 0 2.226 0.229 2.226 0.229 c 0 0 0.901 -3.905 0.901 -3.905 c 0 0 -1.561 -0.133 -1.561 -0.133 c 0 0 -0.842 -1.107 -0.842 -1.107 c 0 0 -1.228 -0.057 -1.228 -0.057 c 0 0 -0.44 -0.937 -0.44 -0.937 c 0 0 -2.687 0.709 -2.687 0.709 c 0 0 0.006 -1.004 0.006 -1.004 c 0 0 -2.634 2.928 -2.634 2.928 c 0 0 -0.774 0.021 -0.774 0.021 c 0 0 -0.399 -1.149 -0.399 -1.149 c 0 0 -2.134 -0.251 -2.134 -0.251 c 0 0 -1.909 -1.17 -1.909 -1.17 c 0 0 -1.035 -1.876 -1.035 -1.876 c 0 0 -1.22 1.163 -1.22 1.163 c 0 0 -0.035 0.865 -0.035 0.865 c 0 0 -2.264 0.618 -2.264 0.618 c 0 0 0.384 0.35 0.384 0.35 c 0 0 -0.518 0.333 -0.518 0.333 c 0 0 -0.061 1.414 -0.061 1.414 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tissemsilt"},"39":{"path":"M 381.341 91.9338 c 0 0 -8.26 -0.416 -8.26 -0.416 c 0 0 -4.264 -1.485 -4.264 -1.485 c 0 0 -4.422 0.397 -4.422 0.397 c 0 0 -0.09 4.578 -0.09 4.578 c 0 0 -1.543 -0.353 -1.543 -0.353 c 0 0 -5.193 -3.142 -5.193 -3.142 c 0 0 -0.05 -2.156 -0.05 -2.156 c 0 0 -1.726 2.196 -1.726 2.196 c 0 0 -1.654 0.581 -1.654 0.581 c 0 0 -1.451 -1.393 -1.451 -1.393 c 0 0 -5.732 -2.047 -5.732 -2.047 c 0 0 -5.311 1.305 -5.311 1.305 c 0 0 -11.927 -1.27 -11.927 -1.27 c 0 0 -2.287 -1.521 -2.287 -1.521 c 0 0 -1.104 0.629 -1.104 0.629 c 0 0 0.72 0.627 0.72 0.627 c 0 0 -1.889 1.328 -1.889 1.328 c 0 0 1.198 1.354 1.198 1.354 c 0 0 -0.702 1.853 -0.702 1.853 c 0 0 3.667 3.255 3.667 3.255 c 0 0 -1.968 4.695 -1.968 4.695 c 0 0 -0.858 4.001 -0.858 4.001 c 0 0 1.083 2.091 1.083 2.091 c 0 0 0.35 4.628 0.35 4.628 c 0 0 0.688 1.585 0.688 1.585 c 0 0 -0.662 1.726 -0.662 1.726 c 0 0 17.299 -0.319 17.299 -0.319 c 0 0 -0.374 -2.7 -0.374 -2.7 c 0 0 -1.172 -1.467 -1.172 -1.467 c 0 0 0.955 -1.07 0.955 -1.07 c 0 0 -0.04 -2.557 -0.04 -2.557 c 0 0 -1.138 -2.602 -1.138 -2.602 c 0 0 0.047 -1.4 0.047 -1.4 c 0 0 0.665 -0.606 0.665 -0.606 c 0 0 0.552 1.049 0.552 1.049 c 0 0 2.721 -2.135 2.721 -2.135 c 0 0 0.762 -0.112 0.762 -0.112 c 0 0 0.521 1.041 0.521 1.041 c 0 0 0.319 -0.807 0.319 -0.807 c 0 0 1.219 7.663 1.219 7.663 c 0 0 8.097 22.969 8.097 22.969 c 0 0 7.777 11.58 7.777 11.58 c 0 0 5.501 6.366 5.501 6.366 c 0 0 39.729 -4.259 39.729 -4.259 c 0 0 -15.994 -9.721 -15.994 -9.721 c 0 0 -1.19 -8.167 -1.19 -8.167 c 0 0 -4.769 -5.554 -4.769 -5.554 c 0 0 -0.044 -1.279 -0.044 -1.279 c 0 0 -4.671 -1.931 -4.671 -1.931 c 0 0 -1.588 -0.012 -1.588 -0.012 c 0 0 -1.992 -6.096 -1.992 -6.096 c 0 0 -3.565 -5.578 -3.565 -5.578 c 0 0 -0.276 -2.739 -0.276 -2.739 c 0 0 -1.411 -1.059 -1.411 -1.059 c 0 0 0.465 -1.005 0.465 -1.005 c 0 0 -0.633 -1.784 -0.633 -1.784 c 0 0 0.574 -2.841 0.574 -2.841 c 0 0 -0.731 -1.183 -0.731 -1.183 c 0 0 1.695 -1.198 1.695 -1.198 c 0 0 0.905 -2.192 0.905 -2.192 c 0 0 1.676 0.677 1.676 0.677 c 0 0 1.6 -1.261 1.6 -1.261 c 0 0 -0.104 -0.757 -0.104 -0.757 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"El Oued"},"40":{"path":"M 368.82 90.0319 c 0 0 0.773 -5.083 0.773 -5.083 c 0 0 2.108 -3.938 2.108 -3.938 c 0 0 0.024 -1.697 0.024 -1.697 c 0 0 -0.637 -0.956 -0.637 -0.956 c 0 0 0.749 -2.004 0.749 -2.004 c 0 0 -0.868 -2.387 -0.868 -2.387 c 0 0 -1.271 -0.098 -1.271 -0.098 c 0 0 -0.661 0.97 -0.661 0.97 c 0 0 -0.441 1.352 -0.441 1.352 c 0 0 0.5 -0.146 0.5 -0.146 c 0 0 -0.088 1.582 -0.088 1.582 c 0 0 -0.908 -2.111 -0.908 -2.111 c 0 0 1.39 -3.602 1.39 -3.602 c 0 0 1.306 -0.817 1.306 -0.817 c 0 0 1.429 -2.436 1.429 -2.436 c 0 0 -1.051 -1.557 -1.051 -1.557 c 0 0 0.787 -1.188 0.787 -1.188 c 0 0 -0.763 -0.573 -0.763 -0.573 c 0 0 -0.117 -2.443 -0.117 -2.443 c 0 0 3.133 -1.131 3.133 -1.131 c 0 0 -0.659 -1.052 -0.659 -1.052 c 0 0 -0.692 -0.061 -0.692 -0.061 c 0 0 -0.333 -1.191 -0.333 -1.191 c 0 0 -0.393 -0.313 -0.393 -0.313 c 0 0 -0.6 0.601 -0.6 0.601 c 0 0 0.179 -0.579 0.179 -0.579 c 0 0 -1.313 -0.926 -1.313 -0.926 c 0 0 -0.409 1.4 -0.409 1.4 c 0 0 -1.048 0.308 -1.048 0.308 c 0 0 0.063 -2.164 0.063 -2.164 c 0 0 -1.77 -0.877 -1.77 -0.877 c 0 0 -0.119 0.549 -0.119 0.549 c 0 0 -1.815 -0.27 -1.815 -0.27 c 0 0 -0.957 2.009 -0.957 2.009 c 0 0 -1.648 -0.483 -1.648 -0.483 c 0 0 0.408 -1.016 0.408 -1.016 c 0 0 -0.614 -0.53 -0.614 -0.53 c 0 0 -4.031 0.609 -4.031 0.609 c 0 0 -0.774 -1.595 -0.774 -1.595 c 0 0 -0.214 1.337 -0.214 1.337 c 0 0 0.74 1.491 0.74 1.491 c 0 0 -0.612 1.515 -0.612 1.515 c 0 0 -2.418 0.598 -2.418 0.598 c 0 0 -1.491 1.387 -1.491 1.387 c 0 0 0.634 1.334 0.634 1.334 c 0 0 -0.178 1.438 -0.178 1.438 c 0 0 1.052 0.219 1.052 0.219 c 0 0 -1.644 1.396 -1.644 1.396 c 0 0 0.23 2.636 0.23 2.636 c 0 0 -1.308 1.429 -1.308 1.429 c 0 0 0.438 1.353 0.438 1.353 c 0 0 -0.401 0.844 -0.401 0.844 c 0 0 0.802 0.146 0.802 0.146 c 0 0 1.347 2.256 1.347 2.256 c 0 0 -0.499 0.58 -0.499 0.58 c 0 0 0.611 0.482 0.611 0.482 c 0 0 -0.812 0.796 -0.812 0.796 c 0 0 0.634 2.146 0.634 2.146 c 0 0 1.087 -0.603 1.087 -0.603 c 0 0 0.737 -1.717 0.737 -1.717 c 0 0 1.138 -0.063 1.138 -0.063 c 0 0 -0.399 0.473 -0.399 0.473 c 0 0 1.047 1.056 1.047 1.056 c 0 0 -0.415 0.997 -0.415 0.997 c 0 0 0.821 -0.196 0.821 -0.196 c 0 0 -0.726 2.389 -0.726 2.389 c 0 0 0.163 3.493 0.163 3.493 c 0 0 -1.047 2.038 -1.047 2.038 c 0 0 0.517 1.927 0.517 1.927 c 0 0 0.05 2.157 0.05 2.157 c 0 0 5.193 3.14 5.193 3.14 c 0 0 1.543 0.354 1.543 0.354 c 0 0 0.09 -4.578 0.09 -4.578 c 0 0 4.421 -0.406 4.421 -0.406 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Khenchela"},"41":{"path":"M 389.163 47.3318 c 0 0 -2.177 -1.081 -2.177 -1.081 c 0 0 -2.499 1.112 -2.499 1.112 c 0 0 -1.255 -0.156 -1.255 -0.156 c 0 0 -2.103 2.353 -2.103 2.353 c 0 0 -1.622 0.03 -1.622 0.03 c 0 0 -1.877 -1.4 -1.877 -1.4 c 0 0 -0.397 1.363 -0.397 1.363 c 0 0 -0.817 0.485 -0.817 0.485 c 0 0 0.354 1.537 0.354 1.537 c 0 0 -2.814 0.214 -2.814 0.214 c 0 0 0.03 -1.478 0.03 -1.478 c 0 0 -2.674 -0.94 -2.674 -0.94 c 0 0 -1.024 -1.331 -1.024 -1.331 c 0 0 -0.649 -2.12 -0.649 -2.12 c 0 0 -0.736 -0.046 -0.736 -0.046 c 0 0 -0.424 -2.263 -0.424 -2.263 c 0 0 -0.75 -0.918 -0.75 -0.918 c 0 0 0.494 -1.348 0.494 -1.348 c 0 0 2.854 0.539 2.854 0.539 c 0 0 2.52 -0.934 2.52 -0.934 c 0 0 1.194 0.271 1.194 0.271 c 0 0 2.159 -2.081 2.159 -2.081 c 0 0 2.218 -0.172 2.218 -0.172 c 0 0 0.375 -0.438 0.375 -0.438 c 0 0 -1.08 -1.382 -1.08 -1.382 c 0 0 0.194 -1.316 0.194 -1.316 c 0 0 1.022 0.411 1.022 0.411 c 0 0 1.832 -1.544 1.832 -1.544 c 0 0 1.383 -0.021 1.383 -0.021 c 0 0 0.272 1.761 0.272 1.761 c 0 0 0.821 -1.258 0.821 -1.258 c 0 0 1.822 -0.823 1.822 -0.823 c 0 0 3.195 0.846 3.195 0.846 c 0 0 0.745 -0.53 0.745 -0.53 c 0 0 1.177 0.636 1.177 0.636 c 0 0 -0.594 1.719 -0.594 1.719 c 0 0 0.381 1.252 0.381 1.252 c 0 0 -1.052 1.066 -1.052 1.066 c 0 0 0.396 0.812 0.396 0.812 c 0 0 -0.868 1.572 -0.868 1.572 c 0 0 0.833 1.825 0.833 1.825 c 0 0 -0.868 1.552 -0.868 1.552 c 0 0 0.009 2.224 0.009 2.224 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Souk Ahras"},"42":{"path":"M 250.882 35.7498 c 0 0 -1.098 2.467 -1.098 2.467 c 0 0 1.42 2.608 1.42 2.608 c 0 0 1.47 -1.099 1.47 -1.099 c 0 0 0.288 -1.11 0.288 -1.11 c 0 0 3.892 0.806 3.892 0.806 c 0 0 2.96 -0.969 2.96 -0.969 c 0 0 2.729 0.814 2.729 0.814 c 0 0 4.677 0.011 4.677 0.011 c 0 0 1.037 -1.463 1.037 -1.463 c 0 0 1.568 0.302 1.568 0.302 c 0 0 0.447 -0.642 0.447 -0.642 c 0 0 -0.442 -0.802 -0.442 -0.802 c 0 0 1.06 -0.14 1.06 -0.14 c 0 0 1.479 -1.647 1.479 -1.647 c 0 0 2.109 -0.599 2.109 -0.599 c 0 0 -0.34 -1.022 -0.34 -1.022 c 0 0 -0.134 -1.446 -0.134 -1.446 c 0 0 -5.189 2.836 -5.189 2.836 c 0 0 -2.726 -0.038 -2.726 -0.038 c 0 0 -0.48 -1.023 -0.48 -1.023 c 0 0 -1.177 -0.279 -1.177 -0.279 c 0 0 -6.739 2.031 -6.739 2.031 c 0 0 -2.311 -0.272 -2.311 -0.272 c 0 0 -4.5 0.676 -4.5 0.676 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tipaza"},"43":{"path":"M 344.575 51.2509 c 0 0 -3.583 -0.418 -3.583 -0.418 c 0 0 -0.49 0.384 -0.49 0.384 c 0 0 1.2 -1.293 1.2 -1.293 c 0 0 -1.162 -1.213 -1.162 -1.213 c 0 0 0.688 -0.604 0.688 -0.604 c 0 0 -0.284 -2.085 -0.284 -2.085 c 0 0 -1.715 -0.398 -1.715 -0.398 c 0 0 -0.049 -1.869 -0.049 -1.869 c 0 0 0.978 -0.521 0.978 -0.521 c 0 0 -2.188 -2.367 -2.188 -2.367 c 0 0 0.097 -1.172 0.097 -1.172 c 0 0 -1.395 -0.427 -1.395 -0.427 c 0 0 0.114 -1.347 0.114 -1.347 c 0 0 -1.244 -0.953 -1.244 -0.953 c 0 0 0.125 -2.048 0.125 -2.048 c 0 0 -0.558 -0.717 -0.558 -0.717 c 0 0 1.112 -0.339 1.112 -0.339 c 0 0 1.367 0.723 1.367 0.723 c 0 0 1.504 -0.447 1.504 -0.447 c 0 0 1.242 -1.67 1.242 -1.67 c 0 0 4.855 0.813 4.855 0.813 c 0 0 1.86 -1.232 1.86 -1.232 c 0 0 0.435 0.64 0.435 0.64 c 0 0 2.741 0.48 2.741 0.48 c 0 0 0.968 -0.175 0.968 -0.175 c 0 0 -0.021 1.6 -0.021 1.6 c 0 0 -3.296 0.765 -3.296 0.765 c 0 0 0.284 2.021 0.284 2.021 c 0 0 -0.921 1.877 -0.921 1.877 c 0 0 1.318 -0.403 1.318 -0.403 c 0 0 1.126 0.879 1.126 0.879 c 0 0 -0.265 1.486 -0.265 1.486 c 0 0 0.788 0.496 0.788 0.496 c 0 0 1.019 -0.295 1.019 -0.295 c 0 0 0.938 0.805 0.938 0.805 c 0 0 -0.108 1.354 -0.108 1.354 c 0 0 -2.365 0.863 -2.365 0.863 c 0 0 -0.161 2.791 -0.161 2.791 c 0 0 -1.221 1.531 -1.221 1.531 c 0 0 -0.78 -0.115 -0.78 -0.115 c 0 0 0.213 0.771 0.213 0.771 c 0 0 -0.716 -0.51 -0.716 -0.51 c 0 0 -1.649 0.227 -1.649 0.227 c 0 0 -0.801 2.112 -0.801 2.112 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Mila"},"44":{"path":"M 270.211 41.3839 c 0 0 -2.993 -2.104 -2.993 -2.104 c 0 0 -4.677 -0.01 -4.677 -0.01 c 0 0 -2.729 -0.815 -2.729 -0.815 c 0 0 -2.959 0.969 -2.959 0.969 c 0 0 -3.893 -0.807 -3.893 -0.807 c 0 0 -0.288 1.111 -0.288 1.111 c 0 0 -1.47 1.098 -1.47 1.098 c 0 0 -1.42 -2.607 -1.42 -2.607 c 0 0 -2.229 1.641 -2.229 1.641 c 0 0 -0.129 1.172 -0.129 1.172 c 0 0 1.495 1.622 1.495 1.622 c 0 0 -1.196 1.17 -1.196 1.17 c 0 0 1.829 0.536 1.829 0.536 c 0 0 -1.33 0.886 -1.33 0.886 c 0 0 0.004 1.019 0.004 1.019 c 0 0 0.681 0.703 0.681 0.703 c 0 0 0.8 -0.179 0.8 -0.179 c 0 0 -0.257 1.099 -0.257 1.099 c 0 0 0.683 1.606 0.683 1.606 c 0 0 1.268 0.909 1.268 0.909 c 0 0 -0.254 1.759 -0.254 1.759 c 0 0 2.133 0.25 2.133 0.25 c 0 0 0.4 1.149 0.4 1.149 c 0 0 0.774 -0.02 0.774 -0.02 c 0 0 2.635 -2.928 2.635 -2.928 c 0 0 -0.007 1.003 -0.007 1.003 c 0 0 2.686 -0.708 2.686 -0.708 c 0 0 0.44 0.937 0.44 0.937 c 0 0 1.229 0.056 1.229 0.056 c 0 0 0.841 1.108 0.841 1.108 c 0 0 1.563 0.131 1.563 0.131 c 0 0 1.051 -1.104 1.051 -1.104 c 0 0 -0.338 -0.876 -0.338 -0.876 c 0 0 1.985 0.074 1.985 0.074 c 0 0 0.315 -2.776 0.315 -2.776 c 0 0 0.861 0.234 0.861 0.234 c 0 0 1.841 -1.11 1.841 -1.11 c 0 0 0.063 -1.843 0.063 -1.843 c 0 0 -1.346 -0.305 -1.346 -0.305 c 0 0 -0.084 -1.369 -0.084 -1.369 c 0 0 -0.708 -0.199 -0.708 -0.199 c 0 0 0.625 -1.91 0.625 -1.91 c 0 0 1.347 0.043 1.347 0.043 c 0 0 0.758 -0.615 0.758 -0.615 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Aïn Defla"},"45":{"path":"M 190.745 93.6368 c 0 0 1.08 1.632 1.08 1.632 c 0 0 2.133 -1.567 2.133 -1.567 c 0 0 0.589 1.018 0.589 1.018 c 0 0 0.342 -0.416 0.342 -0.416 c 0 0 2.966 0.896 2.966 0.896 c 0 0 4.055 -2.511 4.055 -2.511 c 0 0 1.843 1.041 1.843 1.041 c 0 0 3.133 9.769 3.133 9.769 c 0 0 0.314 -1.128 0.314 -1.128 c 0 0 0.854 0.04 0.854 0.04 c 0 0 2.091 -2.885 2.091 -2.885 c 0 0 1.632 -0.712 1.632 -0.712 c 0 0 1.374 0.198 1.374 0.198 c 0 0 0.176 2.472 0.176 2.472 c 0 0 1.795 -0.807 1.795 -0.807 c 0 0 1.055 0.748 1.055 0.748 c 0 0 -0.204 2.644 -0.204 2.644 c 0 0 0.751 0.279 0.751 0.279 c 0 0 0.729 1.792 0.729 1.792 c 0 0 0.76 0.113 0.76 0.113 c 0 0 -2.123 1.127 -2.123 1.127 c 0 0 0.829 2.979 0.829 2.979 c 0 0 -2.931 13.106 -2.931 13.106 c 0 0 0.843 2.448 0.843 2.448 c 0 0 -0.887 0.991 -0.887 0.991 c 0 0 0.673 0.434 0.673 0.434 c 0 0 -0.593 1.588 -0.593 1.588 c 0 0 -1.563 0.854 -1.563 0.854 c 0 0 -0.278 1.842 -0.278 1.842 c 0 0 0.827 0.472 0.827 0.472 c 0 0 -0.27 1.131 -0.27 1.131 c 0 0 0.979 1.097 0.979 1.097 c 0 0 -0.398 1.535 -0.398 1.535 c 0 0 0.432 2.39 0.432 2.39 c 0 0 -2.988 5.758 -2.988 5.758 c 0 0 -1.629 2.4 -1.629 2.4 c 0 0 -2.417 -0.518 -2.417 -0.518 c 0 0 -1.803 1.33 -1.803 1.33 c 0 0 -6.79 -1.902 -6.79 -1.902 c 0 0 -5.834 3.103 -5.834 3.103 c 0 0 -0.298 -1.563 -0.298 -1.563 c 0 0 -1.384 -0.042 -1.384 -0.042 c 0 0 0.542 -2.863 0.542 -2.863 c 0 0 -1.428 -0.123 -1.428 -0.123 c 0 0 -0.163 -2.392 -0.163 -2.392 c 0 0 2.868 -2.595 2.868 -2.595 c 0 0 -5.768 -4.648 -5.768 -4.648 c 0 0 -2.38 -1.182 -2.38 -1.182 c 0 0 -3.35 -5.675 -3.35 -5.675 c 0 0 1.262 -0.418 1.262 -0.418 c 0 0 0.377 -2.404 0.377 -2.404 c 0 0 -2.205 -2.094 -2.205 -2.094 c 0 0 -1.938 -3.413 -1.938 -3.413 c 0 0 0.196 -2.568 0.196 -2.568 c 0 0 1.717 -3.813 1.717 -3.813 c 0 0 -0.095 -1.926 -0.095 -1.926 c 0 0 -1.187 -2.013 -1.187 -2.013 c 0 0 -1.795 -0.51 -1.795 -0.51 c 0 0 0.209 -0.893 0.209 -0.893 c 0 0 1.274 -0.928 1.274 -0.928 c 0 0 -0.546 -2.521 -0.546 -2.521 c 0 0 1.185 -5.71 1.185 -5.71 c 0 0 3.61 -2.62 3.61 -2.62 c 0 0 4.992 0.022 4.992 0.022 c 0 0 1.227 -1.408 1.227 -1.408 c 0 0 1.531 -0.481 1.531 -0.481 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Naâma"},"46":{"path":"M 193.764 72.7758 c 0 0 -0.686 0.069 -0.686 0.069 c 0 0 -0.264 -0.909 -0.264 -0.909 c 0 0 -3.488 -1.748 -3.488 -1.748 c 0 0 -0.331 0.33 -0.331 0.33 c 0 0 -0.372 -0.771 -0.372 -0.771 c 0 0 -1.081 0.455 -1.081 0.455 c 0 0 -2.338 -0.793 -2.338 -0.793 c 0 0 -0.918 1.336 -0.918 1.336 c 0 0 -1.082 0.265 -1.082 0.265 c 0 0 -1.053 -0.668 -1.053 -0.668 c 0 0 0.202 -0.954 0.202 -0.954 c 0 0 -0.848 -0.622 -0.848 -0.622 c 0 0 2.669 -1.768 2.669 -1.768 c 0 0 1.627 0.143 1.627 0.143 c 0 0 2.119 -1.243 2.119 -1.243 c 0 0 2.023 -5.607 2.023 -5.607 c 0 0 0.896 0.035 0.896 0.035 c 0 0 2.06 -1.622 2.06 -1.622 c 0 0 1.342 1.43 1.342 1.43 c 0 0 -0.223 0.718 -0.223 0.718 c 0 0 1.008 0.007 1.008 0.007 c 0 0 -0.383 1.02 -0.383 1.02 c 0 0 -0.893 0.251 -0.893 0.251 c 0 0 0.174 1.591 0.174 1.591 c 0 0 0.012 -0.62 0.012 -0.62 c 0 0 0.895 -0.046 0.895 -0.046 c 0 0 -0.201 -0.597 -0.201 -0.597 c 0 0 0.82 0.657 0.82 0.657 c 0 0 1.569 0.021 1.569 0.021 c 0 0 5.065 -1.624 5.065 -1.624 c 0 0 0.775 2.923 0.775 2.923 c 0 0 -0.771 0.563 -0.771 0.563 c 0 0 -0.027 1.102 -0.027 1.102 c 0 0 -2.838 0.497 -2.838 0.497 c 0 0 -0.066 0.729 -0.066 0.729 c 0 0 -0.97 0.456 -0.97 0.456 c 0 0 -0.813 -0.548 -0.813 -0.548 c 0 0 -0.781 1.395 -0.781 1.395 c 0 0 -0.672 -0.18 -0.672 -0.18 c 0 0 0.286 1.946 0.286 1.946 c 0 0 -1.38 0.461 -1.38 0.461 c 0 0 -0.248 1.451 -0.248 1.451 c 0 0 -0.815 0.469 -0.815 0.469 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Aïn Témouchent"},"47":{"path":"M 280.112 227.213 c 0 0 8.227 -3.631 8.227 -3.631 c 0 0 6.762 -14.091 6.762 -14.091 c 0 0 1.58 -1.093 1.58 -1.093 c 0 0 10.495 -36.704 10.495 -36.704 c 0 0 3.17 -8.157 3.17 -8.157 c 0 0 0.768 -17.01 0.768 -17.01 c 0 0 6.761 -7.312 6.761 -7.312 c 0 0 5.039 -9.304 5.039 -9.304 c 0 0 -11.871 -3.224 -11.871 -3.224 c 0 0 -13.08 -0.901 -13.08 -0.901 c 0 0 -0.77 0.422 -0.77 0.422 c 0 0 -2.684 -1.107 -2.684 -1.107 c 0 0 -0.903 0.387 -0.903 0.387 c 0 0 -0.305 -0.512 -0.305 -0.512 c 0 0 -0.417 0.754 -0.417 0.754 c 0 0 -0.439 -0.318 -0.439 -0.318 c 0 0 -0.945 0.734 -0.945 0.734 c 0 0 -7.853 0.362 -7.853 0.362 c 0 0 3.66 2.229 3.66 2.229 c 0 0 0.331 2.904 0.331 2.904 c 0 0 -8.55 -2.039 -8.55 -2.039 c 0 0 -5.37 1.604 -5.37 1.604 c 0 0 -10.825 0.946 -10.825 0.946 c 0 0 0.565 6.182 0.565 6.182 c 0 0 1.917 7.688 1.917 7.688 c 0 0 -2.573 1.672 -2.573 1.672 c 0 0 0.721 8.612 0.721 8.612 c 0 0 -4.648 5.148 -4.648 5.148 c 0 0 -0.682 28.618 -0.682 28.618 c 0 0 -2.644 13.284 -2.644 13.284 c 0 0 4.271 23.744 4.271 23.744 c 0 0 -1.117 4.883 -1.117 4.883 c 0 0 10.266 -3.805 10.266 -3.805 c 0 0 11.143 -0.965 11.143 -0.965 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Ghardaïa"},"48":{"path":"M 232.66 64.2719 c 0 0 -2.048 -0.317 -2.048 -0.317 c 0 0 -0.295 -0.662 -0.295 -0.662 c 0 0 -1.721 0.085 -1.721 0.085 c 0 0 -0.918 -0.917 -0.918 -0.917 c 0 0 -1.891 0.041 -1.891 0.041 c 0 0 -1.282 -1.803 -1.282 -1.803 c 0 0 -0.858 0.611 -0.858 0.611 c 0 0 -0.125 -0.523 -0.125 -0.523 c 0 0 -1.717 0.492 -1.717 0.492 c 0 0 -1.217 -3.61 -1.217 -3.61 c 0 0 -0.578 -0.193 -0.578 -0.193 c 0 0 1.744 -2.074 1.744 -2.074 c 0 0 0.867 -0.538 0.867 -0.538 c 0 0 0.877 0.373 0.877 0.373 c 0 0 1.332 -1.438 1.332 -1.438 c 0 0 -0.229 -0.909 -0.229 -0.909 c 0 0 0.59 -0.991 0.59 -0.991 c 0 0 -0.674 0.036 -0.674 0.036 c 0 0 -0.313 -0.769 -0.313 -0.769 c 0 0 0.846 -1.018 0.846 -1.018 c 0 0 1.226 0.572 1.226 0.572 c 0 0 0.555 -0.605 0.555 -0.605 c 0 0 2.126 -0.093 2.126 -0.093 c 0 0 -0.359 -0.87 -0.359 -0.87 c 0 0 0.634 -0.699 0.634 -0.699 c 0 0 -1.289 -1.35 -1.289 -1.35 c 0 0 1.979 -2.472 1.979 -2.472 c 0 0 2.056 0.32 2.056 0.32 c 0 0 2.173 -0.8 2.173 -0.8 c 0 0 0.468 1.894 0.468 1.894 c 0 0 0.536 0.021 0.536 0.021 c 0 0 -0.826 1.687 -0.826 1.687 c 0 0 0.509 -0.155 0.509 -0.155 c 0 0 0.519 1.997 0.519 1.997 c 0 0 1.775 -0.663 1.775 -0.663 c 0 0 -0.347 0.244 -0.347 0.244 c 0 0 0.593 0.041 0.593 0.041 c 0 0 0.541 1.179 0.541 1.179 c 0 0 1.563 0.984 1.563 0.984 c 0 0 2.838 -0.813 2.838 -0.813 c 0 0 2.173 3.286 2.173 3.286 c 0 0 0.771 0.672 0.771 0.672 c 0 0 -1.122 1.335 -1.122 1.335 c 0 0 -0.706 -0.142 -0.706 -0.142 c 0 0 -0.332 -0.895 -0.332 -0.895 c 0 0 -0.993 0.542 -0.993 0.542 c 0 0 0.206 1.651 0.206 1.651 c 0 0 -0.649 1.074 -0.649 1.074 c 0 0 -1.449 0.571 -1.449 0.571 c 0 0 -0.567 0.986 -0.567 0.986 c 0 0 -2.058 -0.207 -2.058 -0.207 c 0 0 -0.165 0.913 -0.165 0.913 c 0 0 -0.811 -0.11 -0.811 -0.11 c 0 0 -0.112 0.868 -0.112 0.868 c 0 0 -1.215 0.097 -1.215 0.097 c 0 0 -1.728 2.879 -1.728 2.879 c 0 0 -0.903 0.185 -0.903 0.185 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Relizane"}}, "height": 500, "width": 508});
diff --git a/js/vmap/dist/maps/jquery.vmap.argentina.js b/js/vmap/dist/maps/jquery.vmap.argentina.js
new file mode 100644 (file)
index 0000000..f7299bd
--- /dev/null
@@ -0,0 +1 @@
+jQuery.fn.vectorMap('addMap', 'argentina_en', {"width": 900.0, "height": 1770.5044059903964, "paths":{"sc":{"path": "M26.21,1405.14l2.02,-1.84l8.5,-1.79l7.49,-6.75l1.82,-3.81l-0.1,-8.52l-1.36,-5.95l1.56,-3.04l6.37,-2.92l2.75,-3.07l2.97,0.11l0.73,-1.18l-1.33,-3.1l0.72,-4.2l-1.58,-8.36l-2.19,-0.94l-1.42,-2.77l-4.01,-2.05l-1.36,-2.85l1.89,-3.41l1.92,-5.9l5.13,-8.5l1.1,-6.19l-2.15,-1.51l0.27,-0.87l2.87,-1.74l3.48,0.31l2.11,-0.88l6.11,-7.06l0.46,-1.26l-0.47,-3.5l5.17,2.1l1.83,-0.89l0.94,-1.7l0.03,-1.96l-1.48,-2.86l-4.88,-3.2l4.02,-3.32l-2.49,-3.12l1.53,-5.15l-0.64,-2.1l4.94,-1.15l2.68,-2.89l4.13,-2.84l0.46,-2.12l-0.69,-4.13l0.67,-2.8l-3.25,-8.35l-0.56,-8.49l-6.72,-5.18l6.21,-1.47l5.36,-6.27l182.64,0.03l-1.52,4.87l-0.07,3.84l2.19,9.04l2.61,6.69l7.49,9.84l3.15,1.59l4.03,3.51l3.12,1.31l3.28,4.82l2.42,1.02l9.68,10.33l4.59,2.35l2.58,0.47l2.17,-0.69l3.69,-0.04l2.86,1.15l3.13,-0.03l1.63,1.08l11.47,0.18l4.48,-0.96l4.54,2.73l3.53,3.26l0.88,1.73l0.57,4.16l1.36,2.72l-1.31,11.34l-5.43,12.45l-6.15,0.11l-4.53,3.52l-3.79,0.4l-3.78,2.01l-3.49,-0.14l-1.24,0.7l2.68,1.3l2.01,-0.15l3.58,-1.73l3.51,-0.22l6.69,-2.85l3.05,0.54l1.11,1.8l1.0,3.86l3.27,1.54l-0.5,1.42l-3.77,-1.36l-3.81,0.92l-0.08,1.11l1.6,2.6l-0.31,2.19l2.02,1.99l-2.39,-0.53l-5.91,1.19l-2.42,4.07l-7.9,5.01l-1.26,2.52l0.35,1.72l-2.99,-0.32l-1.35,0.48l-1.54,3.01l-9.03,2.6l-3.82,4.23l-4.19,3.43l-1.8,0.12l-8.8,3.98l-1.72,1.37l-4.74,6.65l-0.83,2.25l-6.68,3.63l-9.85,10.46l-1.64,3.53l0.97,3.43l-5.16,5.78l1.09,2.04l-1.92,-0.39l-1.14,0.46l-2.57,4.42l0.36,0.69l2.0,0.42l3.87,-1.13l3.27,-7.22l0.64,0.53l-4.83,18.44l-2.16,15.41l-1.44,3.3l-8.65,7.34l-9.07,4.38l-6.09,0.41l-1.5,-1.94l-2.57,-1.44l-0.76,-2.18l-2.7,-2.72l-1.29,-3.39l-3.35,-4.58l-1.76,-4.74l-2.12,-1.5l-2.3,-0.51l-0.38,1.02l3.32,2.21l0.63,2.9l2.41,4.81l0.09,1.66l-4.19,1.9l-2.22,-0.61l-6.11,0.47l-4.32,1.21l-2.08,1.26l0.17,1.14l1.36,0.14l6.82,-2.0l11.1,-0.13l1.98,1.82l1.09,3.19l6.44,4.1l-2.65,2.8l-8.91,2.37l-10.15,4.63l-4.72,4.87l-1.39,3.13l-3.27,3.78l-1.11,2.41l-2.97,11.33l0.58,6.16l-0.56,2.29l-4.82,5.0l-5.85,4.45l-1.09,2.37l0.87,0.72l5.26,-4.93l4.09,-1.96l0.3,0.33l1.43,4.52l1.04,7.37l1.61,3.34l1.12,5.23l4.46,10.7l0.11,2.99l-0.52,0.41l-2.99,-0.44l-3.16,2.46l-2.07,-0.29l-5.12,-2.39l-4.46,-0.18l-5.69,1.45l-5.61,3.36l0.66,0.5l9.64,-1.89l3.2,0.21l6.51,2.35l-2.03,1.93l0.26,1.0l1.24,0.1l6.04,-3.58l2.72,-0.72l5.4,8.29l4.29,9.36l5.33,8.15l6.35,7.04l5.93,8.36l0.01,1.68l-1.59,1.82l0.03,-3.39l-0.68,-1.16l-7.63,-2.22l-8.97,-1.23l-8.38,-3.86l-9.3,-2.5l-12.38,-0.35l-21.15,-7.55l-88.67,-1.05l-1.66,-0.91l0.72,-4.25l-1.66,-3.41l-7.39,-6.46l-6.99,-2.77l-1.36,-5.5l-1.17,-1.13l-3.39,-0.44l-0.57,-0.84l4.27,-4.33l0.05,-2.34l1.27,-2.96l0.13,-4.62l2.79,-4.06l-0.09,-1.38l-4.24,-2.88l-2.19,-3.11l0.22,-1.56l2.02,-2.65l2.61,-1.07l1.34,-4.32l0.11,-7.66l-3.78,-5.52l1.89,-4.34l0.01,-1.48l-3.95,-1.93l-5.79,-1.15l-2.28,0.96l-2.99,2.94l-1.6,0.05l-4.47,-3.04l-6.84,3.05l-6.69,5.4l-3.48,0.67l-1.38,-0.98l-0.64,-6.28l-2.94,-4.05l-0.73,-12.23l-1.29,-4.03l-2.15,-3.46l-8.22,-5.99l-0.39,-1.26l2.81,-6.23l-1.13,-2.13l-3.04,-2.48l1.29,-1.85l0.31,-2.63l2.29,-2.06l1.0,-1.85l-0.16,-1.84l-3.58,-4.63l1.22,-2.65l-0.14,-1.5l-2.97,-3.93l2.01,-2.62l-0.36,-2.77l3.74,-3.15l0.1,-4.35l13.96,-0.24l0.86,-1.5l1.63,-0.5l-0.0,-1.22l-3.03,-0.61l-0.69,-1.9l3.4,-4.43l1.29,-4.42l2.68,-3.42Z", "name": "Santa Cruz"}, "co": {"path": "M384.61,644.72l-0.01,-52.16l-2.02,-38.11l1.69,-3.13l1.96,-0.55l0.78,-0.9l-0.45,-2.66l1.6,-3.27l-0.31,-2.34l1.84,-3.39l1.32,-6.75l1.28,-1.56l1.51,-4.8l0.41,-3.69l-2.18,-6.04l0.13,-6.06l-0.38,-0.83l-1.42,-0.56l-5.69,1.46l-5.09,0.42l-0.15,-2.92l-1.41,-2.71l-0.61,-4.15l-3.1,-3.39l-15.06,-8.47l-5.04,-0.44l-0.34,-38.56l10.84,-33.5l1.88,-3.36l3.63,-9.94l9.35,-2.54l2.43,-1.25l8.96,-9.24l0.66,-2.15l-1.36,-11.32l0.35,-1.13l29.26,-7.42l10.6,2.24l-0.19,2.23l1.16,1.29l3.35,1.74l1.04,1.33l3.61,0.86l2.12,1.31l3.78,0.21l5.31,-0.8l3.84,1.05l2.43,-0.28l0.11,2.75l2.77,0.74l0.13,1.58l0.82,0.73l49.42,0.27l1.76,1.21l6.89,16.95l-2.09,12.66l0.43,2.33l12.05,13.48l-11.88,43.13l-0.69,1.48l-4.5,4.13l0.83,2.73l0.09,6.9l1.41,2.61l-1.26,3.44l-0.29,5.44l3.79,4.01l2.65,1.53l2.85,7.07l4.5,3.76l0.84,4.61l1.28,1.4l-1.24,3.78l2.91,1.11l2.29,4.29l1.97,2.25l-1.07,3.93l-0.28,5.36l-2.74,3.05l-2.66,0.53l-1.5,1.76l-42.0,63.76l-21.67,-0.08l-1.97,1.92l-0.59,29.68l-75.68,-0.02Z", "name": "C\u00f3rdoba"}, "ju": {"path": "M286.9,91.86l10.63,-34.51l-7.97,-8.57l3.3,-4.78l4.02,-3.49l-0.15,-5.14l2.04,-0.12l2.07,-2.05l6.89,-2.62l-0.1,-2.21l2.31,-7.33l1.28,-0.93l2.9,0.47l0.65,-0.94l11.11,-3.05l2.08,-2.21l1.3,-0.31l1.06,-5.96l2.34,-7.48l5.41,2.03l1.21,1.26l1.01,2.76l5.07,1.21l5.75,6.61l1.56,1.05l1.63,0.45l7.36,-1.29l5.56,0.7l11.42,-0.13l-1.97,5.13l-0.19,4.55l-4.26,8.57l-0.54,4.23l0.46,0.92l1.56,0.08l1.55,1.36l-0.86,2.03l0.01,2.5l0.79,5.35l1.73,4.93l2.52,2.19l5.71,0.36l1.45,1.39l0.36,1.91l-1.52,8.82l0.94,1.27l3.18,1.41l2.78,5.62l0.94,3.34l3.97,0.46l2.28,-1.72l3.45,-0.57l1.18,1.08l3.45,1.27l4.06,4.54l1.59,0.98l1.51,-1.03l0.86,-2.77l1.22,-1.51l7.22,0.15l1.2,31.33l-2.3,5.2l-3.79,4.78l-0.98,0.64l-4.2,0.56l-1.51,1.82l-2.51,0.7l-3.25,3.05l-1.56,3.14l-9.52,-7.51l-1.81,2.14l-2.02,4.64l-0.89,0.02l-5.6,-2.35l-3.75,-2.97l-0.93,-1.49l-5.26,2.21l-6.53,-1.88l-2.39,-1.92l-2.39,0.56l-2.24,-1.27l-7.34,-10.7l-0.44,-4.82l-6.64,-4.73l-2.54,0.63l-1.58,-2.18l0.34,-1.76l-1.47,-2.47l0.21,-3.56l1.56,-2.49l-0.55,-1.57l0.52,-7.01l-2.09,-2.37l-6.56,-3.84l-1.95,-0.1l-1.97,-1.29l-4.0,-1.11l-1.19,0.17l-1.04,1.28l-1.35,6.31l3.11,9.81l-0.63,14.89l-1.52,4.49l-1.27,0.55l-2.38,3.13l-1.27,0.65l-4.15,-0.2l-3.05,-1.51l-4.17,-4.76l-4.73,-2.3l-3.28,-4.52l-1.81,-0.54l-0.54,-1.41l-3.68,-3.82l-3.06,-0.93l-4.43,-3.59Z", "name": "Jujuy"}, "tf": {"path": "M408.94,1757.54l-2.09,0.84l-1.51,2.07l-2.71,0.1l0.73,-2.08l-3.85,-2.08l2.91,-2.85l3.2,1.62l1.24,-0.1l3.03,-1.04l0.99,-0.97l-0.48,-0.88l1.85,0.46l2.22,-0.85l0.49,2.21l1.55,0.19l0.43,-4.59l1.42,0.85l4.37,0.04l1.91,1.52l1.02,-0.29l0.22,-1.64l1.44,0.86l1.27,-0.83l1.53,2.12l6.83,-2.17l2.03,1.08l1.51,-0.83l-1.89,2.73l-4.22,2.03l1.0,-2.01l-0.34,-1.26l-0.95,-0.36l-2.25,1.59l-2.7,-0.04l-1.31,1.53l-5.06,0.99l-0.81,0.9l-0.45,-0.71l0.74,-2.76l-2.73,-0.28l-6.68,4.19l-1.03,0.12l-0.4,-1.28l-1.46,0.2l-1.08,0.92l0.09,0.76ZM409.66,1751.56l-1.38,-1.15l-0.1,-0.22l0.33,-0.05l1.14,1.42ZM224.01,1753.21l0.63,-130.78l7.96,11.21l5.25,4.7l2.33,5.44l-1.67,-1.61l-3.03,0.66l-1.16,0.72l-2.14,3.24l-4.29,3.39l-1.56,2.53l0.03,2.58l1.02,2.45l1.53,1.82l4.69,2.33l2.69,0.36l8.41,-0.6l2.91,5.31l2.09,8.72l2.95,4.91l11.08,8.93l1.27,2.74l2.35,-0.03l2.49,1.8l1.57,5.66l12.37,9.02l12.25,6.68l2.96,2.62l9.83,3.96l1.83,1.26l6.67,7.51l5.42,3.25l2.77,0.72l4.04,3.03l15.5,6.27l2.46,0.42l2.19,1.32l6.71,0.95l10.87,-1.36l3.57,0.26l3.17,-1.13l6.73,0.88l-2.14,2.24l-1.41,3.46l0.46,1.26l-1.67,1.6l0.29,1.72l-2.66,1.96l-1.23,3.89l-0.87,0.57l-0.87,-0.03l-0.54,-1.97l-3.2,-0.66l-1.43,0.93l0.21,1.39l-0.59,0.69l-5.16,0.13l-1.16,1.91l-1.07,0.4l-1.26,-1.04l-0.47,-2.58l-1.64,-1.14l-10.03,-0.11l-0.5,0.58l0.38,1.12l-2.01,1.91l-5.63,1.97l-9.38,-0.28l-2.42,1.33l-1.55,3.01l-0.82,0.26l-8.04,-1.39l-7.58,-5.41l-6.56,-0.92l-3.9,-1.47l-40.71,-2.68l-6.43,-1.0l-2.14,-1.39l-4.31,-0.35l-3.91,-1.67l-1.17,0.95l-0.29,2.21l-8.37,0.6l-1.62,-0.67l-3.33,-3.47Z", "name": "Tierra del Fuego"}, "cr": {"path": "M650.75,342.39l1.84,-3.72l0.47,-5.16l2.52,-5.8l-0.16,-4.73l1.11,-6.37l-1.11,-3.87l0.38,-7.76l1.38,-1.37l4.24,-0.52l2.68,-2.14l0.94,-1.55l1.63,-6.3l-0.09,-3.63l1.16,-3.35l0.1,-2.89l-0.87,-3.68l-2.26,-4.45l-0.08,-2.9l10.16,-7.06l6.35,-2.48l12.15,-1.03l4.93,0.61l4.78,-0.47l14.03,3.37l8.89,4.09l7.92,-0.25l1.42,1.23l5.77,2.58l4.94,-0.19l4.54,-2.39l2.96,-0.74l6.02,4.25l1.96,-0.34l2.37,-1.74l2.93,-0.82l2.64,0.37l3.75,4.67l3.21,1.76l1.87,-0.48l3.29,-4.98l0.77,-4.3l3.13,-1.21l3.49,-2.97l1.99,0.26l3.43,1.21l-1.16,2.38l-0.12,3.09l6.53,12.9l1.84,9.86l2.33,2.68l2.08,4.63l4.71,3.48l-2.19,1.92l-2.82,0.93l-1.45,1.18l0.41,1.84l3.65,1.66l0.8,1.34l-1.16,3.07l-1.14,-1.78l-5.04,-1.0l-3.38,1.72l0.19,4.21l-4.93,1.52l-0.65,1.03l-0.02,3.57l-0.68,0.9l-2.82,1.93l-3.66,4.66l-4.68,1.88l-0.76,5.1l-0.84,1.45l-3.18,1.89l-1.55,5.6l-5.27,1.88l-3.26,2.59l-1.66,2.59l-0.09,2.27l-1.52,3.44l-3.66,2.42l-2.26,4.73l-6.59,6.15l-2.51,4.08l-3.97,3.9l-4.67,0.56l-3.49,1.93l-0.97,2.0l-0.66,6.24l-3.81,2.83l-4.27,5.14l-1.78,1.18l-3.77,0.64l-0.67,0.66l0.69,3.63l-1.15,3.06l-8.86,7.68l-1.96,3.48l0.2,2.35l3.1,6.2l-6.62,-6.14l-2.15,-3.88l-1.44,-5.06l-4.79,-4.06l-2.67,-4.39l-1.63,-1.21l-8.83,-2.31l-2.99,-0.04l-2.93,-1.47l-2.22,-0.04l-6.64,2.68l-4.41,0.98l-5.96,-1.09l-10.52,6.78l-6.56,-1.79l-3.11,0.68l-1.97,-0.52l-3.21,1.17l-3.55,0.18l-0.15,-2.23l1.27,-6.18l1.96,-5.14l-1.61,-6.06l-1.87,-3.87l2.01,-4.54l1.64,-6.73l0.11,-10.09l1.83,-7.27l2.59,-3.14l5.67,-2.23l6.68,-4.73l0.91,-1.66l0.15,-4.62Z", "name": "Corrientes"}, "tu": {"path": "M334.62,263.93l1.96,-3.49l3.32,-3.23l1.62,-3.24l5.73,-5.92l2.05,-4.19l0.79,-7.2l-0.44,-2.25l-7.98,-6.03l-4.12,-1.2l-1.28,-1.65l2.25,-6.73l0.29,-2.78l1.9,-2.74l15.0,2.04l1.26,-1.73l1.11,-8.99l3.62,1.27l6.24,0.92l5.54,-2.12l1.46,3.34l1.26,1.23l8.73,3.4l1.93,-0.07l3.4,1.63l2.29,-0.3l2.4,-1.76l3.44,-0.94l3.15,0.63l8.99,-0.21l0.04,4.05l-1.77,6.18l1.09,10.8l-3.46,-0.14l-1.96,5.69l-2.36,0.64l-2.5,8.96l-2.14,2.82l-1.35,5.25l-3.34,7.44l-2.59,1.58l-5.74,6.41l1.14,1.34l3.07,1.16l-1.38,1.66l-2.42,0.45l-0.68,1.64l0.06,1.46l2.97,6.69l-1.26,0.93l-1.72,4.64l-6.5,1.52l-4.6,-2.85l-1.2,-0.05l-6.91,4.9l-2.56,4.22l-4.04,-4.86l-1.83,-6.31l-2.78,-1.61l-2.91,0.77l-0.88,-0.84l-1.25,-4.07l-2.3,-2.03l-2.53,-10.59l0.05,-2.19l-9.41,-3.34Z", "name": "Tucum\u00e1n"}, "ch": {"path": "M74.56,1091.13l0.62,-0.9l-0.18,-1.84l1.24,-1.23l0.32,-2.23l3.98,-1.11l2.1,0.36l0.84,-0.87l-0.19,-4.14l0.65,-2.07l-1.49,-1.99l-4.27,-1.61l-6.75,-0.73l-1.85,-0.75l-3.15,-3.21l-0.78,-2.14l1.6,-7.27l-1.4,-16.53l2.01,-2.21l2.39,-1.14l0.32,-0.96l-1.65,-2.82l0.63,-3.54l-3.22,-4.21l3.27,-4.57l0.83,-2.78l1.05,-0.83l0.93,0.02l1.21,2.08l1.58,0.72l2.1,-1.87l3.59,-0.68l2.52,-1.51l0.83,-1.56l-0.15,-2.93l-0.63,-1.04l298.66,0.03l2.94,0.52l3.67,6.14l5.37,3.75l2.17,0.14l3.4,1.69l4.05,0.4l2.04,1.32l3.37,-0.75l1.82,0.41l0.31,0.36l-1.69,1.16l-3.85,5.17l-0.44,2.0l0.79,1.01l4.97,0.05l1.96,0.83l5.91,-1.28l9.81,0.17l2.64,-3.41l-0.25,-1.86l0.53,-1.06l-1.18,-3.19l-3.36,-0.81l-4.96,0.2l-3.07,-0.7l6.84,-0.97l7.8,-2.61l6.45,-3.68l3.54,-0.11l1.08,0.62l2.8,6.54l2.2,1.99l0.91,1.75l0.81,15.67l-2.42,6.55l0.5,1.99l-2.01,2.41l-2.75,1.15l-9.16,1.88l-3.8,0.14l-2.25,1.37l-1.16,-0.18l-4.62,-4.87l-1.47,-0.78l1.4,-5.82l1.08,-0.81l-0.41,-1.04l-4.27,-2.82l-1.33,-2.38l-5.44,-2.02l-4.84,-0.03l-4.54,0.87l-4.45,2.05l-3.1,3.43l-5.19,1.03l-1.38,0.9l-3.41,5.28l1.26,2.75l11.74,4.72l4.14,2.94l2.63,0.89l3.96,-0.17l3.25,2.15l4.92,-1.34l0.42,1.02l-6.19,4.21l-14.3,4.29l-8.23,5.13l-4.16,3.47l-0.57,1.49l0.28,3.72l-5.18,4.47l-2.44,3.71l-2.98,2.27l-2.6,4.32l-0.13,4.06l1.12,2.62l-0.47,3.04l1.07,1.1l0.87,2.58l0.18,3.66l2.12,0.32l-0.41,2.14l0.89,0.69l-0.95,2.1l0.22,2.12l-3.22,1.49l-0.78,3.81l2.43,2.56l-0.33,2.26l1.82,2.74l-0.73,1.39l-3.45,2.12l-0.58,1.53l0.45,1.71l1.6,1.14l-2.89,-0.29l-1.45,2.81l0.23,0.69l-2.67,-0.52l-1.14,1.96l-6.36,2.94l-3.32,4.2l-1.76,5.69l0.35,2.44l7.95,3.41l-1.81,1.03l-1.08,1.65l0.33,1.26l-1.01,0.91l0.52,1.21l-3.46,0.82l-2.67,-1.45l-2.72,0.17l-0.73,-1.03l-1.31,-0.29l-0.99,0.4l-0.59,1.46l-2.05,0.12l-3.63,-2.74l-4.59,-0.78l-4.03,0.35l-3.18,3.55l-1.34,0.36l-1.39,-0.53l-8.96,3.54l-0.66,1.56l0.67,1.17l-1.61,-0.09l-1.22,0.83l3.02,2.57l-0.31,0.49l-5.58,-0.39l-8.22,0.56l-4.08,2.19l-3.75,3.42l-8.77,13.44l-1.79,0.72l-2.95,2.53l-1.46,3.3l0.13,3.5l-0.9,2.03l0.54,1.16l-2.0,1.2l-5.44,5.45l-1.33,1.94l0.14,1.49l-1.96,2.04l-181.83,-0.03l0.78,-1.13l-1.39,-3.86l-1.33,-1.44l-3.95,-1.85l0.49,-3.24l-2.25,-2.71l0.84,-2.5l-0.12,-2.54l1.82,-2.77l-0.87,-1.42l1.82,-1.55l8.36,-0.77l1.94,-1.28l0.71,-1.46l-1.42,-3.6l5.93,-2.76l2.96,-3.51l-0.22,-2.27l-2.22,-3.49l-5.56,-4.72l-3.02,-6.48l-1.66,-1.72l-5.29,-0.35l-2.48,-2.25l-1.23,-0.35l-4.89,1.08l-5.33,-2.33l-2.61,-0.06l-0.51,-6.06l1.19,-0.99l8.78,1.98l4.11,-2.02l5.99,1.41l5.99,-2.04l5.2,2.68l2.05,0.56l1.95,-0.35l1.84,-1.18l1.27,-1.86l0.14,-6.03l1.47,-2.41l3.08,-1.19l0.55,-2.7l-1.54,-1.99l-0.76,-2.63l-2.06,-1.6l-10.42,-1.47l-13.6,-0.45l-3.59,0.54l-1.39,-1.15l2.19,-1.71l0.42,-1.42l-1.24,-2.52l1.17,-3.68l-2.3,-4.99l4.1,-2.26l4.25,-5.85l0.52,-2.17l-2.67,-4.09l-1.97,-1.54l0.21,-3.25l-0.83,-0.37l-1.51,0.62l-0.41,-0.58l0.54,-1.35l4.33,-2.43l-0.2,-5.07l-4.21,-3.49l-3.12,-0.27l0.87,-1.66l-0.69,-2.47l-1.99,-0.86l-1.48,0.36Z", "name": "Chubut"}, "rn": {"path": "M78.41,959.83l13.36,1.08l8.71,3.07l2.94,0.32l3.94,-0.78l3.16,-1.65l4.95,-5.79l0.87,-2.43l-1.06,-2.56l-3.26,-2.38l-0.4,-1.73l2.13,-2.59l2.91,-1.34l1.85,-3.17l4.59,-1.37l2.39,-1.51l4.18,0.66l1.87,-0.41l6.26,-4.11l4.07,2.89l5.58,-1.0l4.01,0.08l1.45,-0.87l1.37,-3.65l2.14,-0.21l1.8,-1.25l0.64,-1.45l0.33,-5.19l2.98,-6.56l0.89,-7.73l1.93,-5.29l11.75,-6.47l6.17,0.18l2.54,-1.0l5.8,-4.95l5.28,-6.87l5.45,-2.91l3.12,-0.27l4.26,-2.0l2.9,-4.32l2.94,-1.84l1.63,-4.18l2.24,-2.27l3.47,-1.96l3.01,-4.41l2.6,-1.79l3.07,-1.11l2.99,-3.33l3.91,-2.4l2.64,1.79l1.97,-0.7l4.47,0.74l5.2,-1.33l0.05,-0.77l-1.07,-0.61l-0.69,-3.17l-9.05,-12.55l0.12,-56.85l17.24,2.15l1.78,0.85l2.49,2.5l1.55,3.17l-0.48,3.89l-5.57,4.66l-1.09,2.01l-0.08,3.65l1.47,2.99l1.81,0.81l1.67,-0.38l2.65,1.71l2.44,4.71l2.84,3.08l2.04,0.88l4.74,-0.75l3.36,0.43l3.38,-1.54l3.63,-0.67l1.55,0.37l1.7,5.82l3.1,3.88l19.15,7.86l2.24,2.38l0.87,4.0l0.88,1.23l7.83,1.75l8.07,-0.91l11.4,1.33l6.51,1.76l1.76,1.09l2.5,0.14l1.52,0.99l5.72,-2.21l6.06,1.81l2.78,1.47l11.52,-1.83l6.27,-0.0l1.29,0.78l5.71,-0.4l15.59,2.25l14.54,4.98l4.08,2.35l2.08,0.33l4.49,4.78l5.72,1.92l3.15,3.74l8.86,5.63l5.49,1.08l0.08,73.1l9.72,1.49l3.35,1.23l10.81,9.78l2.43,4.72l-2.39,2.18l-10.38,3.68l-9.75,-0.36l-3.07,0.7l-17.77,-0.11l-3.68,-1.25l-4.57,-3.97l-4.09,-0.88l0.55,-1.5l-0.83,-0.91l-3.47,0.89l-1.61,-0.38l-10.97,-5.26l-6.1,-1.5l-4.2,-1.95l-5.73,-0.99l1.62,-1.15l-0.58,-1.47l-1.52,-0.59l0.89,-1.24l-1.47,-1.12l-4.49,-0.97l-4.41,0.99l-0.63,1.26l2.47,0.07l0.11,1.05l-4.02,0.3l-4.41,3.35l-2.6,7.64l1.31,11.46l1.9,8.08l2.01,6.47l2.52,2.53l0.57,1.41l-2.06,7.46l1.76,5.13l-0.07,1.71l-3.35,8.46l0.41,2.61l-301.92,-0.42l-0.86,-6.74l-2.81,-4.36l-0.6,-3.91l-2.51,-3.31l-0.0,-1.18l2.66,-1.89l0.62,-1.31l-1.58,-3.09l0.38,-4.01l-1.08,-3.74l1.38,-6.26l-0.72,-3.54l0.79,-0.76l0.8,-4.81l-0.51,-3.06ZM397.03,948.81l-1.68,0.15l0.35,-0.17l1.33,0.02ZM394.11,949.01l-0.9,-0.06l-0.69,-0.27l1.45,-0.57l0.14,0.9Z", "name": "R\u00edo Negro"}, "sf": {"path": "M528.89,526.62l1.18,-3.38l-1.37,-1.72l-0.89,-4.7l-4.61,-3.94l-2.85,-7.07l-2.8,-1.69l-3.39,-3.44l0.27,-4.89l1.28,-3.69l-1.43,-2.8l-0.07,-6.82l-0.9,-1.89l4.31,-4.03l0.88,-1.84l11.98,-43.63l-2.27,-3.41l-9.92,-10.53l-0.31,-1.66l19.06,-117.78l127.2,-0.05l-2.11,3.56l-2.47,1.1l-3.75,0.53l-1.52,2.57l-0.18,7.37l1.11,3.81l-1.1,6.32l0.18,4.62l-2.5,5.7l-0.46,5.09l-1.88,3.51l-0.14,4.89l-0.6,1.08l-6.39,4.51l-4.37,1.56l-2.64,1.68l-1.8,2.78l-1.61,5.85l-0.39,11.72l-1.6,6.56l-2.09,4.89l1.98,4.38l1.52,5.6l-1.92,4.82l-1.41,7.15l0.75,4.69l1.7,3.77l-0.45,6.21l-1.58,7.01l-15.3,23.47l-2.84,2.86l-1.36,4.04l-3.16,4.51l-4.03,3.06l-7.14,8.31l-2.48,1.09l-5.91,0.11l-2.23,0.97l-1.35,7.05l-2.08,3.49l0.12,2.86l2.47,4.64l-2.01,4.21l0.22,5.01l-1.32,4.95l0.09,5.02l-1.63,4.23l-0.06,2.21l2.75,5.01l0.33,4.53l1.07,3.93l2.47,4.86l1.6,1.83l1.57,4.21l2.69,3.2l4.7,2.68l5.01,4.89l-0.33,1.42l-2.55,1.53l-0.5,3.45l-2.66,2.26l-0.76,3.99l-1.76,3.63l-1.19,0.86l-2.66,0.3l-4.74,-3.2l-4.69,-0.19l-3.04,-1.16l-3.56,0.79l-1.43,2.31l0.34,1.58l-1.39,1.93l-33.55,35.18l-50.24,0.26l41.54,-63.06l1.04,-1.26l1.75,-0.14l1.77,-1.12l2.44,-2.96l1.43,-10.23l-4.54,-7.0l-2.52,-0.83Z", "name": "Santa Fe"}, "fo": {"path": "M509.95,33.31l0.23,1.24l0.98,0.31l1.04,1.46l-0.77,2.5l2.82,1.42l0.1,3.53l6.89,8.35l2.06,5.47l1.69,1.79l5.02,2.97l3.36,3.18l1.69,3.73l2.54,1.79l3.26,0.41l2.25,2.29l1.19,0.42l-0.08,1.09l1.33,1.81l9.16,3.49l1.19,2.03l2.71,1.64l1.54,0.02l2.87,2.12l-0.39,2.76l3.15,3.31l2.16,3.54l1.66,0.97l1.75,-0.44l4.4,2.7l4.93,0.03l1.73,1.0l3.0,0.07l1.96,2.29l1.98,0.21l2.35,1.41l4.72,0.52l1.96,1.35l8.89,0.42l4.69,-0.9l16.12,10.31l2.92,3.1l3.25,0.97l3.27,2.08l0.59,1.28l3.21,2.36l1.84,2.74l15.42,7.52l8.61,6.29l3.91,0.5l1.48,1.25l9.89,1.87l6.24,6.72l1.52,0.04l3.53,-2.44l4.44,3.37l3.79,1.53l1.69,-0.04l0.86,1.44l5.03,0.51l5.06,4.37l1.49,3.15l2.26,2.15l1.39,3.91l3.63,3.21l-0.72,5.31l-1.58,0.97l-0.29,1.19l-2.16,-0.02l-0.73,1.82l-2.56,0.55l-1.63,2.05l1.01,1.63l-3.11,2.08l0.68,2.77l-3.11,1.87l-0.06,1.31l0.99,0.54l-2.41,2.81l0.26,0.66l1.79,0.53l-0.39,0.51l-5.11,3.69l-4.51,1.91l-1.33,2.97l-1.75,-0.16l0.16,1.49l1.81,1.28l-2.79,1.48l0.04,3.27l-2.06,4.05l1.12,1.88l-1.32,3.56l0.29,1.11l1.84,1.89l-1.0,0.94l0.46,1.65l-2.35,-0.05l-0.62,5.21l-1.79,0.64l0.46,1.47l-2.76,0.35l-0.6,1.52l1.52,1.73l-1.43,-0.15l-0.62,-1.59l-2.04,0.12l-1.23,-0.61l-0.71,-1.63l-3.1,-2.67l-1.2,-2.38l-3.76,-2.29l-1.77,-2.18l-2.31,-0.49l-2.23,-2.62l-3.19,-1.64l-4.17,-4.8l-6.44,-2.72l-2.75,-2.62l-1.44,0.18l-1.45,1.32l-2.44,0.93l-3.35,-0.32l-1.27,-1.5l-1.85,-5.89l-2.31,-1.05l-8.59,-1.4l-0.47,-5.69l-1.35,-0.28l-3.05,-4.2l-3.79,-2.66l-0.63,-2.31l-3.37,-1.85l-1.26,-1.62l-2.17,-0.58l-0.98,-1.78l-4.94,-1.88l-1.26,0.4l-2.53,-5.42l0.52,-1.08l-0.65,-1.52l-2.46,-0.78l-0.57,-1.75l-1.71,-0.9l0.28,-0.89l-1.04,-2.02l-3.0,-2.19l-3.35,-5.25l-6.69,-2.26l-7.02,-4.29l-10.54,-8.45l-1.86,-0.1l-1.03,-1.22l0.39,-1.74l-2.24,-3.51l-0.08,-1.46l-1.29,-0.72l-1.75,-2.34l-2.59,-0.99l-8.15,-1.08l-4.65,-4.3l-1.08,-2.18l-3.77,-0.28l-2.1,-3.97l-3.36,-2.69l-5.66,-1.14l-3.64,-2.51l-2.1,-2.37l-4.42,-0.85l-9.3,-3.54l-0.1,-77.05l1.35,0.29Z", "name": "Formosa"}, "ne": {"path": "M78.32,958.6l0.7,-3.48l-2.72,-4.86l-1.92,-6.59l4.54,-5.37l0.29,-2.25l-0.63,-1.47l2.75,-6.78l3.04,0.3l2.68,-5.61l-0.78,-2.37l-1.35,-0.49l-1.32,0.81l-3.04,-3.43l0.67,-5.62l-0.49,-1.0l1.42,-0.44l1.99,0.87l2.3,0.1l0.74,-2.39l-0.48,-2.47l2.94,-5.52l-0.33,-1.24l-2.74,-3.01l-1.32,-5.53l0.91,-2.81l-1.01,-1.76l0.08,-1.91l0.82,-1.31l2.59,2.43l1.14,0.27l3.79,-0.26l1.15,-1.06l0.36,-2.38l-1.83,-1.63l3.37,-4.89l-0.64,-2.66l2.43,-2.02l0.49,-1.58l0.46,-4.43l-1.31,-11.08l1.28,-5.64l5.26,-3.04l2.07,-2.06l3.55,-0.59l4.63,-2.7l4.9,-0.07l1.63,-2.14l1.77,-0.99l-0.39,-2.61l2.25,-4.26l-0.8,-2.42l-4.58,-3.57l-0.95,-1.64l-2.04,-9.75l0.5,-3.47l-0.67,-3.11l0.71,-2.07l-3.63,-6.92l-0.34,-2.22l-1.75,-3.13l-2.3,-6.79l-0.02,-3.71l2.59,-2.33l-0.59,-2.24l1.07,-4.1l-3.52,-6.56l-0.45,-2.31l2.63,-3.94l0.29,-4.11l2.34,-1.87l-2.31,-2.39l-0.42,-2.47l-1.09,-1.16l1.21,-0.72l0.49,-1.23l-1.44,-1.72l0.33,-2.01l-1.6,-1.75l1.97,-4.11l0.25,-3.58l0.83,-0.24l1.89,0.96l1.25,-0.84l-0.47,-6.45l0.98,-3.76l2.88,0.14l1.9,-0.75l1.72,-3.61l3.7,1.68l4.33,-1.05l0.73,-1.04l-1.03,-3.61l0.87,-3.18l2.08,-0.98l2.64,-2.63l0.95,-2.54l3.39,1.14l1.49,-0.11l1.66,-1.31l2.1,1.65l0.48,1.14l-0.03,2.49l-1.06,2.05l1.29,4.22l1.41,0.96l1.97,-1.02l1.03,0.52l2.72,8.06l1.65,2.66l4.42,1.67l2.37,2.97l2.58,1.8l2.21,4.64l5.14,3.32l0.11,4.58l-1.26,2.29l5.32,6.28l3.7,2.15l4.32,1.14l2.58,0.15l7.89,-1.37l6.48,1.68l2.76,1.16l1.07,1.3l1.86,5.62l1.85,1.28l4.82,0.97l5.67,-0.48l3.47,2.8l7.57,1.03l1.89,3.2l1.78,1.53l7.69,0.99l-0.12,57.11l0.32,1.46l3.11,3.24l5.79,8.38l0.7,3.23l-3.31,0.78l-4.37,-0.75l-1.87,0.67l-2.05,-1.62l-1.12,-0.08l-4.19,2.61l-2.94,3.29l-2.86,1.0l-2.98,2.05l-3.04,4.44l-3.35,1.82l-2.37,2.42l-1.64,4.19l-2.89,1.8l-2.81,4.22l-3.79,1.77l-3.26,0.31l-5.68,3.03l-1.83,1.68l-3.66,5.36l-5.65,4.81l-1.89,0.76l-6.52,-0.1l-12.07,6.66l-1.2,1.66l-1.15,4.31l-0.89,7.71l-2.96,6.51l-0.77,6.23l-1.72,1.04l-2.01,0.17l-1.57,3.87l-0.81,0.45l-3.81,-0.1l-5.16,1.01l-3.01,-2.49l-1.41,-0.42l-2.01,0.68l-4.6,3.5l-1.52,0.34l-4.34,-0.64l-7.44,3.07l-1.42,1.38l-0.72,2.04l-2.74,1.16l-2.5,3.12l0.58,2.91l2.63,1.66l1.42,2.49l-0.63,1.76l-4.57,5.44l-2.95,1.55l-3.46,0.71l-2.67,-0.28l-8.78,-3.09l-13.72,-1.11Z", "name": "Neuqu\u00e9n"}, "mi": {"path": "M796.21,265.24l2.63,0.06l1.78,3.21l5.16,2.07l3.39,-3.18l4.16,-2.56l1.14,-4.34l-1.36,-3.32l1.82,-0.75l0.85,-2.45l3.35,-0.22l0.99,-4.17l1.12,-1.49l5.78,-2.06l3.34,1.01l3.27,-0.17l1.0,-1.0l-0.24,-3.53l2.74,-2.63l3.97,-0.93l1.21,-1.62l1.36,-3.92l1.41,-0.72l2.87,0.53l1.45,-1.25l0.63,-2.57l-0.37,-3.26l4.09,-4.7l1.58,-5.91l-0.05,-3.38l1.2,-1.99l-1.12,-2.41l0.94,-4.16l-0.88,-3.87l1.8,-0.48l0.66,-1.01l-0.33,-3.27l1.22,-3.51l-1.39,-2.08l-1.1,-4.83l1.55,-0.02l1.08,-0.76l-0.76,-3.06l1.46,-0.06l0.71,1.74l2.58,0.66l0.77,2.58l0.94,0.62l0.89,-0.54l0.04,-1.98l1.37,-1.07l0.32,-1.7l1.85,0.16l2.05,-1.39l1.84,2.17l1.16,-1.03l2.14,0.17l0.45,-0.61l-0.62,-1.69l1.41,0.04l1.53,-1.39l-0.48,2.77l1.38,1.61l1.2,-0.13l0.21,-1.65l0.8,0.59l1.25,-0.38l1.45,0.97l0.99,3.28l2.97,-0.81l0.85,2.46l-0.26,1.99l1.93,2.66l0.34,8.26l3.12,3.26l1.41,4.66l2.97,4.39l0.2,1.7l-2.81,5.5l0.5,5.86l-1.11,1.44l0.42,1.51l-0.64,2.11l0.13,3.57l-1.58,1.97l1.21,1.57l-0.18,1.58l0.9,0.42l0.86,5.52l-2.45,5.58l-1.51,0.82l-0.2,2.68l-1.08,1.05l0.11,1.71l-1.9,-1.91l-0.94,0.64l-0.54,1.66l-1.52,-0.94l-1.0,0.36l-0.22,1.86l-1.76,-0.12l-3.8,4.57l-2.05,-0.12l-0.12,-1.05l-1.73,-0.77l-2.69,5.5l0.04,1.22l-1.22,0.37l-0.99,1.77l-2.65,-1.64l-0.55,2.58l-0.89,-1.71l-2.92,-0.15l-0.99,0.3l-0.37,0.87l0.73,1.49l-3.56,1.11l-1.02,-1.42l-1.43,-0.21l-2.11,3.41l-0.69,-1.0l-1.22,0.53l-0.53,1.84l-3.51,0.53l-0.47,-1.77l-1.31,0.09l-1.24,1.16l-0.74,3.06l-2.46,0.76l-0.53,5.25l-3.1,2.27l-3.29,-0.72l-1.3,0.64l0.47,1.47l1.73,1.73l-1.01,-0.51l-1.73,0.25l-1.1,1.66l-2.35,-1.2l-3.87,3.23l-2.46,-0.18l-0.94,0.89l-0.32,1.5l-1.95,0.87l-0.16,1.83l-2.42,2.88l-2.89,0.01l-2.3,3.23l-0.41,-1.15l-1.3,-0.32l-1.2,0.95l-4.42,-3.25l-1.96,-4.48l-2.47,-3.01l-0.57,-5.83l-1.02,-3.48l-6.49,-12.8l0.72,-3.95l1.28,-1.07Z", "name": "Misiones"}, "lp": {"path": "M460.29,645.96l-0.2,222.92l-4.84,-0.9l-8.75,-5.56l-3.24,-3.79l-5.66,-1.9l-4.71,-4.91l-2.21,-0.37l-4.0,-2.32l-14.75,-5.05l-15.88,-2.29l-5.44,0.4l-1.35,-0.76l-6.56,0.0l-11.32,1.81l-6.36,-2.81l-2.53,-0.45l-1.45,0.13l-4.11,2.07l-1.3,-0.92l-2.66,-0.18l-1.57,-1.04l-6.79,-1.83l-11.58,-1.34l-7.92,0.92l-7.36,-1.62l-1.3,-4.74l-2.64,-2.81l-18.96,-7.7l-2.88,-3.59l-2.09,-6.27l-2.4,-0.56l-3.87,0.71l-3.07,1.48l-3.43,-0.44l-4.47,0.76l-1.49,-0.67l-2.49,-2.71l-2.47,-4.76l-1.38,-1.39l-2.08,-0.84l-2.05,0.31l-1.19,-0.8l-0.71,-1.96l0.07,-3.09l0.87,-1.57l4.5,-3.24l1.82,-3.62l-0.04,-2.68l-1.79,-3.68l-2.72,-2.73l-2.19,-1.05l-17.55,-2.19l-0.33,-65.71l-1.64,-7.65l0.96,-5.72l143.0,-0.19l0.81,-0.72l0.05,-50.4l75.68,0.02Z", "name": "La Pampa"}, "me": {"path": "M143.35,702.96l2.14,-4.18l-1.46,-4.09l1.3,-2.85l-0.64,-0.81l-1.02,0.02l0.02,-1.14l2.84,-2.99l-0.22,-1.83l-2.68,-6.27l0.59,-7.88l-1.72,-2.44l-1.08,-3.64l1.91,-1.5l-0.76,-1.66l-1.77,-1.01l-3.58,-0.72l-0.6,-1.43l1.34,-2.12l7.22,-2.44l1.51,-10.93l3.5,-8.02l-1.63,-2.52l1.6,-0.73l1.08,-1.77l1.07,-5.54l2.64,-2.31l2.43,-4.63l2.17,-1.78l0.46,-6.22l2.58,-0.84l3.62,0.76l3.98,-2.48l-0.19,-2.1l-1.59,-3.38l0.77,-7.94l-0.66,-1.71l-1.73,-0.17l0.53,-3.73l-0.77,-4.84l2.42,-2.29l-0.02,-1.21l-1.54,-2.33l1.0,-3.66l-0.25,-1.45l1.61,-1.05l0.51,-3.8l2.02,-3.15l-1.26,-5.76l-1.23,-1.47l-3.33,-1.51l-1.83,0.23l-2.7,2.74l-1.74,-3.37l-2.5,-2.59l0.79,-3.8l-0.83,-2.64l0.63,-0.97l2.35,-1.03l1.99,-6.2l-4.1,-3.04l-2.95,-4.03l-1.12,-6.33l0.21,-1.17l1.4,-0.24l0.33,-0.68l-0.91,-1.41l-0.71,-3.94l-2.57,-1.68l-0.65,-1.23l-0.08,-4.02l6.51,-0.97l4.98,0.82l8.83,-2.02l5.68,-0.37l1.77,-1.6l0.12,-4.18l0.71,-1.17l4.36,-1.55l2.68,-1.72l7.15,0.01l1.92,-2.81l3.11,-2.03l1.93,0.93l3.94,4.74l2.44,0.54l2.53,-0.46l0.89,12.22l1.2,1.04l9.23,-0.1l10.38,-6.36l2.94,-2.85l6.38,-0.53l3.92,-2.35l4.84,-1.19l2.73,0.87l1.47,1.63l0.53,1.8l2.98,1.83l2.13,2.36l4.47,0.72l11.21,-1.92l3.76,2.12l1.43,6.61l1.84,1.72l0.85,2.69l1.98,8.45l1.98,2.59l0.91,2.55l-1.12,3.33l0.55,3.03l-0.94,1.5l1.31,3.59l0.34,12.15l1.84,6.86l-0.09,3.29l6.01,9.55l4.09,11.21l3.92,3.03l0.96,3.13l1.97,1.77l1.34,3.41l-0.52,5.63l-1.68,0.19l-1.16,2.24l0.87,6.91l-0.48,1.2l1.52,2.22l0.29,4.34l1.6,5.28l2.2,2.3l5.29,9.79l1.13,3.55l-0.33,3.69l2.17,6.41l-0.92,3.78l0.92,1.49l-0.61,1.8l0.61,3.99l-0.72,7.71l-1.55,3.86l-2.37,13.27l-0.78,8.25l-72.61,-0.03l-2.06,1.3l-0.67,5.91l1.65,7.73l0.33,65.48l-7.23,-0.9l-3.47,-4.63l-7.84,-1.16l-3.57,-2.83l-5.94,0.46l-4.31,-0.85l-1.37,-0.88l-0.74,-1.45l-1.1,-4.14l-1.37,-1.61l-3.12,-1.34l-6.89,-1.75l-7.99,1.38l-2.25,-0.14l-4.0,-1.04l-3.51,-2.04l-4.79,-5.47l1.19,-1.7l0.33,-2.22l-0.54,-3.39l-5.34,-3.56l-2.15,-4.58l-2.7,-1.92l-2.42,-3.02l-4.25,-1.51l-1.44,-2.34l-2.95,-8.42l-1.66,-0.92l-1.94,1.06l-0.68,-0.42l-1.1,-3.52l1.03,-1.8l0.03,-3.07l-0.71,-1.61l-2.41,-1.92Z", "name": "Mendoza"}, "sj": {"path": "M163.26,356.46l2.73,-1.94l0.52,-1.18l3.83,-1.07l1.15,-1.38l0.07,-7.82l3.18,-7.18l-0.93,-5.88l1.32,-2.85l2.05,-1.96l0.93,-7.87l4.51,1.65l3.13,-0.53l2.26,2.42l3.73,0.32l6.52,5.27l2.4,4.0l1.43,4.83l3.77,3.43l2.06,4.78l2.86,3.15l-0.36,1.18l-2.01,1.03l-1.7,2.66l-0.05,5.88l2.61,3.67l-1.14,0.78l-0.51,1.29l-0.05,4.83l-1.8,3.39l-0.0,4.82l2.48,1.46l3.74,-0.84l3.75,0.64l5.02,-1.46l4.18,2.09l4.94,-0.02l7.09,2.02l2.03,2.49l4.91,3.24l1.07,2.16l3.59,1.65l2.03,2.02l0.88,2.01l2.27,1.5l2.14,2.71l4.17,2.23l2.17,2.81l6.27,4.68l2.23,3.49l0.8,2.95l3.65,2.47l1.91,3.07l4.53,3.72l3.95,5.75l2.88,1.54l4.8,8.64l-1.62,5.56l0.26,1.78l2.33,2.06l-1.94,13.31l2.38,5.28l0.14,3.28l4.94,4.9l3.85,0.77l0.83,5.57l2.53,1.45l1.94,4.13l-10.59,0.55l-5.49,-1.82l-5.82,0.74l-4.96,-0.99l-1.35,0.66l-1.24,2.16l0.63,4.77l-0.97,3.77l0.16,8.86l-3.96,-1.93l-11.13,1.95l-3.93,-0.64l-1.8,-2.16l-2.74,-1.61l-0.43,-1.62l-1.81,-2.03l-1.77,-1.06l-1.83,-0.06l-5.17,1.26l-3.83,2.32l-6.48,0.55l-3.19,3.0l-10.07,6.19l-8.6,0.07l-1.26,-12.75l-0.81,-0.52l-4.62,0.09l-3.74,-4.59l-2.78,-1.26l-3.92,2.36l-1.57,2.59l-6.93,-0.08l-2.94,1.81l-4.49,1.62l-1.2,1.73l-0.11,4.21l-1.31,0.98l-5.18,0.23l-8.75,2.0l-4.96,-0.81l-7.28,1.14l-2.64,-1.34l-0.98,-4.91l0.43,-1.89l-2.37,-4.44l4.47,0.4l2.12,-4.54l-0.12,-1.27l-2.63,-2.94l-5.96,-1.07l-1.87,-2.19l-0.51,-4.43l-1.9,-2.44l-2.73,-5.57l0.5,-6.57l1.1,-3.44l-0.63,-2.83l0.97,-1.97l0.45,-4.42l2.42,-3.59l1.7,2.84l1.29,-0.06l1.57,-1.68l1.74,-3.78l3.47,-0.55l-0.12,-1.16l-2.61,-2.61l-0.51,-1.32l0.87,-6.63l1.94,-3.67l0.02,-2.64l1.82,-4.0l0.81,-3.72l2.86,-2.57l0.47,-1.27l-1.32,-3.43l0.59,-0.26l5.25,2.07l3.31,-1.2l2.59,-2.47l0.98,-4.99l1.83,-1.37l0.69,-2.04l-0.7,-2.18l-1.55,-1.5l-4.22,-0.88l2.31,-4.55l0.57,-8.59l-0.64,-4.46l-1.96,-2.49l0.2,-4.07l-3.35,-10.83l0.4,-3.62l2.65,-2.02l-0.52,-1.36Z", "name": "San Juan"}, "ca": {"path": "M201.92,285.51l0.45,-1.52l2.01,-1.49l-0.73,-2.72l2.86,-4.3l0.5,-4.37l3.83,-3.08l2.24,-4.98l0.53,-4.59l2.4,-3.57l3.74,-0.53l3.08,2.12l3.24,0.58l1.65,-2.92l1.55,-1.28l8.36,-1.51l0.52,-0.8l-0.03,-1.83l1.22,-3.57l-0.18,-1.71l-11.98,-16.82l-1.08,-4.27l0.85,-7.08l6.88,-5.83l0.68,-2.09l-4.07,-18.94l-2.73,-4.43l-0.32,-3.29l0.5,-1.01l-2.39,-3.76l0.1,-2.44l4.59,-12.71l30.88,5.83l56.1,-0.57l1.51,6.03l2.25,3.4l-1.13,5.92l-3.06,2.43l-7.33,0.31l-3.16,2.24l-1.02,3.01l0.69,4.49l8.3,11.47l3.95,7.93l5.75,6.08l1.55,0.29l1.37,-0.94l2.78,-6.13l1.71,-1.08l1.55,-2.34l2.52,-0.04l2.59,2.94l1.58,0.82l-1.93,2.8l-0.28,2.77l-2.23,5.73l0.19,2.34l1.68,1.74l4.65,1.52l4.47,3.82l2.18,1.07l0.52,0.98l-1.37,9.76l-6.91,7.81l-1.63,3.24l-3.35,3.25l-2.16,4.6l0.88,0.83l8.84,2.98l-0.39,1.39l2.61,10.92l2.41,2.27l1.2,3.99l1.71,1.51l2.84,-0.82l2.16,1.21l1.69,6.1l4.45,5.32l1.26,0.16l2.79,-4.55l6.49,-4.64l4.42,2.73l3.06,-0.2l3.89,16.98l0.31,7.18l-0.75,3.71l-4.04,4.86l-0.08,2.3l0.4,0.87l3.41,2.22l0.74,14.27l1.99,14.38l6.5,12.53l-2.5,0.91l-0.68,1.96l1.3,12.21l-9.03,9.6l-11.23,3.58l-7.3,-14.17l-7.24,-16.69l-1.03,-4.71l-0.12,-4.39l-1.75,-3.37l-15.02,-13.84l-10.78,-5.6l-0.62,-1.02l1.85,-2.93l-0.04,-1.73l-2.83,-1.78l-2.94,-3.38l-1.39,-6.39l-4.25,-4.89l-17.99,-6.73l-3.34,0.92l-2.45,2.74l-3.78,0.67l-23.33,-0.83l-3.05,0.74l-2.04,1.31l-0.68,-1.93l-3.12,-4.13l-1.04,-6.38l-1.82,-0.35l-5.58,1.75l-2.59,-2.34l-5.69,-0.95l-3.16,-3.22l-4.01,-0.79l0.65,-4.35l-0.84,-2.53l0.93,-4.12l-0.97,-1.64l-3.44,-0.31l-2.93,1.68l-3.69,-1.0l-8.67,2.0l-12.07,-0.93Z", "name": "Catamarca"}, "cc": {"path": "M530.99,121.33l2.23,0.21l2.82,2.17l2.65,4.58l3.61,0.08l0.95,2.06l5.0,4.57l10.55,1.96l2.62,2.71l0.29,1.73l1.89,2.79l-0.15,2.27l1.28,1.44l1.03,0.51l0.91,-0.35l10.59,8.49l7.04,4.29l4.08,1.79l2.38,0.3l3.3,5.17l2.89,2.06l0.81,1.48l-0.05,1.46l1.87,1.08l0.74,1.91l2.09,0.46l0.49,0.87l-0.52,1.32l2.87,5.97l1.04,0.43l0.84,-0.48l4.56,1.72l0.96,1.76l2.24,0.63l1.1,1.5l3.31,1.8l0.59,2.27l2.05,1.03l4.76,5.81l1.24,0.47l0.66,5.58l10.98,2.5l1.51,5.48l1.91,2.09l4.08,0.35l4.75,-2.42l2.47,2.51l5.15,1.94l5.25,5.43l3.21,1.66l2.31,2.68l2.25,0.44l1.76,2.18l3.69,2.23l1.01,2.17l3.12,2.7l0.95,1.87l1.68,0.82l1.8,-0.19l0.1,1.14l-0.73,0.9l-3.77,1.5l-0.5,1.01l0.62,1.34l-1.61,2.64l-0.88,-0.47l-1.08,0.83l-0.55,3.08l-2.16,0.4l-1.92,1.81l0.02,2.55l2.26,2.25l-0.09,2.65l-2.07,0.79l-10.66,7.46l0.06,3.85l2.31,4.59l0.79,3.37l-2.08,13.06l-127.42,0.05l-0.03,-89.06l-0.54,-19.42l-1.51,-4.21l-73.53,-0.39l47.3,-59.16l-0.11,-12.89l8.98,3.41l4.25,0.79l1.82,2.2l3.75,2.59l3.48,0.97Z", "name": "Chaco"}, "lr": {"path": "M178.8,316.25l5.86,-5.77l0.96,-3.41l3.1,0.73l4.95,-8.64l0.33,-1.71l5.12,-2.38l2.51,-8.37l12.43,0.96l8.75,-2.01l4.01,0.96l3.07,-1.75l2.55,0.67l-0.91,4.22l0.84,2.67l-0.78,3.63l0.4,1.43l1.33,0.78l3.06,0.31l3.27,3.27l5.64,0.92l2.78,2.41l6.92,-1.64l0.71,5.88l4.43,6.85l5.69,-2.06l23.39,0.82l4.14,-0.76l2.39,-2.68l2.8,-0.87l17.42,6.56l3.8,4.34l1.49,6.58l3.15,3.62l2.59,1.53l-1.98,3.81l0.91,2.0l10.94,5.75l14.78,13.59l1.56,2.94l0.1,4.3l1.1,4.98l7.27,16.77l7.42,14.4l-3.64,9.96l-1.9,3.43l-10.89,33.7l0.33,38.84l-6.01,0.66l-2.7,-1.09l-4.07,-0.37l-7.41,2.7l-6.9,0.41l-2.63,-0.94l-2.91,0.28l-1.94,-0.89l-2.43,0.62l-5.79,-1.84l-2.29,-4.91l-2.4,-1.24l-0.9,-5.71l-4.24,-1.13l-4.41,-4.26l-0.11,-3.17l-2.33,-5.1l1.97,-13.42l-2.5,-2.48l-0.12,-1.08l1.63,-5.73l-5.1,-9.32l-2.95,-1.61l-3.88,-5.68l-4.56,-3.75l-2.02,-3.18l-3.3,-2.06l-0.83,-2.92l-2.51,-3.9l-6.28,-4.68l-2.31,-2.92l-4.04,-2.13l-2.13,-2.7l-2.2,-1.43l-0.73,-1.84l-2.26,-2.26l-3.55,-1.62l-1.04,-2.13l-5.05,-3.36l-2.16,-2.58l-7.5,-2.17l-4.88,0.03l-4.39,-2.13l-5.63,1.52l-2.92,-0.68l-3.93,0.83l-1.32,-0.57l-0.07,-4.28l1.81,-3.41l0.03,-4.75l1.68,-2.33l-1.24,-2.66l-1.42,-1.4l0.07,-5.18l1.36,-2.08l2.14,-1.16l0.61,-1.59l-0.29,-1.32l-2.79,-2.86l-2.11,-4.85l-3.68,-3.35l-2.63,-7.54l-1.45,-1.55l-7.1,-5.6l-3.44,-0.17l-2.45,-2.51l-3.21,0.52l-4.05,-1.53Z", "name": "La Rioja"}, "se": {"path": "M380.4,328.49l-0.01,-1.74l1.14,-0.73l3.4,-5.24l0.33,-3.08l-0.32,-7.34l-3.98,-17.39l4.05,-0.78l2.03,-5.0l1.46,-0.62l-3.11,-8.78l0.39,-1.03l2.81,-0.75l1.33,-2.19l-1.3,-1.51l-2.7,-0.92l5.12,-5.65l2.84,-1.9l3.39,-7.56l1.33,-5.19l2.16,-2.86l2.33,-8.6l2.4,-0.75l1.71,-5.35l3.06,0.4l0.76,-0.66l-1.01,-11.39l1.75,-5.97l0.26,-6.38l2.04,-4.22l0.38,-3.36l10.23,-21.07l11.8,3.44l97.61,0.44l1.25,3.48l0.53,19.24l0.03,89.6l-16.68,103.35l-6.23,-15.33l-2.46,-1.73l-49.39,-0.26l-0.4,-1.99l-2.73,-0.72l0.17,-2.04l-0.6,-0.93l-2.9,0.13l-4.0,-1.07l-5.39,0.8l-3.4,-0.18l-1.93,-1.25l-3.46,-0.78l-0.97,-1.29l-3.36,-1.73l-0.63,-0.57l0.14,-2.31l-0.51,-0.68l-9.51,-2.47l-28.2,6.44l-6.56,-12.45l-1.96,-14.18l0.19,-4.05l-0.98,-10.46l-1.43,-1.67l-2.32,-1.15Z", "name": "Santiago del Estero"}, "sl": {"path": "M280.93,492.01l-0.24,-3.55l1.44,-1.44l4.82,0.96l6.25,-0.69l5.01,1.77l11.5,-0.59l6.1,1.9l2.54,-0.6l1.7,0.87l3.1,-0.26l2.66,0.94l7.25,-0.43l7.29,-2.68l3.62,0.34l2.95,1.12l10.57,-0.75l3.49,1.4l12.5,7.22l2.43,2.46l0.93,4.57l1.36,2.51l0.08,3.07l0.73,0.74l5.81,-0.32l6.04,-1.26l-0.08,6.16l2.15,5.87l-0.35,3.43l-1.44,4.61l-1.32,1.68l-1.3,6.7l-1.88,3.5l0.31,2.36l-1.63,3.37l0.52,2.42l-2.51,1.09l-2.0,3.84l2.02,38.23l-0.04,103.28l-68.2,-0.07l-0.18,-1.92l3.29,-19.31l1.57,-4.01l0.73,-7.79l-0.6,-3.98l0.6,-1.96l-0.86,-1.56l0.85,-3.8l-2.05,-5.83l0.21,-4.28l-1.2,-3.79l-5.44,-10.07l-2.12,-2.17l-1.48,-4.96l-0.3,-4.38l-1.41,-2.07l0.47,-1.12l-0.98,-6.52l0.72,-1.34l1.11,0.15l0.95,-1.05l0.55,-6.54l-1.48,-3.68l-1.9,-1.66l-1.09,-3.3l-3.87,-2.98l-4.01,-11.06l-5.91,-9.3l0.11,-3.14l-1.84,-6.87l-0.35,-12.19l-1.28,-3.45l0.89,-1.03l-0.5,-3.37l1.15,-3.46l-1.08,-3.07l-1.93,-2.44l-2.83,-11.18l-1.89,-1.87l-1.2,-4.35l-0.27,-11.91l0.94,-3.47l-0.33,-1.72Z", "name": "San Luis"}, "er": {"path": "M584.87,481.91l0.53,-1.96l7.05,-0.42l2.98,-1.31l2.88,-2.69l4.37,-5.72l4.12,-3.15l3.23,-4.51l1.41,-4.21l2.77,-2.75l7.23,-11.66l5.47,-7.25l2.75,-4.86l1.75,-8.07l0.34,-5.74l-1.99,-5.51l3.6,-0.2l3.09,-1.15l1.9,0.52l3.05,-0.67l6.76,1.83l10.61,-6.85l5.81,1.11l12.3,-3.72l3.48,1.54l3.11,0.07l8.56,2.25l1.56,1.36l2.27,3.91l4.69,3.96l1.3,4.81l2.3,4.14l8.03,7.21l0.48,5.46l-0.39,1.56l-3.19,0.44l-1.26,0.9l-0.37,1.27l2.19,3.29l0.31,1.98l-2.51,5.47l0.28,3.44l-2.7,3.58l-1.03,4.1l-3.19,2.18l-0.74,1.82l4.01,4.34l0.29,1.95l-3.07,9.61l-5.21,2.21l-1.79,2.74l2.03,2.95l0.54,3.39l-0.56,3.93l-1.28,2.96l4.03,6.3l-0.18,1.23l-2.8,3.83l-2.54,5.29l0.38,8.48l1.47,8.66l1.85,3.53l-0.97,3.93l0.56,3.37l-1.76,1.56l-1.36,0.28l-7.03,-0.98l-1.85,0.73l-0.76,1.06l-0.03,0.91l0.76,0.46l-0.89,5.34l0.9,3.11l-1.99,1.67l-2.19,3.75l-1.17,4.58l0.13,4.32l-0.92,5.27l0.45,3.38l3.58,5.72l0.66,6.76l-6.07,2.03l-1.9,-0.02l-6.31,-4.79l-3.13,-0.81l-8.18,-5.41l-6.08,-0.11l-1.58,-1.67l-1.36,0.18l-1.76,-3.9l-2.16,0.87l-3.51,0.0l-5.75,-4.22l-3.91,1.09l-1.48,-0.3l-5.8,-2.98l-3.97,-4.36l-4.04,-1.51l-7.57,-5.03l-5.79,-5.8l-3.58,-1.89l-3.05,-3.36l-4.6,-2.61l-2.46,-2.94l-1.54,-4.17l-1.62,-1.85l-2.36,-4.65l-1.35,-8.32l-2.83,-5.76l1.79,-5.22l-0.08,-5.03l1.33,-5.05l-0.24,-4.81l2.05,-4.4l-2.54,-5.11l-0.09,-2.13l2.05,-3.4l0.99,-4.98Z", "name": "Entre R\u00edos"}, "ba": {"path": "M507.92,939.49l-0.39,0.81l1.34,1.39l4.21,-2.12l-0.94,1.26l-0.77,3.95l-3.59,6.5l-18.35,9.08l-1.72,-0.07l-2.74,-5.4l-11.04,-9.98l-3.78,-1.41l-8.78,-1.01l-0.06,-246.87l0.68,-79.95l1.2,-1.32l73.55,-0.24l33.96,-35.54l1.69,-2.36l-0.33,-1.78l0.93,-1.51l2.73,-0.55l2.97,1.15l4.38,0.12l4.88,3.23l3.51,-0.36l1.68,-1.27l1.7,-3.33l0.91,-4.42l2.82,-2.51l0.33,-3.19l2.38,-1.29l0.66,-2.1l6.14,5.97l7.74,5.14l3.94,1.45l3.89,4.32l6.1,3.14l1.99,0.38l3.55,-1.07l3.29,2.95l2.48,1.22l4.07,0.01l1.5,-0.83l0.49,2.9l1.0,0.8l1.52,-0.06l1.8,1.7l5.84,0.03l8.12,5.38l3.03,0.76l4.57,3.95l2.02,0.96l2.46,0.05l6.06,-2.03l2.17,0.91l0.03,5.86l0.57,1.51l-3.29,3.93l-3.64,-0.29l-1.69,1.55l3.9,2.97l-0.47,2.3l-1.24,1.65l0.34,1.93l1.78,1.51l0.07,1.76l1.1,1.81l1.72,1.32l2.23,0.37l0.96,2.67l4.75,3.87l19.89,8.24l6.79,4.28l1.18,1.44l5.64,2.92l8.27,6.54l6.94,9.54l1.25,3.27l-0.27,1.55l-8.43,11.57l-2.5,4.51l-0.75,4.4l0.4,4.41l3.47,8.01l1.82,1.44l1.02,2.33l6.4,5.84l4.76,2.72l2.88,0.79l-0.56,0.96l0.6,0.84l4.21,-2.04l4.1,-0.04l-0.08,-1.96l0.57,0.39l1.82,3.94l-0.08,6.27l1.23,4.08l0.16,14.97l-9.85,13.71l-7.56,13.0l-4.9,6.31l-6.45,5.69l-8.12,9.81l-1.97,4.47l-0.6,4.52l0.58,1.4l-0.18,2.45l-1.04,2.2l-1.48,1.55l-12.05,7.35l-6.97,3.8l-2.26,0.6l-3.97,2.68l-7.83,3.24l-4.02,0.61l-6.69,2.88l-7.3,1.54l-9.53,3.02l-5.54,2.5l-25.65,4.72l-7.47,2.87l-4.13,-0.0l-44.04,7.2l-6.82,-0.39l-5.7,1.72l-12.83,-0.97l-4.15,1.52l-6.76,-0.89l-2.36,-1.38l-5.2,0.68l-9.93,-2.97l-4.32,-5.96l-7.34,-0.55l-1.95,-0.72l-1.35,0.71l-0.71,1.33l0.78,4.72l1.74,-0.03l0.22,3.02l2.2,0.46l-0.21,1.36l-1.42,1.08l-1.85,4.45l0.83,1.48l0.04,3.65l1.79,1.7l-1.15,1.54l1.79,1.28l5.69,0.56l5.24,2.78l0.87,1.51l-0.97,1.24l-3.98,-2.92l-2.1,-2.52l-4.7,0.58l0.63,2.04l2.06,0.58l1.41,2.49l1.94,1.69l4.31,1.18l0.15,0.78l-0.96,1.5l-2.0,17.22l-1.82,1.03l-2.93,-0.46l-2.89,-1.96l-0.77,0.22l-0.25,1.04l0.71,1.26l-0.96,0.94l-0.05,2.95l-2.32,6.99l1.22,3.27l-0.9,3.93l-0.31,0.79l-3.72,2.06l-1.86,3.36l3.5,8.73l3.93,1.96l0.3,1.73l1.85,1.9l0.86,-0.14l0.06,2.68l-1.72,-0.29l-1.47,-1.46l-0.69,0.2l0.62,2.71ZM526.47,860.53l0.79,0.52l0.69,-0.49l1.04,3.85l-6.42,-2.9l-2.93,-3.99l6.05,1.6l0.79,1.41ZM519.12,853.16l-0.45,0.42l-0.44,-0.18l0.15,-0.28l0.74,0.04ZM520.02,853.2l3.01,0.5l1.2,1.06l-1.16,0.39l-3.05,-1.95Z", "name": "Buenos Aires"}, "sa": {"path": "M231.8,149.19l-0.64,-2.0l-3.17,-1.41l-1.12,-3.23l3.33,-8.36l1.55,1.09l0.7,-0.15l2.44,-6.11l3.1,-0.06l3.64,-5.33l39.89,-16.94l1.27,-1.75l3.69,-11.75l4.27,3.32l2.85,0.79l3.5,3.64l0.6,1.47l1.85,0.6l3.33,4.56l4.77,2.33l4.31,4.86l5.08,2.01l3.1,-0.14l1.73,-0.88l2.42,-3.16l1.47,-0.79l1.72,-5.01l0.64,-15.2l-3.1,-9.67l1.28,-5.89l0.63,-0.67l4.02,1.11l2.11,1.31l1.75,0.03l7.8,5.16l0.06,5.7l-0.49,1.17l0.56,1.48l-1.51,2.33l-0.25,3.86l1.47,2.69l-0.25,2.05l2.1,2.74l1.16,0.2l1.55,-0.75l2.91,2.61l3.13,1.71l0.4,4.67l7.47,10.91l2.4,1.5l2.8,-0.42l2.23,1.86l7.02,2.01l4.81,-2.23l0.56,1.15l3.96,3.13l6.7,2.62l1.46,-0.6l3.03,-6.17l9.28,7.46l1.13,-0.67l1.44,-3.01l2.92,-2.72l2.56,-0.74l1.34,-1.73l3.99,-0.48l1.46,-0.9l4.03,-5.07l2.48,-5.74l-1.16,-31.55l-0.52,-0.91l-1.68,-0.39l-6.85,0.16l-1.57,1.76l-1.47,3.29l-4.91,-5.14l-3.59,-1.35l-1.34,-1.18l-4.33,0.6l-2.1,1.66l-3.06,-0.32l-0.46,-2.75l-2.92,-5.89l-3.96,-2.4l1.6,-8.23l-0.31,-2.26l-2.29,-2.3l-5.71,-0.36l-1.75,-1.42l-1.75,-4.83l-0.77,-5.24l-0.01,-2.11l0.92,-2.38l-1.99,-2.18l-1.58,-0.15l0.42,-3.66l4.3,-8.68l0.21,-4.65l1.99,-5.39l7.02,-0.08l8.33,1.9l3.25,1.76l4.62,0.18l3.03,1.49l1.8,2.64l-1.27,3.31l2.12,2.05l-0.32,1.76l1.6,2.43l3.01,3.16l-0.91,1.75l-0.17,2.98l4.41,5.14l-0.21,2.28l0.74,2.97l1.34,0.83l0.66,-0.39l1.41,-5.25l0.04,-3.45l1.91,-6.94l4.05,-4.78l3.34,-8.47l1.61,-1.41l2.14,-6.19l1.57,-1.42l1.25,-2.8l5.1,0.07l3.4,2.25l3.05,-2.24l1.58,-0.27l37.19,0.22l0.88,5.74l4.85,3.2l0.87,1.69l1.32,0.53l-0.3,2.14l0.5,0.8l2.9,0.94l1.8,1.96l2.44,0.85l1.38,1.71l4.17,2.53l0.31,90.89l-47.74,59.69l-23.37,-0.33l-10.3,-3.23l-2.27,-0.1l-10.69,21.7l-0.43,3.49l-2.29,5.44l-8.99,0.21l-3.3,-0.64l-7.86,3.01l-3.12,-1.56l-2.16,-0.0l-8.4,-3.27l-2.89,-4.67l-5.88,2.09l-10.22,-2.17l-1.18,1.06l-0.78,8.66l-0.65,1.12l-14.67,-2.22l-1.74,-0.88l-2.83,-3.09l-2.7,-0.26l-1.52,0.74l-1.28,2.12l-1.8,1.23l-2.62,5.89l-1.13,0.71l-5.69,-5.86l-3.88,-7.83l-7.35,-9.74l-1.45,-3.72l0.21,-3.6l2.64,-2.26l7.78,-0.46l3.8,-3.13l1.21,-6.56l-2.32,-3.65l-0.64,-4.27l-1.15,-2.23l-2.45,-0.43l-54.4,0.67l-27.73,-5.23l2.22,-0.73l0.72,-2.13l-3.42,-4.03l0.25,-2.22l-1.43,-1.87Z", "name": "Salta"}}});
diff --git a/js/vmap/dist/maps/jquery.vmap.brazil.js b/js/vmap/dist/maps/jquery.vmap.brazil.js
new file mode 100644 (file)
index 0000000..b5010a2
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add Brazil Map Data Points */
+jQuery.fn.vectorMap('addMap', 'brazil_br', {"width":600,"height":550,"paths":{"ro": {"name": "Rondônia","path": "M 179,197 L 182,197 L 186,197 L 186,198 L 187,198 L 188,198 L 188,199 L 188,200 L 189,200 L 189,201 L 189,202 L 190,201 L 190,202 L 190,203 L 191,203 L 191,202 L 191,203 L 192,203 L 193,203 L 193,204 L 193,205 L 193,206 L 194,207 L 194,206 L 195,206 L 195,207 L 195,208 L 196,208 L 196,209 L 197,209 L 198,209 L 198,210 L 199,210 L 200,210 L 200,209 L 200,208 L 201,208 L 201,207 L 202,207 L 202,208 L 203,208 L 203,209 L 204,209 L 204,210 L 205,210 L 205,211 L 204,211 L 204,212 L 204,213 L 204,214 L 204,215 L 203,215 L 203,216 L 203,215 L 203,216 L 203,217 L 204,217 L 204,218 L 204,219 L 205,219 L 205,220 L 205,221 L 204,221 L 204,222 L 204,221 L 204,222 L 204,223 L 205,223 L 205,224 L 204,224 L 204,225 L 204,226 L 204,227 L 203,227 L 203,228 L 204,228 L 204,229 L 204,230 L 205,230 L 205,231 L 205,232 L 205,233 L 205,234 L 205,235 L 205,236 L 205,237 L 205,236 L 205,237 L 204,237 L 204,238 L 204,239 L 205,239 L 206,239 L 212,239 L 213,239 L 214,239 L 219,239 L 219,240 L 220,240 L 220,241 L 221,241 L 221,240 L 221,241 L 221,240 L 222,240 L 222,241 L 223,241 L 224,241 L 225,241 L 226,241 L 226,242 L 226,243 L 226,244 L 227,244 L 227,245 L 226,245 L 226,246 L 225,246 L 225,247 L 224,247 L 224,248 L 224,249 L 224,250 L 224,251 L 224,252 L 225,252 L 224,252 L 225,252 L 226,252 L 226,253 L 226,254 L 227,254 L 227,255 L 227,256 L 227,257 L 229,258 L 228,258 L 228,259 L 228,260 L 227,260 L 226,260 L 226,261 L 225,261 L 225,262 L 224,262 L 224,263 L 224,264 L 225,264 L 224,264 L 224,265 L 224,266 L 224,267 L 223,267 L 223,268 L 222,268 L 222,269 L 222,270 L 221,270 L 221,271 L 220,271 L 221,271 L 220,271 L 221,272 L 220,272 L 220,273 L 220,274 L 219,274 L 218,274 L 218,275 L 217,275 L 217,276 L 217,275 L 216,276 L 216,277 L 215,277 L 215,276 L 214,276 L 213,276 L 213,275 L 212,275 L 211,275 L 212,275 L 212,274 L 211,274 L 210,274 L 210,275 L 210,274 L 210,275 L 210,274 L 210,275 L 209,274 L 209,275 L 208,275 L 208,274 L 207,274 L 207,275 L 207,274 L 206,274 L 206,275 L 205,275 L 204,275 L 204,274 L 204,275 L 204,274 L 203,274 L 204,274 L 203,274 L 202,274 L 202,275 L 201,274 L 201,275 L 201,274 L 201,275 L 201,274 L 201,275 L 200,275 L 200,274 L 199,274 L 199,273 L 198,273 L 198,272 L 197,272 L 197,271 L 196,271 L 196,270 L 196,269 L 196,270 L 196,269 L 195,269 L 194,269 L 193,269 L 192,269 L 192,268 L 191,268 L 190,268 L 189,268 L 189,267 L 188,267 L 188,268 L 187,268 L 187,267 L 187,268 L 187,267 L 186,267 L 187,267 L 187,266 L 186,266 L 186,267 L 186,266 L 185,266 L 185,265 L 184,265 L 184,264 L 183,264 L 183,263 L 183,264 L 183,263 L 182,263 L 183,263 L 183,262 L 182,262 L 182,263 L 182,262 L 181,262 L 182,262 L 181,262 L 181,263 L 180,263 L 181,263 L 180,263 L 179,263 L 179,262 L 179,263 L 179,262 L 178,262 L 178,261 L 177,261 L 176,261 L 176,260 L 175,260 L 174,260 L 174,259 L 173,259 L 173,260 L 172,260 L 171,260 L 171,261 L 170,261 L 170,260 L 170,261 L 170,260 L 169,260 L 169,261 L 169,260 L 168,260 L 167,260 L 168,260 L 167,260 L 166,260 L 165,260 L 164,260 L 164,259 L 163,259 L 163,258 L 163,257 L 163,256 L 163,257 L 162,257 L 162,256 L 161,256 L 160,256 L 160,255 L 160,256 L 159,256 L 159,255 L 158,255 L 158,254 L 159,254 L 158,254 L 158,253 L 158,254 L 157,254 L 157,253 L 156,253 L 156,254 L 156,253 L 155,253 L 156,253 L 156,252 L 155,252 L 155,251 L 155,250 L 155,249 L 154,249 L 153,249 L 153,250 L 154,250 L 153,250 L 153,249 L 152,249 L 153,249 L 153,248 L 153,247 L 152,247 L 152,246 L 152,245 L 151,245 L 151,244 L 152,244 L 151,244 L 151,243 L 151,242 L 152,242 L 151,242 L 151,241 L 152,241 L 152,240 L 152,239 L 153,239 L 152,239 L 152,238 L 152,237 L 151,237 L 151,236 L 151,235 L 151,234 L 150,234 L 150,233 L 150,232 L 151,232 L 151,231 L 151,230 L 152,230 L 152,229 L 152,228 L 152,227 L 151,227 L 151,226 L 152,226 L 152,225 L 151,225 L 151,224 L 152,224 L 152,223 L 151,223 L 151,222 L 151,221 L 150,221 L 149,222 L 149,221 L 149,222 L 149,223 L 149,222 L 149,223 L 148,223 L 147,223 L 147,222 L 147,223 L 146,223 L 146,222 L 147,222 L 146,222 L 145,222 L 145,223 L 145,222 L 144,222 L 144,223 L 144,222 L 143,222 L 142,222 L 142,223 L 143,223 L 142,223 L 141,223 L 141,222 L 141,223 L 140,223 L 139,223 L 140,223 L 139,223 L 138,223 L 137,223 L 137,224 L 136,224 L 135,224 L 134,224 L 133,224 L 131,223 L 131,222 L 132,222 L 133,222 L 133,221 L 134,221 L 135,221 L 135,220 L 136,220 L 136,219 L 137,219 L 137,218 L 136,218 L 136,217 L 137,217 L 137,218 L 137,217 L 137,218 L 138,217 L 138,218 L 138,217 L 139,218 L 140,218 L 140,217 L 141,217 L 142,217 L 143,217 L 143,218 L 144,218 L 144,219 L 145,219 L 145,220 L 145,219 L 145,220 L 145,219 L 146,219 L 147,219 L 147,218 L 147,217 L 148,217 L 148,218 L 149,218 L 150,218 L 150,217 L 150,216 L 151,216 L 152,216 L 152,215 L 153,215 L 153,216 L 153,217 L 154,217 L 153,217 L 153,218 L 154,218 L 155,218 L 155,217 L 156,217 L 156,216 L 157,216 L 157,215 L 157,214 L 157,213 L 157,212 L 158,212 L 158,211 L 159,211 L 159,212 L 160,212 L 160,211 L 160,212 L 161,212 L 162,212 L 162,211 L 163,211 L 164,211 L 165,211 L 166,211 L 165,211 L 165,212 L 166,212 L 166,211 L 167,211 L 168,211 L 168,210 L 168,209 L 168,208 L 169,208 L 170,208 L 169,207 L 170,207 L 170,206 L 171,206 L 171,205 L 170,205 L 170,204 L 171,204 L 170,204 L 170,203 L 171,203 L 171,202 L 172,202 L 173,202 L 173,201 L 174,201 L 173,201 L 173,200 L 174,200 L 174,199 L 175,199 L 175,198 L 175,197 L 176,197 L 177,197 L 178,197 L 179,197 "},"ac": {"name": "Acre","path": "M 42,188 L 43,189 L 44,189 L 46,190 L 49,191 L 50,191 L 51,191 L 52,192 L 53,192 L 54,192 L 55,192 L 56,192 L 58,192 L 59,192 L 59,193 L 60,193 L 62,193 L 64,193 L 67,193 L 71,194 L 74,194 L 75,194 L 76,194 L 77,194 L 77,195 L 79,195 L 82,195 L 83,195 L 84,195 L 86,196 L 87,196 L 87,197 L 92,201 L 93,202 L 94,202 L 94,203 L 95,203 L 95,204 L 96,204 L 96,205 L 97,205 L 97,206 L 98,206 L 99,207 L 100,208 L 101,208 L 101,209 L 105,212 L 109,214 L 111,215 L 114,216 L 115,217 L 116,217 L 117,217 L 119,219 L 121,219 L 124,220 L 125,220 L 126,221 L 127,221 L 130,223 L 131,223 L 133,224 L 133,225 L 133,224 L 133,225 L 132,225 L 132,226 L 132,225 L 131,225 L 131,226 L 130,226 L 130,227 L 129,227 L 129,228 L 129,227 L 129,228 L 128,228 L 129,228 L 128,228 L 128,229 L 127,229 L 128,229 L 127,229 L 127,230 L 127,229 L 127,230 L 127,229 L 127,230 L 126,230 L 125,230 L 124,230 L 124,231 L 123,231 L 122,231 L 122,232 L 121,232 L 120,232 L 120,233 L 120,232 L 120,233 L 119,233 L 119,234 L 118,235 L 117,235 L 116,235 L 116,234 L 116,235 L 116,234 L 116,235 L 116,234 L 115,234 L 115,235 L 114,235 L 113,235 L 113,236 L 113,237 L 112,237 L 112,238 L 111,238 L 111,239 L 110,239 L 110,240 L 110,239 L 110,240 L 109,240 L 109,239 L 109,240 L 108,240 L 107,240 L 107,241 L 106,241 L 104,241 L 104,240 L 104,239 L 104,240 L 104,239 L 103,239 L 103,240 L 103,239 L 103,240 L 103,239 L 102,239 L 102,240 L 102,239 L 102,240 L 101,240 L 101,239 L 101,240 L 101,239 L 101,240 L 100,240 L 100,239 L 100,240 L 100,239 L 99,239 L 98,239 L 97,239 L 96,239 L 95,239 L 95,238 L 95,239 L 95,238 L 95,239 L 95,238 L 94,238 L 94,239 L 94,238 L 94,239 L 93,239 L 92,239 L 91,239 L 90,239 L 90,238 L 90,239 L 89,239 L 89,238 L 88,238 L 87,238 L 87,239 L 87,238 L 87,239 L 86,239 L 85,239 L 85,240 L 85,239 L 85,240 L 84,240 L 83,240 L 82,240 L 81,240 L 80,240 L 80,239 L 79,239 L 79,238 L 79,239 L 78,239 L 78,238 L 78,237 L 78,235 L 78,233 L 78,232 L 78,231 L 78,229 L 78,227 L 78,223 L 78,222 L 79,222 L 79,223 L 79,222 L 79,221 L 78,221 L 78,220 L 78,219 L 79,220 L 79,219 L 79,218 L 79,219 L 79,218 L 80,218 L 80,217 L 80,218 L 79,218 L 79,217 L 79,218 L 78,218 L 78,219 L 78,218 L 77,218 L 77,219 L 78,219 L 77,219 L 76,219 L 76,220 L 76,219 L 76,220 L 76,219 L 76,220 L 75,220 L 76,220 L 75,220 L 76,220 L 75,220 L 75,221 L 75,220 L 75,221 L 74,221 L 74,222 L 73,222 L 73,223 L 72,223 L 71,223 L 70,224 L 70,225 L 69,225 L 68,225 L 67,225 L 67,226 L 64,226 L 63,226 L 62,226 L 61,226 L 59,226 L 58,226 L 56,226 L 56,225 L 56,224 L 57,224 L 56,224 L 56,223 L 57,223 L 56,223 L 56,222 L 55,222 L 55,221 L 55,220 L 55,219 L 54,219 L 54,218 L 54,219 L 54,218 L 53,218 L 52,218 L 53,218 L 52,218 L 51,218 L 50,218 L 49,218 L 49,217 L 48,217 L 47,217 L 45,217 L 42,217 L 43,216 L 43,215 L 44,215 L 45,214 L 44,214 L 45,214 L 45,213 L 46,213 L 46,212 L 45,212 L 46,212 L 46,211 L 45,211 L 45,210 L 44,210 L 44,209 L 43,209 L 43,208 L 42,207 L 41,207 L 41,206 L 40,207 L 40,206 L 40,205 L 40,204 L 39,204 L 39,203 L 38,203 L 37,203 L 37,202 L 37,201 L 36,201 L 36,200 L 37,200 L 36,200 L 37,200 L 37,199 L 36,199 L 36,198 L 35,198 L 35,197 L 34,197 L 34,196 L 35,196 L 35,195 L 35,194 L 34,194 L 33,194 L 33,193 L 32,193 L 32,192 L 31,192 L 31,191 L 32,191 L 32,190 L 32,189 L 31,189 L 32,189 L 33,189 L 33,188 L 34,189 L 34,188 L 34,189 L 35,188 L 35,187 L 34,187 L 34,186 L 34,185 L 34,186 L 35,186 L 38,187 L 39,187 L 42,188 "},"am": {"name": "Amazonas","path": "M 124,58 L 124,59 L 124,60 L 125,60 L 125,61 L 126,61 L 127,62 L 127,63 L 127,64 L 127,65 L 127,66 L 127,67 L 127,68 L 127,69 L 127,70 L 128,70 L 130,69 L 134,73 L 138,76 L 139,76 L 140,76 L 141,76 L 141,75 L 142,75 L 143,75 L 143,74 L 144,74 L 144,73 L 145,73 L 146,73 L 146,72 L 146,73 L 146,72 L 146,73 L 147,73 L 147,72 L 147,73 L 147,72 L 148,72 L 148,73 L 149,73 L 149,74 L 149,75 L 148,75 L 148,76 L 148,77 L 149,77 L 150,77 L 150,76 L 151,76 L 150,76 L 150,75 L 151,75 L 151,74 L 151,73 L 152,73 L 152,74 L 153,74 L 153,73 L 153,74 L 154,73 L 154,72 L 154,71 L 154,70 L 155,70 L 155,71 L 156,71 L 156,70 L 157,70 L 156,70 L 156,69 L 157,69 L 157,70 L 157,69 L 158,69 L 158,68 L 159,68 L 159,69 L 160,69 L 160,68 L 160,69 L 161,68 L 162,68 L 162,67 L 163,67 L 163,66 L 164,66 L 164,65 L 165,65 L 165,66 L 164,67 L 165,67 L 165,66 L 166,66 L 166,65 L 167,65 L 168,64 L 168,65 L 168,64 L 169,64 L 169,63 L 169,62 L 169,61 L 169,60 L 169,59 L 170,59 L 171,59 L 172,59 L 173,59 L 174,59 L 173,58 L 174,58 L 175,58 L 175,57 L 176,57 L 177,57 L 178,57 L 178,56 L 179,56 L 180,56 L 181,56 L 182,56 L 182,57 L 183,58 L 184,58 L 185,58 L 186,58 L 186,59 L 187,59 L 188,59 L 188,60 L 188,61 L 188,62 L 188,63 L 187,63 L 187,64 L 187,65 L 188,65 L 188,66 L 189,66 L 189,67 L 189,68 L 190,69 L 190,70 L 190,71 L 191,71 L 191,72 L 191,73 L 192,73 L 191,73 L 191,74 L 191,75 L 191,76 L 190,76 L 190,77 L 190,78 L 191,78 L 190,78 L 190,79 L 190,80 L 191,80 L 191,81 L 192,81 L 191,81 L 191,82 L 191,83 L 191,84 L 192,84 L 192,85 L 192,86 L 193,86 L 193,87 L 193,88 L 194,88 L 194,89 L 194,90 L 194,91 L 195,91 L 195,92 L 194,92 L 194,93 L 193,94 L 194,94 L 193,94 L 193,95 L 194,95 L 193,96 L 192,96 L 192,97 L 192,96 L 191,96 L 191,97 L 191,98 L 192,98 L 193,98 L 192,98 L 193,98 L 193,99 L 194,99 L 194,100 L 195,100 L 195,101 L 196,101 L 196,102 L 197,102 L 198,102 L 198,103 L 198,104 L 198,105 L 199,105 L 199,106 L 200,106 L 201,106 L 202,106 L 203,106 L 203,107 L 204,107 L 204,108 L 205,108 L 205,107 L 204,107 L 204,106 L 203,106 L 203,105 L 204,105 L 203,105 L 203,104 L 203,103 L 204,103 L 204,102 L 204,101 L 204,100 L 203,99 L 204,99 L 204,98 L 204,97 L 205,97 L 205,96 L 206,96 L 206,95 L 207,95 L 207,94 L 208,94 L 209,94 L 209,93 L 209,94 L 209,93 L 210,93 L 211,93 L 211,94 L 212,94 L 213,94 L 213,95 L 214,95 L 214,96 L 215,96 L 215,97 L 214,97 L 215,97 L 215,98 L 216,99 L 216,98 L 216,99 L 217,99 L 217,98 L 217,99 L 217,98 L 217,99 L 217,98 L 218,98 L 218,99 L 218,98 L 218,99 L 218,98 L 219,98 L 218,98 L 219,98 L 219,97 L 220,97 L 221,97 L 221,96 L 221,95 L 220,95 L 220,94 L 220,93 L 221,93 L 221,92 L 221,91 L 222,90 L 221,90 L 221,89 L 222,89 L 222,88 L 223,87 L 223,86 L 224,86 L 224,85 L 224,84 L 225,84 L 225,83 L 226,83 L 228,83 L 236,83 L 237,83 L 241,83 L 241,86 L 241,87 L 241,88 L 241,89 L 241,90 L 241,91 L 242,91 L 242,92 L 243,92 L 243,93 L 243,94 L 243,95 L 244,95 L 243,96 L 244,96 L 245,96 L 245,97 L 246,97 L 246,98 L 247,98 L 247,99 L 247,98 L 247,99 L 247,100 L 248,100 L 247,100 L 248,100 L 247,101 L 248,101 L 248,102 L 249,102 L 250,102 L 250,103 L 251,103 L 251,104 L 251,103 L 252,103 L 252,102 L 253,102 L 254,102 L 254,103 L 254,104 L 254,105 L 253,105 L 254,105 L 254,106 L 255,106 L 256,106 L 256,107 L 257,107 L 257,108 L 258,108 L 257,108 L 258,108 L 258,109 L 258,108 L 258,109 L 258,108 L 259,108 L 259,109 L 260,109 L 261,109 L 261,110 L 262,110 L 262,111 L 262,110 L 263,110 L 264,110 L 265,110 L 265,111 L 266,111 L 266,112 L 267,112 L 267,113 L 268,113 L 268,114 L 269,114 L 269,115 L 270,115 L 270,114 L 271,114 L 271,115 L 271,116 L 270,116 L 271,117 L 272,117 L 273,117 L 273,116 L 274,116 L 274,117 L 275,117 L 275,116 L 275,117 L 276,117 L 276,116 L 277,116 L 278,115 L 279,115 L 280,115 L 279,115 L 279,116 L 279,117 L 278,117 L 277,118 L 276,118 L 275,119 L 275,120 L 276,120 L 276,121 L 275,121 L 275,122 L 275,123 L 274,123 L 274,125 L 273,125 L 273,126 L 273,127 L 272,128 L 271,130 L 271,131 L 270,132 L 270,133 L 269,135 L 268,136 L 268,137 L 267,139 L 266,141 L 266,142 L 265,143 L 264,145 L 264,146 L 262,149 L 261,153 L 260,154 L 259,156 L 258,158 L 258,159 L 255,164 L 255,165 L 253,170 L 250,176 L 250,177 L 249,177 L 249,178 L 248,178 L 247,178 L 247,179 L 247,180 L 247,181 L 247,182 L 247,183 L 248,183 L 249,183 L 249,184 L 249,185 L 250,185 L 250,186 L 251,186 L 251,187 L 251,188 L 251,189 L 251,190 L 250,190 L 250,191 L 250,192 L 251,192 L 250,193 L 250,194 L 249,194 L 249,195 L 248,195 L 248,196 L 248,197 L 249,197 L 249,198 L 249,199 L 249,200 L 249,201 L 249,202 L 249,203 L 248,203 L 249,203 L 248,203 L 248,204 L 248,205 L 248,206 L 248,207 L 247,207 L 247,208 L 248,208 L 248,207 L 249,208 L 248,208 L 248,209 L 247,209 L 246,209 L 239,209 L 238,209 L 233,209 L 226,209 L 225,209 L 220,209 L 218,209 L 214,209 L 206,209 L 204,209 L 203,209 L 203,208 L 202,208 L 202,207 L 201,207 L 201,208 L 200,208 L 200,209 L 200,210 L 199,210 L 198,210 L 198,209 L 197,209 L 196,209 L 196,208 L 195,208 L 195,207 L 195,206 L 194,206 L 194,207 L 193,206 L 193,205 L 193,204 L 193,203 L 192,203 L 191,203 L 191,202 L 191,203 L 190,203 L 190,202 L 190,201 L 189,202 L 189,201 L 189,200 L 188,200 L 188,199 L 188,198 L 187,198 L 186,198 L 186,197 L 182,197 L 178,197 L 177,197 L 175,197 L 175,198 L 175,199 L 174,199 L 174,200 L 173,200 L 173,201 L 174,201 L 173,201 L 173,202 L 172,202 L 171,202 L 171,203 L 170,203 L 170,204 L 171,204 L 170,204 L 170,205 L 171,205 L 171,206 L 170,206 L 170,207 L 169,207 L 170,208 L 169,208 L 168,208 L 168,209 L 168,210 L 168,211 L 167,211 L 166,211 L 166,212 L 165,212 L 165,211 L 166,211 L 165,211 L 164,211 L 163,211 L 162,211 L 162,212 L 161,212 L 160,212 L 160,211 L 160,212 L 159,212 L 159,211 L 158,211 L 158,212 L 157,212 L 157,213 L 157,214 L 157,215 L 157,216 L 156,216 L 156,217 L 155,217 L 155,218 L 154,218 L 153,218 L 153,217 L 154,217 L 153,217 L 153,216 L 153,215 L 152,215 L 152,216 L 151,216 L 150,216 L 150,217 L 150,218 L 149,218 L 148,218 L 148,217 L 147,217 L 147,218 L 147,219 L 146,219 L 145,219 L 145,220 L 145,219 L 145,220 L 145,219 L 144,219 L 144,218 L 143,218 L 143,217 L 142,217 L 141,217 L 140,217 L 140,218 L 139,218 L 138,217 L 138,218 L 138,217 L 137,218 L 137,217 L 137,218 L 137,217 L 136,217 L 136,218 L 137,218 L 137,219 L 136,219 L 136,220 L 135,220 L 135,221 L 134,221 L 133,221 L 133,222 L 132,222 L 131,222 L 131,223 L 130,223 L 127,221 L 126,221 L 125,220 L 124,220 L 121,219 L 119,219 L 117,217 L 116,217 L 115,217 L 114,216 L 111,215 L 105,212 L 104,212 L 101,209 L 101,208 L 100,208 L 99,207 L 98,206 L 97,206 L 97,205 L 96,205 L 96,204 L 95,204 L 95,203 L 94,203 L 94,202 L 93,202 L 92,201 L 89,199 L 86,196 L 84,195 L 83,195 L 82,195 L 79,195 L 77,195 L 77,194 L 76,194 L 75,194 L 74,194 L 71,194 L 67,193 L 64,193 L 62,193 L 60,193 L 59,193 L 59,192 L 58,192 L 56,192 L 55,192 L 54,192 L 53,192 L 52,192 L 51,191 L 50,191 L 49,191 L 46,190 L 44,189 L 43,189 L 42,188 L 35,186 L 34,186 L 34,185 L 34,184 L 35,184 L 34,184 L 34,183 L 34,182 L 35,182 L 35,181 L 36,181 L 36,180 L 37,180 L 37,179 L 38,179 L 39,179 L 39,178 L 40,178 L 41,178 L 42,178 L 42,177 L 43,177 L 43,176 L 43,175 L 43,174 L 42,174 L 42,173 L 42,172 L 41,172 L 41,171 L 41,170 L 42,170 L 42,169 L 42,168 L 43,168 L 42,168 L 43,168 L 43,167 L 44,167 L 44,166 L 45,166 L 45,165 L 45,164 L 45,163 L 45,162 L 46,162 L 46,161 L 46,160 L 47,160 L 46,160 L 47,160 L 46,159 L 47,159 L 46,159 L 47,159 L 46,159 L 46,158 L 47,158 L 47,157 L 48,158 L 48,157 L 49,157 L 50,157 L 50,156 L 51,156 L 51,155 L 52,155 L 53,155 L 53,154 L 53,153 L 54,153 L 55,153 L 56,153 L 56,152 L 57,152 L 58,152 L 57,151 L 58,151 L 59,151 L 59,150 L 59,151 L 59,150 L 60,150 L 60,149 L 60,150 L 60,149 L 61,149 L 62,149 L 63,149 L 64,149 L 65,149 L 66,149 L 65,149 L 65,148 L 66,148 L 67,149 L 67,148 L 68,148 L 69,148 L 69,147 L 69,148 L 69,147 L 70,147 L 70,148 L 70,147 L 70,148 L 70,147 L 71,147 L 71,148 L 71,147 L 71,148 L 72,147 L 72,148 L 72,147 L 73,147 L 74,147 L 74,146 L 75,146 L 74,146 L 75,145 L 75,146 L 75,145 L 76,144 L 76,145 L 77,145 L 77,144 L 78,144 L 78,145 L 78,144 L 79,144 L 79,145 L 80,144 L 80,145 L 80,144 L 81,144 L 82,145 L 82,144 L 82,145 L 82,146 L 83,146 L 83,147 L 83,146 L 83,147 L 84,147 L 84,146 L 85,146 L 85,147 L 86,147 L 87,147 L 87,146 L 87,145 L 88,144 L 88,143 L 88,142 L 88,141 L 88,139 L 89,138 L 89,137 L 89,135 L 90,130 L 90,128 L 91,127 L 91,126 L 92,121 L 92,120 L 93,114 L 93,113 L 94,110 L 94,108 L 94,107 L 94,106 L 95,106 L 95,105 L 95,104 L 94,104 L 94,103 L 95,103 L 95,102 L 94,101 L 94,100 L 93,100 L 93,99 L 93,98 L 92,98 L 93,98 L 92,98 L 92,97 L 92,96 L 92,95 L 93,95 L 92,95 L 92,94 L 92,93 L 91,93 L 90,93 L 90,92 L 89,92 L 89,91 L 88,91 L 87,91 L 87,90 L 86,90 L 86,89 L 86,88 L 86,87 L 86,86 L 86,85 L 86,83 L 86,80 L 86,79 L 87,79 L 86,78 L 87,78 L 87,79 L 88,78 L 89,78 L 90,78 L 90,77 L 91,77 L 92,78 L 92,77 L 93,77 L 93,76 L 94,76 L 94,77 L 95,77 L 95,78 L 96,78 L 96,77 L 96,78 L 97,78 L 98,78 L 98,77 L 99,78 L 99,77 L 98,77 L 98,76 L 98,75 L 98,74 L 98,73 L 97,73 L 98,73 L 97,72 L 96,72 L 96,71 L 95,71 L 95,72 L 94,72 L 94,71 L 93,71 L 92,71 L 91,71 L 90,71 L 91,71 L 90,71 L 89,71 L 89,72 L 89,71 L 89,68 L 89,66 L 89,64 L 89,62 L 89,63 L 90,62 L 91,62 L 92,62 L 93,62 L 93,61 L 93,62 L 94,62 L 95,62 L 98,62 L 100,62 L 105,62 L 112,62 L 111,62 L 111,61 L 111,60 L 111,59 L 112,59 L 113,59 L 113,60 L 114,60 L 114,61 L 115,61 L 116,60 L 115,60 L 116,60 L 117,59 L 117,58 L 118,58 L 119,58 L 120,58 L 120,57 L 121,57 L 121,56 L 122,56 L 122,55 L 123,55 L 123,56 L 123,57 L 124,57 L 124,58 "},"rr": {"name": "Roraima","path": "M 223,13 L 223,14 L 224,13 L 224,14 L 224,15 L 225,15 L 225,16 L 226,16 L 225,16 L 226,16 L 225,16 L 225,17 L 226,17 L 226,18 L 225,18 L 225,19 L 225,20 L 225,21 L 225,22 L 224,22 L 225,22 L 224,22 L 225,22 L 224,22 L 224,23 L 223,23 L 223,24 L 224,24 L 224,23 L 224,24 L 225,24 L 226,24 L 227,24 L 227,25 L 228,25 L 228,24 L 228,25 L 228,24 L 228,25 L 228,24 L 228,25 L 229,25 L 230,25 L 230,26 L 230,25 L 230,26 L 230,27 L 229,27 L 230,27 L 229,27 L 229,28 L 230,28 L 230,29 L 231,29 L 231,30 L 230,30 L 231,30 L 231,31 L 231,30 L 231,31 L 231,30 L 231,31 L 232,31 L 232,32 L 231,32 L 231,33 L 231,34 L 231,33 L 231,34 L 230,34 L 230,35 L 229,35 L 229,36 L 228,36 L 228,37 L 227,37 L 228,37 L 227,37 L 228,37 L 228,38 L 228,39 L 228,40 L 228,41 L 227,41 L 227,42 L 227,43 L 226,43 L 226,44 L 226,45 L 226,46 L 226,47 L 226,48 L 226,49 L 226,50 L 226,51 L 227,51 L 226,51 L 227,51 L 226,51 L 227,51 L 227,52 L 227,53 L 227,54 L 228,54 L 228,55 L 229,55 L 229,54 L 229,55 L 229,56 L 229,57 L 229,58 L 229,59 L 229,60 L 229,61 L 230,61 L 230,60 L 230,61 L 230,62 L 230,61 L 230,62 L 231,62 L 231,63 L 231,62 L 232,62 L 232,63 L 233,63 L 233,64 L 234,64 L 233,64 L 233,65 L 234,65 L 235,65 L 235,66 L 236,66 L 235,66 L 236,66 L 236,67 L 237,67 L 237,68 L 238,68 L 239,68 L 240,68 L 241,68 L 241,69 L 241,74 L 241,78 L 241,83 L 237,83 L 236,83 L 233,83 L 228,83 L 226,83 L 225,83 L 225,84 L 224,84 L 224,85 L 224,86 L 223,86 L 223,87 L 222,88 L 222,89 L 221,89 L 221,90 L 222,90 L 221,91 L 221,92 L 221,93 L 220,93 L 220,94 L 220,95 L 221,95 L 221,96 L 221,97 L 220,97 L 219,97 L 219,98 L 218,98 L 219,98 L 218,98 L 218,99 L 218,98 L 218,99 L 218,98 L 217,98 L 217,99 L 217,98 L 217,99 L 217,98 L 217,99 L 216,99 L 216,98 L 216,99 L 215,98 L 215,97 L 214,97 L 215,97 L 215,96 L 214,96 L 214,95 L 213,95 L 213,94 L 212,94 L 211,94 L 211,93 L 210,93 L 209,93 L 209,94 L 209,93 L 209,94 L 208,94 L 207,94 L 207,95 L 206,95 L 206,96 L 205,96 L 205,97 L 204,97 L 204,98 L 204,99 L 203,99 L 204,100 L 204,101 L 204,102 L 204,103 L 203,103 L 203,104 L 203,105 L 204,105 L 203,105 L 203,106 L 204,106 L 204,107 L 205,107 L 205,108 L 204,108 L 204,107 L 203,107 L 203,106 L 202,106 L 201,106 L 200,106 L 199,106 L 199,105 L 198,105 L 198,104 L 198,103 L 198,102 L 197,102 L 196,102 L 196,101 L 195,101 L 195,100 L 194,100 L 194,99 L 193,99 L 193,98 L 192,98 L 193,98 L 192,98 L 191,98 L 191,97 L 191,96 L 192,96 L 192,97 L 192,96 L 193,96 L 194,95 L 193,95 L 193,94 L 194,94 L 193,94 L 194,93 L 194,92 L 195,92 L 195,91 L 194,91 L 194,90 L 194,89 L 194,88 L 193,88 L 193,87 L 193,86 L 192,86 L 192,85 L 192,84 L 191,84 L 191,83 L 191,82 L 191,81 L 192,81 L 191,81 L 191,80 L 190,80 L 190,79 L 190,78 L 191,78 L 190,78 L 190,77 L 190,76 L 191,76 L 191,75 L 191,74 L 191,73 L 192,73 L 191,73 L 191,72 L 191,71 L 190,71 L 190,70 L 190,69 L 189,68 L 189,67 L 189,66 L 188,66 L 188,65 L 187,65 L 187,64 L 187,63 L 188,63 L 188,62 L 188,61 L 188,60 L 188,59 L 187,59 L 186,59 L 186,58 L 185,58 L 184,58 L 183,58 L 182,57 L 182,56 L 181,56 L 180,56 L 179,56 L 178,55 L 178,54 L 178,53 L 178,52 L 177,52 L 177,53 L 176,53 L 175,53 L 174,53 L 173,53 L 172,53 L 171,53 L 171,52 L 170,52 L 169,52 L 169,51 L 170,51 L 170,50 L 170,49 L 170,48 L 170,47 L 169,47 L 169,46 L 169,45 L 168,45 L 168,44 L 167,44 L 167,43 L 167,42 L 167,41 L 167,40 L 167,39 L 166,39 L 167,39 L 167,38 L 167,37 L 167,36 L 166,36 L 166,35 L 165,35 L 165,34 L 164,34 L 163,34 L 163,33 L 162,33 L 162,32 L 161,32 L 161,31 L 160,31 L 160,30 L 160,29 L 159,29 L 159,28 L 158,28 L 158,27 L 159,27 L 160,27 L 161,28 L 161,29 L 162,29 L 163,29 L 164,29 L 165,29 L 166,29 L 167,29 L 168,29 L 168,30 L 169,30 L 169,31 L 169,32 L 170,32 L 170,33 L 170,32 L 171,32 L 172,32 L 172,31 L 172,32 L 172,31 L 172,32 L 173,32 L 174,32 L 173,32 L 174,32 L 175,32 L 174,32 L 174,31 L 174,30 L 174,31 L 175,31 L 175,32 L 176,32 L 176,33 L 177,33 L 178,33 L 178,32 L 178,31 L 179,31 L 180,31 L 181,31 L 181,32 L 181,33 L 182,33 L 182,34 L 182,33 L 182,34 L 183,34 L 183,35 L 183,36 L 184,36 L 185,36 L 185,35 L 186,35 L 186,34 L 186,35 L 186,34 L 187,35 L 188,35 L 188,34 L 187,34 L 188,34 L 188,33 L 187,33 L 187,32 L 187,31 L 187,30 L 188,30 L 189,30 L 190,30 L 190,31 L 190,30 L 190,29 L 191,29 L 191,28 L 191,29 L 191,28 L 192,28 L 193,28 L 193,29 L 193,28 L 193,29 L 194,29 L 195,29 L 195,30 L 195,29 L 195,30 L 196,30 L 196,29 L 197,29 L 198,29 L 198,28 L 198,29 L 199,29 L 200,29 L 199,29 L 199,28 L 200,28 L 200,29 L 200,28 L 201,28 L 201,27 L 202,27 L 201,27 L 202,27 L 203,27 L 204,27 L 204,26 L 205,26 L 204,26 L 204,25 L 205,25 L 206,25 L 205,25 L 206,25 L 207,25 L 207,24 L 208,24 L 207,24 L 207,23 L 208,23 L 209,23 L 209,24 L 210,24 L 210,23 L 210,24 L 211,24 L 211,23 L 211,24 L 212,24 L 212,23 L 213,23 L 213,22 L 212,22 L 213,22 L 212,22 L 213,22 L 213,21 L 214,21 L 214,20 L 215,20 L 216,20 L 215,20 L 216,20 L 216,19 L 217,19 L 216,19 L 216,18 L 217,18 L 217,17 L 217,16 L 217,15 L 216,15 L 216,14 L 215,14 L 216,14 L 217,14 L 218,14 L 219,14 L 220,14 L 221,14 L 222,14 L 222,13 L 223,13 "},"pa": {"name": "Pará","path": "M 296,50 L 296,51 L 296,52 L 297,53 L 297,54 L 298,54 L 298,55 L 298,56 L 298,57 L 298,58 L 298,59 L 299,59 L 298,59 L 299,59 L 298,59 L 298,60 L 299,60 L 299,61 L 299,62 L 300,62 L 301,62 L 302,62 L 303,62 L 304,62 L 305,62 L 305,63 L 306,63 L 306,64 L 306,63 L 307,63 L 307,64 L 308,64 L 307,64 L 307,65 L 308,65 L 308,66 L 308,65 L 309,66 L 309,65 L 309,66 L 310,66 L 311,66 L 311,67 L 312,67 L 311,67 L 312,67 L 313,67 L 313,66 L 313,67 L 314,67 L 314,68 L 315,68 L 316,68 L 315,68 L 315,69 L 316,69 L 315,69 L 315,70 L 316,70 L 316,69 L 317,69 L 317,70 L 317,71 L 317,72 L 317,73 L 317,74 L 318,74 L 319,74 L 319,75 L 320,75 L 320,76 L 321,76 L 321,77 L 321,78 L 321,79 L 321,80 L 321,81 L 320,81 L 321,81 L 321,82 L 321,83 L 322,83 L 321,83 L 322,83 L 322,84 L 322,85 L 323,85 L 323,86 L 323,87 L 324,87 L 324,88 L 324,89 L 324,88 L 325,88 L 325,89 L 326,89 L 326,90 L 327,90 L 327,91 L 327,92 L 327,93 L 327,94 L 328,94 L 328,95 L 329,95 L 329,94 L 330,95 L 330,96 L 330,97 L 330,98 L 329,98 L 330,98 L 331,98 L 331,99 L 331,100 L 331,101 L 332,101 L 332,102 L 333,102 L 334,102 L 335,102 L 335,103 L 336,104 L 336,103 L 337,103 L 337,102 L 337,103 L 338,103 L 338,102 L 338,103 L 339,103 L 340,102 L 341,102 L 341,101 L 341,100 L 341,99 L 341,98 L 341,97 L 342,97 L 342,96 L 342,95 L 343,95 L 343,94 L 344,94 L 344,93 L 345,93 L 345,92 L 346,92 L 346,91 L 346,90 L 347,90 L 347,89 L 347,88 L 348,88 L 349,88 L 350,88 L 350,87 L 351,87 L 351,86 L 352,85 L 353,85 L 354,85 L 354,84 L 355,84 L 356,84 L 356,83 L 357,83 L 357,82 L 357,81 L 358,81 L 358,80 L 358,79 L 358,78 L 359,78 L 359,77 L 360,77 L 361,77 L 362,77 L 363,77 L 363,78 L 364,78 L 364,79 L 364,80 L 364,81 L 364,82 L 365,82 L 366,82 L 367,82 L 368,82 L 368,81 L 369,81 L 369,82 L 370,82 L 370,83 L 371,83 L 371,84 L 371,85 L 372,85 L 372,86 L 372,85 L 373,85 L 373,86 L 375,87 L 376,88 L 377,88 L 378,89 L 379,89 L 380,90 L 380,89 L 381,89 L 381,90 L 381,89 L 382,89 L 382,90 L 383,90 L 384,90 L 385,90 L 386,90 L 387,90 L 387,91 L 387,92 L 386,92 L 386,93 L 389,94 L 390,95 L 392,96 L 393,96 L 392,96 L 393,96 L 393,95 L 394,95 L 394,94 L 395,94 L 394,94 L 394,95 L 395,95 L 394,96 L 395,96 L 395,95 L 395,94 L 395,95 L 396,95 L 396,94 L 396,95 L 396,94 L 397,94 L 397,95 L 397,94 L 397,95 L 398,95 L 398,96 L 397,96 L 398,96 L 397,96 L 398,96 L 398,95 L 398,94 L 398,95 L 399,95 L 400,95 L 401,95 L 400,95 L 400,96 L 400,95 L 401,95 L 401,96 L 401,95 L 402,95 L 403,95 L 402,95 L 403,95 L 404,95 L 404,96 L 403,96 L 404,96 L 404,97 L 404,96 L 404,97 L 404,96 L 405,96 L 404,96 L 405,96 L 405,97 L 405,96 L 405,97 L 406,97 L 405,97 L 406,97 L 406,96 L 406,97 L 406,98 L 406,97 L 406,98 L 406,97 L 406,96 L 407,96 L 407,97 L 407,98 L 408,98 L 408,97 L 408,96 L 409,96 L 409,97 L 409,98 L 409,99 L 409,98 L 410,98 L 410,99 L 410,98 L 411,98 L 411,97 L 411,98 L 411,97 L 411,98 L 412,98 L 412,99 L 411,99 L 411,98 L 411,99 L 412,99 L 411,99 L 412,99 L 411,99 L 411,100 L 411,99 L 411,100 L 412,100 L 412,99 L 413,99 L 412,99 L 413,99 L 412,99 L 413,99 L 413,100 L 413,99 L 414,99 L 414,98 L 414,99 L 414,100 L 413,100 L 414,100 L 414,101 L 415,101 L 414,101 L 415,101 L 415,100 L 414,100 L 415,100 L 415,101 L 415,100 L 416,100 L 415,100 L 416,100 L 416,101 L 415,101 L 416,101 L 416,100 L 417,100 L 416,100 L 417,100 L 416,100 L 417,100 L 417,99 L 417,100 L 417,99 L 418,99 L 417,99 L 417,100 L 417,101 L 417,102 L 416,103 L 417,103 L 417,102 L 417,101 L 418,101 L 418,100 L 418,101 L 418,102 L 417,102 L 418,102 L 418,101 L 418,102 L 418,101 L 419,101 L 419,102 L 419,103 L 418,103 L 418,104 L 419,104 L 419,105 L 419,106 L 418,106 L 418,107 L 418,108 L 418,109 L 418,110 L 417,110 L 416,110 L 416,111 L 416,112 L 416,111 L 417,111 L 417,112 L 417,113 L 417,114 L 417,115 L 417,116 L 416,116 L 416,117 L 415,117 L 415,118 L 415,117 L 414,118 L 415,118 L 414,118 L 414,119 L 414,120 L 414,119 L 415,119 L 415,120 L 414,120 L 414,121 L 414,122 L 413,122 L 414,122 L 413,122 L 413,123 L 412,123 L 412,124 L 411,124 L 412,124 L 411,124 L 411,125 L 412,125 L 411,125 L 412,125 L 412,126 L 411,126 L 412,126 L 411,126 L 411,127 L 411,126 L 411,127 L 411,128 L 411,127 L 411,128 L 411,129 L 411,130 L 410,130 L 411,130 L 410,130 L 410,131 L 409,131 L 409,132 L 409,131 L 409,132 L 409,133 L 408,133 L 407,133 L 407,134 L 407,135 L 407,134 L 407,135 L 407,136 L 406,136 L 406,137 L 406,138 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 405,140 L 404,140 L 405,140 L 405,141 L 404,141 L 404,142 L 403,142 L 403,143 L 403,142 L 403,143 L 402,143 L 402,144 L 402,145 L 401,145 L 401,146 L 400,146 L 400,147 L 399,147 L 399,148 L 399,149 L 398,149 L 398,150 L 397,150 L 397,151 L 397,150 L 396,150 L 395,150 L 395,151 L 392,153 L 391,154 L 390,155 L 388,156 L 387,157 L 386,157 L 386,158 L 385,159 L 384,159 L 382,161 L 383,161 L 384,161 L 384,162 L 385,162 L 386,162 L 387,162 L 387,161 L 387,162 L 388,162 L 388,163 L 389,163 L 389,164 L 390,164 L 391,164 L 391,165 L 390,165 L 390,166 L 389,166 L 388,166 L 388,167 L 388,168 L 389,168 L 389,169 L 388,169 L 388,170 L 388,171 L 389,171 L 388,171 L 388,172 L 387,172 L 386,172 L 386,173 L 387,173 L 387,174 L 387,175 L 386,175 L 385,175 L 385,176 L 384,176 L 384,177 L 383,177 L 384,177 L 383,177 L 383,178 L 383,179 L 382,179 L 382,180 L 381,180 L 380,180 L 380,181 L 379,181 L 378,181 L 377,182 L 376,182 L 376,183 L 376,184 L 376,185 L 376,186 L 376,187 L 376,188 L 375,188 L 375,189 L 374,189 L 374,190 L 373,191 L 373,192 L 374,192 L 374,193 L 375,194 L 376,195 L 377,195 L 376,195 L 376,196 L 376,197 L 376,198 L 376,199 L 376,200 L 376,201 L 375,201 L 375,202 L 375,203 L 374,203 L 374,204 L 373,204 L 373,205 L 373,206 L 372,206 L 372,207 L 372,208 L 371,208 L 371,209 L 370,209 L 369,210 L 368,210 L 368,211 L 367,211 L 367,212 L 367,213 L 366,213 L 366,214 L 365,214 L 365,215 L 364,215 L 364,216 L 364,217 L 363,218 L 363,219 L 363,220 L 363,221 L 362,221 L 362,222 L 362,223 L 360,223 L 358,223 L 355,223 L 353,223 L 350,223 L 347,222 L 337,222 L 332,221 L 328,221 L 323,221 L 321,221 L 315,220 L 314,220 L 310,220 L 309,220 L 308,220 L 305,219 L 300,219 L 289,218 L 288,218 L 287,218 L 284,218 L 279,217 L 272,217 L 271,217 L 270,217 L 270,216 L 270,215 L 269,215 L 268,215 L 267,215 L 267,214 L 266,214 L 267,214 L 266,214 L 266,213 L 267,213 L 266,213 L 266,212 L 265,212 L 265,211 L 264,211 L 264,210 L 263,210 L 262,210 L 261,210 L 261,209 L 262,209 L 261,209 L 261,208 L 260,208 L 259,208 L 259,207 L 259,206 L 258,206 L 258,205 L 258,204 L 258,203 L 258,202 L 258,201 L 258,200 L 257,200 L 257,199 L 256,198 L 256,197 L 256,196 L 255,195 L 255,194 L 255,193 L 254,193 L 254,192 L 254,191 L 253,191 L 253,190 L 253,189 L 252,189 L 251,189 L 251,188 L 251,187 L 251,186 L 250,186 L 250,185 L 249,185 L 249,184 L 249,183 L 248,183 L 247,183 L 247,182 L 247,181 L 247,180 L 247,179 L 247,178 L 248,178 L 249,178 L 249,177 L 250,177 L 250,176 L 253,170 L 255,165 L 255,164 L 257,160 L 258,159 L 259,156 L 260,154 L 261,153 L 264,146 L 264,145 L 266,142 L 266,141 L 267,139 L 268,137 L 268,136 L 269,135 L 270,133 L 270,132 L 271,132 L 271,131 L 271,130 L 272,128 L 273,127 L 273,126 L 273,125 L 274,123 L 275,121 L 276,121 L 276,120 L 275,120 L 275,119 L 276,118 L 277,118 L 278,117 L 279,117 L 279,116 L 279,115 L 280,115 L 279,115 L 278,115 L 277,116 L 276,116 L 276,117 L 275,117 L 275,116 L 275,117 L 274,117 L 274,116 L 273,116 L 273,117 L 272,117 L 271,117 L 270,116 L 271,116 L 271,115 L 271,114 L 270,114 L 270,115 L 269,115 L 269,114 L 268,114 L 268,113 L 267,113 L 267,112 L 266,112 L 266,111 L 265,111 L 265,110 L 264,110 L 263,110 L 262,110 L 262,111 L 262,110 L 261,110 L 261,109 L 260,109 L 259,109 L 259,108 L 258,108 L 258,109 L 258,108 L 258,109 L 258,108 L 257,108 L 258,108 L 257,108 L 257,107 L 256,107 L 256,106 L 255,106 L 254,106 L 254,105 L 253,105 L 254,105 L 254,104 L 254,103 L 254,102 L 253,102 L 252,102 L 252,103 L 251,103 L 251,104 L 251,103 L 250,103 L 250,102 L 249,102 L 248,102 L 248,101 L 247,101 L 248,100 L 247,100 L 248,100 L 247,100 L 247,99 L 247,98 L 247,99 L 247,98 L 246,98 L 246,97 L 245,97 L 245,96 L 244,96 L 243,96 L 244,95 L 243,95 L 243,94 L 243,93 L 243,92 L 242,92 L 242,91 L 241,91 L 241,90 L 241,89 L 241,88 L 241,87 L 241,86 L 241,83 L 241,78 L 241,76 L 241,74 L 241,69 L 241,70 L 242,70 L 243,70 L 243,69 L 243,68 L 244,68 L 244,69 L 244,68 L 244,69 L 245,68 L 245,69 L 245,68 L 246,68 L 246,69 L 247,68 L 246,68 L 247,68 L 247,67 L 246,67 L 246,66 L 247,66 L 248,66 L 248,65 L 249,65 L 249,64 L 249,65 L 250,65 L 251,65 L 252,66 L 252,65 L 253,65 L 254,65 L 253,65 L 254,65 L 254,64 L 253,64 L 253,63 L 254,63 L 254,64 L 255,63 L 256,63 L 256,62 L 257,62 L 257,63 L 257,62 L 258,62 L 258,63 L 259,63 L 260,63 L 260,62 L 260,61 L 261,61 L 261,60 L 262,60 L 262,59 L 263,59 L 264,59 L 263,59 L 264,59 L 265,59 L 265,58 L 266,58 L 266,59 L 267,59 L 267,60 L 268,60 L 269,60 L 270,60 L 270,61 L 270,60 L 271,60 L 272,60 L 272,59 L 273,59 L 273,60 L 274,60 L 274,59 L 275,59 L 275,60 L 276,60 L 276,59 L 277,59 L 277,60 L 278,60 L 279,60 L 279,61 L 280,61 L 281,61 L 282,61 L 282,60 L 283,60 L 282,60 L 282,59 L 282,58 L 283,58 L 282,58 L 283,58 L 282,58 L 282,57 L 282,58 L 282,57 L 281,57 L 282,57 L 281,57 L 281,56 L 280,56 L 281,56 L 281,55 L 280,55 L 279,55 L 280,54 L 280,53 L 280,54 L 281,54 L 281,53 L 281,52 L 281,53 L 281,52 L 282,52 L 281,52 L 281,51 L 282,51 L 283,51 L 283,52 L 284,52 L 285,52 L 284,52 L 284,53 L 285,53 L 286,53 L 287,53 L 287,52 L 287,53 L 288,53 L 288,52 L 289,52 L 290,53 L 290,52 L 291,51 L 292,52 L 292,51 L 293,51 L 294,51 L 295,50 L 296,50 "},"ap": {"name": "Amapá","path": "M 348,31 L 348,32 L 349,32 L 350,32 L 350,33 L 350,34 L 350,35 L 349,35 L 350,35 L 349,35 L 350,35 L 350,36 L 350,37 L 350,38 L 349,38 L 350,39 L 350,40 L 350,41 L 350,42 L 350,43 L 351,43 L 351,44 L 351,45 L 351,46 L 352,46 L 352,47 L 351,47 L 352,47 L 352,48 L 352,49 L 353,49 L 353,50 L 353,51 L 353,52 L 353,51 L 353,52 L 354,52 L 354,53 L 354,54 L 355,54 L 355,55 L 355,56 L 355,57 L 355,56 L 356,56 L 357,56 L 358,56 L 359,56 L 359,57 L 360,57 L 360,58 L 360,59 L 361,59 L 361,60 L 361,61 L 362,61 L 363,61 L 363,62 L 364,62 L 365,62 L 365,63 L 366,63 L 366,64 L 366,65 L 366,66 L 366,67 L 366,68 L 366,69 L 366,70 L 366,71 L 365,71 L 365,72 L 365,73 L 365,74 L 364,74 L 364,75 L 363,75 L 363,76 L 363,77 L 362,77 L 361,77 L 360,77 L 359,77 L 359,78 L 358,78 L 358,79 L 358,80 L 358,81 L 357,81 L 357,82 L 357,83 L 356,83 L 356,84 L 355,84 L 354,84 L 354,85 L 353,85 L 352,85 L 351,86 L 351,87 L 350,87 L 350,88 L 349,88 L 348,88 L 347,88 L 347,89 L 347,90 L 346,90 L 346,91 L 346,92 L 345,92 L 345,93 L 344,93 L 344,94 L 343,94 L 343,95 L 342,95 L 342,96 L 342,97 L 341,97 L 341,98 L 341,99 L 341,100 L 341,101 L 341,102 L 340,102 L 339,103 L 338,103 L 338,102 L 338,103 L 337,103 L 337,102 L 337,103 L 336,103 L 336,104 L 335,103 L 335,102 L 334,102 L 333,102 L 332,102 L 332,101 L 331,101 L 331,100 L 331,99 L 331,98 L 330,98 L 329,98 L 330,98 L 330,97 L 330,96 L 330,95 L 329,94 L 329,95 L 328,95 L 328,94 L 327,94 L 327,93 L 327,92 L 327,91 L 327,90 L 326,90 L 326,89 L 325,89 L 325,88 L 324,88 L 324,89 L 324,88 L 324,87 L 323,87 L 323,86 L 323,85 L 322,85 L 322,84 L 322,83 L 321,83 L 322,83 L 321,83 L 321,82 L 321,81 L 320,81 L 321,81 L 321,80 L 321,79 L 321,78 L 321,77 L 321,76 L 320,76 L 320,75 L 319,75 L 319,74 L 318,74 L 317,74 L 317,73 L 317,72 L 317,71 L 317,70 L 317,69 L 316,69 L 316,70 L 315,70 L 315,69 L 316,69 L 315,69 L 315,68 L 316,68 L 315,68 L 314,68 L 314,67 L 313,67 L 313,66 L 313,67 L 312,67 L 311,67 L 312,67 L 311,67 L 311,66 L 310,66 L 309,66 L 309,65 L 309,66 L 308,65 L 308,66 L 308,65 L 307,65 L 307,64 L 308,64 L 307,64 L 307,63 L 306,63 L 306,64 L 306,63 L 305,63 L 305,62 L 304,62 L 303,62 L 302,62 L 301,62 L 300,62 L 299,62 L 299,61 L 299,60 L 298,60 L 298,59 L 299,59 L 298,59 L 299,59 L 298,59 L 298,58 L 298,57 L 298,56 L 298,55 L 298,54 L 297,54 L 297,53 L 298,52 L 299,52 L 299,53 L 299,54 L 300,54 L 301,54 L 303,56 L 306,56 L 309,55 L 310,55 L 310,54 L 310,55 L 311,55 L 311,54 L 312,54 L 311,54 L 312,54 L 312,53 L 313,53 L 312,54 L 313,54 L 312,54 L 313,54 L 314,54 L 314,55 L 315,55 L 316,55 L 317,55 L 316,55 L 317,55 L 317,54 L 318,54 L 319,54 L 319,55 L 320,55 L 319,55 L 319,56 L 320,56 L 321,56 L 322,56 L 323,56 L 324,56 L 325,56 L 324,55 L 325,55 L 324,55 L 325,55 L 326,54 L 327,54 L 327,53 L 328,53 L 328,52 L 329,52 L 329,51 L 329,50 L 329,49 L 330,49 L 330,48 L 330,47 L 331,47 L 331,46 L 332,46 L 331,46 L 331,45 L 332,45 L 332,44 L 332,43 L 332,42 L 333,42 L 333,41 L 334,41 L 334,40 L 335,40 L 335,39 L 335,38 L 336,38 L 335,38 L 336,38 L 335,38 L 336,38 L 336,37 L 336,36 L 337,36 L 337,35 L 337,34 L 337,35 L 338,35 L 338,34 L 338,33 L 339,33 L 339,32 L 340,32 L 340,31 L 341,31 L 341,30 L 342,30 L 342,29 L 342,28 L 343,27 L 343,26 L 343,25 L 344,25 L 345,25 L 345,26 L 346,26 L 346,27 L 347,27 L 347,28 L 348,29 L 348,30 L 348,31 "},"to": {"name": "Tocantins","path": "M 387,158 L 388,158 L 388,159 L 389,159 L 390,159 L 390,160 L 391,160 L 392,160 L 392,159 L 393,159 L 394,159 L 394,160 L 394,161 L 395,161 L 396,161 L 396,162 L 397,162 L 398,162 L 398,163 L 398,162 L 399,162 L 399,163 L 400,163 L 400,164 L 400,165 L 400,166 L 400,167 L 400,168 L 400,169 L 400,170 L 400,171 L 400,172 L 401,172 L 401,173 L 401,174 L 401,175 L 400,176 L 401,176 L 401,177 L 400,177 L 400,178 L 400,179 L 399,179 L 400,179 L 399,180 L 400,180 L 399,181 L 399,182 L 399,183 L 399,184 L 398,184 L 398,185 L 398,186 L 397,186 L 396,186 L 396,187 L 397,187 L 397,188 L 398,188 L 398,187 L 399,187 L 399,188 L 400,188 L 400,189 L 399,189 L 398,190 L 399,190 L 400,191 L 400,192 L 401,192 L 401,193 L 402,193 L 401,193 L 401,192 L 402,192 L 402,193 L 402,194 L 402,193 L 402,194 L 403,194 L 403,195 L 404,195 L 403,195 L 404,195 L 404,196 L 404,197 L 405,197 L 405,198 L 406,198 L 406,199 L 406,198 L 406,199 L 406,198 L 406,199 L 406,198 L 407,198 L 407,197 L 408,197 L 408,198 L 408,197 L 409,197 L 410,197 L 410,196 L 410,197 L 410,196 L 411,196 L 411,197 L 411,196 L 411,197 L 411,196 L 412,196 L 412,197 L 413,197 L 414,198 L 414,199 L 413,199 L 414,199 L 413,199 L 413,200 L 414,200 L 414,201 L 413,201 L 413,202 L 412,202 L 411,202 L 411,203 L 410,203 L 409,203 L 409,204 L 408,204 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 408,206 L 408,207 L 408,208 L 407,208 L 408,208 L 408,209 L 408,210 L 407,210 L 406,210 L 407,210 L 407,211 L 406,211 L 406,212 L 405,212 L 406,212 L 405,212 L 406,213 L 407,213 L 407,212 L 407,213 L 408,213 L 407,213 L 408,213 L 408,214 L 409,214 L 408,214 L 409,214 L 409,215 L 409,216 L 409,217 L 410,217 L 411,217 L 411,218 L 412,218 L 413,218 L 412,219 L 413,219 L 413,220 L 412,220 L 412,221 L 411,221 L 411,222 L 412,222 L 412,223 L 413,223 L 414,223 L 414,224 L 413,224 L 414,224 L 414,225 L 414,226 L 414,227 L 415,227 L 415,228 L 416,228 L 417,228 L 418,228 L 419,228 L 420,228 L 420,229 L 421,229 L 422,229 L 423,229 L 424,229 L 424,228 L 424,229 L 425,229 L 424,229 L 424,230 L 423,230 L 423,231 L 423,232 L 422,232 L 422,233 L 421,233 L 420,233 L 420,234 L 419,234 L 418,234 L 418,235 L 417,235 L 418,235 L 418,236 L 417,236 L 417,237 L 416,237 L 416,238 L 416,239 L 415,239 L 415,240 L 414,240 L 414,241 L 414,242 L 413,242 L 413,243 L 412,243 L 412,244 L 412,245 L 413,245 L 413,246 L 414,246 L 414,247 L 415,247 L 416,247 L 417,247 L 417,248 L 418,248 L 419,248 L 418,248 L 418,249 L 418,248 L 418,249 L 418,248 L 418,249 L 417,248 L 416,248 L 416,249 L 416,250 L 415,250 L 416,250 L 416,251 L 415,251 L 415,252 L 416,252 L 417,252 L 418,252 L 417,252 L 417,253 L 416,253 L 415,253 L 415,254 L 415,255 L 415,256 L 415,257 L 416,257 L 416,258 L 415,258 L 416,258 L 416,259 L 417,259 L 417,260 L 418,260 L 418,261 L 417,261 L 416,261 L 416,262 L 417,262 L 416,262 L 417,262 L 417,263 L 416,263 L 417,263 L 417,264 L 416,264 L 416,265 L 417,265 L 416,265 L 416,266 L 416,267 L 416,266 L 417,266 L 418,266 L 419,266 L 418,266 L 418,267 L 417,267 L 416,267 L 415,267 L 415,266 L 415,265 L 414,265 L 414,266 L 414,267 L 411,267 L 410,267 L 409,267 L 409,268 L 408,268 L 407,268 L 407,269 L 406,269 L 405,269 L 405,270 L 404,270 L 405,270 L 404,270 L 403,270 L 403,271 L 402,271 L 401,271 L 401,270 L 401,271 L 400,271 L 400,270 L 399,270 L 399,269 L 398,269 L 399,269 L 398,269 L 397,269 L 397,270 L 397,271 L 397,272 L 398,272 L 398,273 L 397,273 L 397,274 L 395,272 L 394,272 L 394,271 L 393,271 L 393,272 L 393,271 L 393,272 L 393,271 L 392,271 L 391,271 L 390,271 L 390,272 L 390,271 L 390,272 L 390,271 L 390,272 L 390,271 L 390,270 L 390,269 L 390,270 L 389,270 L 388,270 L 388,271 L 388,270 L 388,271 L 387,271 L 386,271 L 386,270 L 386,269 L 385,269 L 385,270 L 385,271 L 385,272 L 384,272 L 384,271 L 384,270 L 384,269 L 384,268 L 384,269 L 384,268 L 384,267 L 383,267 L 382,267 L 382,266 L 381,266 L 381,265 L 380,265 L 379,267 L 379,266 L 378,266 L 377,266 L 377,265 L 378,265 L 377,265 L 377,264 L 377,265 L 376,265 L 376,266 L 375,266 L 375,267 L 374,267 L 374,268 L 374,269 L 374,270 L 374,271 L 373,271 L 372,270 L 371,270 L 367,268 L 367,267 L 366,267 L 365,267 L 365,266 L 364,266 L 363,266 L 362,266 L 362,265 L 362,266 L 362,265 L 361,265 L 360,265 L 360,264 L 361,264 L 360,264 L 361,264 L 361,263 L 360,263 L 361,263 L 360,263 L 361,263 L 361,262 L 361,261 L 362,261 L 361,261 L 362,261 L 362,260 L 362,259 L 363,259 L 362,259 L 362,260 L 361,260 L 360,260 L 360,261 L 360,260 L 360,261 L 359,261 L 359,262 L 359,263 L 358,263 L 358,264 L 358,265 L 357,265 L 356,265 L 357,265 L 357,264 L 356,264 L 356,265 L 356,264 L 356,263 L 356,262 L 355,262 L 355,261 L 355,260 L 356,260 L 356,259 L 356,258 L 356,257 L 356,256 L 355,256 L 355,255 L 355,254 L 355,253 L 356,253 L 355,252 L 356,252 L 355,251 L 355,250 L 355,249 L 355,248 L 356,248 L 355,248 L 355,247 L 354,247 L 354,246 L 354,245 L 355,245 L 355,244 L 355,243 L 356,243 L 356,242 L 355,242 L 355,241 L 356,241 L 356,240 L 356,239 L 356,238 L 356,237 L 356,236 L 357,236 L 357,235 L 356,235 L 357,235 L 356,235 L 357,234 L 357,233 L 358,232 L 358,231 L 359,231 L 359,230 L 359,229 L 359,228 L 359,227 L 360,227 L 360,226 L 361,226 L 361,225 L 361,224 L 362,223 L 361,223 L 362,223 L 362,222 L 362,221 L 363,221 L 363,220 L 363,219 L 363,218 L 364,217 L 364,216 L 364,215 L 365,215 L 365,214 L 366,214 L 366,213 L 367,213 L 367,212 L 367,211 L 368,211 L 368,210 L 369,210 L 370,209 L 371,209 L 371,208 L 372,208 L 372,207 L 372,206 L 373,206 L 373,205 L 373,204 L 374,204 L 374,203 L 375,203 L 375,202 L 375,201 L 376,201 L 376,200 L 376,199 L 376,198 L 376,197 L 376,196 L 376,195 L 377,195 L 376,195 L 375,194 L 374,193 L 374,192 L 373,192 L 373,191 L 374,190 L 374,189 L 375,189 L 375,188 L 376,188 L 376,187 L 376,186 L 376,185 L 376,184 L 376,183 L 376,182 L 377,182 L 378,181 L 379,181 L 380,181 L 380,180 L 381,180 L 382,180 L 382,179 L 383,179 L 383,178 L 383,177 L 384,177 L 383,177 L 384,177 L 384,176 L 385,176 L 385,175 L 386,175 L 387,175 L 387,174 L 387,173 L 386,173 L 386,172 L 387,172 L 388,172 L 388,171 L 389,171 L 388,171 L 388,170 L 388,169 L 389,169 L 389,168 L 388,168 L 388,167 L 388,166 L 389,166 L 390,166 L 390,165 L 391,165 L 391,164 L 390,164 L 389,164 L 389,163 L 388,163 L 388,162 L 387,162 L 387,161 L 387,162 L 386,162 L 385,162 L 384,162 L 384,161 L 383,161 L 382,161 L 383,161 L 383,160 L 384,160 L 384,161 L 384,160 L 385,160 L 385,159 L 386,159 L 386,158 L 387,158 "},"ma": {"name": "Maranhão","path": "M 423,101 L 422,101 L 423,101 L 423,102 L 422,102 L 422,103 L 421,103 L 422,103 L 421,103 L 422,103 L 422,102 L 422,103 L 422,104 L 422,103 L 422,104 L 422,103 L 422,104 L 423,104 L 423,103 L 423,104 L 423,103 L 423,104 L 423,105 L 423,104 L 423,103 L 424,103 L 424,102 L 425,102 L 425,103 L 425,102 L 425,103 L 424,103 L 424,104 L 425,104 L 424,104 L 424,105 L 425,105 L 424,105 L 424,106 L 424,105 L 424,106 L 424,105 L 424,106 L 425,106 L 424,106 L 425,106 L 425,105 L 425,106 L 425,105 L 426,105 L 426,104 L 426,105 L 426,104 L 426,105 L 426,104 L 427,104 L 426,104 L 427,105 L 426,105 L 427,105 L 426,105 L 427,105 L 426,105 L 426,106 L 426,105 L 427,105 L 426,105 L 427,105 L 427,104 L 427,105 L 427,106 L 427,105 L 427,106 L 428,106 L 428,105 L 428,104 L 429,104 L 429,105 L 428,105 L 428,106 L 427,106 L 428,106 L 428,107 L 427,107 L 428,107 L 428,108 L 427,108 L 428,108 L 428,107 L 428,106 L 428,107 L 429,107 L 428,107 L 428,106 L 429,106 L 429,107 L 429,106 L 429,105 L 430,105 L 429,105 L 430,105 L 430,106 L 430,105 L 430,106 L 430,107 L 429,107 L 429,108 L 429,107 L 429,108 L 429,107 L 430,107 L 430,108 L 430,107 L 430,108 L 429,108 L 430,109 L 429,109 L 430,109 L 429,109 L 429,110 L 429,111 L 429,110 L 430,110 L 430,109 L 431,109 L 431,108 L 431,107 L 432,107 L 432,108 L 432,107 L 432,108 L 432,107 L 432,108 L 433,108 L 432,108 L 433,107 L 432,107 L 433,107 L 433,106 L 433,107 L 433,106 L 433,107 L 433,108 L 433,107 L 434,107 L 435,107 L 435,108 L 435,107 L 436,107 L 435,107 L 436,107 L 436,106 L 436,107 L 436,106 L 436,107 L 436,106 L 437,106 L 437,107 L 436,107 L 435,107 L 436,107 L 436,108 L 435,108 L 436,108 L 436,109 L 437,109 L 437,108 L 437,109 L 437,108 L 438,108 L 438,109 L 437,109 L 438,109 L 437,109 L 438,109 L 438,108 L 438,109 L 439,109 L 439,108 L 439,109 L 439,110 L 439,109 L 438,109 L 438,110 L 437,110 L 438,110 L 438,111 L 437,111 L 438,111 L 438,110 L 437,110 L 438,110 L 438,111 L 437,111 L 437,112 L 437,111 L 437,112 L 437,111 L 437,112 L 436,112 L 437,112 L 437,111 L 438,111 L 438,112 L 438,111 L 439,111 L 438,111 L 438,112 L 439,112 L 439,111 L 439,112 L 439,111 L 439,110 L 440,111 L 439,111 L 439,112 L 440,112 L 439,112 L 440,112 L 441,112 L 440,112 L 440,113 L 441,113 L 441,114 L 441,113 L 441,114 L 441,115 L 442,115 L 442,114 L 442,115 L 441,115 L 441,116 L 442,116 L 442,117 L 443,117 L 442,117 L 443,117 L 443,118 L 443,119 L 443,120 L 442,120 L 443,121 L 444,121 L 445,121 L 446,121 L 446,120 L 447,120 L 448,120 L 448,121 L 448,120 L 447,120 L 447,121 L 447,120 L 447,121 L 446,121 L 447,121 L 448,121 L 449,121 L 448,122 L 449,122 L 449,121 L 450,121 L 450,120 L 450,119 L 451,119 L 452,119 L 451,119 L 452,119 L 452,118 L 453,118 L 453,117 L 454,117 L 454,118 L 455,119 L 456,119 L 457,119 L 458,119 L 459,119 L 460,120 L 461,120 L 462,120 L 462,121 L 463,121 L 464,121 L 464,122 L 465,122 L 466,122 L 465,122 L 466,122 L 466,123 L 466,122 L 467,122 L 467,123 L 468,123 L 468,124 L 469,124 L 470,124 L 471,124 L 472,124 L 473,124 L 474,124 L 475,124 L 475,125 L 476,125 L 476,124 L 477,124 L 478,124 L 479,125 L 478,125 L 478,126 L 478,127 L 479,127 L 479,128 L 478,128 L 478,129 L 477,129 L 477,130 L 477,131 L 476,131 L 476,132 L 475,132 L 474,132 L 475,132 L 474,132 L 474,133 L 474,134 L 473,134 L 472,134 L 471,134 L 470,134 L 470,135 L 470,134 L 470,135 L 469,135 L 469,134 L 469,135 L 468,135 L 468,136 L 467,136 L 467,137 L 467,138 L 466,138 L 467,138 L 467,139 L 466,139 L 467,139 L 466,139 L 466,140 L 466,141 L 465,141 L 465,142 L 464,142 L 464,143 L 464,144 L 463,144 L 464,144 L 463,144 L 463,145 L 462,145 L 462,146 L 462,147 L 463,147 L 463,148 L 464,148 L 464,149 L 464,150 L 464,151 L 463,151 L 463,152 L 463,153 L 463,154 L 464,154 L 463,154 L 464,154 L 464,155 L 464,156 L 464,157 L 465,157 L 465,158 L 465,159 L 464,159 L 465,160 L 465,161 L 464,161 L 463,161 L 463,162 L 462,162 L 462,163 L 462,164 L 461,164 L 461,165 L 461,166 L 461,167 L 461,168 L 461,169 L 461,170 L 461,171 L 462,171 L 462,172 L 463,172 L 463,173 L 464,173 L 464,174 L 464,175 L 464,174 L 464,175 L 464,176 L 464,177 L 464,178 L 463,178 L 463,179 L 463,180 L 462,180 L 461,180 L 461,181 L 460,181 L 459,181 L 459,180 L 459,181 L 458,181 L 457,181 L 456,181 L 456,182 L 455,182 L 455,181 L 454,181 L 454,180 L 453,180 L 452,180 L 451,180 L 450,180 L 449,180 L 449,181 L 449,180 L 448,180 L 448,181 L 447,181 L 447,182 L 446,181 L 446,182 L 446,183 L 445,183 L 445,184 L 444,184 L 444,185 L 443,185 L 443,186 L 442,186 L 441,186 L 441,187 L 440,187 L 440,188 L 439,188 L 439,189 L 438,189 L 437,189 L 436,189 L 436,190 L 435,190 L 435,191 L 435,190 L 434,190 L 434,191 L 433,191 L 432,191 L 431,191 L 431,192 L 431,191 L 431,192 L 430,192 L 429,192 L 429,193 L 428,193 L 428,194 L 427,194 L 428,194 L 427,194 L 427,195 L 427,196 L 427,197 L 426,197 L 427,197 L 426,197 L 426,198 L 427,198 L 426,198 L 426,199 L 426,200 L 426,201 L 425,201 L 425,202 L 425,203 L 424,203 L 424,204 L 424,205 L 424,206 L 423,206 L 424,206 L 423,206 L 423,207 L 423,208 L 422,208 L 421,208 L 421,209 L 421,210 L 420,210 L 421,210 L 420,210 L 420,211 L 421,211 L 421,212 L 421,213 L 421,214 L 422,214 L 422,215 L 422,216 L 422,217 L 423,217 L 423,218 L 423,219 L 422,220 L 423,220 L 423,221 L 423,222 L 423,223 L 422,223 L 422,224 L 422,225 L 422,226 L 422,227 L 422,228 L 421,228 L 421,229 L 420,229 L 420,228 L 419,228 L 418,228 L 417,228 L 416,228 L 415,228 L 415,227 L 414,227 L 414,226 L 414,225 L 414,224 L 413,224 L 414,224 L 414,223 L 413,223 L 412,223 L 412,222 L 411,222 L 411,221 L 412,221 L 412,220 L 413,220 L 413,219 L 412,219 L 413,218 L 412,218 L 411,218 L 411,217 L 410,217 L 409,217 L 409,216 L 409,215 L 409,214 L 408,214 L 409,214 L 408,214 L 408,213 L 407,213 L 408,213 L 407,213 L 407,212 L 407,213 L 406,213 L 405,212 L 406,212 L 405,212 L 406,212 L 406,211 L 407,211 L 407,210 L 406,210 L 407,210 L 408,210 L 408,209 L 408,208 L 407,208 L 408,208 L 408,207 L 408,206 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 408,204 L 409,204 L 409,203 L 410,203 L 411,203 L 411,202 L 412,202 L 413,202 L 413,201 L 414,201 L 414,200 L 413,200 L 413,199 L 414,199 L 413,199 L 414,199 L 414,198 L 413,197 L 412,197 L 412,196 L 411,196 L 411,197 L 411,196 L 411,197 L 411,196 L 410,196 L 410,197 L 410,196 L 410,197 L 409,197 L 408,197 L 408,198 L 408,197 L 407,197 L 407,198 L 406,198 L 406,199 L 406,198 L 406,199 L 406,198 L 406,199 L 406,198 L 405,198 L 405,197 L 404,197 L 404,196 L 404,195 L 403,195 L 404,195 L 403,195 L 403,194 L 402,194 L 402,193 L 402,194 L 402,193 L 402,192 L 401,192 L 401,193 L 402,193 L 401,193 L 401,192 L 400,192 L 400,191 L 399,190 L 398,190 L 399,189 L 400,189 L 400,188 L 399,188 L 399,187 L 398,187 L 398,188 L 397,188 L 397,187 L 396,187 L 396,186 L 397,186 L 398,186 L 398,185 L 398,184 L 399,184 L 399,183 L 399,182 L 399,181 L 400,180 L 399,180 L 400,179 L 399,179 L 400,179 L 400,178 L 400,177 L 401,177 L 401,176 L 400,176 L 401,175 L 401,174 L 401,173 L 401,172 L 400,172 L 400,171 L 400,170 L 400,169 L 400,168 L 400,167 L 400,166 L 400,165 L 400,164 L 400,163 L 399,163 L 399,162 L 398,162 L 398,163 L 398,162 L 397,162 L 396,162 L 396,161 L 395,161 L 394,161 L 394,160 L 394,159 L 393,159 L 392,159 L 392,160 L 391,160 L 390,160 L 390,159 L 389,159 L 388,159 L 388,158 L 387,158 L 386,158 L 386,159 L 385,159 L 385,160 L 384,160 L 384,161 L 384,160 L 383,160 L 383,161 L 382,161 L 384,159 L 385,159 L 386,158 L 386,157 L 387,157 L 388,156 L 390,155 L 391,154 L 392,153 L 394,152 L 395,151 L 395,150 L 396,150 L 397,150 L 397,151 L 397,150 L 398,150 L 398,149 L 399,149 L 399,148 L 399,147 L 400,147 L 400,146 L 401,146 L 401,145 L 402,145 L 402,144 L 402,143 L 403,143 L 403,142 L 403,143 L 403,142 L 404,142 L 404,141 L 405,141 L 405,140 L 404,140 L 405,140 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 406,138 L 406,137 L 406,136 L 407,136 L 407,135 L 407,134 L 407,135 L 407,134 L 407,133 L 408,133 L 409,133 L 409,132 L 409,131 L 409,132 L 409,131 L 410,131 L 410,130 L 411,130 L 410,130 L 411,130 L 411,129 L 411,128 L 411,127 L 411,128 L 411,127 L 411,126 L 411,127 L 411,126 L 412,126 L 411,126 L 412,126 L 412,125 L 411,125 L 412,125 L 411,125 L 411,124 L 412,124 L 411,124 L 412,124 L 412,123 L 413,123 L 413,122 L 414,122 L 413,122 L 414,122 L 414,121 L 414,120 L 415,120 L 415,119 L 414,119 L 414,120 L 414,119 L 414,118 L 415,118 L 414,118 L 415,117 L 415,118 L 415,117 L 416,117 L 416,116 L 417,116 L 417,115 L 417,114 L 417,113 L 417,112 L 417,111 L 416,111 L 416,112 L 416,111 L 416,110 L 417,110 L 418,110 L 418,109 L 418,108 L 418,107 L 418,106 L 419,106 L 419,105 L 419,104 L 418,104 L 418,103 L 419,103 L 419,102 L 419,103 L 419,102 L 420,102 L 420,103 L 420,102 L 420,101 L 420,102 L 420,101 L 420,102 L 420,101 L 421,101 L 421,102 L 421,101 L 421,102 L 420,102 L 421,102 L 420,102 L 421,102 L 420,102 L 420,103 L 420,102 L 421,103 L 421,102 L 421,103 L 421,104 L 421,103 L 421,102 L 422,102 L 422,101 L 423,101 "},"pi": {"name": "Piauí","path": "M 479,125 L 480,125 L 480,126 L 481,126 L 481,127 L 482,127 L 483,127 L 484,127 L 485,127 L 485,128 L 486,128 L 486,129 L 486,130 L 485,130 L 485,131 L 485,132 L 484,132 L 484,133 L 484,134 L 485,134 L 485,135 L 486,135 L 485,135 L 485,136 L 485,137 L 485,138 L 486,138 L 487,138 L 486,138 L 486,139 L 486,140 L 486,141 L 487,141 L 487,142 L 486,142 L 487,142 L 486,142 L 486,143 L 487,142 L 487,143 L 488,143 L 488,142 L 488,143 L 488,144 L 489,144 L 488,145 L 488,146 L 488,147 L 488,148 L 487,148 L 487,149 L 487,150 L 486,150 L 487,150 L 487,151 L 487,152 L 486,152 L 486,153 L 487,153 L 486,153 L 486,154 L 487,154 L 486,154 L 487,154 L 487,155 L 488,155 L 488,156 L 488,157 L 489,157 L 490,157 L 490,158 L 491,158 L 491,159 L 491,160 L 491,161 L 491,162 L 491,163 L 491,164 L 491,165 L 491,166 L 491,167 L 491,168 L 491,169 L 492,169 L 492,170 L 491,170 L 491,171 L 492,171 L 492,172 L 492,173 L 492,174 L 493,174 L 493,175 L 493,176 L 493,177 L 493,178 L 494,178 L 494,179 L 495,179 L 495,180 L 496,180 L 497,180 L 497,181 L 498,181 L 499,181 L 498,181 L 498,182 L 498,183 L 498,184 L 498,185 L 497,185 L 497,186 L 497,187 L 497,188 L 496,188 L 496,189 L 495,190 L 494,190 L 494,191 L 494,192 L 495,192 L 495,193 L 495,194 L 494,194 L 495,195 L 496,195 L 496,196 L 496,197 L 496,198 L 495,199 L 496,199 L 496,200 L 495,200 L 494,200 L 494,201 L 493,201 L 493,202 L 492,202 L 492,203 L 491,203 L 491,204 L 490,204 L 490,203 L 490,204 L 489,204 L 489,205 L 488,205 L 488,206 L 487,206 L 487,207 L 486,207 L 485,207 L 485,208 L 484,208 L 484,209 L 483,209 L 483,210 L 482,211 L 481,211 L 481,212 L 480,212 L 480,213 L 479,213 L 479,214 L 478,214 L 478,215 L 477,215 L 476,215 L 475,215 L 475,216 L 474,216 L 473,216 L 472,216 L 471,216 L 471,217 L 470,217 L 470,218 L 469,218 L 469,219 L 468,219 L 467,219 L 466,219 L 466,220 L 465,220 L 464,220 L 464,219 L 463,219 L 463,218 L 463,217 L 462,217 L 461,217 L 460,217 L 459,217 L 458,217 L 458,218 L 458,217 L 457,217 L 457,216 L 456,216 L 456,215 L 455,215 L 455,216 L 454,216 L 453,217 L 452,217 L 452,218 L 451,218 L 451,219 L 450,219 L 450,220 L 450,221 L 451,221 L 451,222 L 452,223 L 453,223 L 453,224 L 452,224 L 452,225 L 453,225 L 453,226 L 452,226 L 452,227 L 451,227 L 451,228 L 451,229 L 450,229 L 450,230 L 450,231 L 449,231 L 449,232 L 448,232 L 448,231 L 448,232 L 447,233 L 447,234 L 446,234 L 445,234 L 444,234 L 444,233 L 443,233 L 443,234 L 442,234 L 441,234 L 441,235 L 441,234 L 440,234 L 440,235 L 439,235 L 439,236 L 438,236 L 438,237 L 437,237 L 437,238 L 436,238 L 435,238 L 434,238 L 434,237 L 433,237 L 432,237 L 431,237 L 431,236 L 430,236 L 429,236 L 429,235 L 428,235 L 428,234 L 428,233 L 428,232 L 429,232 L 428,232 L 428,231 L 428,230 L 427,230 L 427,229 L 426,229 L 426,228 L 426,227 L 425,227 L 425,228 L 424,228 L 424,229 L 423,229 L 422,229 L 421,229 L 421,228 L 422,228 L 422,227 L 422,226 L 422,225 L 422,224 L 422,223 L 423,223 L 423,222 L 423,221 L 423,220 L 422,220 L 423,219 L 423,218 L 423,217 L 422,217 L 422,216 L 422,215 L 422,214 L 421,214 L 421,213 L 421,212 L 421,211 L 420,211 L 420,210 L 421,210 L 420,210 L 421,210 L 421,209 L 421,208 L 422,208 L 423,208 L 423,207 L 423,206 L 424,206 L 423,206 L 424,206 L 424,205 L 424,204 L 424,203 L 425,203 L 425,202 L 425,201 L 426,201 L 426,200 L 426,199 L 426,198 L 427,198 L 426,198 L 426,197 L 427,197 L 426,197 L 427,197 L 427,196 L 427,195 L 427,194 L 428,194 L 427,194 L 428,194 L 428,193 L 429,193 L 429,192 L 430,192 L 431,192 L 431,191 L 431,192 L 431,191 L 432,191 L 433,191 L 434,191 L 434,190 L 435,190 L 435,191 L 435,190 L 436,190 L 436,189 L 437,189 L 438,189 L 439,189 L 439,188 L 440,188 L 440,187 L 441,187 L 441,186 L 442,186 L 443,186 L 443,185 L 444,185 L 444,184 L 445,184 L 445,183 L 446,183 L 446,182 L 446,181 L 447,182 L 447,181 L 448,181 L 448,180 L 449,180 L 449,181 L 449,180 L 450,180 L 451,180 L 452,180 L 453,180 L 454,180 L 454,181 L 455,181 L 455,182 L 456,182 L 456,181 L 457,181 L 458,181 L 459,181 L 459,180 L 459,181 L 460,181 L 461,181 L 461,180 L 462,180 L 463,180 L 463,179 L 463,178 L 464,178 L 464,177 L 464,176 L 464,175 L 464,174 L 464,175 L 464,174 L 464,173 L 463,173 L 463,172 L 462,172 L 462,171 L 461,171 L 461,170 L 461,169 L 461,168 L 461,167 L 461,166 L 461,165 L 461,164 L 462,164 L 462,163 L 462,162 L 463,162 L 463,161 L 464,161 L 465,161 L 465,160 L 464,159 L 465,159 L 465,158 L 465,157 L 464,157 L 464,156 L 464,155 L 464,154 L 463,154 L 464,154 L 463,154 L 463,153 L 463,152 L 463,151 L 464,151 L 464,150 L 464,149 L 464,148 L 463,148 L 463,147 L 462,147 L 462,146 L 462,145 L 463,145 L 463,144 L 464,144 L 463,144 L 464,144 L 464,143 L 464,142 L 465,142 L 465,141 L 466,141 L 466,140 L 466,139 L 467,139 L 466,139 L 467,139 L 467,138 L 466,138 L 467,138 L 467,137 L 467,136 L 468,136 L 468,135 L 469,135 L 469,134 L 469,135 L 470,135 L 470,134 L 470,135 L 470,134 L 471,134 L 472,134 L 473,134 L 474,134 L 474,133 L 474,132 L 475,132 L 474,132 L 475,132 L 476,132 L 476,131 L 477,131 L 477,130 L 477,129 L 478,129 L 478,128 L 479,128 L 479,127 L 478,127 L 478,126 L 478,125 L 479,125 "},"ce": {"name": "Ceará","path": "M 488,149 L 487,149 L 487,148 L 488,148 L 488,147 L 488,146 L 488,145 L 489,144 L 488,144 L 488,143 L 488,142 L 488,143 L 487,143 L 487,142 L 486,143 L 486,142 L 487,142 L 486,142 L 487,142 L 487,141 L 486,141 L 486,140 L 486,139 L 486,138 L 487,138 L 486,138 L 485,138 L 485,137 L 485,136 L 485,135 L 486,135 L 485,135 L 485,134 L 484,134 L 484,133 L 484,132 L 485,132 L 485,131 L 485,130 L 486,130 L 486,129 L 486,128 L 485,128 L 485,127 L 486,127 L 487,127 L 488,127 L 489,127 L 490,127 L 490,126 L 491,126 L 492,126 L 492,127 L 492,126 L 493,126 L 494,126 L 495,126 L 496,126 L 496,125 L 497,125 L 498,125 L 498,126 L 499,126 L 499,125 L 500,125 L 500,126 L 500,125 L 500,126 L 501,126 L 502,126 L 503,126 L 504,126 L 503,126 L 504,126 L 505,126 L 505,127 L 506,127 L 507,127 L 507,128 L 508,128 L 509,128 L 509,129 L 510,129 L 510,130 L 511,130 L 512,130 L 512,131 L 513,131 L 514,131 L 514,132 L 515,132 L 515,133 L 516,133 L 517,134 L 518,134 L 519,134 L 519,135 L 520,135 L 520,136 L 521,136 L 521,137 L 522,137 L 522,138 L 523,138 L 524,138 L 525,138 L 525,139 L 526,139 L 526,140 L 527,140 L 527,141 L 528,141 L 528,142 L 529,142 L 529,143 L 530,143 L 530,144 L 530,145 L 531,145 L 531,146 L 532,146 L 533,146 L 533,147 L 534,147 L 534,148 L 535,148 L 535,149 L 536,149 L 536,150 L 537,150 L 537,151 L 538,151 L 539,151 L 540,151 L 540,152 L 541,152 L 542,153 L 542,154 L 541,154 L 539,154 L 538,155 L 537,155 L 536,155 L 536,156 L 536,157 L 535,157 L 535,158 L 535,159 L 535,160 L 534,160 L 535,160 L 534,160 L 534,161 L 533,161 L 534,161 L 534,162 L 533,162 L 533,163 L 532,163 L 532,164 L 531,164 L 531,165 L 530,165 L 530,166 L 531,166 L 531,167 L 530,167 L 530,168 L 530,169 L 529,169 L 529,170 L 528,170 L 528,171 L 527,171 L 526,171 L 525,171 L 525,172 L 525,173 L 524,173 L 524,174 L 523,174 L 524,174 L 523,174 L 524,175 L 523,175 L 524,175 L 523,175 L 524,175 L 524,176 L 524,177 L 523,177 L 523,178 L 523,179 L 522,179 L 523,179 L 522,179 L 522,180 L 523,180 L 523,181 L 522,181 L 522,182 L 521,182 L 521,183 L 521,184 L 522,184 L 522,185 L 522,186 L 523,186 L 523,187 L 524,187 L 524,188 L 524,189 L 523,189 L 523,190 L 523,191 L 522,191 L 523,191 L 522,191 L 523,191 L 522,191 L 522,192 L 522,193 L 522,192 L 522,193 L 521,193 L 520,193 L 520,194 L 519,194 L 518,194 L 518,195 L 519,195 L 518,195 L 518,196 L 518,195 L 517,195 L 517,196 L 516,196 L 516,195 L 516,194 L 515,194 L 515,193 L 514,193 L 514,194 L 514,193 L 513,193 L 513,192 L 512,192 L 511,192 L 511,191 L 511,190 L 510,190 L 510,191 L 510,190 L 509,190 L 509,189 L 508,189 L 508,188 L 507,188 L 506,188 L 505,188 L 505,189 L 505,188 L 505,189 L 504,189 L 503,189 L 502,189 L 501,189 L 501,188 L 500,188 L 499,188 L 499,189 L 498,189 L 497,189 L 497,188 L 496,188 L 497,188 L 497,187 L 497,186 L 497,185 L 498,185 L 498,184 L 498,183 L 498,182 L 498,181 L 499,181 L 498,181 L 497,181 L 497,180 L 496,180 L 495,180 L 495,179 L 494,179 L 494,178 L 493,178 L 493,177 L 493,176 L 493,175 L 493,174 L 492,174 L 492,173 L 492,172 L 492,171 L 491,171 L 491,170 L 492,170 L 492,169 L 491,169 L 491,168 L 491,167 L 491,166 L 491,165 L 491,164 L 491,163 L 491,162 L 491,161 L 491,160 L 491,159 L 491,158 L 490,158 L 490,157 L 489,157 L 488,157 L 488,156 L 488,155 L 487,155 L 487,154 L 486,154 L 487,154 L 486,154 L 486,153 L 487,153 L 486,153 L 486,152 L 487,152 L 487,151 L 487,150 L 486,150 L 487,150 L 487,149 L 488,149 "},"rn": {"name": "Rio Grande do Norte","path": "M 542,154 L 543,154 L 543,155 L 544,155 L 545,155 L 546,155 L 547,155 L 547,156 L 548,156 L 548,157 L 549,157 L 550,157 L 551,157 L 552,157 L 553,157 L 554,157 L 555,157 L 556,157 L 557,157 L 558,157 L 559,157 L 560,157 L 561,157 L 562,157 L 563,157 L 564,157 L 564,158 L 565,158 L 566,158 L 567,158 L 567,159 L 568,159 L 568,160 L 568,161 L 569,161 L 569,162 L 569,163 L 570,163 L 570,164 L 570,165 L 570,166 L 571,166 L 570,166 L 571,166 L 571,167 L 571,168 L 571,169 L 572,169 L 572,170 L 572,171 L 572,172 L 572,173 L 573,173 L 573,174 L 573,175 L 574,175 L 574,176 L 574,177 L 573,177 L 572,177 L 571,177 L 571,178 L 570,177 L 569,177 L 568,177 L 567,177 L 566,177 L 566,176 L 566,177 L 565,177 L 565,176 L 564,176 L 563,176 L 563,177 L 562,177 L 561,177 L 560,177 L 559,177 L 559,176 L 558,176 L 557,176 L 556,176 L 556,175 L 556,176 L 556,175 L 555,175 L 556,175 L 556,174 L 555,174 L 554,174 L 554,175 L 553,175 L 552,175 L 552,176 L 552,177 L 553,177 L 553,178 L 553,179 L 553,178 L 552,178 L 552,179 L 552,180 L 552,181 L 552,182 L 551,182 L 552,182 L 551,182 L 552,182 L 551,182 L 551,183 L 550,183 L 550,184 L 549,184 L 549,183 L 549,182 L 549,181 L 549,182 L 549,181 L 548,180 L 547,180 L 546,181 L 546,180 L 545,180 L 544,180 L 544,181 L 543,181 L 542,181 L 542,180 L 541,180 L 542,180 L 541,179 L 541,180 L 540,180 L 539,180 L 539,179 L 539,178 L 539,177 L 540,177 L 540,176 L 540,175 L 540,174 L 541,174 L 542,174 L 542,173 L 543,173 L 543,172 L 543,171 L 543,170 L 542,170 L 542,171 L 541,171 L 540,171 L 539,171 L 539,172 L 538,172 L 539,172 L 538,172 L 537,172 L 537,173 L 536,173 L 536,172 L 535,172 L 535,173 L 535,174 L 534,174 L 534,175 L 533,175 L 533,176 L 532,176 L 532,175 L 532,176 L 531,176 L 530,176 L 530,177 L 529,177 L 528,177 L 527,177 L 527,176 L 526,176 L 525,176 L 525,175 L 525,174 L 525,175 L 524,175 L 523,174 L 524,174 L 523,174 L 524,174 L 524,173 L 525,173 L 525,172 L 525,171 L 526,171 L 527,171 L 528,171 L 528,170 L 529,170 L 529,169 L 530,169 L 530,168 L 530,167 L 531,167 L 531,166 L 530,166 L 530,165 L 531,165 L 531,164 L 532,164 L 532,163 L 533,163 L 533,162 L 534,162 L 534,161 L 533,161 L 534,161 L 534,160 L 535,160 L 534,160 L 535,160 L 535,159 L 535,158 L 535,157 L 536,157 L 536,156 L 536,155 L 537,155 L 538,155 L 539,154 L 541,154 L 542,154 "},"pb": {"name": "Paraíba","path": "M 542,170 L 543,170 L 543,171 L 543,172 L 543,173 L 542,173 L 542,174 L 541,174 L 540,174 L 540,175 L 540,176 L 540,177 L 539,177 L 539,178 L 539,179 L 539,180 L 540,180 L 541,180 L 541,179 L 542,180 L 541,180 L 542,180 L 542,181 L 543,181 L 544,181 L 544,180 L 545,180 L 546,180 L 546,181 L 547,180 L 548,180 L 548,181 L 549,181 L 549,182 L 549,181 L 549,182 L 549,183 L 549,184 L 550,184 L 550,183 L 551,183 L 551,182 L 552,182 L 551,182 L 552,182 L 551,182 L 552,182 L 552,181 L 552,180 L 552,179 L 552,178 L 553,178 L 553,179 L 553,178 L 553,177 L 552,177 L 552,176 L 552,175 L 553,175 L 554,175 L 554,174 L 555,174 L 556,174 L 556,175 L 555,175 L 556,175 L 556,176 L 556,175 L 556,176 L 557,176 L 558,176 L 559,176 L 559,177 L 560,177 L 561,177 L 562,177 L 563,177 L 563,176 L 564,176 L 565,176 L 565,177 L 566,177 L 566,176 L 566,177 L 567,177 L 568,177 L 569,177 L 570,177 L 571,178 L 571,177 L 572,177 L 573,177 L 574,177 L 574,178 L 574,179 L 574,180 L 574,181 L 575,181 L 575,182 L 575,183 L 575,184 L 576,184 L 576,183 L 576,184 L 576,185 L 576,186 L 576,187 L 576,188 L 576,189 L 576,190 L 576,191 L 575,191 L 574,191 L 573,191 L 573,190 L 574,190 L 573,190 L 572,189 L 571,189 L 570,189 L 569,189 L 569,190 L 569,189 L 569,190 L 568,190 L 567,190 L 566,190 L 566,191 L 566,192 L 566,193 L 565,193 L 564,193 L 564,194 L 564,193 L 563,193 L 563,194 L 562,194 L 561,194 L 561,195 L 560,195 L 559,195 L 558,195 L 557,195 L 556,194 L 556,195 L 555,195 L 554,195 L 553,195 L 553,196 L 553,197 L 552,197 L 552,196 L 551,196 L 551,197 L 551,198 L 551,199 L 550,199 L 551,199 L 550,199 L 550,200 L 549,200 L 548,200 L 548,201 L 547,201 L 546,201 L 546,202 L 545,202 L 545,201 L 544,201 L 545,201 L 544,201 L 544,200 L 543,200 L 543,199 L 544,199 L 543,199 L 544,199 L 543,199 L 543,198 L 543,197 L 542,197 L 541,197 L 541,196 L 542,196 L 542,195 L 543,195 L 543,194 L 544,194 L 543,194 L 543,193 L 543,192 L 544,192 L 544,191 L 545,191 L 546,191 L 546,190 L 545,190 L 545,189 L 544,189 L 543,188 L 542,188 L 541,188 L 541,189 L 540,189 L 539,189 L 539,190 L 538,190 L 538,191 L 537,191 L 536,191 L 536,192 L 535,192 L 535,193 L 535,192 L 534,192 L 534,193 L 534,192 L 534,193 L 533,193 L 533,194 L 532,194 L 532,195 L 531,195 L 531,194 L 531,195 L 530,195 L 529,195 L 528,195 L 527,195 L 527,194 L 527,193 L 526,193 L 526,194 L 525,194 L 524,194 L 523,194 L 523,193 L 522,193 L 522,192 L 522,191 L 523,191 L 522,191 L 523,191 L 522,191 L 523,191 L 523,190 L 523,189 L 524,189 L 524,188 L 524,187 L 523,187 L 523,186 L 522,186 L 522,185 L 522,184 L 521,184 L 521,183 L 521,182 L 522,182 L 522,181 L 523,181 L 523,180 L 522,180 L 522,179 L 523,179 L 522,179 L 523,179 L 523,178 L 523,177 L 524,177 L 524,176 L 524,175 L 523,175 L 524,175 L 523,175 L 524,175 L 525,175 L 525,174 L 525,175 L 525,176 L 526,176 L 527,176 L 527,177 L 528,177 L 529,177 L 530,177 L 530,176 L 531,176 L 532,176 L 532,175 L 532,176 L 533,176 L 533,175 L 534,175 L 534,174 L 535,174 L 535,173 L 535,172 L 536,172 L 536,173 L 537,173 L 537,172 L 538,172 L 539,172 L 538,172 L 539,172 L 539,171 L 540,171 L 541,171 L 542,171 L 542,170 "},"pe": {"name": "Pernambuco","path": "M 542,188 L 543,188 L 544,189 L 545,189 L 545,190 L 546,190 L 546,191 L 545,191 L 544,191 L 544,192 L 543,192 L 543,193 L 543,194 L 544,194 L 543,194 L 543,195 L 542,195 L 542,196 L 541,196 L 541,197 L 542,197 L 543,197 L 543,198 L 543,199 L 544,199 L 543,199 L 544,199 L 543,199 L 543,200 L 544,200 L 544,201 L 545,201 L 544,201 L 545,201 L 545,202 L 546,202 L 546,201 L 547,201 L 548,201 L 548,200 L 549,200 L 550,200 L 550,199 L 551,199 L 550,199 L 551,199 L 551,198 L 551,197 L 551,196 L 552,196 L 552,197 L 553,197 L 553,196 L 553,195 L 554,195 L 555,195 L 556,195 L 556,194 L 557,195 L 558,195 L 559,195 L 560,195 L 561,195 L 561,194 L 562,194 L 563,194 L 563,193 L 564,193 L 564,194 L 564,193 L 565,193 L 566,193 L 566,192 L 566,191 L 566,190 L 567,190 L 568,190 L 569,190 L 569,189 L 569,190 L 569,189 L 570,189 L 571,189 L 572,189 L 573,190 L 574,190 L 573,190 L 573,191 L 574,191 L 575,191 L 576,191 L 576,192 L 576,193 L 575,193 L 576,193 L 576,194 L 576,195 L 575,195 L 576,195 L 575,195 L 576,195 L 576,196 L 576,197 L 576,198 L 575,198 L 575,199 L 575,200 L 574,200 L 574,201 L 574,202 L 574,203 L 574,204 L 573,204 L 573,205 L 573,206 L 573,205 L 573,206 L 572,206 L 572,207 L 572,208 L 572,209 L 571,209 L 571,210 L 572,210 L 571,210 L 570,210 L 569,210 L 568,210 L 568,209 L 567,209 L 566,209 L 565,209 L 565,210 L 564,210 L 563,210 L 562,210 L 563,210 L 562,210 L 562,209 L 562,210 L 561,210 L 560,210 L 559,210 L 558,210 L 558,211 L 558,212 L 557,212 L 557,213 L 556,213 L 556,214 L 555,214 L 554,214 L 555,215 L 554,215 L 553,215 L 554,215 L 553,215 L 552,215 L 552,216 L 551,216 L 552,216 L 551,216 L 550,216 L 549,215 L 548,216 L 548,215 L 547,215 L 547,216 L 546,216 L 546,217 L 545,217 L 545,216 L 545,215 L 544,215 L 543,215 L 542,215 L 542,214 L 541,214 L 541,213 L 540,213 L 540,212 L 539,212 L 539,211 L 538,211 L 537,211 L 537,212 L 536,212 L 536,211 L 536,212 L 536,211 L 536,212 L 536,211 L 536,210 L 535,210 L 534,210 L 534,211 L 534,212 L 533,212 L 533,213 L 532,213 L 532,214 L 531,214 L 530,214 L 530,215 L 529,215 L 529,216 L 528,216 L 528,215 L 528,214 L 527,214 L 527,213 L 527,212 L 528,212 L 527,212 L 527,211 L 527,212 L 526,212 L 525,212 L 525,211 L 524,211 L 525,210 L 525,209 L 524,209 L 523,210 L 523,211 L 522,211 L 522,210 L 521,209 L 520,209 L 519,209 L 518,209 L 518,208 L 517,208 L 516,208 L 515,208 L 515,207 L 515,208 L 514,208 L 514,207 L 514,206 L 514,205 L 513,205 L 512,205 L 512,206 L 511,206 L 510,206 L 510,207 L 509,207 L 508,207 L 508,208 L 508,209 L 507,209 L 506,209 L 505,209 L 505,210 L 505,211 L 506,211 L 505,211 L 505,212 L 504,212 L 503,212 L 503,213 L 502,213 L 501,213 L 501,212 L 500,212 L 500,213 L 500,214 L 500,215 L 499,215 L 499,216 L 499,217 L 498,217 L 497,217 L 496,217 L 496,218 L 495,218 L 494,218 L 493,218 L 493,217 L 493,216 L 494,216 L 493,216 L 494,216 L 494,215 L 494,214 L 494,213 L 493,213 L 492,213 L 492,212 L 492,211 L 492,210 L 491,210 L 491,209 L 490,209 L 489,209 L 490,209 L 489,209 L 488,209 L 488,208 L 488,207 L 488,208 L 488,207 L 488,208 L 487,208 L 487,207 L 487,208 L 486,208 L 485,208 L 485,207 L 486,207 L 487,207 L 487,206 L 488,206 L 488,205 L 489,205 L 489,204 L 490,204 L 490,203 L 490,204 L 491,204 L 491,203 L 492,203 L 492,202 L 493,202 L 493,201 L 494,201 L 494,200 L 495,200 L 496,200 L 496,199 L 495,199 L 496,198 L 496,197 L 496,196 L 496,195 L 495,195 L 494,194 L 495,194 L 495,193 L 495,192 L 494,192 L 494,191 L 494,190 L 495,190 L 496,189 L 496,188 L 497,188 L 497,189 L 498,189 L 499,189 L 499,188 L 500,188 L 501,188 L 501,189 L 502,189 L 503,189 L 504,189 L 505,189 L 505,188 L 505,189 L 505,188 L 506,188 L 507,188 L 508,188 L 508,189 L 509,189 L 509,190 L 510,190 L 510,191 L 510,190 L 511,190 L 511,191 L 511,192 L 512,192 L 513,192 L 513,193 L 514,193 L 514,194 L 514,193 L 515,193 L 515,194 L 516,194 L 516,195 L 516,196 L 517,196 L 517,195 L 518,195 L 518,196 L 518,195 L 519,195 L 518,195 L 518,194 L 519,194 L 520,194 L 520,193 L 521,193 L 522,193 L 522,192 L 522,193 L 522,192 L 522,193 L 523,193 L 523,194 L 524,194 L 525,194 L 526,194 L 526,193 L 527,193 L 527,194 L 527,195 L 528,195 L 529,195 L 530,195 L 531,195 L 531,194 L 531,195 L 532,195 L 532,194 L 533,194 L 533,193 L 534,193 L 534,192 L 534,193 L 534,192 L 535,192 L 535,193 L 535,192 L 536,192 L 536,191 L 537,191 L 538,191 L 538,190 L 539,190 L 539,189 L 540,189 L 541,189 L 541,188 L 542,188 "},"al": {"name": "Alagoas","path": "M 567,209 L 568,209 L 568,210 L 569,210 L 570,210 L 571,210 L 571,211 L 571,212 L 570,212 L 570,213 L 569,213 L 569,214 L 569,215 L 568,215 L 568,216 L 567,216 L 568,216 L 567,216 L 567,217 L 566,217 L 566,218 L 565,218 L 565,219 L 564,219 L 564,220 L 564,221 L 563,221 L 562,221 L 562,222 L 562,221 L 562,222 L 561,222 L 561,223 L 561,224 L 560,224 L 560,225 L 559,225 L 559,226 L 559,227 L 558,227 L 558,228 L 557,228 L 556,229 L 555,229 L 555,230 L 555,231 L 555,232 L 554,232 L 553,232 L 553,231 L 552,231 L 552,232 L 552,231 L 552,230 L 551,230 L 551,229 L 550,229 L 549,229 L 548,229 L 548,228 L 547,228 L 547,227 L 546,227 L 546,226 L 546,225 L 545,225 L 544,225 L 544,224 L 543,224 L 542,224 L 542,223 L 541,223 L 540,223 L 540,222 L 539,222 L 538,222 L 537,222 L 537,221 L 536,221 L 536,220 L 535,220 L 535,221 L 535,220 L 534,220 L 533,219 L 532,219 L 532,218 L 531,218 L 530,218 L 529,218 L 529,217 L 528,216 L 529,216 L 529,215 L 530,215 L 530,214 L 531,214 L 532,214 L 532,213 L 533,213 L 533,212 L 534,212 L 534,211 L 534,210 L 535,210 L 536,210 L 536,211 L 536,212 L 536,211 L 536,212 L 536,211 L 536,212 L 537,212 L 537,211 L 538,211 L 539,211 L 539,212 L 540,212 L 540,213 L 541,213 L 541,214 L 542,214 L 542,215 L 543,215 L 544,215 L 545,215 L 545,216 L 545,217 L 546,217 L 546,216 L 547,216 L 547,215 L 548,215 L 548,216 L 549,215 L 549,216 L 550,216 L 551,216 L 552,216 L 551,216 L 552,216 L 552,215 L 553,215 L 554,215 L 553,215 L 554,215 L 555,215 L 554,214 L 555,214 L 556,214 L 556,213 L 557,213 L 557,212 L 558,212 L 558,211 L 558,210 L 559,210 L 560,210 L 561,210 L 562,210 L 562,209 L 562,210 L 563,210 L 562,210 L 563,210 L 564,210 L 565,210 L 565,209 L 566,209 L 567,209 "},"se": {"name": "Sergipe","path": "M 532,219 L 533,219 L 534,220 L 535,220 L 535,221 L 535,220 L 536,220 L 536,221 L 537,221 L 537,222 L 538,222 L 539,222 L 540,222 L 540,223 L 541,223 L 542,223 L 542,224 L 543,224 L 544,224 L 544,225 L 545,225 L 546,225 L 546,226 L 546,227 L 547,227 L 547,228 L 548,228 L 548,229 L 549,229 L 550,229 L 551,229 L 551,230 L 552,230 L 552,231 L 552,232 L 552,231 L 553,231 L 553,232 L 554,232 L 554,233 L 553,233 L 552,233 L 551,233 L 551,234 L 550,234 L 549,235 L 548,235 L 548,236 L 547,236 L 547,237 L 546,237 L 546,238 L 545,238 L 545,239 L 545,240 L 544,240 L 544,241 L 543,241 L 543,242 L 543,243 L 542,243 L 542,244 L 541,244 L 541,245 L 541,246 L 540,246 L 539,247 L 538,247 L 537,247 L 536,247 L 535,247 L 534,247 L 534,246 L 533,246 L 534,246 L 533,246 L 533,245 L 533,246 L 533,245 L 532,245 L 532,244 L 532,243 L 532,244 L 531,244 L 531,243 L 532,243 L 532,242 L 531,242 L 531,241 L 530,241 L 531,241 L 531,240 L 530,240 L 530,239 L 529,239 L 529,238 L 528,238 L 528,237 L 528,236 L 529,236 L 529,235 L 530,235 L 530,236 L 530,235 L 530,236 L 530,235 L 530,236 L 530,235 L 531,235 L 531,236 L 532,236 L 533,236 L 533,235 L 534,235 L 534,234 L 534,233 L 534,232 L 534,231 L 534,230 L 535,230 L 535,228 L 535,227 L 534,227 L 534,226 L 534,225 L 533,225 L 532,225 L 532,224 L 532,223 L 531,223 L 531,222 L 531,221 L 532,221 L 532,220 L 531,220 L 531,219 L 532,219 "},"ba": {"name": "Bahia","path": "M 513,205 L 514,205 L 514,206 L 514,207 L 514,208 L 515,208 L 515,207 L 515,208 L 516,208 L 517,208 L 518,208 L 518,209 L 519,209 L 520,209 L 521,209 L 522,210 L 522,211 L 523,211 L 523,210 L 524,209 L 525,209 L 525,210 L 524,211 L 525,211 L 525,212 L 526,212 L 527,212 L 527,211 L 527,212 L 528,212 L 527,212 L 527,213 L 527,214 L 528,214 L 528,215 L 528,216 L 529,217 L 529,218 L 530,218 L 531,218 L 532,218 L 532,219 L 531,219 L 531,220 L 532,220 L 532,221 L 531,221 L 531,222 L 531,223 L 532,223 L 532,224 L 532,225 L 533,225 L 534,225 L 534,226 L 534,227 L 535,227 L 535,228 L 535,230 L 534,230 L 534,231 L 534,232 L 534,233 L 534,234 L 534,235 L 533,235 L 533,236 L 532,236 L 531,236 L 531,235 L 530,235 L 530,236 L 530,235 L 530,236 L 530,235 L 530,236 L 530,235 L 529,235 L 529,236 L 528,236 L 528,237 L 528,238 L 529,238 L 529,239 L 530,239 L 530,240 L 531,240 L 531,241 L 530,241 L 531,241 L 531,242 L 532,242 L 532,243 L 531,243 L 531,244 L 532,244 L 532,243 L 532,244 L 532,245 L 533,245 L 533,246 L 533,245 L 533,246 L 534,246 L 533,246 L 534,246 L 534,247 L 535,247 L 536,247 L 537,247 L 538,247 L 539,247 L 540,246 L 541,246 L 540,246 L 540,247 L 540,248 L 539,248 L 539,249 L 538,250 L 538,251 L 538,252 L 537,252 L 537,253 L 537,254 L 536,254 L 536,255 L 535,255 L 535,256 L 535,257 L 534,257 L 534,258 L 533,258 L 533,259 L 533,260 L 532,260 L 532,261 L 531,261 L 531,262 L 531,263 L 530,263 L 530,264 L 529,264 L 529,265 L 528,265 L 528,266 L 527,266 L 527,267 L 526,267 L 525,267 L 524,267 L 523,267 L 523,268 L 522,268 L 523,268 L 522,268 L 521,268 L 521,269 L 521,268 L 521,269 L 521,268 L 521,269 L 520,269 L 520,270 L 519,270 L 518,271 L 518,272 L 518,273 L 519,273 L 519,272 L 519,273 L 519,274 L 519,275 L 519,276 L 519,275 L 519,276 L 519,275 L 519,276 L 519,277 L 519,276 L 518,276 L 518,277 L 518,278 L 518,279 L 518,280 L 519,280 L 519,281 L 518,281 L 518,282 L 518,283 L 518,284 L 518,285 L 518,286 L 518,287 L 517,287 L 517,288 L 517,289 L 517,290 L 517,291 L 517,292 L 517,293 L 517,294 L 518,294 L 518,295 L 518,296 L 518,297 L 518,298 L 518,299 L 518,300 L 518,301 L 518,302 L 518,303 L 519,303 L 519,304 L 519,305 L 519,306 L 519,307 L 520,307 L 519,307 L 519,308 L 519,309 L 519,310 L 518,310 L 518,311 L 518,312 L 517,312 L 517,313 L 517,314 L 518,314 L 517,314 L 517,315 L 517,316 L 517,317 L 516,317 L 516,318 L 516,319 L 516,320 L 516,321 L 516,322 L 516,323 L 515,323 L 515,324 L 515,325 L 515,326 L 515,327 L 515,328 L 515,329 L 515,330 L 515,331 L 515,332 L 516,332 L 516,333 L 515,333 L 515,334 L 514,334 L 514,335 L 513,335 L 513,336 L 512,336 L 511,336 L 511,337 L 510,337 L 510,338 L 510,339 L 509,339 L 509,340 L 509,341 L 508,341 L 508,342 L 508,341 L 507,341 L 506,340 L 505,339 L 504,339 L 503,338 L 502,338 L 502,337 L 501,337 L 501,336 L 500,336 L 501,335 L 501,334 L 501,333 L 500,333 L 500,332 L 499,332 L 499,331 L 499,332 L 499,331 L 498,331 L 498,332 L 498,331 L 497,331 L 497,330 L 497,329 L 496,329 L 495,329 L 495,328 L 496,328 L 495,328 L 495,327 L 496,327 L 496,326 L 496,325 L 496,324 L 496,323 L 496,322 L 497,322 L 497,321 L 498,321 L 499,321 L 499,322 L 499,321 L 500,321 L 500,322 L 500,321 L 500,320 L 499,320 L 499,319 L 500,319 L 499,319 L 499,318 L 500,318 L 500,317 L 501,317 L 502,317 L 501,317 L 501,316 L 502,316 L 502,315 L 503,315 L 503,314 L 504,314 L 504,313 L 504,314 L 504,313 L 505,313 L 505,312 L 505,311 L 506,311 L 506,310 L 505,310 L 505,309 L 504,309 L 503,309 L 503,308 L 502,308 L 501,308 L 501,307 L 501,306 L 500,306 L 499,306 L 499,307 L 499,306 L 499,307 L 499,306 L 498,306 L 497,306 L 496,306 L 495,306 L 495,305 L 494,305 L 494,304 L 494,305 L 493,305 L 494,305 L 493,305 L 493,304 L 492,304 L 492,305 L 491,305 L 491,304 L 490,304 L 490,305 L 489,305 L 488,305 L 488,306 L 487,306 L 487,305 L 486,305 L 485,305 L 485,303 L 485,302 L 484,302 L 484,301 L 483,301 L 483,300 L 479,297 L 479,296 L 479,297 L 478,297 L 477,297 L 477,298 L 477,297 L 476,297 L 475,297 L 475,298 L 475,297 L 474,297 L 474,296 L 473,296 L 473,297 L 473,296 L 473,297 L 473,296 L 473,297 L 472,297 L 472,296 L 471,296 L 470,296 L 470,295 L 469,295 L 468,295 L 468,294 L 467,294 L 466,294 L 466,293 L 465,293 L 464,292 L 463,292 L 463,291 L 462,291 L 461,291 L 460,291 L 460,290 L 459,290 L 458,290 L 458,291 L 458,290 L 458,291 L 457,291 L 456,291 L 456,292 L 455,292 L 456,292 L 455,292 L 455,293 L 455,292 L 454,292 L 453,292 L 453,291 L 452,291 L 451,291 L 450,291 L 450,290 L 450,289 L 450,288 L 450,287 L 451,287 L 451,286 L 451,285 L 451,286 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 449,285 L 448,285 L 447,285 L 446,285 L 445,285 L 445,284 L 445,285 L 444,285 L 443,285 L 442,285 L 442,286 L 442,285 L 442,286 L 441,286 L 440,286 L 439,286 L 439,287 L 438,287 L 438,288 L 437,288 L 436,288 L 437,288 L 437,289 L 436,289 L 436,290 L 436,289 L 436,290 L 435,290 L 436,290 L 435,290 L 434,290 L 435,290 L 434,290 L 434,291 L 433,291 L 433,292 L 432,292 L 432,291 L 432,292 L 432,291 L 432,292 L 432,291 L 432,292 L 431,292 L 430,292 L 430,293 L 429,293 L 429,294 L 428,294 L 427,294 L 427,295 L 427,294 L 426,294 L 426,295 L 425,295 L 425,296 L 425,295 L 425,296 L 424,296 L 424,297 L 423,297 L 422,297 L 421,297 L 421,298 L 420,298 L 420,299 L 419,299 L 419,298 L 419,299 L 419,298 L 420,297 L 420,296 L 421,296 L 421,295 L 421,294 L 420,294 L 420,293 L 420,292 L 420,291 L 420,290 L 421,290 L 420,290 L 420,289 L 421,289 L 420,289 L 421,289 L 420,288 L 420,287 L 421,287 L 421,286 L 422,286 L 421,286 L 421,285 L 420,285 L 420,284 L 419,284 L 420,284 L 419,284 L 419,283 L 418,283 L 417,283 L 417,282 L 417,281 L 417,280 L 417,279 L 417,278 L 416,278 L 417,278 L 417,277 L 417,276 L 418,276 L 418,275 L 417,275 L 417,274 L 417,273 L 418,273 L 418,272 L 419,272 L 420,272 L 420,271 L 419,271 L 418,271 L 418,272 L 417,272 L 416,272 L 416,271 L 416,270 L 416,269 L 416,268 L 416,267 L 417,267 L 418,267 L 419,267 L 419,266 L 418,266 L 417,266 L 416,266 L 416,267 L 416,266 L 416,265 L 417,265 L 416,265 L 416,264 L 417,264 L 417,263 L 416,263 L 417,263 L 417,262 L 416,262 L 417,262 L 416,262 L 416,261 L 417,261 L 418,261 L 418,260 L 417,260 L 417,259 L 416,259 L 416,258 L 415,258 L 416,258 L 416,257 L 415,257 L 415,256 L 415,255 L 415,254 L 415,253 L 416,253 L 417,253 L 417,252 L 418,252 L 417,252 L 416,252 L 415,252 L 415,251 L 416,251 L 416,250 L 415,250 L 416,250 L 416,249 L 416,248 L 417,248 L 418,249 L 418,248 L 418,249 L 418,248 L 418,249 L 418,248 L 419,248 L 418,248 L 417,248 L 417,247 L 416,247 L 415,247 L 414,247 L 414,246 L 413,246 L 413,245 L 412,245 L 412,244 L 412,243 L 413,243 L 413,242 L 414,242 L 414,241 L 414,240 L 415,240 L 415,239 L 416,239 L 416,238 L 416,237 L 417,237 L 417,236 L 418,236 L 418,235 L 417,235 L 418,235 L 418,234 L 419,234 L 420,234 L 420,233 L 421,233 L 422,233 L 422,232 L 423,232 L 423,231 L 423,230 L 424,230 L 424,229 L 425,229 L 424,229 L 424,228 L 425,228 L 425,227 L 426,227 L 426,228 L 426,229 L 427,229 L 427,230 L 428,230 L 428,231 L 428,232 L 429,232 L 428,232 L 428,233 L 428,234 L 428,235 L 429,235 L 429,236 L 430,236 L 431,236 L 431,237 L 432,237 L 433,237 L 434,237 L 434,238 L 435,238 L 436,238 L 437,238 L 437,237 L 438,237 L 438,236 L 439,236 L 439,235 L 440,235 L 440,234 L 441,234 L 441,235 L 441,234 L 442,234 L 443,234 L 443,233 L 444,233 L 444,234 L 445,234 L 446,234 L 447,234 L 447,233 L 448,232 L 448,231 L 448,232 L 449,232 L 449,231 L 450,231 L 450,230 L 450,229 L 451,229 L 451,228 L 451,227 L 452,227 L 452,226 L 453,226 L 453,225 L 452,225 L 452,224 L 453,224 L 453,223 L 452,223 L 451,222 L 451,221 L 450,221 L 450,220 L 450,219 L 451,219 L 451,218 L 452,218 L 452,217 L 453,217 L 454,216 L 455,216 L 455,215 L 456,215 L 456,216 L 457,216 L 457,217 L 458,217 L 458,218 L 458,217 L 459,217 L 460,217 L 461,217 L 462,217 L 463,217 L 463,218 L 463,219 L 464,219 L 464,220 L 465,220 L 466,220 L 466,219 L 467,219 L 468,219 L 469,219 L 469,218 L 470,218 L 470,217 L 471,217 L 471,216 L 472,216 L 473,216 L 474,216 L 475,216 L 475,215 L 476,215 L 477,215 L 478,215 L 478,214 L 479,214 L 479,213 L 480,213 L 480,212 L 481,212 L 481,211 L 482,211 L 483,210 L 483,209 L 484,209 L 484,208 L 485,208 L 486,208 L 487,208 L 487,207 L 487,208 L 488,208 L 488,207 L 488,208 L 488,207 L 488,208 L 488,209 L 489,209 L 490,209 L 489,209 L 490,209 L 491,209 L 491,210 L 492,210 L 492,211 L 492,212 L 492,213 L 493,213 L 494,213 L 494,214 L 494,215 L 494,216 L 493,216 L 494,216 L 493,216 L 493,217 L 493,218 L 494,218 L 495,218 L 496,218 L 496,217 L 497,217 L 498,217 L 499,217 L 499,216 L 499,215 L 500,215 L 500,214 L 500,213 L 500,212 L 501,212 L 501,213 L 502,213 L 503,213 L 503,212 L 504,212 L 505,212 L 505,211 L 506,211 L 505,211 L 505,210 L 505,209 L 506,209 L 507,209 L 508,209 L 508,208 L 508,207 L 509,207 L 510,207 L 510,206 L 511,206 L 512,206 L 512,205 L 513,205 "},"mg": {"name": "Minas Gerais","path": "M 478,375 L 478,376 L 477,376 L 477,377 L 476,377 L 477,377 L 476,377 L 476,378 L 476,377 L 476,378 L 475,378 L 474,378 L 474,379 L 475,379 L 474,379 L 474,380 L 473,380 L 473,381 L 473,382 L 473,383 L 473,384 L 472,384 L 473,384 L 472,384 L 472,385 L 472,386 L 471,386 L 471,387 L 471,388 L 471,387 L 471,388 L 472,388 L 472,389 L 471,389 L 470,389 L 469,389 L 469,390 L 468,390 L 467,390 L 467,391 L 466,391 L 465,391 L 465,392 L 464,392 L 463,392 L 463,393 L 462,393 L 461,393 L 462,393 L 461,393 L 461,394 L 460,394 L 460,393 L 459,393 L 458,393 L 457,393 L 457,392 L 457,393 L 457,392 L 457,393 L 456,393 L 455,393 L 455,394 L 454,394 L 454,393 L 454,394 L 453,394 L 453,393 L 453,394 L 453,393 L 453,394 L 453,393 L 452,393 L 452,394 L 452,393 L 452,394 L 452,393 L 452,394 L 451,394 L 452,394 L 451,394 L 451,393 L 451,394 L 450,394 L 449,394 L 448,394 L 448,395 L 447,395 L 446,395 L 446,396 L 446,395 L 446,396 L 445,396 L 444,396 L 445,396 L 444,396 L 443,396 L 442,396 L 441,396 L 442,396 L 441,396 L 441,397 L 440,397 L 439,397 L 439,398 L 438,398 L 438,397 L 438,398 L 437,398 L 436,398 L 436,399 L 435,399 L 434,399 L 433,399 L 432,399 L 432,400 L 431,400 L 431,401 L 430,401 L 429,401 L 429,402 L 428,401 L 429,401 L 428,401 L 429,401 L 428,401 L 427,401 L 427,402 L 426,402 L 426,401 L 425,401 L 425,402 L 425,401 L 425,400 L 425,401 L 424,401 L 424,400 L 424,401 L 425,401 L 425,402 L 424,402 L 423,402 L 423,403 L 424,403 L 424,402 L 424,403 L 424,402 L 424,403 L 424,402 L 424,403 L 424,404 L 424,403 L 424,404 L 423,404 L 424,404 L 423,404 L 422,404 L 422,405 L 422,404 L 421,404 L 421,405 L 420,405 L 419,405 L 418,405 L 418,404 L 418,405 L 418,404 L 418,405 L 417,405 L 416,405 L 415,405 L 415,404 L 415,403 L 416,403 L 415,403 L 414,403 L 414,402 L 415,402 L 415,401 L 414,401 L 415,401 L 414,401 L 415,401 L 414,401 L 414,400 L 415,400 L 414,400 L 413,400 L 413,399 L 412,399 L 411,398 L 411,397 L 410,397 L 410,396 L 411,396 L 410,396 L 411,396 L 411,395 L 412,395 L 412,394 L 411,394 L 410,394 L 410,393 L 410,394 L 411,393 L 412,393 L 412,392 L 411,392 L 411,391 L 411,390 L 411,389 L 412,389 L 412,388 L 413,388 L 413,387 L 413,386 L 413,385 L 412,385 L 412,384 L 412,385 L 412,384 L 411,384 L 410,384 L 409,384 L 408,384 L 407,384 L 406,384 L 406,383 L 406,382 L 405,382 L 405,381 L 406,381 L 405,381 L 405,382 L 405,381 L 405,380 L 404,380 L 404,379 L 404,378 L 403,377 L 403,376 L 403,375 L 404,375 L 404,374 L 405,374 L 405,373 L 404,373 L 404,372 L 403,372 L 403,371 L 402,371 L 402,370 L 402,369 L 403,369 L 403,368 L 403,367 L 402,367 L 402,366 L 401,366 L 400,365 L 400,364 L 399,364 L 399,365 L 398,365 L 397,365 L 397,364 L 396,364 L 395,364 L 395,365 L 395,364 L 394,364 L 394,365 L 394,366 L 393,366 L 393,365 L 393,366 L 392,366 L 392,367 L 391,367 L 391,366 L 390,366 L 390,365 L 389,365 L 389,366 L 389,367 L 388,367 L 388,366 L 387,366 L 386,366 L 386,367 L 385,367 L 385,366 L 384,366 L 384,367 L 383,367 L 382,367 L 381,367 L 381,368 L 380,368 L 380,369 L 380,370 L 380,371 L 380,370 L 379,370 L 379,369 L 379,368 L 379,367 L 378,367 L 377,367 L 377,368 L 377,369 L 376,369 L 375,369 L 375,368 L 375,367 L 374,367 L 374,366 L 374,365 L 375,365 L 375,364 L 374,364 L 373,364 L 372,364 L 372,363 L 371,363 L 370,363 L 370,364 L 369,364 L 368,364 L 367,364 L 366,364 L 365,364 L 364,364 L 364,363 L 363,363 L 362,363 L 361,363 L 360,363 L 360,362 L 359,362 L 358,362 L 357,362 L 356,362 L 356,363 L 355,363 L 355,364 L 354,364 L 353,364 L 352,364 L 352,365 L 351,365 L 351,366 L 351,365 L 350,365 L 351,365 L 351,364 L 350,364 L 351,364 L 351,363 L 350,363 L 350,362 L 350,361 L 350,360 L 351,360 L 351,359 L 352,359 L 352,358 L 351,358 L 351,357 L 352,357 L 353,358 L 353,357 L 352,357 L 352,356 L 353,356 L 353,355 L 354,355 L 354,354 L 354,353 L 355,353 L 356,353 L 357,353 L 357,352 L 358,352 L 358,351 L 358,350 L 358,349 L 359,349 L 359,348 L 360,348 L 360,347 L 360,346 L 361,346 L 362,346 L 363,346 L 364,346 L 364,345 L 365,345 L 366,345 L 367,345 L 367,346 L 368,346 L 368,345 L 369,345 L 370,345 L 369,345 L 370,345 L 370,344 L 371,344 L 372,344 L 372,345 L 373,345 L 373,346 L 373,345 L 374,345 L 375,345 L 375,344 L 375,343 L 376,343 L 376,342 L 377,342 L 377,343 L 378,343 L 378,342 L 379,342 L 379,341 L 380,341 L 381,341 L 381,342 L 382,342 L 383,342 L 384,342 L 384,341 L 385,341 L 385,342 L 386,342 L 387,342 L 388,342 L 389,342 L 389,341 L 389,342 L 390,342 L 390,343 L 391,343 L 392,343 L 393,343 L 393,344 L 394,343 L 395,343 L 395,342 L 395,343 L 396,343 L 396,342 L 397,342 L 397,341 L 397,342 L 397,341 L 398,341 L 398,340 L 399,340 L 399,339 L 399,340 L 399,339 L 399,340 L 400,340 L 400,339 L 401,339 L 401,338 L 402,338 L 402,337 L 402,336 L 402,335 L 401,335 L 401,334 L 402,334 L 401,334 L 402,334 L 401,334 L 402,334 L 402,333 L 402,332 L 403,332 L 402,332 L 403,332 L 402,332 L 403,332 L 403,331 L 402,331 L 402,330 L 401,330 L 400,330 L 399,330 L 399,329 L 399,328 L 399,327 L 399,328 L 400,328 L 400,327 L 401,327 L 400,327 L 401,327 L 400,327 L 401,327 L 401,326 L 402,326 L 401,326 L 401,325 L 401,326 L 401,325 L 402,325 L 402,326 L 402,325 L 401,325 L 402,325 L 401,325 L 402,325 L 403,325 L 402,325 L 403,325 L 402,325 L 402,324 L 403,324 L 404,324 L 403,324 L 404,324 L 404,323 L 404,324 L 404,323 L 405,323 L 404,323 L 405,323 L 404,323 L 404,322 L 404,321 L 403,321 L 404,321 L 404,320 L 403,321 L 403,320 L 404,320 L 403,320 L 403,319 L 403,318 L 403,319 L 403,318 L 402,318 L 402,317 L 402,318 L 402,317 L 401,317 L 400,317 L 400,316 L 400,315 L 400,314 L 401,314 L 401,313 L 402,313 L 402,312 L 402,311 L 401,311 L 402,311 L 402,310 L 402,309 L 403,309 L 404,309 L 403,309 L 404,309 L 403,309 L 404,309 L 404,308 L 405,308 L 406,308 L 407,308 L 408,307 L 409,307 L 409,306 L 409,305 L 408,305 L 408,304 L 408,303 L 407,303 L 407,302 L 407,301 L 408,301 L 408,300 L 409,300 L 409,299 L 408,299 L 408,298 L 408,299 L 407,299 L 407,298 L 408,297 L 408,296 L 407,296 L 408,296 L 408,295 L 409,295 L 410,295 L 410,296 L 411,296 L 412,296 L 413,296 L 413,295 L 413,294 L 413,293 L 413,292 L 412,292 L 413,292 L 413,291 L 414,291 L 414,292 L 415,292 L 416,292 L 416,293 L 416,294 L 417,294 L 418,294 L 419,294 L 420,294 L 420,293 L 420,294 L 421,294 L 421,295 L 421,296 L 420,296 L 420,297 L 419,298 L 419,299 L 419,298 L 419,299 L 420,299 L 420,298 L 421,298 L 421,297 L 422,297 L 423,297 L 424,297 L 424,296 L 425,296 L 425,295 L 425,296 L 425,295 L 426,295 L 426,294 L 427,294 L 427,295 L 427,294 L 428,294 L 429,294 L 429,293 L 430,293 L 430,292 L 431,292 L 432,292 L 432,291 L 432,292 L 432,291 L 432,292 L 432,291 L 432,292 L 433,292 L 433,291 L 434,291 L 434,290 L 435,290 L 434,290 L 435,290 L 436,290 L 435,290 L 436,290 L 436,289 L 436,290 L 436,289 L 437,289 L 437,288 L 436,288 L 437,288 L 438,288 L 438,287 L 439,287 L 439,286 L 440,286 L 441,286 L 442,286 L 442,285 L 442,286 L 442,285 L 443,285 L 444,285 L 445,285 L 445,284 L 445,285 L 446,285 L 447,285 L 448,285 L 449,285 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 451,286 L 451,285 L 451,286 L 451,287 L 450,287 L 450,288 L 450,289 L 450,290 L 450,291 L 451,291 L 452,291 L 453,291 L 453,292 L 454,292 L 455,292 L 455,293 L 455,292 L 456,292 L 455,292 L 456,292 L 456,291 L 457,291 L 458,291 L 458,290 L 458,291 L 458,290 L 459,290 L 460,290 L 460,291 L 461,291 L 462,291 L 463,291 L 463,292 L 464,292 L 465,293 L 466,293 L 466,294 L 467,294 L 468,294 L 468,295 L 469,295 L 470,295 L 470,296 L 471,296 L 472,296 L 472,297 L 473,297 L 473,296 L 473,297 L 473,296 L 473,297 L 473,296 L 474,296 L 474,297 L 475,297 L 475,298 L 475,297 L 476,297 L 477,297 L 477,298 L 477,297 L 478,297 L 479,297 L 479,296 L 479,297 L 480,298 L 481,298 L 483,300 L 483,301 L 484,301 L 484,302 L 485,302 L 485,303 L 485,304 L 485,305 L 486,305 L 487,305 L 487,306 L 488,306 L 488,305 L 489,305 L 490,305 L 490,304 L 491,304 L 491,305 L 492,305 L 492,304 L 493,304 L 493,305 L 494,305 L 493,305 L 494,305 L 494,304 L 494,305 L 495,305 L 495,306 L 496,306 L 497,306 L 498,306 L 499,306 L 499,307 L 499,306 L 499,307 L 499,306 L 500,306 L 501,306 L 501,307 L 501,308 L 502,308 L 503,308 L 503,309 L 504,309 L 505,309 L 505,310 L 506,310 L 506,311 L 505,311 L 505,312 L 505,313 L 504,313 L 504,314 L 504,313 L 504,314 L 503,314 L 503,315 L 502,315 L 502,316 L 501,316 L 501,317 L 502,317 L 501,317 L 500,317 L 500,318 L 499,318 L 499,319 L 500,319 L 499,319 L 499,320 L 500,320 L 500,321 L 500,322 L 500,321 L 499,321 L 499,322 L 499,321 L 498,321 L 497,321 L 497,322 L 496,322 L 496,323 L 496,324 L 496,325 L 496,326 L 496,327 L 495,327 L 495,328 L 496,328 L 495,328 L 495,329 L 496,329 L 497,329 L 497,330 L 497,331 L 498,331 L 498,332 L 498,331 L 499,331 L 499,332 L 499,331 L 499,332 L 500,332 L 500,333 L 501,333 L 501,334 L 501,335 L 500,336 L 501,336 L 501,337 L 501,336 L 500,336 L 499,336 L 498,336 L 497,336 L 497,335 L 496,335 L 496,336 L 495,336 L 495,337 L 494,337 L 493,337 L 493,336 L 493,337 L 493,336 L 492,336 L 492,337 L 492,336 L 491,336 L 491,337 L 493,338 L 493,339 L 492,339 L 492,338 L 492,339 L 491,339 L 491,338 L 491,339 L 490,339 L 489,339 L 489,340 L 488,340 L 489,340 L 488,340 L 489,340 L 488,340 L 488,341 L 488,342 L 488,343 L 487,343 L 489,343 L 490,343 L 490,344 L 489,344 L 489,345 L 489,346 L 490,346 L 491,346 L 491,347 L 491,348 L 490,348 L 490,349 L 490,348 L 489,348 L 489,349 L 488,349 L 488,348 L 487,348 L 486,348 L 487,348 L 486,348 L 486,349 L 487,349 L 486,349 L 487,349 L 488,349 L 488,350 L 489,350 L 490,350 L 489,351 L 489,352 L 490,352 L 490,353 L 491,353 L 491,354 L 491,355 L 491,356 L 490,356 L 490,357 L 491,357 L 490,357 L 490,358 L 489,358 L 489,357 L 489,358 L 489,359 L 488,359 L 488,360 L 487,360 L 487,361 L 487,362 L 488,362 L 487,362 L 487,363 L 487,364 L 486,364 L 485,364 L 486,365 L 485,365 L 486,365 L 485,365 L 485,366 L 485,367 L 484,367 L 484,368 L 483,368 L 482,368 L 481,368 L 480,368 L 479,368 L 479,369 L 478,369 L 478,370 L 479,370 L 479,371 L 478,371 L 478,372 L 479,372 L 478,372 L 478,373 L 479,374 L 479,373 L 479,374 L 478,374 L 479,374 L 478,374 L 478,375 "},"es": {"name": "Espírito Santo","path": "M 478,375 L 478,374 L 479,374 L 478,374 L 479,374 L 479,373 L 479,374 L 478,373 L 478,372 L 479,372 L 478,372 L 478,371 L 479,371 L 479,370 L 478,370 L 478,369 L 479,369 L 479,368 L 480,368 L 481,368 L 482,368 L 483,368 L 484,368 L 484,367 L 485,367 L 485,366 L 485,365 L 486,365 L 485,365 L 486,365 L 485,364 L 486,364 L 487,364 L 487,363 L 487,362 L 488,362 L 487,362 L 487,361 L 487,360 L 488,360 L 488,359 L 489,359 L 489,358 L 489,357 L 489,358 L 490,358 L 490,357 L 491,357 L 490,357 L 490,356 L 491,356 L 491,355 L 491,354 L 491,353 L 490,353 L 490,352 L 489,352 L 489,351 L 490,350 L 489,350 L 488,350 L 488,349 L 487,349 L 486,349 L 487,349 L 486,349 L 486,348 L 487,348 L 486,348 L 487,348 L 488,348 L 488,349 L 489,349 L 489,348 L 490,348 L 490,349 L 490,348 L 491,348 L 491,347 L 491,346 L 490,346 L 489,346 L 489,345 L 489,344 L 490,344 L 490,343 L 489,343 L 487,343 L 488,343 L 488,342 L 488,341 L 488,340 L 489,340 L 488,340 L 489,340 L 488,340 L 489,340 L 489,339 L 490,339 L 491,339 L 491,338 L 491,339 L 492,339 L 492,338 L 492,339 L 493,339 L 493,338 L 491,337 L 491,336 L 492,336 L 492,337 L 492,336 L 493,336 L 493,337 L 493,336 L 493,337 L 494,337 L 495,337 L 495,336 L 496,336 L 496,335 L 497,335 L 497,336 L 498,336 L 499,336 L 500,336 L 501,336 L 501,337 L 502,337 L 502,338 L 503,338 L 505,339 L 506,340 L 507,340 L 508,341 L 508,342 L 508,343 L 508,344 L 507,345 L 508,345 L 507,346 L 507,347 L 507,348 L 507,349 L 507,350 L 507,351 L 508,351 L 508,352 L 508,353 L 508,354 L 508,355 L 508,356 L 508,357 L 507,357 L 507,358 L 507,359 L 506,359 L 506,360 L 505,360 L 505,361 L 504,361 L 503,362 L 503,363 L 502,363 L 503,363 L 502,363 L 502,364 L 502,365 L 501,365 L 501,366 L 501,367 L 501,368 L 501,369 L 500,369 L 500,368 L 500,369 L 500,370 L 499,370 L 499,371 L 499,372 L 498,372 L 498,373 L 498,374 L 498,373 L 498,374 L 498,373 L 498,374 L 497,373 L 498,373 L 497,373 L 497,374 L 497,373 L 497,374 L 497,375 L 496,375 L 497,375 L 496,375 L 496,376 L 495,376 L 494,376 L 494,377 L 494,376 L 493,376 L 493,377 L 493,378 L 492,378 L 493,378 L 493,379 L 492,379 L 492,380 L 492,381 L 491,381 L 491,382 L 490,382 L 490,383 L 490,382 L 490,383 L 490,382 L 489,382 L 488,382 L 487,382 L 486,382 L 485,382 L 485,381 L 485,382 L 485,381 L 484,381 L 484,382 L 484,381 L 483,381 L 482,381 L 481,381 L 481,380 L 480,380 L 480,379 L 480,378 L 480,377 L 479,377 L 479,376 L 480,376 L 479,376 L 478,376 L 478,375 L 478,376 L 478,375 L 478,376 L 478,375 "},"rj": {"name": "Rio de Janeiro","path": "M 478,375 L 478,376 L 478,375 L 478,376 L 478,375 L 478,376 L 479,376 L 480,376 L 479,376 L 479,377 L 480,377 L 480,378 L 480,379 L 480,380 L 481,380 L 481,381 L 482,381 L 483,381 L 484,381 L 484,382 L 484,381 L 485,381 L 485,382 L 485,381 L 485,382 L 486,382 L 487,382 L 488,382 L 489,382 L 490,382 L 490,383 L 490,382 L 490,383 L 490,384 L 490,385 L 489,385 L 489,386 L 489,387 L 490,387 L 490,388 L 490,389 L 490,390 L 490,391 L 490,392 L 490,393 L 489,393 L 488,394 L 487,394 L 486,395 L 485,395 L 484,395 L 483,395 L 483,396 L 482,396 L 481,396 L 480,396 L 480,397 L 479,397 L 479,398 L 478,398 L 478,399 L 477,399 L 477,400 L 476,400 L 476,401 L 476,402 L 476,403 L 477,403 L 478,403 L 477,403 L 478,403 L 477,403 L 477,404 L 476,404 L 476,405 L 476,404 L 476,405 L 476,404 L 476,405 L 475,405 L 475,406 L 476,406 L 475,406 L 474,406 L 473,406 L 472,406 L 472,405 L 471,405 L 470,405 L 469,405 L 469,406 L 469,405 L 468,405 L 467,405 L 467,406 L 466,406 L 465,406 L 464,406 L 463,406 L 462,406 L 461,406 L 460,406 L 460,405 L 460,406 L 460,405 L 461,405 L 460,405 L 461,405 L 460,405 L 461,405 L 460,405 L 460,404 L 460,405 L 460,404 L 461,404 L 460,404 L 461,404 L 461,403 L 462,403 L 462,402 L 461,402 L 460,402 L 460,403 L 459,403 L 458,403 L 458,404 L 459,404 L 459,405 L 460,405 L 460,406 L 459,406 L 458,406 L 458,407 L 457,407 L 456,407 L 455,407 L 456,407 L 455,407 L 454,407 L 453,407 L 452,407 L 451,407 L 450,407 L 449,407 L 449,408 L 448,408 L 448,407 L 449,407 L 450,407 L 449,407 L 450,407 L 451,407 L 452,407 L 453,407 L 454,407 L 453,407 L 453,406 L 452,406 L 451,405 L 450,405 L 449,405 L 448,405 L 448,406 L 447,406 L 448,406 L 447,406 L 448,406 L 447,406 L 447,407 L 446,407 L 445,407 L 445,406 L 444,406 L 444,407 L 444,406 L 444,407 L 443,407 L 443,406 L 444,406 L 443,406 L 444,406 L 443,406 L 444,406 L 444,405 L 443,405 L 443,406 L 442,406 L 442,407 L 442,406 L 441,406 L 441,407 L 440,407 L 439,407 L 439,408 L 438,408 L 439,408 L 438,408 L 438,409 L 438,410 L 439,409 L 440,409 L 439,409 L 439,410 L 439,409 L 439,410 L 438,410 L 439,410 L 440,410 L 439,410 L 439,411 L 439,410 L 439,411 L 439,410 L 440,410 L 441,410 L 441,411 L 441,410 L 441,411 L 440,411 L 439,411 L 438,411 L 437,411 L 437,410 L 436,410 L 436,409 L 437,409 L 437,408 L 437,407 L 437,406 L 438,406 L 438,405 L 439,405 L 440,405 L 441,405 L 441,404 L 442,404 L 441,404 L 441,405 L 442,405 L 441,405 L 442,405 L 442,404 L 443,404 L 444,404 L 445,404 L 445,403 L 445,402 L 446,402 L 445,401 L 446,401 L 445,401 L 444,401 L 443,401 L 443,400 L 443,401 L 443,400 L 443,401 L 442,401 L 443,401 L 442,401 L 441,401 L 440,401 L 439,401 L 439,400 L 438,400 L 438,399 L 438,398 L 437,398 L 438,398 L 438,397 L 438,398 L 439,398 L 439,397 L 440,397 L 441,397 L 441,396 L 442,396 L 441,396 L 442,396 L 443,396 L 444,396 L 445,396 L 444,396 L 445,396 L 446,396 L 446,395 L 446,396 L 446,395 L 447,395 L 448,395 L 448,394 L 449,394 L 450,394 L 451,394 L 451,393 L 451,394 L 452,394 L 451,394 L 452,394 L 452,393 L 452,394 L 452,393 L 452,394 L 452,393 L 453,393 L 453,394 L 453,393 L 453,394 L 453,393 L 453,394 L 454,394 L 454,393 L 454,394 L 455,394 L 455,393 L 456,393 L 457,393 L 457,392 L 457,393 L 457,392 L 457,393 L 458,393 L 459,393 L 460,393 L 460,394 L 461,394 L 461,393 L 462,393 L 461,393 L 462,393 L 463,393 L 463,392 L 464,392 L 465,392 L 465,391 L 466,391 L 467,391 L 467,390 L 468,390 L 469,390 L 469,389 L 470,389 L 471,389 L 472,389 L 472,388 L 471,388 L 471,387 L 471,388 L 471,387 L 471,386 L 472,386 L 472,385 L 472,384 L 473,384 L 472,384 L 473,384 L 473,383 L 473,382 L 473,381 L 473,380 L 474,380 L 474,379 L 475,379 L 474,379 L 474,378 L 475,378 L 476,378 L 476,377 L 476,378 L 476,377 L 477,377 L 476,377 L 477,377 L 477,376 L 478,376 L 478,375 "},"sp": {"name": "São Paulo","path": "M 416,420 L 416,421 L 416,420 L 416,421 L 416,420 L 415,420 L 415,421 L 415,420 L 415,421 L 415,420 L 414,420 L 414,421 L 413,421 L 412,421 L 412,422 L 411,422 L 410,422 L 410,423 L 409,423 L 408,423 L 408,424 L 407,424 L 407,425 L 406,425 L 406,426 L 405,426 L 405,427 L 404,427 L 404,428 L 403,428 L 403,429 L 402,429 L 401,429 L 401,430 L 400,430 L 399,430 L 399,431 L 398,431 L 398,432 L 397,432 L 396,432 L 396,433 L 395,433 L 395,434 L 394,434 L 394,435 L 394,436 L 394,437 L 394,436 L 393,436 L 393,437 L 392,437 L 392,438 L 391,438 L 391,439 L 391,438 L 392,438 L 392,437 L 392,438 L 391,438 L 390,437 L 390,436 L 390,435 L 389,435 L 390,435 L 389,435 L 390,435 L 389,435 L 390,435 L 389,435 L 389,434 L 389,435 L 388,435 L 388,434 L 387,434 L 386,434 L 386,435 L 385,435 L 385,436 L 385,435 L 384,435 L 384,434 L 385,434 L 385,433 L 385,432 L 385,433 L 385,432 L 385,431 L 386,431 L 385,431 L 385,430 L 385,431 L 385,430 L 384,430 L 383,430 L 382,430 L 381,430 L 381,429 L 381,430 L 381,429 L 381,430 L 380,430 L 379,430 L 379,429 L 378,429 L 379,429 L 378,429 L 378,430 L 377,430 L 376,430 L 375,430 L 374,430 L 374,429 L 374,428 L 375,428 L 374,428 L 375,428 L 375,427 L 374,427 L 375,427 L 375,426 L 375,425 L 376,425 L 375,425 L 375,424 L 374,424 L 374,423 L 374,422 L 373,422 L 374,422 L 373,422 L 373,421 L 373,422 L 373,421 L 372,421 L 372,420 L 371,420 L 372,420 L 371,420 L 371,419 L 371,420 L 371,419 L 372,419 L 371,419 L 370,419 L 370,418 L 371,418 L 371,417 L 371,416 L 370,416 L 370,415 L 370,414 L 370,413 L 370,412 L 371,412 L 371,413 L 371,412 L 370,412 L 371,412 L 370,412 L 370,411 L 370,410 L 369,410 L 369,409 L 369,408 L 369,409 L 369,408 L 368,408 L 367,408 L 367,407 L 366,407 L 366,406 L 365,406 L 365,405 L 364,405 L 363,405 L 363,406 L 363,405 L 362,406 L 361,406 L 361,405 L 360,405 L 360,406 L 360,405 L 359,405 L 359,406 L 358,406 L 358,405 L 358,406 L 357,406 L 357,405 L 356,405 L 355,405 L 355,406 L 354,406 L 353,406 L 353,405 L 354,405 L 353,405 L 353,404 L 352,404 L 352,403 L 352,404 L 351,404 L 351,403 L 350,403 L 349,403 L 348,403 L 348,402 L 347,402 L 346,402 L 345,402 L 344,402 L 343,402 L 342,402 L 341,402 L 341,401 L 340,401 L 339,401 L 338,401 L 338,400 L 337,400 L 336,400 L 335,400 L 335,401 L 334,402 L 334,401 L 333,401 L 332,401 L 331,401 L 330,401 L 329,401 L 329,400 L 328,400 L 328,401 L 327,401 L 326,401 L 325,401 L 324,400 L 323,400 L 323,401 L 322,401 L 322,402 L 322,401 L 321,401 L 322,401 L 322,400 L 323,400 L 323,399 L 324,399 L 325,399 L 325,398 L 326,398 L 326,397 L 327,397 L 328,397 L 328,396 L 329,396 L 330,396 L 330,395 L 331,395 L 331,394 L 332,394 L 332,393 L 332,392 L 333,392 L 333,391 L 334,391 L 334,390 L 334,389 L 335,389 L 336,389 L 336,388 L 336,387 L 335,387 L 335,386 L 336,386 L 337,386 L 337,385 L 338,385 L 338,384 L 339,384 L 339,383 L 339,382 L 339,381 L 339,380 L 340,380 L 340,379 L 340,378 L 341,378 L 342,378 L 342,377 L 342,376 L 342,375 L 342,374 L 343,373 L 344,373 L 344,372 L 344,371 L 345,371 L 345,370 L 346,370 L 346,369 L 347,369 L 348,369 L 349,369 L 349,368 L 350,368 L 350,367 L 350,366 L 351,366 L 351,365 L 352,365 L 352,364 L 353,364 L 354,364 L 355,364 L 355,363 L 356,363 L 356,362 L 357,362 L 358,362 L 359,362 L 360,362 L 360,363 L 361,363 L 362,363 L 363,363 L 364,363 L 364,364 L 365,364 L 366,364 L 367,364 L 368,364 L 369,364 L 370,364 L 370,363 L 371,363 L 372,363 L 372,364 L 373,364 L 374,364 L 375,364 L 375,365 L 374,365 L 374,366 L 374,367 L 375,367 L 375,368 L 375,369 L 376,369 L 377,369 L 377,368 L 377,367 L 378,367 L 379,367 L 379,368 L 379,369 L 379,370 L 380,370 L 380,371 L 380,370 L 380,369 L 380,368 L 381,368 L 381,367 L 382,367 L 383,367 L 384,367 L 384,366 L 385,366 L 385,367 L 386,367 L 386,366 L 387,366 L 388,366 L 388,367 L 389,367 L 389,366 L 389,365 L 390,365 L 390,366 L 391,366 L 391,367 L 392,367 L 392,366 L 393,366 L 393,365 L 393,366 L 394,366 L 394,365 L 394,364 L 395,364 L 395,365 L 395,364 L 396,364 L 397,364 L 397,365 L 398,365 L 399,365 L 399,364 L 400,364 L 400,365 L 401,366 L 402,366 L 402,367 L 403,367 L 403,368 L 403,369 L 402,369 L 402,370 L 402,371 L 403,371 L 403,372 L 404,372 L 404,373 L 405,373 L 405,374 L 404,374 L 404,375 L 403,375 L 403,376 L 403,377 L 404,378 L 404,379 L 404,380 L 405,380 L 405,381 L 405,382 L 405,381 L 406,381 L 405,381 L 405,382 L 406,382 L 406,383 L 406,384 L 407,384 L 408,384 L 409,384 L 410,384 L 411,384 L 412,384 L 412,385 L 412,384 L 412,385 L 413,385 L 413,386 L 413,387 L 413,388 L 412,388 L 412,389 L 411,389 L 411,390 L 411,391 L 411,392 L 412,392 L 412,393 L 411,393 L 410,394 L 410,393 L 410,394 L 411,394 L 412,394 L 412,395 L 411,395 L 411,396 L 410,396 L 411,396 L 410,396 L 410,397 L 411,397 L 411,398 L 412,399 L 413,399 L 413,400 L 414,400 L 415,400 L 414,400 L 414,401 L 415,401 L 414,401 L 415,401 L 414,401 L 415,401 L 415,402 L 414,402 L 414,403 L 415,403 L 416,403 L 415,403 L 415,404 L 415,405 L 416,405 L 417,405 L 418,405 L 418,404 L 418,405 L 418,404 L 418,405 L 419,405 L 420,405 L 421,405 L 421,404 L 422,404 L 422,405 L 422,404 L 423,404 L 424,404 L 423,404 L 424,404 L 424,403 L 424,404 L 424,403 L 424,402 L 424,403 L 424,402 L 424,403 L 424,402 L 424,403 L 423,403 L 423,402 L 424,402 L 425,402 L 425,401 L 424,401 L 424,400 L 424,401 L 425,401 L 425,400 L 425,401 L 425,402 L 425,401 L 426,401 L 426,402 L 427,402 L 427,401 L 428,401 L 429,401 L 428,401 L 429,401 L 428,401 L 429,402 L 429,401 L 430,401 L 431,401 L 431,400 L 432,400 L 432,399 L 433,399 L 434,399 L 435,399 L 436,399 L 436,398 L 437,398 L 438,398 L 438,399 L 438,400 L 439,400 L 439,401 L 440,401 L 441,401 L 442,401 L 443,401 L 442,401 L 443,401 L 443,400 L 443,401 L 443,400 L 443,401 L 444,401 L 445,401 L 446,401 L 445,401 L 446,402 L 445,402 L 445,403 L 445,404 L 444,404 L 443,404 L 442,404 L 442,405 L 441,405 L 442,405 L 441,405 L 441,404 L 442,404 L 441,404 L 441,405 L 440,405 L 439,405 L 438,405 L 438,406 L 437,406 L 437,407 L 437,408 L 437,409 L 436,409 L 436,410 L 437,410 L 437,411 L 438,411 L 438,412 L 438,411 L 438,412 L 437,412 L 436,412 L 436,411 L 436,412 L 436,411 L 435,411 L 435,412 L 434,412 L 435,412 L 434,412 L 433,412 L 433,413 L 434,413 L 433,413 L 434,413 L 433,413 L 433,414 L 433,413 L 433,414 L 432,414 L 432,413 L 432,414 L 432,413 L 432,414 L 432,413 L 432,414 L 431,414 L 431,415 L 430,415 L 430,414 L 430,415 L 429,415 L 428,415 L 428,416 L 429,416 L 429,417 L 428,417 L 429,417 L 429,418 L 428,418 L 427,418 L 428,418 L 427,418 L 426,418 L 427,418 L 427,417 L 426,417 L 426,418 L 426,417 L 427,417 L 426,417 L 426,418 L 426,417 L 425,417 L 426,417 L 425,417 L 426,417 L 425,417 L 424,417 L 423,417 L 422,417 L 421,417 L 420,417 L 420,418 L 420,417 L 420,418 L 419,418 L 418,418 L 419,418 L 418,418 L 418,419 L 418,420 L 417,420 L 416,420 "},"pr": {"name": "Paraná","path": "M 336,400 L 337,400 L 338,400 L 338,401 L 339,401 L 340,401 L 341,401 L 341,402 L 342,402 L 343,402 L 344,402 L 345,402 L 346,402 L 347,402 L 348,402 L 348,403 L 349,403 L 350,403 L 351,403 L 351,404 L 352,404 L 352,403 L 352,404 L 353,404 L 353,405 L 354,405 L 353,405 L 353,406 L 354,406 L 355,406 L 355,405 L 356,405 L 357,405 L 357,406 L 358,406 L 358,405 L 358,406 L 359,406 L 359,405 L 360,405 L 360,406 L 360,405 L 361,405 L 361,406 L 362,406 L 363,405 L 363,406 L 363,405 L 364,405 L 365,405 L 365,406 L 366,406 L 366,407 L 367,407 L 367,408 L 368,408 L 369,408 L 369,409 L 369,408 L 369,409 L 369,410 L 370,410 L 370,411 L 370,412 L 371,412 L 370,412 L 371,412 L 371,413 L 371,412 L 370,412 L 370,413 L 370,414 L 370,415 L 370,416 L 371,416 L 371,417 L 371,418 L 370,418 L 370,419 L 371,419 L 372,419 L 371,419 L 371,420 L 371,419 L 371,420 L 372,420 L 371,420 L 372,420 L 372,421 L 373,421 L 373,422 L 373,421 L 373,422 L 374,422 L 373,422 L 374,422 L 374,423 L 374,424 L 375,424 L 375,425 L 376,425 L 375,425 L 375,426 L 375,427 L 374,427 L 375,427 L 375,428 L 374,428 L 375,428 L 374,428 L 374,429 L 374,430 L 375,430 L 376,430 L 377,430 L 378,430 L 378,429 L 379,429 L 378,429 L 379,429 L 379,430 L 380,430 L 381,430 L 381,429 L 381,430 L 381,429 L 381,430 L 382,430 L 383,430 L 384,430 L 385,430 L 385,431 L 385,430 L 385,431 L 386,431 L 385,431 L 385,432 L 385,433 L 385,432 L 385,433 L 385,434 L 384,434 L 384,435 L 385,435 L 385,436 L 385,435 L 386,435 L 386,434 L 387,434 L 388,434 L 388,435 L 389,435 L 389,434 L 389,435 L 390,435 L 389,435 L 390,435 L 389,435 L 390,435 L 389,435 L 390,435 L 390,436 L 390,437 L 391,438 L 392,438 L 392,437 L 392,438 L 391,438 L 391,439 L 391,438 L 391,439 L 390,439 L 390,440 L 390,441 L 389,441 L 388,441 L 389,441 L 388,442 L 387,442 L 387,443 L 386,443 L 386,444 L 386,445 L 385,445 L 385,446 L 385,447 L 384,447 L 384,448 L 384,447 L 383,447 L 383,448 L 381,448 L 380,448 L 379,448 L 378,448 L 379,448 L 378,448 L 377,448 L 378,448 L 377,448 L 376,448 L 375,448 L 375,449 L 375,448 L 375,449 L 374,449 L 375,449 L 374,449 L 375,449 L 374,449 L 375,449 L 375,450 L 374,450 L 373,450 L 372,450 L 372,451 L 372,450 L 372,451 L 371,451 L 370,451 L 371,451 L 370,451 L 369,451 L 369,450 L 368,450 L 368,449 L 368,450 L 368,449 L 368,450 L 367,450 L 367,449 L 366,449 L 367,449 L 366,449 L 366,448 L 366,449 L 366,448 L 366,449 L 366,448 L 365,448 L 366,448 L 365,448 L 365,449 L 365,448 L 364,448 L 365,448 L 365,449 L 364,449 L 364,448 L 364,449 L 364,448 L 363,448 L 363,449 L 363,448 L 362,448 L 362,449 L 363,449 L 362,449 L 361,449 L 360,449 L 360,450 L 360,449 L 359,449 L 358,449 L 359,449 L 358,449 L 358,448 L 358,449 L 358,448 L 358,449 L 358,448 L 357,448 L 357,449 L 357,448 L 356,448 L 356,449 L 357,449 L 356,449 L 356,450 L 355,450 L 355,451 L 354,451 L 355,451 L 355,452 L 354,452 L 354,451 L 353,451 L 353,452 L 353,451 L 353,452 L 352,452 L 352,451 L 352,452 L 351,452 L 351,451 L 350,451 L 350,452 L 349,452 L 348,452 L 348,453 L 347,453 L 347,454 L 347,455 L 347,454 L 347,455 L 347,456 L 348,456 L 347,456 L 347,457 L 348,457 L 347,457 L 348,457 L 347,457 L 346,457 L 345,457 L 345,458 L 345,457 L 344,457 L 344,456 L 343,456 L 342,456 L 341,456 L 340,456 L 339,456 L 338,456 L 337,456 L 336,456 L 336,455 L 335,455 L 336,455 L 335,455 L 334,455 L 334,454 L 334,455 L 333,455 L 333,454 L 333,455 L 333,454 L 332,454 L 331,454 L 330,454 L 329,454 L 328,454 L 328,453 L 327,453 L 326,453 L 325,453 L 324,453 L 323,453 L 322,453 L 322,454 L 322,453 L 322,454 L 322,453 L 321,453 L 320,453 L 320,452 L 319,452 L 318,452 L 318,451 L 318,452 L 317,452 L 316,452 L 315,452 L 314,452 L 314,451 L 314,450 L 313,450 L 313,449 L 312,449 L 312,448 L 311,448 L 311,447 L 312,447 L 311,447 L 312,447 L 311,447 L 312,447 L 311,447 L 311,446 L 311,445 L 311,446 L 312,446 L 312,445 L 311,445 L 311,444 L 311,445 L 311,444 L 311,443 L 310,443 L 311,443 L 310,443 L 309,443 L 309,442 L 308,442 L 308,443 L 307,443 L 307,442 L 308,442 L 308,441 L 307,441 L 307,442 L 306,442 L 307,442 L 306,442 L 306,443 L 306,442 L 305,442 L 304,442 L 304,443 L 304,442 L 304,443 L 303,443 L 303,444 L 303,443 L 302,443 L 302,442 L 301,442 L 301,441 L 300,441 L 300,440 L 301,440 L 301,439 L 302,439 L 302,438 L 302,437 L 303,437 L 303,436 L 303,435 L 303,434 L 303,433 L 303,432 L 304,431 L 304,430 L 304,429 L 305,429 L 305,428 L 304,428 L 304,427 L 305,427 L 305,426 L 305,425 L 305,424 L 304,423 L 305,423 L 304,423 L 304,422 L 305,422 L 305,421 L 306,421 L 306,420 L 307,420 L 308,420 L 308,419 L 308,418 L 308,417 L 308,416 L 309,415 L 309,414 L 309,413 L 310,413 L 310,412 L 311,412 L 312,412 L 312,411 L 313,411 L 313,410 L 313,409 L 314,409 L 314,408 L 314,407 L 314,406 L 315,406 L 315,405 L 316,405 L 316,404 L 317,404 L 318,404 L 318,403 L 319,403 L 320,403 L 320,402 L 321,402 L 321,401 L 322,401 L 322,402 L 322,401 L 323,401 L 323,400 L 324,400 L 325,401 L 326,401 L 327,401 L 328,401 L 328,400 L 329,400 L 329,401 L 330,401 L 331,401 L 332,401 L 333,401 L 334,401 L 334,402 L 335,401 L 335,400 L 336,400 "},"sc": {"name": "Santa Catarina","path": "M 384,448 L 384,449 L 384,450 L 385,450 L 385,451 L 386,451 L 385,451 L 386,451 L 385,451 L 385,452 L 385,453 L 384,453 L 384,454 L 384,455 L 383,456 L 383,457 L 383,458 L 383,459 L 384,459 L 384,460 L 384,461 L 384,462 L 385,462 L 384,462 L 385,462 L 384,462 L 384,463 L 384,464 L 385,464 L 386,464 L 386,465 L 385,465 L 386,465 L 385,465 L 384,465 L 384,466 L 385,466 L 385,467 L 385,468 L 384,468 L 385,468 L 385,467 L 386,467 L 387,467 L 387,468 L 387,469 L 387,470 L 386,470 L 386,471 L 386,472 L 385,472 L 386,472 L 386,473 L 385,473 L 385,474 L 384,474 L 385,474 L 384,474 L 384,475 L 384,476 L 384,477 L 384,478 L 383,478 L 383,479 L 384,479 L 383,479 L 383,480 L 383,481 L 382,481 L 382,482 L 382,483 L 382,484 L 381,484 L 380,485 L 379,485 L 378,486 L 377,486 L 377,487 L 376,487 L 375,487 L 375,488 L 374,488 L 374,489 L 373,489 L 373,490 L 372,490 L 372,491 L 371,491 L 371,492 L 370,492 L 370,493 L 369,493 L 369,494 L 368,494 L 367,494 L 367,493 L 366,493 L 365,493 L 364,493 L 363,493 L 363,494 L 364,494 L 364,495 L 364,494 L 363,494 L 363,493 L 362,493 L 363,493 L 362,493 L 363,493 L 362,493 L 363,493 L 363,492 L 363,493 L 364,493 L 363,493 L 363,492 L 363,493 L 363,492 L 364,492 L 363,492 L 364,492 L 363,492 L 364,492 L 364,493 L 364,492 L 365,492 L 364,492 L 365,492 L 365,491 L 365,492 L 365,491 L 365,492 L 365,491 L 365,490 L 366,490 L 366,489 L 365,489 L 365,488 L 366,488 L 365,488 L 365,487 L 365,486 L 366,486 L 367,486 L 367,485 L 367,486 L 367,485 L 367,484 L 368,484 L 368,485 L 368,484 L 368,485 L 369,485 L 369,484 L 368,484 L 368,483 L 368,482 L 368,483 L 367,483 L 367,482 L 367,483 L 366,483 L 367,483 L 367,482 L 366,482 L 367,482 L 366,482 L 366,483 L 365,483 L 365,482 L 364,482 L 364,483 L 364,482 L 363,482 L 363,483 L 363,482 L 363,483 L 363,482 L 362,482 L 363,482 L 363,483 L 362,483 L 362,482 L 361,482 L 360,482 L 359,482 L 358,482 L 357,482 L 357,481 L 356,481 L 355,481 L 355,480 L 355,479 L 354,479 L 354,478 L 353,478 L 352,478 L 353,478 L 353,477 L 352,477 L 352,476 L 352,475 L 351,475 L 350,475 L 351,475 L 350,475 L 350,474 L 349,474 L 349,473 L 348,473 L 347,473 L 347,472 L 346,472 L 347,472 L 346,472 L 346,471 L 345,471 L 346,471 L 345,471 L 344,471 L 344,470 L 343,470 L 343,469 L 342,469 L 342,470 L 342,469 L 341,469 L 340,469 L 339,469 L 338,469 L 339,469 L 338,469 L 338,468 L 338,469 L 337,469 L 337,468 L 338,468 L 337,468 L 337,467 L 337,468 L 338,467 L 337,467 L 336,467 L 335,467 L 335,466 L 334,466 L 335,466 L 334,466 L 334,467 L 334,466 L 333,466 L 334,466 L 333,466 L 332,466 L 331,466 L 331,465 L 331,466 L 331,465 L 330,465 L 330,466 L 329,466 L 329,465 L 329,466 L 328,466 L 328,465 L 327,465 L 327,466 L 327,465 L 327,466 L 326,466 L 326,465 L 325,465 L 325,464 L 325,465 L 324,465 L 324,464 L 323,464 L 323,465 L 323,464 L 322,464 L 323,464 L 323,463 L 322,463 L 322,464 L 321,464 L 321,465 L 321,464 L 320,464 L 320,465 L 320,464 L 319,464 L 319,465 L 318,465 L 319,465 L 319,464 L 318,464 L 318,463 L 317,463 L 317,464 L 316,464 L 316,465 L 315,465 L 315,464 L 315,465 L 314,465 L 314,464 L 313,464 L 313,465 L 312,465 L 312,464 L 311,464 L 312,464 L 311,464 L 312,464 L 312,463 L 312,464 L 312,463 L 312,462 L 312,463 L 312,462 L 313,462 L 312,462 L 313,462 L 313,461 L 313,462 L 313,461 L 314,461 L 313,461 L 314,461 L 313,461 L 314,461 L 313,460 L 314,460 L 313,460 L 313,459 L 313,458 L 312,458 L 313,458 L 312,458 L 313,458 L 313,457 L 312,457 L 313,457 L 313,456 L 313,455 L 313,454 L 313,453 L 313,454 L 313,453 L 314,453 L 313,453 L 314,453 L 314,452 L 315,452 L 316,452 L 317,452 L 318,452 L 318,451 L 318,452 L 319,452 L 320,452 L 320,453 L 321,453 L 322,453 L 322,454 L 322,453 L 322,454 L 322,453 L 323,453 L 324,453 L 325,453 L 326,453 L 327,453 L 328,453 L 328,454 L 329,454 L 330,454 L 331,454 L 332,454 L 333,454 L 333,455 L 333,454 L 333,455 L 334,455 L 334,454 L 334,455 L 335,455 L 336,455 L 335,455 L 336,455 L 336,456 L 337,456 L 338,456 L 339,456 L 340,456 L 341,456 L 342,456 L 343,456 L 344,456 L 344,457 L 345,457 L 345,458 L 345,457 L 346,457 L 347,457 L 348,457 L 347,457 L 348,457 L 347,457 L 347,456 L 348,456 L 347,456 L 347,455 L 347,454 L 347,455 L 347,454 L 347,453 L 348,453 L 348,452 L 349,452 L 350,452 L 350,451 L 351,451 L 351,452 L 352,452 L 352,451 L 352,452 L 353,452 L 353,451 L 353,452 L 353,451 L 354,451 L 354,452 L 355,452 L 355,451 L 354,451 L 355,451 L 355,450 L 356,450 L 356,449 L 357,449 L 356,449 L 356,448 L 357,448 L 357,449 L 357,448 L 358,448 L 358,449 L 358,448 L 358,449 L 358,448 L 358,449 L 359,449 L 358,449 L 359,449 L 360,449 L 360,450 L 360,449 L 361,449 L 362,449 L 363,449 L 362,449 L 362,448 L 363,448 L 363,449 L 363,448 L 364,448 L 364,449 L 364,448 L 364,449 L 365,449 L 365,448 L 364,448 L 365,448 L 365,449 L 365,448 L 366,448 L 365,448 L 366,448 L 366,449 L 366,448 L 366,449 L 366,448 L 366,449 L 367,449 L 366,449 L 367,449 L 367,450 L 368,450 L 368,449 L 368,450 L 368,449 L 368,450 L 369,450 L 369,451 L 370,451 L 371,451 L 370,451 L 371,451 L 372,451 L 372,450 L 372,451 L 372,450 L 373,450 L 374,450 L 375,450 L 375,449 L 374,449 L 375,449 L 374,449 L 375,449 L 374,449 L 375,449 L 375,448 L 375,449 L 375,448 L 376,448 L 377,448 L 378,448 L 377,448 L 378,448 L 379,448 L 378,448 L 379,448 L 380,448 L 381,448 L 383,448 L 383,447 L 384,447 L 384,448 "},"rs": {"name": "Rio Grande do Sul","path": "M 338,468 L 338,469 L 339,469 L 338,469 L 339,469 L 340,469 L 341,469 L 342,469 L 342,470 L 342,469 L 343,469 L 343,470 L 344,470 L 344,471 L 345,471 L 346,471 L 345,471 L 346,471 L 346,472 L 347,472 L 346,472 L 347,472 L 347,473 L 348,473 L 349,473 L 349,474 L 350,474 L 350,475 L 351,475 L 350,475 L 351,475 L 352,475 L 352,476 L 352,477 L 353,477 L 353,478 L 352,478 L 353,478 L 354,478 L 354,479 L 355,479 L 355,480 L 355,481 L 356,481 L 357,481 L 357,482 L 358,482 L 359,482 L 360,482 L 361,482 L 362,482 L 362,483 L 363,483 L 363,482 L 362,482 L 363,482 L 363,483 L 363,482 L 363,483 L 363,482 L 364,482 L 364,483 L 364,482 L 365,482 L 365,483 L 366,483 L 366,482 L 367,482 L 366,482 L 367,482 L 367,483 L 366,483 L 367,483 L 367,482 L 367,483 L 368,483 L 368,482 L 368,483 L 368,484 L 369,484 L 369,485 L 368,485 L 368,484 L 368,485 L 368,484 L 367,484 L 367,485 L 367,486 L 367,485 L 367,486 L 366,486 L 365,486 L 365,487 L 365,488 L 366,488 L 365,488 L 365,489 L 366,489 L 366,490 L 365,490 L 365,491 L 365,492 L 365,491 L 365,492 L 365,491 L 365,492 L 364,492 L 365,492 L 364,492 L 364,493 L 364,492 L 363,492 L 364,492 L 363,492 L 364,492 L 363,492 L 363,493 L 363,492 L 363,493 L 364,493 L 363,493 L 363,492 L 363,493 L 362,493 L 363,493 L 362,493 L 363,493 L 362,493 L 363,493 L 363,494 L 364,494 L 364,495 L 364,494 L 363,494 L 363,493 L 364,493 L 365,493 L 366,493 L 367,493 L 367,494 L 368,494 L 369,494 L 369,495 L 368,495 L 368,496 L 367,496 L 367,497 L 366,497 L 366,498 L 366,499 L 365,499 L 365,500 L 364,500 L 364,501 L 364,502 L 363,502 L 363,503 L 363,504 L 363,505 L 362,505 L 362,506 L 362,507 L 361,507 L 361,508 L 361,509 L 361,510 L 360,510 L 360,511 L 359,512 L 358,513 L 358,514 L 357,514 L 357,515 L 356,516 L 356,517 L 355,517 L 355,518 L 354,519 L 354,520 L 353,520 L 352,521 L 352,522 L 351,522 L 350,523 L 349,523 L 349,524 L 348,524 L 348,525 L 347,525 L 347,526 L 346,526 L 346,527 L 345,527 L 344,528 L 343,528 L 342,529 L 341,529 L 341,530 L 340,530 L 339,530 L 339,531 L 338,531 L 338,532 L 337,532 L 337,533 L 336,533 L 336,534 L 336,533 L 336,532 L 336,531 L 337,531 L 336,530 L 336,529 L 335,529 L 336,529 L 335,529 L 336,529 L 335,529 L 336,529 L 337,529 L 338,529 L 338,530 L 339,530 L 339,529 L 340,529 L 339,529 L 340,529 L 339,529 L 340,529 L 341,529 L 341,528 L 342,528 L 342,527 L 343,527 L 343,526 L 344,526 L 344,525 L 344,526 L 345,526 L 344,526 L 344,525 L 345,525 L 344,525 L 345,525 L 345,524 L 345,525 L 346,525 L 347,525 L 347,524 L 348,524 L 348,523 L 348,522 L 349,522 L 349,521 L 348,521 L 348,520 L 348,519 L 349,519 L 350,519 L 350,518 L 351,518 L 351,517 L 351,516 L 352,516 L 353,516 L 353,515 L 354,515 L 355,515 L 355,514 L 355,513 L 355,512 L 355,511 L 355,510 L 355,509 L 356,509 L 356,508 L 356,509 L 356,510 L 356,511 L 357,511 L 357,510 L 357,509 L 357,508 L 357,507 L 356,507 L 356,506 L 356,507 L 356,506 L 356,507 L 356,506 L 355,507 L 356,508 L 355,508 L 354,508 L 353,508 L 352,508 L 352,509 L 352,510 L 351,510 L 351,509 L 350,509 L 350,508 L 350,509 L 350,508 L 350,507 L 350,508 L 350,507 L 349,507 L 348,507 L 349,507 L 348,507 L 348,506 L 347,506 L 348,506 L 347,506 L 347,505 L 348,505 L 348,504 L 347,504 L 347,505 L 347,504 L 347,505 L 347,504 L 346,505 L 346,506 L 346,507 L 347,507 L 347,508 L 348,508 L 348,509 L 349,509 L 349,510 L 349,511 L 349,510 L 349,509 L 348,509 L 348,510 L 347,510 L 347,511 L 347,512 L 347,513 L 347,514 L 347,515 L 346,515 L 347,515 L 347,514 L 346,514 L 346,513 L 345,513 L 345,514 L 345,515 L 345,516 L 346,516 L 345,516 L 344,516 L 344,517 L 344,518 L 344,519 L 345,519 L 344,519 L 343,519 L 342,519 L 342,520 L 342,521 L 341,521 L 341,522 L 340,522 L 340,521 L 340,522 L 339,522 L 338,522 L 339,522 L 338,522 L 337,522 L 337,523 L 338,523 L 337,523 L 337,524 L 337,525 L 337,526 L 337,527 L 336,527 L 335,527 L 335,528 L 334,528 L 334,529 L 333,529 L 333,530 L 334,530 L 335,530 L 335,531 L 334,531 L 334,532 L 333,532 L 334,532 L 334,531 L 335,531 L 335,532 L 336,532 L 335,532 L 334,532 L 334,533 L 333,533 L 334,533 L 334,532 L 335,532 L 336,532 L 335,532 L 335,533 L 335,532 L 336,532 L 336,533 L 335,533 L 335,534 L 334,534 L 334,535 L 333,535 L 333,536 L 333,537 L 332,537 L 332,538 L 331,539 L 331,540 L 331,541 L 331,542 L 330,542 L 330,543 L 330,544 L 329,545 L 329,546 L 328,546 L 328,547 L 328,548 L 327,548 L 327,549 L 326,549 L 326,550 L 325,550 L 324,551 L 323,552 L 322,552 L 322,553 L 321,553 L 321,554 L 320,554 L 320,555 L 319,555 L 318,555 L 318,556 L 317,556 L 317,555 L 316,555 L 315,555 L 316,555 L 315,555 L 315,554 L 316,554 L 315,554 L 316,554 L 316,553 L 317,553 L 316,553 L 317,553 L 317,552 L 317,553 L 317,552 L 317,551 L 317,550 L 316,549 L 317,549 L 317,548 L 317,547 L 317,548 L 318,547 L 318,546 L 319,546 L 318,546 L 318,547 L 319,547 L 320,546 L 320,545 L 321,545 L 321,544 L 321,543 L 322,543 L 323,543 L 323,542 L 323,543 L 324,544 L 325,544 L 326,544 L 327,543 L 327,542 L 328,542 L 328,541 L 328,540 L 329,539 L 329,538 L 328,538 L 328,537 L 327,536 L 327,535 L 328,535 L 328,534 L 327,534 L 326,534 L 327,534 L 326,534 L 326,535 L 326,534 L 326,535 L 326,534 L 327,534 L 326,534 L 327,534 L 327,535 L 326,535 L 326,536 L 325,536 L 326,536 L 326,537 L 326,536 L 326,537 L 327,537 L 326,537 L 326,538 L 325,538 L 324,538 L 323,538 L 323,539 L 323,540 L 322,540 L 322,541 L 321,541 L 321,540 L 321,541 L 320,541 L 320,540 L 319,540 L 318,540 L 318,539 L 318,540 L 317,540 L 317,539 L 316,539 L 316,538 L 315,538 L 315,537 L 314,537 L 314,536 L 314,535 L 313,535 L 314,535 L 313,535 L 313,534 L 313,533 L 312,533 L 312,532 L 311,532 L 311,531 L 311,532 L 311,531 L 310,531 L 309,531 L 310,531 L 310,530 L 309,530 L 308,530 L 308,531 L 308,530 L 307,530 L 306,529 L 303,527 L 303,526 L 302,526 L 302,525 L 301,525 L 301,524 L 300,524 L 299,524 L 298,524 L 297,524 L 297,523 L 296,523 L 297,523 L 296,523 L 296,522 L 295,522 L 295,521 L 295,522 L 294,522 L 293,522 L 293,521 L 292,521 L 292,520 L 291,520 L 290,519 L 290,520 L 290,519 L 291,519 L 290,519 L 291,519 L 290,519 L 291,519 L 290,519 L 290,518 L 289,518 L 289,517 L 288,517 L 288,516 L 287,516 L 287,515 L 287,516 L 287,515 L 286,515 L 286,516 L 286,517 L 285,517 L 285,518 L 284,518 L 283,518 L 283,519 L 282,519 L 281,519 L 281,518 L 281,517 L 281,516 L 281,515 L 280,515 L 280,514 L 279,514 L 279,513 L 279,512 L 278,512 L 278,511 L 277,511 L 277,512 L 277,511 L 276,511 L 276,510 L 275,510 L 275,509 L 274,509 L 274,508 L 273,508 L 273,507 L 272,507 L 273,507 L 272,507 L 272,506 L 272,507 L 272,506 L 272,507 L 271,507 L 271,506 L 270,506 L 270,505 L 269,505 L 268,505 L 269,505 L 268,505 L 267,505 L 266,505 L 266,506 L 266,505 L 266,506 L 265,506 L 265,507 L 265,508 L 264,508 L 264,507 L 264,508 L 263,508 L 263,507 L 263,508 L 262,508 L 261,508 L 262,508 L 261,508 L 261,507 L 260,507 L 260,508 L 260,507 L 259,507 L 260,507 L 259,507 L 259,506 L 258,506 L 259,506 L 260,506 L 261,505 L 261,504 L 262,504 L 263,504 L 263,503 L 263,502 L 263,501 L 264,501 L 265,501 L 266,500 L 267,500 L 267,499 L 268,498 L 269,497 L 270,497 L 270,496 L 270,495 L 271,495 L 272,495 L 272,494 L 272,493 L 272,492 L 273,492 L 273,491 L 274,491 L 275,491 L 276,490 L 275,490 L 275,489 L 276,489 L 277,489 L 277,488 L 277,487 L 278,487 L 279,487 L 279,486 L 279,485 L 280,485 L 281,485 L 281,484 L 281,483 L 282,483 L 283,483 L 283,482 L 283,481 L 284,481 L 285,481 L 285,482 L 286,482 L 285,481 L 286,481 L 286,480 L 285,480 L 284,480 L 284,479 L 285,479 L 286,479 L 286,478 L 287,478 L 288,478 L 288,477 L 289,477 L 290,477 L 290,476 L 290,475 L 291,475 L 292,475 L 292,474 L 293,474 L 294,474 L 295,474 L 295,473 L 294,473 L 295,473 L 296,473 L 296,472 L 296,471 L 297,471 L 297,470 L 298,470 L 298,469 L 298,470 L 299,470 L 300,470 L 300,469 L 300,470 L 300,469 L 301,469 L 301,468 L 301,469 L 302,469 L 303,469 L 303,468 L 302,468 L 303,468 L 304,468 L 304,469 L 304,468 L 305,468 L 306,467 L 306,466 L 307,466 L 308,466 L 309,466 L 309,465 L 310,465 L 310,464 L 311,464 L 312,464 L 312,465 L 313,465 L 313,464 L 314,464 L 314,465 L 315,465 L 315,464 L 315,465 L 316,465 L 316,464 L 317,464 L 317,463 L 318,463 L 318,464 L 319,464 L 319,465 L 318,465 L 319,465 L 319,464 L 320,464 L 320,465 L 320,464 L 321,464 L 321,465 L 321,464 L 322,464 L 322,463 L 323,463 L 323,464 L 322,464 L 323,464 L 323,465 L 323,464 L 324,464 L 324,465 L 325,465 L 325,464 L 325,465 L 326,465 L 326,466 L 327,466 L 327,465 L 327,466 L 327,465 L 328,465 L 328,466 L 329,466 L 329,465 L 329,466 L 330,466 L 330,465 L 331,465 L 331,466 L 331,465 L 331,466 L 332,466 L 333,466 L 334,466 L 333,466 L 334,466 L 334,467 L 334,466 L 335,466 L 334,466 L 335,466 L 335,467 L 336,467 L 337,467 L 338,467 L 337,468 L 337,467 L 337,468 L 338,468 L 337,468 L 337,469 L 338,469 L 338,468 "},"ms": {"name": "Mato Grosso do Sul","path": "M 280,325 L 281,325 L 281,326 L 282,326 L 282,327 L 282,326 L 282,327 L 283,327 L 284,327 L 284,328 L 284,327 L 285,327 L 285,328 L 286,328 L 287,328 L 287,329 L 288,329 L 288,330 L 289,330 L 290,330 L 290,331 L 290,330 L 290,331 L 290,330 L 290,331 L 291,331 L 291,330 L 291,331 L 292,331 L 292,332 L 293,332 L 294,332 L 295,332 L 295,331 L 295,332 L 296,332 L 296,331 L 297,332 L 297,331 L 297,332 L 297,331 L 298,331 L 298,330 L 299,330 L 300,330 L 301,330 L 301,329 L 301,330 L 301,329 L 301,330 L 302,330 L 303,330 L 303,331 L 304,331 L 304,332 L 305,332 L 306,332 L 306,331 L 307,331 L 307,332 L 307,331 L 307,332 L 307,331 L 308,331 L 308,332 L 308,331 L 308,330 L 309,330 L 309,329 L 310,329 L 310,328 L 311,328 L 311,327 L 312,327 L 312,326 L 313,326 L 313,330 L 313,332 L 312,332 L 311,332 L 311,333 L 310,333 L 310,334 L 310,335 L 310,336 L 311,336 L 312,336 L 312,337 L 312,336 L 312,337 L 313,337 L 314,337 L 313,337 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 315,337 L 316,337 L 317,337 L 318,337 L 319,337 L 320,337 L 321,337 L 322,337 L 322,338 L 321,338 L 321,339 L 321,340 L 321,341 L 322,341 L 321,341 L 322,341 L 322,342 L 323,342 L 323,341 L 324,341 L 325,341 L 326,341 L 326,342 L 326,343 L 325,343 L 324,343 L 324,344 L 323,344 L 323,345 L 324,345 L 324,346 L 325,346 L 326,346 L 327,346 L 328,346 L 329,346 L 330,346 L 331,346 L 331,347 L 331,348 L 332,348 L 333,348 L 334,349 L 335,349 L 334,349 L 335,349 L 335,350 L 336,350 L 337,350 L 338,350 L 337,350 L 338,350 L 338,351 L 339,351 L 339,352 L 339,351 L 339,352 L 340,352 L 341,352 L 341,353 L 342,353 L 342,352 L 342,353 L 343,352 L 343,353 L 343,352 L 343,353 L 344,353 L 345,353 L 346,353 L 346,354 L 347,354 L 346,354 L 347,354 L 347,355 L 347,354 L 348,354 L 348,355 L 349,355 L 350,355 L 350,356 L 351,356 L 351,357 L 352,357 L 351,357 L 351,358 L 352,358 L 352,359 L 351,359 L 351,360 L 350,360 L 350,361 L 350,362 L 350,363 L 351,363 L 351,364 L 350,364 L 351,364 L 351,365 L 350,365 L 351,365 L 351,366 L 350,366 L 350,367 L 350,368 L 349,368 L 349,369 L 348,369 L 347,369 L 346,369 L 346,370 L 345,370 L 345,371 L 344,371 L 344,372 L 344,373 L 343,373 L 342,374 L 342,375 L 342,376 L 342,377 L 342,378 L 341,378 L 340,378 L 340,379 L 340,380 L 339,380 L 339,381 L 339,382 L 339,383 L 339,384 L 338,384 L 338,385 L 337,385 L 337,386 L 336,386 L 335,386 L 335,387 L 336,387 L 336,388 L 336,389 L 335,389 L 334,389 L 334,390 L 334,391 L 333,391 L 333,392 L 332,392 L 332,393 L 332,394 L 331,394 L 331,395 L 330,395 L 330,396 L 329,396 L 328,396 L 328,397 L 327,397 L 326,397 L 326,398 L 325,398 L 325,399 L 324,399 L 323,399 L 323,400 L 322,400 L 322,401 L 321,401 L 321,402 L 320,402 L 320,403 L 319,403 L 318,403 L 318,404 L 317,404 L 316,404 L 316,405 L 315,405 L 315,406 L 314,406 L 314,407 L 314,408 L 314,409 L 313,409 L 313,410 L 313,411 L 312,411 L 312,412 L 311,412 L 310,412 L 310,413 L 309,413 L 309,414 L 309,415 L 308,416 L 308,417 L 308,418 L 308,419 L 308,420 L 307,420 L 306,420 L 306,421 L 305,421 L 305,420 L 304,420 L 303,420 L 303,419 L 302,419 L 302,418 L 302,419 L 302,418 L 301,418 L 301,419 L 301,418 L 300,418 L 299,418 L 298,418 L 298,419 L 297,419 L 296,419 L 296,420 L 295,420 L 294,420 L 293,420 L 292,420 L 291,420 L 290,420 L 289,420 L 290,420 L 289,420 L 289,419 L 289,418 L 289,417 L 289,416 L 288,416 L 289,416 L 289,415 L 288,415 L 288,414 L 287,414 L 287,413 L 288,413 L 288,412 L 288,411 L 287,411 L 287,410 L 288,410 L 288,409 L 287,409 L 287,408 L 287,407 L 286,407 L 286,406 L 286,405 L 286,404 L 286,403 L 287,403 L 286,403 L 287,403 L 287,402 L 286,402 L 286,401 L 285,400 L 285,399 L 285,398 L 284,398 L 284,397 L 283,397 L 283,396 L 282,396 L 282,397 L 282,396 L 282,397 L 282,396 L 282,397 L 282,396 L 281,396 L 282,396 L 281,396 L 282,396 L 281,396 L 281,397 L 281,396 L 280,396 L 279,396 L 278,396 L 277,396 L 277,395 L 276,395 L 277,395 L 276,395 L 276,394 L 276,393 L 276,394 L 275,394 L 274,394 L 274,395 L 274,394 L 274,395 L 273,395 L 274,395 L 273,395 L 273,396 L 272,396 L 272,395 L 272,396 L 272,395 L 271,395 L 271,396 L 271,395 L 271,396 L 272,396 L 271,396 L 270,396 L 270,397 L 269,397 L 269,396 L 269,397 L 269,396 L 268,396 L 267,396 L 266,396 L 265,396 L 265,395 L 264,395 L 264,396 L 264,395 L 264,396 L 263,396 L 263,395 L 263,396 L 262,396 L 262,395 L 261,395 L 260,395 L 259,395 L 259,394 L 258,394 L 257,394 L 256,394 L 256,395 L 256,394 L 255,394 L 254,394 L 253,394 L 254,394 L 254,393 L 253,393 L 254,393 L 254,392 L 254,391 L 255,391 L 254,391 L 254,390 L 255,390 L 255,389 L 254,389 L 255,388 L 254,388 L 254,387 L 255,387 L 254,387 L 254,386 L 254,385 L 255,385 L 255,384 L 255,383 L 254,382 L 255,382 L 255,381 L 255,380 L 256,380 L 255,380 L 255,379 L 256,379 L 256,378 L 255,378 L 255,377 L 254,377 L 255,377 L 255,376 L 255,377 L 255,376 L 254,376 L 254,375 L 255,375 L 255,374 L 254,374 L 254,373 L 253,373 L 253,372 L 253,371 L 253,370 L 252,370 L 252,369 L 252,368 L 251,368 L 252,368 L 252,367 L 251,367 L 252,367 L 252,366 L 253,366 L 253,365 L 254,365 L 255,365 L 255,364 L 252,361 L 253,358 L 253,357 L 254,356 L 255,354 L 255,353 L 256,351 L 257,351 L 258,351 L 257,351 L 257,350 L 257,349 L 260,340 L 261,340 L 260,340 L 259,339 L 259,338 L 259,337 L 258,337 L 258,336 L 257,335 L 257,334 L 258,334 L 257,334 L 257,333 L 257,332 L 256,332 L 257,332 L 257,331 L 256,331 L 257,331 L 256,331 L 257,331 L 257,330 L 257,331 L 258,331 L 257,331 L 258,331 L 258,332 L 258,333 L 259,333 L 259,334 L 260,334 L 260,335 L 261,335 L 262,335 L 262,334 L 262,335 L 262,334 L 262,335 L 263,335 L 263,334 L 264,334 L 265,334 L 266,334 L 266,333 L 267,333 L 267,332 L 268,332 L 268,331 L 268,330 L 269,330 L 269,329 L 270,329 L 269,329 L 270,329 L 269,329 L 270,329 L 270,328 L 271,328 L 270,328 L 271,328 L 271,327 L 272,327 L 272,328 L 272,327 L 272,328 L 272,327 L 272,328 L 272,327 L 273,327 L 273,328 L 273,327 L 273,328 L 273,327 L 274,327 L 275,327 L 275,328 L 275,327 L 276,327 L 277,327 L 277,326 L 278,326 L 279,326 L 279,325 L 279,326 L 279,325 L 280,325 "},"mt": {"name": "Mato Grosso","path": "M 297,332 L 297,331 L 297,332 L 296,331 L 296,332 L 295,332 L 295,331 L 295,332 L 294,332 L 293,332 L 292,332 L 292,331 L 291,331 L 291,330 L 291,331 L 290,331 L 290,330 L 290,331 L 290,330 L 290,331 L 290,330 L 289,330 L 288,330 L 288,329 L 287,329 L 287,328 L 286,328 L 285,328 L 285,327 L 284,327 L 284,328 L 284,327 L 283,327 L 282,327 L 282,326 L 282,327 L 282,326 L 281,326 L 281,325 L 280,325 L 279,325 L 279,326 L 279,325 L 279,326 L 278,326 L 277,326 L 277,327 L 276,327 L 275,327 L 275,328 L 275,327 L 274,327 L 273,327 L 273,328 L 273,327 L 273,328 L 273,327 L 272,327 L 272,328 L 272,327 L 272,328 L 272,327 L 272,328 L 272,327 L 271,327 L 271,328 L 270,328 L 271,328 L 270,328 L 270,329 L 269,329 L 270,329 L 269,329 L 270,329 L 269,329 L 269,330 L 268,330 L 268,331 L 268,332 L 267,332 L 267,333 L 266,333 L 266,334 L 265,334 L 264,334 L 263,334 L 263,335 L 262,335 L 262,334 L 262,335 L 262,334 L 262,335 L 261,335 L 260,335 L 260,334 L 259,334 L 259,333 L 258,333 L 258,332 L 258,331 L 257,331 L 258,331 L 257,331 L 257,330 L 257,331 L 255,329 L 254,330 L 253,330 L 253,329 L 252,329 L 251,329 L 251,328 L 250,328 L 250,327 L 249,327 L 250,327 L 249,327 L 249,326 L 248,326 L 248,325 L 248,324 L 247,324 L 248,324 L 247,324 L 247,323 L 248,323 L 247,323 L 247,322 L 247,321 L 247,320 L 247,319 L 247,318 L 247,317 L 248,317 L 248,316 L 249,316 L 249,315 L 248,315 L 249,315 L 249,314 L 249,313 L 248,313 L 247,313 L 245,313 L 243,313 L 242,313 L 241,313 L 240,313 L 239,313 L 238,313 L 237,313 L 233,313 L 232,313 L 230,313 L 229,313 L 228,313 L 227,313 L 226,313 L 225,313 L 224,313 L 223,313 L 223,312 L 223,311 L 223,309 L 223,308 L 223,307 L 223,306 L 222,304 L 222,303 L 222,302 L 219,298 L 218,297 L 219,296 L 222,296 L 222,293 L 222,292 L 222,290 L 221,290 L 221,289 L 221,288 L 220,288 L 221,288 L 220,288 L 221,288 L 220,288 L 220,287 L 220,286 L 220,287 L 220,286 L 219,286 L 219,285 L 219,284 L 219,283 L 219,282 L 220,282 L 220,281 L 220,280 L 219,280 L 219,279 L 219,278 L 218,278 L 217,278 L 218,278 L 217,278 L 217,277 L 217,278 L 217,277 L 217,278 L 216,277 L 216,278 L 216,277 L 216,276 L 217,275 L 217,276 L 217,275 L 218,275 L 218,274 L 219,274 L 220,274 L 220,273 L 220,272 L 221,272 L 220,271 L 221,271 L 220,271 L 221,271 L 221,270 L 222,270 L 222,269 L 222,270 L 222,269 L 222,268 L 223,268 L 223,267 L 224,267 L 224,266 L 224,265 L 224,264 L 225,264 L 224,264 L 224,263 L 224,262 L 225,262 L 225,261 L 226,261 L 226,260 L 227,260 L 228,260 L 228,259 L 228,258 L 229,258 L 227,257 L 227,256 L 227,255 L 227,254 L 226,254 L 226,253 L 226,252 L 225,252 L 224,252 L 225,252 L 224,252 L 224,251 L 224,250 L 224,249 L 224,248 L 224,247 L 225,247 L 225,246 L 226,246 L 226,245 L 227,245 L 227,244 L 226,244 L 226,243 L 226,242 L 226,241 L 225,241 L 224,241 L 223,241 L 222,241 L 222,240 L 221,240 L 221,241 L 221,240 L 221,241 L 220,241 L 220,240 L 219,240 L 219,239 L 214,239 L 212,239 L 210,239 L 206,239 L 205,239 L 204,239 L 204,238 L 204,237 L 205,237 L 205,236 L 205,237 L 205,236 L 205,235 L 205,234 L 205,233 L 205,232 L 205,231 L 205,230 L 204,230 L 204,229 L 204,228 L 203,228 L 203,227 L 204,227 L 204,226 L 204,225 L 204,224 L 205,224 L 205,223 L 204,223 L 204,222 L 204,221 L 204,222 L 204,221 L 205,221 L 205,220 L 205,219 L 204,219 L 204,218 L 204,217 L 203,217 L 203,216 L 203,215 L 203,216 L 203,215 L 204,215 L 204,214 L 204,213 L 204,212 L 204,211 L 205,211 L 205,210 L 204,210 L 204,209 L 205,209 L 208,209 L 209,209 L 211,209 L 214,209 L 220,209 L 226,209 L 233,209 L 234,209 L 235,209 L 238,209 L 239,209 L 246,209 L 247,209 L 248,209 L 248,208 L 249,208 L 248,207 L 248,208 L 247,208 L 247,207 L 248,207 L 248,206 L 248,205 L 248,204 L 248,203 L 249,203 L 248,203 L 249,203 L 249,202 L 249,201 L 249,200 L 249,199 L 249,198 L 249,197 L 248,197 L 248,196 L 248,195 L 249,195 L 249,194 L 250,194 L 250,193 L 251,192 L 250,192 L 250,191 L 250,190 L 251,190 L 251,189 L 252,189 L 253,189 L 253,190 L 253,191 L 254,191 L 254,192 L 254,193 L 255,193 L 255,194 L 255,195 L 256,196 L 256,197 L 256,198 L 257,199 L 257,200 L 258,200 L 258,201 L 258,202 L 258,203 L 258,204 L 258,205 L 258,206 L 259,206 L 259,207 L 259,208 L 260,208 L 261,208 L 261,209 L 262,209 L 261,209 L 261,210 L 262,210 L 263,210 L 264,210 L 264,211 L 265,211 L 265,212 L 266,212 L 266,213 L 267,213 L 266,213 L 266,214 L 267,214 L 266,214 L 267,214 L 267,215 L 268,215 L 269,215 L 270,215 L 270,216 L 270,217 L 271,217 L 272,217 L 277,217 L 283,218 L 284,218 L 287,218 L 288,218 L 293,218 L 295,219 L 297,219 L 299,219 L 300,219 L 305,219 L 308,220 L 309,220 L 310,220 L 311,220 L 314,220 L 315,220 L 317,220 L 320,221 L 321,221 L 323,221 L 324,221 L 325,221 L 328,221 L 332,221 L 333,221 L 337,222 L 344,222 L 347,222 L 350,223 L 353,223 L 355,223 L 358,223 L 360,223 L 362,223 L 361,223 L 362,223 L 361,224 L 361,225 L 361,226 L 360,226 L 360,227 L 359,227 L 359,228 L 359,229 L 359,230 L 359,231 L 358,231 L 358,232 L 357,233 L 357,234 L 356,235 L 357,235 L 356,235 L 357,235 L 357,236 L 356,236 L 356,237 L 356,238 L 356,239 L 356,240 L 356,241 L 355,241 L 355,242 L 356,242 L 356,243 L 355,243 L 355,244 L 355,245 L 354,245 L 354,246 L 354,247 L 355,247 L 355,248 L 356,248 L 355,248 L 355,249 L 355,250 L 355,251 L 356,252 L 355,252 L 356,253 L 355,253 L 355,254 L 355,255 L 355,256 L 356,256 L 356,257 L 356,258 L 356,259 L 356,260 L 355,260 L 355,261 L 355,262 L 356,262 L 356,263 L 356,264 L 356,265 L 356,264 L 357,264 L 357,265 L 356,265 L 357,265 L 358,265 L 358,266 L 357,266 L 357,267 L 356,267 L 356,268 L 357,268 L 356,268 L 356,269 L 356,270 L 357,270 L 356,270 L 356,271 L 356,272 L 355,272 L 355,273 L 355,274 L 354,274 L 354,275 L 354,276 L 354,277 L 353,277 L 353,278 L 353,279 L 353,280 L 353,281 L 353,282 L 353,283 L 352,283 L 352,284 L 351,284 L 351,285 L 351,286 L 351,287 L 351,288 L 351,289 L 351,290 L 350,290 L 350,291 L 350,292 L 350,293 L 349,293 L 350,293 L 349,293 L 349,294 L 350,294 L 349,294 L 349,295 L 348,295 L 347,295 L 347,296 L 347,295 L 346,295 L 345,295 L 344,296 L 343,296 L 343,297 L 342,297 L 342,298 L 341,298 L 341,299 L 342,299 L 341,299 L 341,300 L 341,301 L 341,302 L 340,302 L 341,302 L 341,303 L 340,303 L 340,302 L 340,303 L 340,304 L 340,305 L 339,305 L 339,306 L 339,307 L 338,307 L 338,306 L 337,306 L 337,307 L 336,307 L 335,307 L 335,308 L 335,307 L 334,307 L 333,307 L 333,308 L 333,309 L 332,309 L 332,310 L 331,310 L 331,311 L 330,311 L 329,311 L 329,312 L 329,313 L 329,312 L 329,313 L 328,313 L 327,313 L 327,314 L 327,315 L 328,315 L 328,316 L 328,317 L 327,317 L 328,317 L 327,317 L 327,318 L 326,318 L 327,318 L 326,318 L 326,319 L 325,319 L 325,320 L 324,320 L 324,321 L 323,321 L 323,322 L 322,322 L 323,322 L 322,322 L 322,323 L 322,324 L 321,324 L 322,324 L 321,324 L 321,325 L 321,326 L 320,326 L 320,327 L 320,328 L 320,329 L 320,330 L 319,330 L 320,330 L 319,330 L 320,330 L 319,330 L 320,330 L 320,331 L 319,331 L 320,331 L 319,331 L 319,332 L 320,332 L 319,332 L 320,332 L 319,332 L 319,333 L 320,333 L 320,334 L 321,334 L 321,335 L 321,336 L 322,336 L 322,337 L 321,337 L 320,337 L 319,337 L 318,337 L 317,337 L 316,337 L 315,337 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 313,337 L 314,337 L 313,337 L 312,337 L 312,336 L 312,337 L 312,336 L 311,336 L 310,336 L 310,335 L 310,334 L 310,333 L 311,333 L 311,332 L 312,332 L 313,332 L 313,330 L 313,327 L 313,326 L 312,326 L 312,327 L 311,327 L 311,328 L 310,328 L 310,329 L 309,329 L 309,330 L 308,330 L 308,331 L 308,332 L 308,331 L 307,331 L 307,332 L 307,331 L 307,332 L 307,331 L 306,331 L 306,332 L 305,332 L 304,332 L 304,331 L 303,331 L 303,330 L 302,330 L 301,330 L 301,329 L 301,330 L 301,329 L 301,330 L 300,330 L 299,330 L 298,330 L 298,331 L 297,331 L 297,332 L 297,331 L 297,332 "},"go": {"name": "Goiás","path": "M 362,259 L 362,260 L 362,261 L 361,261 L 362,261 L 361,261 L 361,262 L 361,263 L 360,263 L 361,263 L 360,263 L 361,263 L 361,264 L 360,264 L 361,264 L 360,264 L 360,265 L 361,265 L 362,265 L 362,266 L 362,265 L 362,266 L 363,266 L 364,266 L 365,266 L 365,267 L 366,267 L 367,267 L 368,268 L 369,268 L 372,270 L 373,271 L 374,271 L 374,270 L 374,269 L 374,268 L 374,267 L 375,267 L 375,266 L 376,266 L 376,265 L 377,265 L 377,264 L 377,265 L 378,265 L 377,265 L 377,266 L 378,266 L 379,266 L 379,267 L 380,265 L 381,265 L 381,266 L 382,266 L 382,267 L 383,267 L 384,267 L 384,268 L 384,269 L 384,268 L 384,269 L 384,270 L 384,271 L 384,272 L 385,272 L 385,271 L 385,270 L 385,269 L 386,269 L 386,270 L 386,271 L 387,271 L 388,271 L 388,270 L 388,271 L 388,270 L 389,270 L 390,270 L 390,269 L 390,270 L 390,271 L 390,272 L 390,271 L 390,272 L 390,271 L 390,272 L 390,271 L 391,271 L 392,271 L 393,271 L 393,272 L 393,271 L 393,272 L 393,271 L 394,271 L 394,272 L 395,272 L 396,272 L 397,274 L 397,273 L 398,273 L 398,272 L 397,272 L 397,271 L 397,270 L 397,269 L 398,269 L 399,269 L 398,269 L 399,269 L 399,270 L 400,270 L 400,271 L 401,271 L 401,270 L 401,271 L 402,271 L 403,271 L 403,270 L 404,270 L 405,270 L 404,270 L 405,270 L 405,269 L 406,269 L 407,269 L 407,268 L 408,268 L 409,268 L 409,267 L 410,267 L 411,267 L 413,267 L 414,267 L 414,266 L 414,265 L 415,265 L 415,266 L 415,267 L 416,267 L 417,267 L 418,267 L 418,266 L 419,266 L 419,267 L 418,267 L 417,267 L 416,267 L 416,268 L 416,269 L 416,270 L 416,271 L 416,272 L 417,272 L 418,272 L 418,271 L 419,271 L 420,271 L 420,272 L 419,272 L 418,272 L 418,273 L 417,273 L 417,274 L 417,275 L 418,275 L 418,276 L 417,276 L 417,277 L 417,278 L 416,278 L 417,278 L 417,279 L 417,280 L 417,281 L 417,282 L 417,283 L 418,283 L 419,283 L 419,284 L 420,284 L 419,284 L 420,284 L 420,285 L 421,285 L 421,286 L 422,286 L 421,286 L 421,287 L 420,287 L 420,288 L 421,289 L 420,289 L 421,289 L 420,289 L 420,290 L 421,290 L 420,290 L 420,291 L 420,292 L 420,293 L 420,294 L 419,294 L 418,294 L 417,294 L 416,294 L 416,293 L 416,292 L 415,292 L 414,292 L 414,291 L 413,291 L 413,292 L 412,292 L 413,292 L 413,293 L 413,294 L 413,295 L 413,296 L 412,296 L 411,296 L 410,296 L 410,295 L 409,295 L 408,295 L 408,296 L 407,296 L 408,296 L 408,297 L 407,298 L 407,299 L 408,299 L 408,298 L 408,299 L 409,299 L 409,300 L 408,300 L 408,301 L 407,301 L 407,302 L 407,303 L 408,303 L 408,304 L 408,305 L 409,305 L 409,306 L 409,307 L 408,307 L 407,308 L 406,308 L 405,308 L 404,308 L 404,309 L 403,309 L 404,309 L 403,309 L 404,309 L 403,309 L 402,309 L 402,310 L 402,309 L 401,309 L 401,308 L 401,307 L 401,306 L 401,307 L 401,306 L 402,306 L 402,305 L 402,304 L 402,303 L 401,303 L 401,302 L 399,302 L 398,302 L 397,302 L 392,302 L 391,302 L 390,302 L 390,303 L 390,304 L 389,304 L 389,305 L 390,305 L 389,305 L 390,305 L 389,305 L 390,305 L 390,306 L 389,306 L 389,307 L 389,308 L 389,309 L 389,310 L 391,310 L 392,310 L 393,310 L 395,310 L 397,310 L 398,310 L 399,310 L 401,310 L 402,310 L 402,311 L 401,311 L 402,311 L 402,312 L 402,313 L 401,313 L 401,314 L 400,314 L 400,315 L 400,316 L 400,317 L 401,317 L 402,317 L 402,318 L 402,317 L 402,318 L 403,318 L 403,319 L 403,318 L 403,319 L 403,320 L 404,320 L 403,320 L 403,321 L 404,320 L 404,321 L 403,321 L 404,321 L 404,322 L 404,323 L 405,323 L 404,323 L 405,323 L 404,323 L 404,324 L 404,323 L 404,324 L 403,324 L 404,324 L 403,324 L 402,324 L 402,325 L 403,325 L 402,325 L 403,325 L 402,325 L 401,325 L 402,325 L 401,325 L 402,325 L 402,326 L 402,325 L 401,325 L 401,326 L 401,325 L 401,326 L 402,326 L 401,326 L 401,327 L 400,327 L 401,327 L 400,327 L 401,327 L 400,327 L 400,328 L 399,328 L 399,327 L 399,328 L 399,329 L 399,330 L 400,330 L 401,330 L 402,330 L 402,331 L 403,331 L 403,332 L 402,332 L 403,332 L 402,332 L 403,332 L 402,332 L 402,333 L 402,334 L 401,334 L 402,334 L 401,334 L 402,334 L 401,334 L 401,335 L 402,335 L 402,336 L 402,337 L 402,338 L 401,338 L 401,339 L 400,339 L 400,340 L 399,340 L 399,339 L 399,340 L 399,339 L 399,340 L 398,340 L 398,341 L 397,341 L 397,342 L 397,341 L 397,342 L 396,342 L 396,343 L 395,343 L 395,342 L 395,343 L 394,343 L 393,344 L 393,343 L 392,343 L 391,343 L 390,343 L 390,342 L 389,342 L 389,341 L 389,342 L 388,342 L 387,342 L 386,342 L 385,342 L 385,341 L 384,341 L 384,342 L 383,342 L 382,342 L 381,342 L 381,341 L 380,341 L 379,341 L 379,342 L 378,342 L 378,343 L 377,343 L 377,342 L 376,342 L 376,343 L 375,343 L 375,344 L 375,345 L 374,345 L 373,345 L 373,346 L 373,345 L 372,345 L 372,344 L 371,344 L 370,344 L 370,345 L 369,345 L 370,345 L 369,345 L 368,345 L 368,346 L 367,346 L 367,345 L 366,345 L 365,345 L 364,345 L 364,346 L 363,346 L 362,346 L 361,346 L 360,346 L 360,347 L 360,348 L 359,348 L 359,349 L 358,349 L 358,350 L 358,351 L 358,352 L 357,352 L 357,353 L 356,353 L 355,353 L 354,353 L 354,354 L 354,355 L 353,355 L 353,356 L 352,356 L 352,357 L 353,357 L 353,358 L 352,357 L 351,357 L 351,356 L 350,356 L 350,355 L 349,355 L 348,355 L 348,354 L 347,354 L 347,355 L 347,354 L 346,354 L 347,354 L 346,354 L 346,353 L 345,353 L 344,353 L 343,353 L 343,352 L 343,353 L 343,352 L 342,353 L 342,352 L 342,353 L 341,353 L 341,352 L 340,352 L 339,352 L 339,351 L 339,352 L 339,351 L 338,351 L 338,350 L 337,350 L 338,350 L 337,350 L 336,350 L 335,350 L 335,349 L 334,349 L 335,349 L 334,349 L 333,348 L 332,348 L 331,348 L 331,347 L 331,346 L 330,346 L 329,346 L 328,346 L 327,346 L 326,346 L 325,346 L 324,346 L 324,345 L 323,345 L 323,344 L 324,344 L 324,343 L 325,343 L 326,343 L 326,342 L 326,341 L 325,341 L 324,341 L 323,341 L 323,342 L 322,342 L 322,341 L 321,341 L 322,341 L 321,341 L 321,340 L 321,339 L 321,338 L 322,338 L 322,337 L 322,336 L 321,336 L 321,335 L 321,334 L 320,334 L 320,333 L 319,333 L 319,332 L 320,332 L 319,332 L 320,332 L 319,332 L 319,331 L 320,331 L 319,331 L 320,331 L 320,330 L 319,330 L 320,330 L 319,330 L 320,330 L 319,330 L 320,330 L 320,329 L 320,328 L 320,327 L 320,326 L 321,326 L 321,325 L 321,324 L 322,324 L 321,324 L 322,324 L 322,323 L 322,322 L 323,322 L 322,322 L 323,322 L 323,321 L 324,321 L 324,320 L 325,320 L 325,319 L 326,319 L 326,318 L 327,318 L 326,318 L 327,318 L 327,317 L 328,317 L 327,317 L 328,317 L 328,316 L 328,315 L 327,315 L 327,314 L 327,313 L 328,313 L 329,313 L 329,312 L 329,313 L 329,312 L 329,311 L 330,311 L 331,311 L 331,310 L 332,310 L 332,309 L 333,309 L 333,308 L 333,307 L 334,307 L 335,307 L 335,308 L 335,307 L 336,307 L 337,307 L 337,306 L 338,306 L 338,307 L 339,307 L 339,306 L 339,305 L 340,305 L 340,304 L 340,303 L 340,302 L 340,303 L 341,303 L 341,302 L 340,302 L 341,302 L 341,301 L 341,300 L 341,299 L 342,299 L 341,299 L 341,298 L 342,298 L 342,297 L 343,297 L 343,296 L 344,296 L 345,295 L 346,295 L 347,295 L 347,296 L 347,295 L 348,295 L 349,295 L 349,294 L 350,294 L 349,294 L 349,293 L 350,293 L 349,293 L 350,293 L 350,292 L 350,291 L 350,290 L 351,290 L 351,289 L 351,288 L 351,287 L 351,286 L 351,285 L 351,284 L 352,284 L 352,283 L 353,283 L 353,282 L 353,281 L 353,280 L 353,279 L 353,278 L 353,277 L 354,277 L 354,276 L 354,275 L 354,274 L 355,274 L 355,273 L 355,272 L 356,272 L 356,271 L 356,270 L 357,270 L 356,270 L 356,269 L 356,268 L 357,268 L 356,268 L 356,267 L 357,267 L 357,266 L 358,266 L 358,265 L 358,264 L 358,263 L 359,263 L 359,262 L 359,261 L 360,261 L 360,260 L 360,261 L 360,260 L 361,260 L 362,260 L 362,259 L 363,259 L 362,259 "},"df": {"name": "Distrito Federal","path": "M 398,302 L 399,302 L 400,302 L 401,302 L 401,303 L 402,303 L 402,304 L 402,305 L 402,306 L 401,306 L 401,307 L 401,306 L 401,307 L 401,308 L 401,309 L 402,309 L 402,310 L 402,309 L 402,310 L 401,310 L 400,310 L 399,310 L 398,310 L 397,310 L 396,310 L 395,310 L 394,310 L 393,310 L 392,310 L 391,310 L 390,310 L 389,310 L 389,309 L 389,308 L 389,307 L 389,306 L 390,306 L 390,305 L 389,305 L 390,305 L 389,305 L 390,305 L 389,305 L 389,304 L 390,304 L 390,303 L 390,302 L 391,302 L 392,302 L 393,302 L 395,302 L 396,302 L 397,302 L 398,302 "}} });
diff --git a/js/vmap/dist/maps/jquery.vmap.canada.js b/js/vmap/dist/maps/jquery.vmap.canada.js
new file mode 100644 (file)
index 0000000..caef6a3
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add Canada Map Data Points */
+jQuery.fn.vectorMap('addMap', 'canada_en', {"width": 900, "height": 867, "paths":{"nt": {"path": "M340.29,126.02l5.05,-2.26l2.76,0.43l6.5,-3.85l1.23,0.01l1.54,2.19l-1.93,8.62l-1.55,0.59l-2.09,-1.15l-1.22,-2.29l-1.32,0.13l-1.22,2.29l-1.34,-0.24l-0.23,-1.68l-1.46,-1.53l-5.45,1.33l0.72,-2.6ZM104.26,307.63l1.14,-2.98l2.22,-1.67l0.46,-2.51l1.2,-1.51l0.23,-5.06l11.84,-21.11l2.68,2.63l1.46,3.15l0.02,1.76l1.66,1.45l0.66,-0.55l-0.71,-3.84l1.06,0.36l0.07,-0.5l-1.28,-1.24l0.06,-1.25l-1.9,-1.48l0.63,-1.34l1.23,1.78l2.06,-0.46l-1.27,-0.67l-0.73,-2.09l0.91,-2.19l0.82,3.04l1.3,1.4l0.43,-0.74l-0.92,-1.52l0.01,-3.23l0.65,0.02l-0.28,2.19l0.82,0.07l0.59,-1.89l1.87,2.93l1.38,-3.7l2.79,0.44l2.46,2.3l2.79,-4.02l0.7,0.3l-1.1,1.42l0.39,1.34l1.9,1.72l-5.05,2.62l-1.93,2.48l0.9,0.19l1.58,-1.41l2.1,0.22l0.77,-0.72l1.24,0.52l0.71,-0.84l2.64,1.36l1.41,-0.07l3.43,-3.67l2.02,1.7l1.31,0.19l0.94,-0.92l0.78,0.94l6.93,-1.77l0.6,-0.85l0.51,0.79l-0.7,1.79l0.73,0.45l3.57,-3.06l0.03,-0.74l1.1,-0.2l0.29,0.66l1.32,-0.75l0.33,0.91l1.18,-0.31l-0.37,1.09l0.63,0.83l2.24,0.79l2.99,-2.39l-0.43,1.39l0.64,0.69l-0.11,1.21l-1.7,1.0l-6.12,0.53l-2.08,0.64l-1.02,1.21l-1.62,-0.04l-1.6,1.4l-0.25,-1.61l-7.41,-1.01l-2.29,1.84l-0.29,1.06l-5.21,-0.23l-2.66,2.77l-2.4,-0.18l-1.66,2.32l-1.61,-0.49l-0.96,1.13l0.3,2.7l2.2,2.47l0.77,-0.45l-1.27,-1.27l0.38,-0.94l1.27,0.68l0.62,-0.79l0.4,1.43l1.02,-0.16l0.99,1.02l1.61,-0.85l-0.45,-2.08l-1.52,0.19l-0.35,-0.72l1.13,0.16l-0.6,-1.73l0.72,-1.38l2.28,-0.02l0.45,0.71l1.46,-0.81l0.65,0.9l1.17,-1.23l3.27,-0.61l2.33,-2.31l0.67,0.77l-1.51,2.02l0.81,0.22l-0.39,0.95l2.46,-0.58l-0.25,0.99l0.88,0.61l-1.83,2.69l0.65,1.0l1.64,-2.72l7.95,-6.03l5.85,-0.13l2.58,0.65l-1.07,2.79l1.9,1.33l0.27,-1.09l1.24,0.05l5.15,-2.51l1.22,-3.31l1.85,-0.43l4.45,1.02l0.03,-1.32l-2.64,-2.29l1.71,-1.52l-1.85,-0.45l2.47,-2.88l2.54,8.59l-0.04,6.34l-1.07,5.48l2.25,8.32l2.66,3.34l0.85,0.12l0.65,-1.18l1.59,0.69l1.22,-1.47l-0.6,-2.09l0.72,-1.04l-0.89,-1.36l0.56,-0.7l2.36,-0.05l-0.33,1.7l0.79,0.38l1.3,-1.37l-1.55,-1.87l2.51,-2.33l2.01,0.05l0.56,-0.74l0.16,1.45l-2.13,4.05l1.06,1.48l1.87,0.23l-5.37,4.32l0.04,1.48l0.86,0.84l2.07,1.0l0.85,-0.51l1.93,1.27l2.46,-0.33l0.26,-1.48l2.2,0.12l2.25,-5.23l1.23,-0.68l0.86,1.2l5.42,1.52l3.72,2.51l3.56,5.74l-10.78,31.17l22.92,34.62l25.67,33.56l14.94,3.76l6.82,13.72l4.14,3.52l30.8,11.84l26.18,8.96l-10.81,81.09l-51.46,-8.44l-52.41,-11.91l-51.58,-15.14l-28.53,-9.89l-18.38,-7.37l0.81,-1.02l-0.28,-4.88l0.73,-2.33l-1.59,-1.36l-0.37,-3.96l1.97,-1.43l0.22,-3.73l-2.24,-1.11l-1.52,1.67l-2.45,-0.87l-2.02,0.56l-3.8,-3.91l-1.79,1.13l-0.57,-1.54l-1.06,-0.17l-0.9,1.18l-1.62,-1.42l-1.87,0.55l-1.28,-0.91l1.63,-5.05l-1.3,-0.87l1.67,-1.65l0.93,-5.74l-1.07,-1.73l-2.01,-0.66l-1.39,-2.65l-0.78,-2.0l0.37,-3.13l-1.1,-0.69l0.04,-3.67l-0.79,-2.47l-1.51,-0.56l-1.12,0.7l-0.11,-1.18l-2.66,-2.01l0.84,-0.58l0.0,-2.28l1.23,-0.98l-0.39,-0.69l1.61,-0.78l-1.63,-3.36l-0.09,-5.67l3.01,-3.13l-1.57,-1.35l0.26,-2.13l-1.16,-2.28l2.31,-0.46l1.88,-1.83l-0.37,-5.19l-1.66,-0.64l1.9,-0.06l0.56,-1.03l-3.49,-5.55l0.5,-1.17l-0.74,-2.15l0.94,-0.65l0.04,-5.58l-1.89,-2.03l-1.63,0.89l-1.84,-0.85l2.06,-1.84l-1.29,-2.3l-0.01,-2.24l-3.17,-4.16l1.39,-0.32l0.62,-1.63l2.04,-0.76l0.1,-1.36l-1.06,-0.79l0.64,-1.59l-1.0,-0.97l4.88,-2.33l2.73,-2.47l0.15,-4.09l-0.81,-1.96l2.85,-1.34l-1.48,-2.56l-3.29,1.1l0.87,-1.33l-0.22,-1.05l-1.96,-0.69l-2.27,0.42l-1.07,-0.82l0.77,-1.25l-0.44,-0.84l1.7,-0.85l1.09,-2.06l-0.16,-1.35l-1.16,-0.51l1.43,-1.81l0.91,0.37l0.45,-1.72l1.25,-0.83l-0.23,-3.6l1.22,-1.26l-0.87,-3.87l1.56,0.55l0.52,-0.89l-16.25,-8.78ZM207.0,476.23l1.61,4.53l5.87,2.48l0.59,1.9l3.69,3.15l6.27,1.74l4.69,-0.33l1.76,0.73l3.76,-0.8l1.5,1.2l2.72,0.02l2.0,-1.62l0.22,-3.53l2.03,-1.3l2.31,-0.97l1.96,0.23l0.3,1.85l3.53,-0.52l4.71,-1.97l4.89,-4.5l1.91,-0.5l1.98,-1.93l0.04,-1.86l5.21,-3.43l2.82,0.57l0.14,1.03l3.68,0.38l0.65,-0.92l-0.61,-0.65l4.19,-1.04l2.39,-2.13l-0.22,-0.59l-6.06,-1.61l0.35,-0.51l4.93,1.66l0.78,-0.54l-0.9,-0.6l0.42,-0.41l3.57,2.25l-0.52,2.9l3.49,-1.45l1.55,-2.02l-1.55,-1.61l-3.5,-1.36l-3.53,-2.56l-7.39,-0.99l-4.47,1.2l-2.92,1.65l-3.83,5.35l-7.36,4.08l-3.92,-0.15l-0.72,-0.81l-3.17,0.75l-0.99,-1.17l-1.12,0.24l0.13,-0.86l-1.31,-0.93l0.09,-1.38l-3.31,-4.19l0.1,-1.79l-3.43,0.11l-1.7,-2.68l-1.93,-1.37l-0.76,-2.21l-3.15,-2.05l0.15,-0.71l-2.21,-2.46l-1.51,1.96l1.37,2.32l0.46,2.86l3.58,0.85l-1.8,4.28l2.21,1.78l-0.28,1.92l2.36,3.96l-1.1,1.6l-3.31,0.37l-0.87,-1.09l-3.3,-0.31l-3.32,3.82l-0.15,1.58l-1.73,-0.41l-1.46,0.69l1.28,2.16l-1.78,0.66l-0.95,-1.34l-4.58,-2.58l-0.94,0.43l0.03,1.56l-2.72,0.61l-3.89,-4.33l-1.36,-0.2l1.36,1.82ZM179.03,366.19l1.23,1.14l1.05,-2.95l3.02,0.66l0.35,1.43l1.65,0.94l4.89,0.48l0.48,2.95l2.68,-2.11l-0.16,-1.49l8.12,3.1l1.31,1.76l0.26,2.1l2.26,0.8l-1.7,1.71l-3.35,-0.74l-1.03,-1.5l-2.81,-1.71l-3.62,-0.27l-0.01,0.86l1.5,0.47l-0.05,1.18l2.05,1.97l-0.17,1.13l-2.37,1.85l-3.7,0.25l-0.91,1.12l-1.2,-0.13l0.87,2.2l-1.5,2.06l-1.16,0.39l-3.85,-0.85l-1.02,0.69l0.95,1.99l7.94,5.44l1.13,1.57l5.15,-1.44l-0.18,-1.05l2.6,-4.41l6.83,-2.0l2.81,1.33l-1.07,3.16l-3.75,2.86l-2.71,0.66l-0.53,1.61l-1.03,0.5l-2.31,-0.97l-1.56,0.81l-0.48,1.52l0.83,1.79l1.17,0.66l2.7,-1.8l3.15,-0.01l4.39,-2.13l2.0,-0.14l2.25,-2.17l3.37,0.94l-0.18,-3.3l-1.53,-1.0l-0.85,-2.14l3.94,-0.96l-0.42,-1.74l5.94,2.03l-0.23,1.08l2.52,3.2l0.26,-1.1l1.12,0.85l4.77,-0.1l0.43,-1.45l-1.1,-0.13l2.04,-1.38l-3.01,0.14l-0.54,-1.23l2.01,-2.42l2.7,0.59l0.02,-1.17l-1.34,-0.99l2.79,-0.42l1.32,-1.83l-0.37,-1.16l2.69,-2.18l-1.0,-1.29l-1.77,0.84l-0.45,-0.57l2.9,-2.14l0.15,-1.92l-4.08,0.56l-3.44,3.36l-4.18,0.24l-5.52,-2.26l-0.45,-0.98l-2.09,0.14l-1.46,-2.17l-2.34,-0.36l0.32,-0.78l1.63,0.33l-0.01,-1.57l1.13,0.06l1.62,-1.32l4.32,-0.21l2.51,-1.37l3.18,-0.19l-1.55,-2.45l-2.07,-0.71l0.86,-0.58l-2.34,-0.98l-0.08,-1.09l-1.01,-0.39l-9.34,0.7l-1.73,-0.78l-3.27,1.23l-0.23,0.77l-4.53,0.49l-3.99,-1.18l-0.98,1.01l-2.43,-1.06l-1.9,1.06l-0.03,-1.43l-1.47,0.89l-4.68,-0.02l-2.12,0.74l-1.61,-1.82l-2.33,1.46l-3.5,-2.31l-1.4,0.61l-1.36,2.74l0.84,5.19l0.77,-0.04l0.72,-1.84ZM212.83,287.18l-0.0,-0.02l-0.45,-0.39l0.6,0.28l-0.15,0.13ZM211.88,286.62l-0.11,0.01l-0.06,-0.14l0.17,0.13ZM179.99,279.15l0.22,-0.13l-0.03,0.22l-0.19,-0.09ZM142.22,285.94l-0.69,-0.85l0.05,-0.26l0.51,-0.01l0.13,1.12ZM142.77,264.94l0.0,-0.21l0.23,0.0l-0.16,0.1l-0.07,0.11ZM156.42,271.63l-0.26,-0.16l-0.02,-0.28l0.34,0.17l-0.07,0.26ZM155.56,270.82l-0.15,0.03l0.11,-0.14l0.03,0.11ZM159.83,281.2l0.4,-0.64l0.34,-0.13l0.07,0.65l-0.81,0.12ZM202.31,297.59l-0.11,-0.08l0.06,-0.02l0.05,0.1ZM201.72,297.39l-0.66,-0.04l0.07,-0.32l0.01,-0.01l0.59,0.37ZM211.0,288.37l-0.89,0.21l-0.21,-0.52l1.07,-0.1l0.02,0.4ZM207.97,287.77l-0.36,0.28l-0.26,0.01l0.62,-0.56l-0.0,0.27ZM335.03,145.95l1.0,-0.91l-0.03,-4.67l1.26,-2.2l0.69,0.77l4.27,-1.92l3.09,0.31l2.51,-0.9l1.93,0.93l1.22,-0.62l3.04,0.79l-0.79,3.54l-4.36,0.48l-0.82,0.7l0.81,2.8l2.92,0.26l-0.46,3.19l-1.57,2.84l-3.77,1.35l-1.94,-0.92l-4.87,1.52l-1.46,-1.4l-0.3,-2.44l-1.06,-0.05l-1.46,-2.11l0.16,-1.34ZM343.05,180.4l0.53,-2.45l1.48,-0.35l-0.86,3.83l-1.15,-1.03ZM297.62,196.66l-2.81,-3.08l3.43,-3.66l7.2,1.64l3.36,-1.6l1.84,0.21l0.67,-1.17l1.68,-0.67l-0.5,-1.1l-6.96,1.23l-5.82,-1.7l3.14,-3.59l12.45,1.14l-0.22,-1.42l-7.93,-1.17l-2.24,-1.68l1.93,-0.92l0.07,-1.43l-0.97,-0.43l0.79,-1.37l2.92,-1.11l7.07,3.4l1.21,-0.14l0.02,-0.84l-1.49,-0.63l-1.37,-1.85l-2.82,-0.86l-0.3,-0.94l0.54,-1.4l2.58,-1.59l2.72,0.22l1.32,-0.67l0.16,0.75l1.65,0.26l1.13,1.18l-0.79,2.25l0.19,4.4l6.19,-0.25l2.12,2.71l-0.7,1.1l0.22,1.97l3.12,3.75l-2.83,0.82l-0.56,1.29l3.73,0.5l0.64,2.56l-0.82,2.31l0.43,2.83l4.71,-0.03l0.43,0.9l2.08,0.36l-3.46,15.46l-1.6,-0.54l-0.96,1.16l-1.49,-0.26l-0.29,2.07l-7.3,3.12l-5.1,0.78l-4.59,-0.96l-2.46,-1.54l-2.22,-3.46l-0.83,-2.34l0.38,-0.84l4.45,-1.61l3.46,0.41l1.07,-1.88l1.85,-0.47l7.54,1.25l4.33,-3.19l1.09,-1.4l-0.22,-0.82l-1.89,-0.86l-2.08,1.97l-1.45,-0.93l-1.17,0.94l-2.49,-0.21l0.89,-2.14l-0.81,-0.78l-1.01,1.19l0.41,-1.64l-0.83,-0.71l-1.06,3.09l-0.92,0.5l-0.8,0.07l-0.46,-1.42l-0.9,1.31l-3.84,-0.33l0.32,-1.39l1.77,-0.52l-0.23,-1.02l-1.17,0.31l1.46,-2.76l3.52,-1.68l-0.97,-0.99l-2.7,0.74l-0.38,-2.37l-0.91,0.33l-1.8,4.91l-1.27,-2.51l-1.05,0.74l1.08,3.03l-1.36,2.08l-3.46,1.29l-0.74,-0.72l0.75,-4.37l-1.76,1.25l-1.37,-1.35l-0.18,2.89l-0.93,1.06l-2.19,-2.46l1.46,-1.09l-0.26,-0.63l-1.29,0.17l0.9,-2.21l-2.29,-0.11l-1.24,1.13l-1.56,-1.19ZM327.94,134.68l3.9,-1.93l-0.25,1.87l0.84,0.29l1.5,4.62l-3.72,1.43l-2.27,-6.26ZM321.01,163.06l1.64,-1.4l4.15,0.26l1.23,1.73l-0.05,1.17l-1.23,1.11l-5.74,-2.86ZM326.03,261.21l-0.4,-1.5l-1.62,-0.83l-0.63,-3.15l3.92,1.28l-1.26,4.19ZM325.43,263.42l0.07,-0.72l0.09,0.01l0.24,0.88l-0.39,-0.16ZM260.9,269.58l0.42,-3.04l1.57,-3.05l4.59,-3.99l3.77,-0.66l0.24,-2.37l-1.72,-0.97l-0.37,-1.62l3.89,-3.4l2.37,-0.69l4.6,-3.62l3.27,-0.17l2.61,-1.39l7.37,-1.23l6.65,-2.24l1.96,1.51l0.76,4.13l-2.16,5.66l0.16,1.56l-2.64,0.65l-0.45,1.8l-2.29,1.2l0.2,1.21l1.63,0.68l3.03,-1.33l1.9,1.35l2.3,-2.14l0.07,-0.89l-0.92,-0.59l2.08,-2.48l2.58,-1.51l5.25,4.03l4.41,4.94l-0.93,2.75l-1.69,1.01l0.02,0.76l-3.52,1.88l0.79,1.66l-0.7,2.49l4.24,-2.64l0.94,2.06l0.72,-0.16l0.21,-2.62l0.92,-1.22l1.44,-0.1l0.63,-1.52l0.55,0.59l-0.5,1.33l1.36,1.71l0.83,-0.66l-1.02,-1.51l0.87,-0.51l1.37,2.93l-11.48,51.42l-17.46,-4.16l-0.83,1.68l-1.14,0.12l0.0,0.67l1.45,0.6l-2.71,-0.2l0.39,-3.59l-29.83,-8.45l-1.36,2.79l1.84,5.58l-0.46,-0.2l-2.15,-3.26l0.13,-4.89l3.8,-1.52l18.25,1.15l5.68,2.72l1.35,-0.09l6.08,3.41l0.65,-0.81l0.71,0.47l2.24,-0.65l4.22,1.29l0.77,-0.31l0.09,-1.36l-0.57,-0.96l-2.71,-0.99l-0.85,-3.09l-4.83,-2.52l-1.74,-2.41l-1.7,-1.21l-0.85,0.44l-2.39,-2.06l-1.72,0.58l-1.18,-0.69l-1.38,0.56l-7.58,-0.75l-1.02,-0.84l-2.18,-0.06l-1.02,-1.65l-9.36,-2.1l-0.35,-2.73l-2.44,-4.16l0.06,-2.79l4.75,-1.74l6.54,0.4l1.06,-0.88l3.98,-0.43l3.24,0.9l0.7,-1.05l-1.86,-1.16l1.71,-0.55l2.51,1.65l2.88,-0.86l0.17,-0.64l-2.9,-0.09l0.25,-1.03l-2.57,-0.99l-11.15,0.14l0.4,-1.13l-1.05,-1.55l-1.28,0.93l0.71,1.01l-0.39,0.69l-0.78,-0.88l-0.84,0.41l-2.22,-0.81l-0.42,-1.04l0.66,-1.04l4.31,-0.03l0.25,-0.72l-1.15,-1.3l1.24,-0.2l0.19,-0.81l-2.72,-0.71l-1.94,1.08l-1.2,-2.15l-1.98,-0.51l-1.25,0.56ZM315.33,268.23l-0.79,0.05l-0.04,-0.21l1.17,-0.5l-0.34,0.67ZM272.66,162.85l4.64,-4.16l5.15,0.75l3.53,-4.51l5.56,-1.78l0.35,-1.57l1.23,-0.32l3.69,-3.82l3.01,-1.44l2.09,-2.67l6.23,0.54l3.18,3.53l1.58,0.17l0.36,-0.74l1.02,0.52l1.46,-1.56l-0.22,-0.81l-1.45,-0.48l-0.12,-0.94l2.0,-0.8l0.09,-0.67l1.38,0.07l3.52,6.32l-0.71,1.29l-4.29,0.72l-1.27,1.18l0.12,2.98l1.96,2.78l-0.93,0.62l-1.65,-1.71l-0.93,0.51l1.02,3.24l-0.08,2.78l-2.83,1.97l-4.16,-0.31l-0.74,0.87l-0.38,3.99l-1.34,0.94l-2.07,-0.19l-1.48,-3.82l2.69,-6.09l1.64,-1.76l-0.38,-1.79l-1.62,1.02l-1.49,-0.63l-0.68,1.29l-1.12,0.01l-0.08,3.74l-1.39,0.75l-1.27,-1.71l-1.12,0.81l-0.39,1.07l1.24,1.48l-0.17,2.29l-0.71,0.92l-1.58,0.04l-0.8,2.2l-1.34,1.07l0.23,-6.34l-2.15,0.29l-0.4,3.84l-1.82,1.22l0.98,2.96l-0.86,-0.21l-2.15,2.57l-0.71,0.02l-0.37,-1.45l-2.02,1.61l1.52,-3.13l0.0,-1.45l-1.3,-0.19l1.22,-3.06l-0.72,-1.92l-1.64,0.63l-1.1,3.43l-2.24,1.0l-1.95,-3.6l-1.81,-0.41l-0.67,1.27l-1.44,0.51l-0.88,-0.46l2.44,-4.16l-0.84,-1.36l-1.28,0.23ZM299.5,310.16l0.53,0.27l0.45,0.46l-0.39,-0.06l-0.6,-0.66ZM287.58,182.41l6.55,-5.43l2.92,-0.38l3.03,-2.49l0.92,0.33l-1.17,2.49l-6.46,7.49l-2.56,1.32l-1.02,-1.78l-2.21,-1.55ZM219.8,246.37l1.52,-3.11l1.68,-0.43l-0.15,-1.48l1.45,-0.33l2.92,-3.8l3.01,-1.09l-0.3,-1.38l1.39,-1.18l0.37,-3.63l0.67,0.55l3.73,-0.49l0.42,-1.4l-1.4,-2.89l1.96,-1.12l3.44,-4.93l3.16,-1.5l0.96,-2.46l1.55,-0.35l1.1,-1.28l0.25,-1.97l-1.74,-1.84l1.12,-10.83l12.68,2.22l6.68,0.2l2.16,1.86l0.24,2.19l3.74,4.86l2.46,1.93l-1.97,2.47l0.11,1.84l0.74,-0.05l0.38,-1.36l2.29,-2.06l1.47,0.76l-0.4,2.36l-1.46,1.97l0.34,0.56l1.8,-0.08l1.7,-1.79l0.09,-1.82l0.98,-0.4l4.16,-0.06l3.39,2.19l2.27,4.11l3.45,9.67l1.44,1.82l0.81,3.18l-0.08,1.01l-3.31,1.88l-4.92,0.78l-21.54,8.24l-3.03,5.52l-0.93,0.52l-2.88,1.16l-2.62,-1.86l-0.7,3.3l-3.38,3.51l-1.26,5.18l-2.89,3.36l-5.75,0.43l-0.32,-1.92l-1.09,-0.53l-4.35,3.08l-3.99,0.69l-1.69,1.33l-1.8,-0.62l-0.51,-1.09l-0.33,-12.47l-5.62,-8.84l1.12,0.8l0.5,-1.07l-5.29,-2.0ZM279.35,469.63l-0.81,0.33l-0.13,-0.34l0.26,0.05l0.67,-0.04ZM278.07,469.33l-0.38,-0.18l-0.06,-0.16l0.41,0.07l0.03,0.27ZM275.16,468.95l-0.59,0.05l-0.03,-0.13l0.49,0.0l0.13,0.08ZM281.78,464.95l-4.05,-0.88l-0.14,-0.35l4.03,1.11l0.15,0.12ZM276.6,463.76l-0.13,0.17l-0.35,-0.58l0.41,0.41l0.07,0.01ZM276.39,464.3l0.36,0.54l-0.9,1.06l-6.11,-0.67l6.65,-0.93ZM269.08,465.37l-0.54,0.79l-1.14,0.56l0.84,-1.17l0.84,-0.18ZM278.74,175.78l-0.49,-0.42l1.55,-0.55l-0.56,0.63l-0.51,0.34ZM280.74,173.18l-0.05,-0.53l0.37,-0.4l-0.17,0.44l-0.15,0.48ZM265.82,295.59l0.41,0.33l-0.56,-0.18l0.16,-0.15ZM262.97,472.57l0.3,-0.5l1.01,-0.75l0.1,0.75l-1.41,0.49ZM264.57,470.49l-0.08,-0.04l0.12,0.01l-0.04,0.03ZM261.08,475.09l1.41,-0.74l0.34,0.01l-1.59,0.92l-0.17,-0.19ZM260.71,477.06l0.01,-0.01l0.26,-0.29l-0.23,0.28l-0.05,0.03ZM252.27,478.12l1.89,-0.13l2.85,-0.98l-2.56,1.2l-2.18,-0.09ZM253.39,475.23l0.88,-0.91l2.58,0.13l-1.27,0.75l-2.19,0.02ZM253.56,482.0l0.82,-1.36l0.08,0.05l0.52,0.89l-1.41,0.42ZM255.87,479.98l0.06,-0.04l-0.0,0.02l-0.05,0.02ZM252.51,480.41l0.2,-0.7l0.82,-0.39l-0.5,1.23l-0.52,-0.13ZM248.01,474.32l0.05,0.02l-0.05,-0.01l-0.0,-0.0ZM248.08,474.34l0.75,0.13l-0.24,0.0l-0.51,-0.13ZM221.25,374.75l-0.01,0.26l-0.25,-0.1l0.2,-0.1l0.06,-0.06ZM220.4,374.64l-0.4,-0.18l0.34,0.07l0.06,0.11ZM225.82,389.55l2.08,-1.35l0.69,0.67l-1.45,0.55l-1.32,0.13ZM226.56,364.82l0.55,-0.0l0.3,0.2l-0.94,0.2l0.1,-0.39ZM212.26,480.34l1.69,-0.47l1.05,1.42l-1.79,-0.03l-0.96,-0.92ZM198.62,367.19l0.57,-0.1l0.15,0.16l-0.12,0.1l-0.6,-0.17ZM192.01,266.81l0.3,-0.37l0.16,0.54l-0.24,0.16l-0.23,-0.33ZM134.31,262.76l0.12,-0.19l0.63,-0.37l-0.53,0.46l-0.22,0.1ZM132.82,267.14l0.27,0.07l0.02,0.08l-0.15,0.11l-0.14,-0.25Z", "name": "Northwest Territories"}, "nu": {"path": "M694.52,496.9l1.45,-0.41l1.5,1.75l-1.78,-0.16l-1.18,-1.18ZM682.85,477.29l0.06,-0.73l3.09,-1.55l2.28,-0.08l0.16,0.84l0.97,-0.11l0.46,2.5l-0.68,2.21l-0.48,-0.03l-0.07,-0.92l-1.47,0.05l-4.32,-2.18ZM458.76,294.96l0.81,-2.89l2.15,-0.98l0.63,-1.06l-0.43,-1.03l-1.73,-0.01l-0.34,-2.89l1.13,-2.2l0.18,-3.94l1.05,-0.04l0.7,-1.09l-0.42,-2.4l1.76,0.32l0.23,-0.85l-1.04,-1.03l1.57,-7.74l1.62,-0.71l-0.82,-1.1l0.61,-0.81l1.96,0.32l-0.1,-0.83l-1.25,-0.66l0.98,-1.74l5.77,-6.74l3.91,-2.04l3.49,-1.3l9.14,0.53l1.4,1.76l-4.2,4.64l-2.77,4.99l-3.85,10.54l-0.33,3.11l0.51,1.79l2.87,3.81l-0.94,7.56l0.38,2.71l2.15,4.67l4.81,6.14l3.81,1.67l0.83,2.53l-2.26,-0.26l-0.55,1.17l-1.27,0.17l-0.32,1.27l-1.2,-0.52l-1.85,0.77l-2.42,2.82l-3.81,1.88l1.46,0.7l2.86,-0.76l3.54,-3.28l1.99,-0.62l2.28,0.52l1.59,-0.81l-0.01,0.92l-1.91,0.79l1.09,0.43l0.39,3.17l1.59,0.09l0.64,-1.5l-0.58,-4.42l0.82,-0.76l-0.95,-1.67l0.13,-2.55l1.52,-1.47l-0.77,-4.04l-1.08,-0.95l-1.26,0.21l-0.19,0.88l-2.62,-0.82l-1.39,-1.8l0.57,-0.85l-1.02,-2.06l-2.93,-2.0l1.72,0.19l-0.23,-0.81l1.6,-0.72l0.77,-1.71l-0.74,-1.32l0.95,-0.96l2.07,0.23l3.15,2.51l2.6,3.96l0.62,-1.59l-2.0,-3.48l-1.33,-0.47l-0.71,-1.71l-1.53,-0.76l0.54,-1.17l1.87,-0.1l0.6,-1.22l-2.53,0.16l-0.02,-1.86l-2.05,1.96l-2.72,-1.64l-0.66,-1.5l0.9,-0.86l-1.62,-1.3l-0.08,-5.91l0.49,-1.27l2.32,0.46l8.46,3.95l0.2,-0.85l-7.54,-4.52l-1.19,-2.97l4.62,1.57l3.94,0.35l1.4,0.94l0.52,0.05l-0.06,-0.89l-1.15,-1.13l-5.25,-1.25l-3.8,-1.83l0.2,-2.03l1.57,-1.49l2.59,3.45l0.84,-0.07l-1.98,-3.94l2.49,-1.67l2.45,0.71l0.73,2.42l1.01,0.58l-0.44,-4.04l-2.15,-1.01l1.91,-1.63l2.87,-1.84l0.95,0.17l1.13,-1.93l8.12,-0.24l2.03,3.56l0.89,6.26l3.98,2.05l0.4,5.23l2.94,3.88l-6.36,11.46l0.38,0.63l1.13,-0.55l2.05,-4.19l1.74,-1.68l0.11,2.17l-1.34,1.85l-0.46,2.25l-0.79,0.26l2.08,1.84l-1.87,0.37l-0.52,1.02l0.41,0.94l1.41,-0.3l-0.92,3.15l0.58,0.45l1.15,-0.69l0.41,-1.77l2.28,-1.73l0.09,-1.6l-0.82,-1.04l1.41,-0.97l-0.47,-1.72l2.0,2.6l2.0,0.71l0.49,-0.54l-3.79,-3.93l1.65,-2.2l1.33,1.64l-0.92,2.03l0.5,1.05l1.2,-1.41l0.58,1.55l0.67,0.07l-0.54,-2.39l0.82,-2.03l2.22,2.2l-0.01,4.19l-0.91,2.69l3.67,0.78l1.42,1.23l0.72,-0.44l-0.94,-1.98l-2.18,-1.13l-0.11,-2.89l2.0,1.09l2.74,5.74l2.56,1.06l0.37,-0.6l-0.59,-0.47l0.48,0.2l0.58,1.0l0.46,0.13l0.31,-2.04l-1.44,-0.54l-1.99,-2.7l-1.25,0.05l-1.18,-2.89l-3.1,-1.8l0.23,-2.0l0.81,-0.64l1.53,3.78l0.7,-0.56l-0.84,-2.73l4.17,1.24l1.67,3.05l0.31,-1.89l1.65,-0.35l2.58,0.69l-1.25,-1.26l-2.89,-0.23l-4.95,-2.4l-2.16,-1.59l-0.28,-1.48l1.88,-3.33l3.54,-2.72l4.48,-0.37l1.9,2.09l3.11,0.45l1.17,2.53l0.66,-0.47l0.09,-2.19l4.86,1.25l2.44,4.69l-1.4,2.86l-2.51,-0.03l-2.91,2.14l-1.64,4.99l0.34,0.81l0.78,-0.31l1.65,-4.7l1.99,-1.69l2.53,0.44l-2.18,1.63l-0.21,3.99l-0.7,2.19l-1.44,0.77l0.37,0.84l2.18,-1.16l0.87,-5.95l2.2,-1.18l0.54,-2.42l4.77,0.15l0.92,0.9l0.31,4.15l-1.97,0.09l-0.85,2.3l-4.48,1.99l0.51,0.8l2.58,-0.61l-2.65,3.27l0.23,0.7l4.5,-4.29l-0.72,2.3l-1.41,0.53l-0.65,1.37l0.51,0.92l1.59,-1.43l-0.53,1.24l1.75,1.04l-1.73,5.16l0.85,-0.17l2.17,-4.96l-1.21,-2.74l0.93,-3.23l1.84,-1.94l-0.53,2.66l1.29,1.72l0.43,-0.58l-0.72,-1.5l0.93,-2.99l1.3,-0.61l0.43,0.98l-1.55,5.36l-1.77,1.59l0.33,0.71l1.37,-0.82l-0.44,2.48l0.69,0.43l-0.72,1.87l0.74,0.32l1.26,-3.14l0.14,-4.67l0.6,-1.12l0.55,0.31l0.3,4.12l0.97,0.29l-1.3,7.07l1.74,-1.05l-0.01,-3.42l1.24,-2.36l1.43,0.77l-1.0,1.14l0.37,2.74l-0.87,1.71l0.76,1.2l0.75,-0.22l-0.38,-1.22l0.66,-0.72l0.18,-3.34l1.11,-0.99l-0.55,-3.23l1.39,-0.8l-0.7,-1.6l1.11,-1.15l-0.11,-2.23l7.09,1.89l3.84,4.21l-1.34,4.44l-2.64,-0.48l-1.5,1.0l-1.3,4.83l-2.72,1.93l0.49,0.59l3.05,-1.76l0.6,0.28l-0.76,3.18l-1.54,1.42l0.84,1.0l1.6,-1.56l0.59,-2.29l3.77,-3.12l3.02,-0.31l-0.93,-1.5l0.25,-2.25l1.71,-2.07l1.16,0.31l1.43,3.02l-0.98,1.81l-0.07,2.43l-1.64,1.47l-0.41,2.01l-2.89,0.05l-0.55,3.73l-1.4,0.93l0.45,0.64l1.24,-0.56l-0.27,2.28l0.79,0.6l1.26,-6.02l1.72,-0.08l0.36,5.62l-0.83,5.48l0.79,0.18l0.98,-2.69l0.71,-8.86l-0.45,-2.09l6.26,-6.82l-0.21,2.66l-3.02,2.97l0.77,3.83l1.58,-1.31l-1.02,-1.74l2.5,-0.4l0.18,-1.3l1.9,-1.09l0.75,-2.36l1.58,-0.17l1.09,1.02l6.27,2.05l-0.34,3.45l-0.45,-1.6l-0.83,0.0l-0.14,3.21l-4.87,2.77l-2.19,2.43l-0.3,1.67l-1.71,2.25l0.92,0.23l0.52,-1.07l1.16,0.6l-2.02,0.92l-1.88,3.28l1.42,0.23l1.66,-2.94l2.17,-0.77l-0.68,-2.21l0.4,-1.35l6.26,-2.93l-0.07,3.04l-1.99,1.87l-1.36,3.53l-2.35,0.15l-0.71,1.11l-0.46,3.71l0.27,0.82l0.83,-0.16l0.69,-3.99l2.71,-0.23l1.41,-3.32l0.91,-0.9l2.28,-0.43l0.37,-2.31l1.97,-2.33l-1.27,-1.13l0.67,-2.95l2.01,0.73l3.74,3.23l1.93,2.18l1.76,3.93l-6.27,0.46l-1.77,3.58l-2.6,0.34l-3.44,3.23l-4.02,0.25l-1.72,0.89l0.07,0.9l1.28,0.36l1.62,-1.27l2.97,0.23l4.53,-2.87l4.88,1.63l5.57,-1.45l3.67,1.66l1.55,2.31l-0.24,1.15l-3.01,-0.29l-2.5,1.13l-5.72,-1.84l-6.46,0.58l-1.45,2.21l0.35,0.67l2.06,-1.92l4.11,0.37l1.46,-0.52l0.8,0.68l-6.03,1.08l-0.3,0.6l0.9,0.46l2.07,-0.62l-3.26,2.35l0.4,0.95l0.8,-0.48l0.07,2.84l1.08,-0.89l0.01,-2.02l2.87,-2.49l5.01,1.6l-1.57,1.24l-1.72,-0.31l-2.31,1.01l-0.02,0.97l1.91,-0.56l1.88,0.31l0.15,0.86l-2.9,0.05l-0.19,0.73l0.95,0.26l-1.58,0.41l0.24,1.08l-5.42,-0.71l-0.86,0.94l0.74,1.32l2.91,-0.38l0.31,1.19l0.89,-0.69l5.36,0.01l-1.22,1.14l-3.09,0.27l-0.95,1.34l0.31,0.64l3.61,0.04l0.45,-0.89l3.35,0.67l0.56,2.64l0.79,-0.88l-0.22,-2.22l1.72,-0.57l-0.53,0.96l0.8,2.28l-1.6,1.41l0.31,1.5l1.79,-1.47l-0.6,1.28l0.8,0.33l0.96,-0.69l0.55,-2.01l0.58,0.43l0.56,-0.92l0.88,0.18l-1.47,1.59l0.12,1.99l-1.73,0.21l0.58,0.87l1.94,-0.08l0.15,-2.53l1.34,-1.3l1.77,0.49l-0.39,4.49l0.95,0.37l0.82,-2.33l0.77,2.57l0.61,-0.83l-0.18,-2.76l1.41,-0.1l-0.96,1.14l1.84,-0.34l0.55,0.95l-0.76,3.14l-1.92,-0.02l-0.47,1.06l2.77,0.36l0.79,0.91l0.09,-3.94l1.35,-1.57l1.03,5.61l1.15,2.05l-0.29,-4.16l0.97,-2.03l-0.49,-1.05l1.69,-1.02l-0.18,4.17l3.55,3.47l0.41,-0.64l-0.92,-2.03l-1.79,-1.22l0.3,-2.6l1.38,-1.36l0.53,-2.01l2.04,0.51l-2.13,1.4l0.88,0.7l-0.9,1.04l0.09,1.47l0.94,-0.04l-0.8,1.83l0.42,1.53l0.85,0.05l0.02,-1.75l1.06,-1.77l0.29,1.67l1.08,0.0l0.39,-3.01l1.86,0.94l-1.5,1.87l0.5,0.54l2.2,-1.87l0.45,1.91l1.53,-0.23l0.25,1.77l-2.01,0.91l-0.13,0.76l1.32,0.31l1.95,-0.85l1.02,1.54l-0.3,0.73l-6.13,1.04l0.32,0.64l3.99,-0.1l-3.41,1.94l0.02,1.07l4.64,-2.24l-3.23,3.11l0.68,2.8l0.78,-0.41l0.29,-2.67l3.86,-2.21l0.36,-1.11l2.54,-0.87l0.14,2.09l-1.33,3.04l1.01,0.96l0.04,-1.63l1.77,-2.6l-0.25,-2.7l1.02,-0.27l0.09,-1.48l1.27,1.36l-1.64,2.84l1.15,2.57l-1.97,1.92l0.05,1.54l-1.63,0.7l0.46,0.73l2.68,-1.15l0.3,2.12l0.91,0.15l-0.3,-3.92l2.69,-2.39l1.91,6.56l0.57,-3.76l-0.93,-2.78l0.9,-0.23l2.94,3.38l0.85,-0.11l-2.02,-3.16l0.89,-1.25l-0.59,-1.65l0.99,-0.64l0.59,2.76l1.4,0.67l2.48,-1.02l-0.42,1.17l1.9,-0.0l2.62,2.39l-1.44,1.9l-1.63,-1.41l-2.47,-0.4l-1.53,2.28l1.11,0.54l0.85,-1.1l1.16,-0.0l2.51,1.93l-2.0,1.12l-0.45,1.57l3.33,-1.15l0.33,0.62l-1.74,0.77l-0.68,1.22l-2.06,0.07l-0.94,-1.55l-3.33,0.22l-0.67,1.52l1.19,0.3l0.67,-0.67l1.35,1.66l-1.47,1.5l-1.69,-1.64l-1.16,0.52l2.54,2.46l1.37,-0.8l3.11,0.43l1.48,1.82l-1.48,1.02l-1.88,-0.46l-2.09,0.56l-1.9,-1.83l-1.15,1.0l2.69,2.02l3.48,-0.01l-0.09,0.93l1.44,1.25l-1.99,0.71l-2.48,-1.31l0.46,1.66l2.55,1.16l-1.81,-0.21l-1.18,0.67l1.03,2.77l-1.94,-0.19l-3.62,-4.71l-1.02,0.17l2.44,4.42l-2.56,1.36l0.87,0.62l2.74,-0.07l-0.47,1.12l-1.48,-0.95l-0.06,1.62l0.97,0.67l-0.85,0.57l3.04,2.42l-0.33,2.51l0.71,1.05l0.88,-0.01l-0.39,3.16l-0.71,-0.48l-0.98,0.83l0.81,-0.75l-0.37,-0.81l-1.27,0.7l-0.49,-2.99l-0.88,0.34l-0.38,1.72l-0.85,-0.15l-0.05,1.31l-0.79,-0.78l0.87,-1.93l-0.86,-0.2l-1.53,1.14l-0.15,-4.85l-0.54,-0.34l-1.28,2.78l0.46,3.9l-1.3,-1.32l0.32,-0.69l-1.2,-0.53l-0.74,0.72l1.15,-1.55l-1.02,-0.51l2.37,-1.47l0.14,-1.53l-0.66,-0.44l-1.92,1.03l-2.38,2.45l-0.68,-0.57l-0.39,-0.92l1.43,-0.95l1.17,-3.45l-1.8,0.09l-0.53,2.51l-1.2,0.35l-0.18,-0.92l1.2,-1.96l1.26,-0.6l-0.05,-0.89l-2.03,0.6l-1.02,1.66l-1.71,0.12l0.07,-1.83l-0.9,-0.19l0.37,-2.25l2.59,-2.46l1.89,0.05l-1.12,-1.26l-0.07,-3.39l2.02,-3.11l-0.26,-1.14l-2.75,2.4l-0.76,4.42l-2.19,1.34l-0.68,1.46l-3.64,1.6l-0.61,-1.34l1.9,-3.13l0.51,-3.0l-0.49,-1.87l-0.82,0.26l-0.42,4.19l-1.85,1.91l-1.96,-1.27l0.08,-1.8l-0.91,1.0l-1.47,-0.11l-0.22,-1.13l-0.8,-0.16l0.48,-1.42l-1.86,1.32l-0.01,-1.41l-1.07,0.18l-0.29,-3.03l-3.02,-0.41l-0.33,0.65l1.3,1.39l-1.32,0.44l-3.38,-1.1l-1.64,1.75l0.65,0.65l3.31,-0.23l1.45,1.71l-1.41,-0.44l-0.63,0.73l2.54,1.48l-0.75,0.54l-3.37,-2.45l-1.21,0.06l-0.62,-1.05l-1.59,0.71l2.58,2.79l0.71,2.23l4.32,1.87l1.25,2.89l-1.14,-0.1l-0.36,0.99l-0.95,0.19l-1.16,-0.82l-0.63,0.35l0.43,1.06l-0.9,0.16l-1.24,-1.61l-0.02,-1.8l-2.32,-0.81l-0.78,-1.44l-1.08,0.43l-1.36,-1.55l-0.54,0.71l0.68,1.2l-2.73,1.06l1.68,0.75l1.7,-0.77l1.93,1.66l0.98,-0.34l-0.28,-0.56l0.87,0.64l-0.92,0.94l-1.22,-0.38l0.54,2.52l1.65,0.43l0.57,2.33l2.14,-0.51l-0.31,1.6l0.98,0.82l-0.66,0.16l-0.36,1.53l1.06,2.13l1.86,-3.65l2.1,-1.36l1.0,0.28l-0.84,3.01l1.43,0.98l1.74,-0.66l0.42,0.5l-2.45,2.15l1.09,0.59l0.61,-0.73l0.74,0.38l0.35,1.81l1.87,0.07l-0.75,2.75l2.93,0.13l0.51,0.75l-0.6,0.81l1.04,0.41l1.04,2.94l1.07,-0.96l-1.47,-4.21l3.15,2.35l1.08,-0.49l0.21,1.48l-1.08,0.93l1.08,0.23l0.57,1.18l0.9,-0.33l-0.13,-1.23l0.04,-0.29l0.53,1.04l0.72,-0.24l1.33,1.16l0.75,-0.38l-1.77,-2.91l0.08,-1.17l0.38,1.13l0.64,-0.23l0.45,2.13l0.78,-0.34l-0.19,-1.13l0.42,0.49l0.19,1.22l-1.03,1.45l0.96,2.23l1.61,-0.41l1.21,0.68l2.52,-1.24l-1.19,1.69l0.86,1.29l-2.62,0.09l-1.03,1.31l1.69,-0.21l-0.52,1.12l2.32,0.04l-0.54,1.3l1.7,-0.32l0.74,2.53l2.23,-0.34l0.5,0.75l0.9,-1.34l1.08,0.09l-1.53,1.95l-0.46,2.02l0.95,0.96l2.14,-0.06l1.74,1.04l-0.27,1.18l1.64,3.22l-0.97,0.64l1.28,0.68l-0.55,1.25l0.9,0.27l-0.51,0.23l-1.11,-0.91l-3.12,-5.31l-2.87,-2.59l-1.87,0.31l3.78,3.29l-0.64,0.99l0.77,1.77l-0.59,0.67l2.56,1.98l-1.19,-0.05l-0.53,1.14l1.27,1.72l2.63,0.42l-0.39,0.88l0.97,1.02l-0.06,1.3l1.26,0.59l-0.85,0.68l-2.59,-1.8l-0.65,0.89l-1.24,-0.34l4.6,6.01l-1.04,1.6l-1.8,-2.14l0.42,-1.04l-1.58,-2.97l-2.0,2.36l-1.49,-1.33l-0.57,-2.67l-2.36,1.98l-0.47,-1.12l-2.59,-1.17l-0.36,0.86l2.3,2.5l-2.22,-0.51l-3.65,-4.53l-0.14,-1.92l-0.72,0.04l-0.26,2.36l-0.83,0.26l0.7,1.87l-1.38,-1.03l0.36,-0.84l-0.93,-2.4l-0.93,0.26l0.37,2.04l-1.2,-0.16l-8.11,-7.18l-0.4,0.91l3.71,6.15l-4.19,-3.47l-0.79,0.11l-1.1,-1.62l-0.72,0.95l-1.29,-1.34l-2.46,-0.28l-0.19,0.97l-2.23,0.29l2.05,2.1l-0.06,0.88l6.19,4.57l1.06,1.94l2.68,0.57l0.26,1.45l0.99,-1.03l1.0,0.23l-0.45,0.99l0.92,1.52l1.18,0.53l1.56,-1.7l1.35,1.12l-0.52,0.84l1.63,-0.42l-0.25,1.11l1.32,-0.23l1.91,2.8l1.63,-0.84l2.41,1.54l0.95,2.34l1.55,0.16l-0.92,0.86l0.36,0.76l1.38,0.89l3.39,-0.2l-0.06,2.36l-0.75,-0.65l-0.63,1.02l1.25,1.91l1.95,1.23l-3.51,1.15l-3.64,-1.76l-3.28,0.37l-1.57,-0.92l-0.43,0.51l-0.56,-1.0l-11.24,0.57l-3.15,-1.87l-1.57,0.4l-1.67,-0.82l-0.9,-0.67l-0.77,-2.65l-0.67,1.08l-0.84,-0.79l-0.49,0.44l-0.5,-0.52l1.1,-0.91l-0.18,-1.79l-4.59,-0.09l0.32,1.1l-1.13,-0.32l-0.75,1.07l-1.42,0.12l-2.52,-1.63l-2.55,0.01l-0.22,-0.74l-1.26,-0.11l-0.63,-1.48l1.01,-1.89l-1.32,-0.83l-0.81,0.48l-0.15,1.58l-1.2,-0.09l-0.26,1.25l-1.15,-0.06l-0.18,-1.19l-2.62,-0.45l-0.01,-1.66l-1.15,-0.38l-0.4,-2.19l2.64,-1.94l1.06,-3.03l-2.33,0.05l-0.77,-0.38l0.15,-1.01l-2.36,-0.48l-1.64,-1.22l-1.53,2.05l-1.14,-0.8l1.0,-2.68l-1.09,0.32l-0.3,-0.9l-0.73,0.09l-0.88,2.78l-1.46,-0.6l-0.12,-2.77l-0.89,-1.25l-0.61,-0.22l-0.24,1.63l-0.64,-0.07l-1.06,-2.78l-1.29,-0.25l-0.78,-1.57l-2.81,-2.03l1.32,-3.66l-1.91,-1.59l-0.6,0.96l0.68,1.51l-0.77,-1.17l-0.98,0.41l-1.26,-1.16l-0.16,2.19l-1.68,-0.74l-0.59,0.55l-1.43,-3.04l-0.89,1.86l-1.92,0.44l-0.32,0.92l-1.6,-1.78l1.46,-2.42l-1.95,-1.23l-0.97,1.2l0.21,1.06l-2.14,0.85l5.01,3.85l-1.25,0.58l1.23,1.55l-1.02,1.15l-4.16,-1.4l-0.56,0.74l-5.24,-2.36l-0.66,0.66l0.31,1.11l1.25,1.18l-1.44,-0.25l-0.25,0.79l1.33,1.25l-1.42,-0.29l-3.18,1.42l-0.16,0.85l-2.85,0.86l0.25,1.83l-3.37,-1.4l-1.67,1.18l-1.64,-1.8l-1.4,-0.53l-0.65,1.01l-1.01,-0.4l0.18,-0.96l-1.38,0.16l0.23,-0.61l-1.94,-1.93l-0.47,-1.74l0.58,-3.71l-0.93,-2.07l3.67,-4.09l2.52,-1.32l-1.88,-2.8l1.66,-1.13l-1.25,-1.47l2.48,0.81l3.41,-0.38l7.68,2.38l0.82,1.41l2.51,1.24l0.41,1.5l-1.87,1.27l1.01,1.62l0.99,0.07l-0.18,1.52l1.75,0.96l0.9,-1.11l-1.68,-3.68l1.26,-0.56l0.06,-3.01l-0.99,-0.23l-0.4,1.88l-1.94,-2.57l-3.27,-1.88l1.79,-0.4l0.8,0.76l3.16,0.01l1.08,-0.93l-0.22,-2.0l2.56,-0.54l1.92,0.93l2.85,-4.62l1.06,0.43l1.52,-0.66l0.97,1.1l2.11,-0.37l-3.09,-6.4l-2.77,-1.27l-4.63,-4.88l6.7,-9.38l0.47,-2.31l2.72,-1.98l-0.57,-1.95l0.71,-4.69l2.8,-1.64l0.84,-1.87l0.01,-2.66l-1.36,-0.67l-2.24,-5.92l-1.49,-0.85l0.01,-2.17l-1.63,-1.76l-1.09,-0.18l-2.05,-6.75l-1.27,0.29l-1.56,-1.11l0.71,-1.45l-0.85,-0.81l-1.85,2.62l-2.05,-0.67l-0.84,-1.08l1.1,-2.31l-1.12,-3.85l-3.03,-0.48l-0.77,0.78l2.8,3.56l-3.02,-0.07l-1.14,-0.93l-1.95,-2.33l0.9,-2.17l-1.15,-0.58l-0.42,-1.6l-1.96,-0.45l2.21,-1.04l-1.72,-1.53l-2.01,1.99l-0.14,2.43l-3.08,-2.24l-0.47,3.0l-4.76,4.7l-1.75,0.63l-0.45,-1.23l0.68,-2.68l-0.97,-0.74l-0.22,-1.81l1.19,-0.86l3.37,0.52l1.44,-1.92l1.11,-0.14l-0.14,-3.68l-3.42,-2.68l-1.7,-0.62l-1.39,0.45l-2.08,-2.49l0.71,-1.96l1.85,0.5l-0.06,-1.84l-1.74,-0.47l-1.73,0.58l-0.26,0.56l0.86,0.42l-0.81,1.64l-0.82,-0.16l0.17,-1.07l-1.38,0.87l-1.26,-0.62l2.11,-0.67l0.62,-1.2l-0.94,-1.07l0.67,-1.5l-1.74,0.37l-0.4,-0.83l-1.71,0.78l1.88,-1.51l-0.3,-1.04l-4.26,3.03l-1.32,-7.62l-1.7,-1.3l-1.24,0.89l-1.16,-0.49l-0.97,1.04l-1.01,-1.45l0.52,-1.14l-1.65,-0.04l-1.43,-2.16l-1.85,0.18l0.94,-1.83l1.32,0.06l-2.58,-2.93l-1.55,1.42l0.97,0.71l-0.47,1.38l-0.86,-0.66l-1.19,1.92l-1.26,-1.9l-2.0,-0.79l-0.61,-1.5l-1.55,-0.0l-0.56,0.88l-1.0,-2.07l-1.84,0.25l-1.42,1.35l-2.01,-0.26l0.06,1.38l1.15,1.12l2.88,-0.22l0.96,1.23l1.36,-0.58l0.19,-0.9l1.32,0.13l3.63,2.75l-0.22,1.38l1.06,0.86l1.03,-0.19l1.43,1.13l1.2,-0.57l1.8,2.7l1.09,3.44l-0.59,2.38l-5.95,1.45l-1.74,-2.45l-0.89,0.39l-0.46,-0.81l-2.2,0.42l-1.6,-1.01l-9.18,-0.84l0.53,1.75l2.11,1.44l0.97,-0.67l0.69,0.48l3.45,4.13l-0.58,0.97l-4.99,-3.98l-0.07,-0.83l-1.35,0.04l-2.89,-2.78l-7.03,-3.72l-0.63,0.65l2.03,2.2l4.22,1.67l3.95,3.07l-0.83,1.43l-0.97,-0.26l-0.93,1.2l-2.06,-0.44l-5.56,-3.13l-3.56,1.76l-7.45,-0.82l-0.91,-0.57l0.02,-1.7l-1.29,1.08l-2.79,-0.72l-3.39,0.36l-0.71,1.52l-4.48,-4.09l-0.29,-2.53l1.96,-2.46l-0.76,-1.4l-2.55,3.48l-1.81,-2.18l-1.59,0.75l-0.84,1.74l1.76,0.28l0.14,1.23l-3.28,-0.82l-2.57,0.39l-3.84,-2.75l-2.22,-0.36l-1.4,-1.55l-3.86,-7.62l1.3,-0.38l0.48,-1.01l-2.06,-2.13l2.05,1.18l3.47,-0.53l1.43,0.48l0.66,1.5l3.26,0.51l3.83,-0.4l0.7,-1.35l1.65,0.38l0.42,-0.86l-5.34,-2.96l-0.88,-2.9l-1.91,1.23l-12.1,-2.48l-1.13,-5.32l1.61,-3.77l-2.16,-3.72ZM488.81,323.97l3.2,-1.19l3.79,-4.52l-1.07,0.06l-3.54,3.78l-2.78,0.91l0.39,0.97ZM474.79,330.37l0.28,0.24l0.75,0.17l-1.05,0.62l-0.53,-0.59l0.54,-0.44ZM473.0,330.18l-0.24,-0.03l-0.02,-0.02l0.21,-0.03l0.05,0.07ZM482.88,328.8l0.11,0.5l-0.87,0.03l-0.03,-0.17l0.79,-0.36ZM489.66,335.76l1.57,-0.65l1.38,0.68l-2.41,0.32l-0.54,-0.35ZM516.8,338.32l0.08,0.2l-0.05,0.1l-0.02,-0.01l0.0,-0.29ZM535.08,322.46l0.0,-0.02l0.01,0.02l-0.01,-0.0ZM550.44,335.16l0.41,-0.09l-0.17,0.82l-0.12,-0.36l-0.11,-0.37ZM574.5,352.3l0.32,0.6l-0.22,0.09l-0.34,-0.24l0.25,-0.45ZM587.32,361.34l-0.15,0.27l-0.05,0.15l0.03,-0.41l0.16,-0.01ZM582.58,432.13l-0.03,0.04l0.02,-0.03l0.02,-0.01ZM595.87,437.1l0.4,0.28l0.14,0.44l-0.7,-0.43l0.16,-0.3ZM596.59,438.06l0.17,0.24l-0.2,0.4l-0.6,0.52l-0.32,-0.49l0.95,-0.67ZM596.09,440.16l0.05,1.42l-0.31,0.11l-0.08,-0.87l0.34,-0.66ZM595.73,441.72l-0.02,-0.02l0.04,-0.0l-0.01,0.02ZM601.21,436.6l-0.0,0.19l-0.07,0.04l0.01,-0.01l0.06,-0.21ZM601.53,439.34l-0.21,0.44l-0.21,-0.16l0.05,-0.3l0.37,0.02ZM602.53,440.7l-0.02,0.19l-0.36,0.35l-0.06,-0.15l0.44,-0.39ZM602.26,441.69l0.22,0.2l0.05,0.16l-0.23,-0.16l-0.03,-0.2ZM611.9,449.73l0.04,0.02l-0.05,0.01l0.01,-0.03ZM613.57,450.64l0.12,0.99l-0.1,0.01l-0.22,-0.97l0.21,-0.02ZM615.69,450.49l0.09,-0.01l-0.03,0.11l-0.01,-0.03l-0.04,-0.08ZM616.43,450.22l0.17,-0.03l-0.0,0.12l-0.01,0.01l-0.15,-0.11ZM620.64,452.03l0.0,0.12l-0.28,0.07l-0.0,-0.12l0.28,-0.07ZM662.89,449.16l1.85,2.25l-0.68,0.81l-0.41,-1.74l-0.76,-1.33ZM672.43,451.68l0.27,0.56l-0.74,0.85l0.19,-0.89l0.28,-0.52ZM677.9,454.39l-0.21,0.16l-0.02,-0.11l0.23,-0.04ZM649.96,390.46l0.52,0.44l0.09,0.2l-0.45,-0.05l-0.16,-0.58ZM680.53,409.14l0.0,0.01l-0.0,0.01l-0.0,-0.01ZM680.49,409.43l0.0,0.21l0.09,0.26l-0.18,-0.29l0.09,-0.18ZM678.41,399.12l0.0,-0.0l0.02,0.01l-0.02,-0.01ZM682.12,392.93l1.68,0.43l-0.8,1.15l-0.46,-0.47l-0.42,-1.1ZM630.78,350.05l-0.21,-1.8l1.24,-0.25l0.07,1.13l-1.1,0.92ZM633.93,349.02l0.23,-1.09l0.75,0.21l-0.06,0.86l-0.92,0.02ZM635.3,347.75l0.31,-0.27l0.31,-0.07l-0.19,0.29l-0.43,0.04ZM624.0,340.87l0.04,0.01l-0.01,-0.0l-0.03,-0.01ZM522.82,287.99l0.09,0.04l0.16,0.16l-0.08,-0.03l-0.17,-0.18ZM490.73,269.27l-1.65,0.1l0.29,-1.42l0.24,0.46l1.12,0.86ZM527.85,279.51l-0.04,-0.23l0.12,0.06l-0.09,0.17ZM541.86,292.0l-1.03,-0.78l-1.11,-1.72l0.33,-0.2l1.8,2.7ZM574.47,296.36l-0.01,-0.14l0.08,0.1l-0.07,0.04ZM622.2,341.87l0.57,-0.05l0.37,0.23l-0.06,0.02l-0.88,-0.2ZM621.18,347.72l0.29,-0.42l0.66,0.04l-0.11,0.11l-0.85,0.26ZM652.5,357.13l0.08,-0.22l0.02,0.06l-0.1,0.16ZM662.71,366.06l0.84,-0.66l-0.06,0.71l-0.78,-0.04ZM681.52,367.13l0.1,-0.69l1.1,0.24l-0.11,0.28l-1.08,0.17ZM663.42,400.33l-0.06,0.03l-0.14,0.26l-0.05,-0.25l0.25,-0.03ZM653.13,413.38l0.02,-0.07l0.01,0.04l-0.03,0.03ZM663.69,417.31l0.03,-0.16l0.0,-0.05l0.04,0.06l-0.07,0.15ZM655.95,454.61l0.2,-0.08l0.01,0.01l-0.0,0.01l-0.21,0.05ZM656.38,456.41l0.17,-0.67l0.69,-0.27l0.05,0.1l-0.91,0.84ZM672.06,466.54l-0.48,-0.52l-0.04,-0.19l0.99,0.26l-0.47,0.44ZM626.86,462.8l-0.05,0.04l-0.35,0.13l0.03,-0.16l0.37,-0.02ZM618.54,456.26l-0.06,0.22l-0.83,-0.15l0.45,-0.09l0.44,0.02ZM539.2,319.9l-0.1,-0.03l0.05,-0.09l0.05,0.11l0.0,0.0ZM536.94,321.66l0.12,0.79l-0.07,0.39l-0.29,-0.51l0.24,-0.67ZM685.1,391.66l0.88,-0.12l1.42,0.57l-1.42,0.29l-0.89,-0.74ZM683.01,459.85l0.95,-0.38l-0.34,-1.43l3.06,-0.11l-0.67,2.54l-3.01,-0.62ZM683.38,471.15l0.86,-0.49l2.63,2.61l-2.13,-0.41l-1.36,-1.71ZM680.79,436.67l0.47,-0.31l1.46,3.68l-1.98,-3.03l0.04,-0.33ZM682.98,440.44l1.1,0.65l0.41,0.67l-0.53,-0.25l-0.98,-1.07ZM681.47,458.53l0.32,-0.72l0.69,-0.02l-0.6,0.62l-0.41,0.12ZM677.24,433.12l0.03,-0.86l1.16,1.1l0.02,1.05l-2.14,-0.09l-0.04,-0.8l0.98,0.49l-0.01,-0.9ZM678.58,434.5l0.26,0.02l0.12,0.08l-0.11,-0.06l-0.27,-0.04ZM679.77,434.88l0.31,-0.35l0.23,0.91l-0.36,-0.42l-0.19,-0.15ZM677.9,474.82l0.38,-0.71l0.86,0.37l-0.56,0.47l-0.68,-0.12ZM674.31,366.81l0.01,-0.0l0.0,0.01l-0.01,-0.0ZM674.45,366.24l0.79,-2.28l0.92,-0.55l-1.2,2.63l-0.51,0.19ZM665.85,422.28l0.83,-2.73l0.99,-0.49l0.41,0.37l-1.19,1.04l0.24,0.64l-1.29,1.17ZM665.47,364.06l0.62,-1.05l0.64,0.74l-1.26,0.31ZM666.81,363.73l0.66,-0.69l0.48,0.21l-0.28,0.27l-0.87,0.22ZM664.13,502.89l2.55,1.52l0.12,0.98l-0.75,1.66l-2.74,2.42l-0.16,-2.82l0.98,-3.76ZM662.22,358.47l1.11,0.82l0.23,0.27l-1.19,0.41l-0.15,-1.5ZM639.41,351.83l1.43,-0.74l0.22,0.76l-1.65,-0.02ZM626.82,465.8l0.25,0.01l-0.2,0.0l-0.05,-0.01ZM627.85,465.83l1.97,0.06l3.4,1.22l0.33,1.3l2.02,0.82l-1.39,1.1l-2.46,0.16l-1.59,-2.69l0.48,-1.3l-2.74,-0.68ZM625.81,343.56l0.73,0.13l-0.17,0.02l-0.56,-0.16ZM624.08,326.81l0.98,-1.23l0.85,0.24l-1.04,0.31l-0.8,0.68ZM619.86,326.49l0.75,-1.58l1.91,-0.31l-0.76,2.34l-1.9,-0.46ZM610.7,452.69l0.01,-0.01l0.0,0.02l-0.02,-0.01ZM597.03,474.35l0.51,-0.32l0.93,0.8l-0.8,-0.03l-0.64,-0.45ZM598.82,475.02l2.06,-0.45l1.34,0.64l-0.8,0.22l-2.61,-0.41ZM598.97,437.76l0.38,-0.55l0.19,-0.09l-0.03,0.69l-0.54,-0.05ZM599.8,438.49l0.12,0.08l0.02,0.12l-0.07,-0.1l-0.06,-0.1ZM599.75,439.54l0.16,1.13l-0.14,0.22l-0.37,-1.33l0.36,-0.02ZM585.53,305.08l0.88,-0.56l0.39,-2.98l3.58,0.52l-0.02,1.53l-3.57,2.95l-1.26,-1.45ZM580.11,367.21l0.33,-1.37l0.5,1.93l4.05,0.91l2.48,-0.49l1.1,3.69l-7.41,1.27l-1.1,-0.39l-2.06,-2.68l-0.25,-1.55l2.03,-0.52l0.32,-0.79ZM579.24,359.67l1.96,2.08l-0.27,1.41l0.09,-1.13l-1.78,-2.35ZM575.22,680.92l0.71,-0.09l2.49,-1.73l-0.66,2.13l-2.24,0.45l-0.3,-0.76ZM578.3,290.03l0.13,2.03l-1.22,-0.22l0.14,-1.53l0.96,-0.29ZM574.93,293.48l1.17,-0.64l-0.34,1.92l-0.69,-0.8l-0.14,-0.48ZM575.81,294.96l0.04,0.13l-0.04,-0.01l-0.01,-0.11ZM576.17,295.58l0.78,-0.24l0.48,-1.68l0.6,0.68l-1.02,0.89l0.3,1.54l-1.02,-0.28l-0.11,-0.92ZM577.62,297.27l0.03,0.05l-0.01,0.06l-0.02,-0.0l0.0,-0.11ZM570.07,460.89l0.38,-0.61l-1.05,-0.3l0.31,-0.59l5.52,1.64l0.68,1.7l0.75,0.13l-0.55,1.35l-2.27,-0.41l-3.77,-2.91ZM576.74,357.28l-1.38,0.21l-0.19,-1.49l0.51,0.07l1.05,1.21ZM560.18,382.36l-1.12,-3.84l0.23,-2.62l2.93,-9.21l2.5,-1.76l1.8,0.45l1.21,-1.15l5.94,1.24l1.19,1.62l-0.56,4.02l2.13,6.58l-0.39,2.68l-1.49,2.72l-3.6,2.73l-8.12,1.49l-2.64,-4.94ZM571.22,358.9l0.19,-3.03l1.7,0.28l2.32,3.53l-0.81,0.96l0.75,1.57l-4.15,-3.31ZM573.96,604.3l0.57,-3.93l0.69,-1.52l0.38,4.28l-1.64,1.18ZM570.68,628.55l0.13,-0.06l0.12,-0.02l-0.25,0.08ZM564.16,610.52l-0.85,-0.98l3.48,-5.9l-0.32,2.08l-2.31,4.8ZM567.38,604.86l1.4,-1.14l0.56,-6.2l0.95,0.09l0.62,1.43l1.16,0.56l-4.02,10.22l-1.02,-0.49l1.41,-3.88l-1.05,-0.59ZM572.63,599.58l-0.23,-0.07l0.17,-0.06l0.06,0.13ZM451.63,52.33l1.56,-3.16l1.89,0.11l-0.13,-1.92l1.49,-0.25l1.71,-1.54l1.13,0.37l0.59,-0.57l2.17,2.8l0.84,-3.22l0.82,-0.72l-0.15,-2.05l3.63,-2.72l2.38,0.61l0.73,1.43l-0.38,1.72l2.5,2.18l0.47,-1.14l-1.45,-1.29l1.06,-0.68l-0.66,-1.47l1.06,-0.2l2.4,0.99l2.7,4.64l0.71,-0.68l-1.58,-3.63l1.35,0.05l1.51,3.07l1.7,-0.06l-0.86,-3.52l-8.11,-3.87l-0.59,-1.76l4.47,-0.92l1.33,-1.24l-0.58,-3.99l-1.58,-0.96l4.05,-1.1l-0.83,1.66l1.63,0.69l0.67,1.21l2.81,0.12l0.96,1.15l2.25,4.98l-0.2,2.0l4.05,0.0l1.0,0.66l0.49,-0.55l-1.19,-1.97l-2.04,0.12l-1.94,-4.74l9.99,7.64l2.31,0.6l2.48,3.92l1.54,0.16l0.34,-0.63l-3.32,-4.51l0.05,-1.23l-4.63,-1.93l-0.24,-1.77l-1.54,0.07l-6.04,-5.8l0.48,-3.29l4.06,-0.38l-3.44,-2.58l-0.39,-1.53l0.72,-0.58l2.38,0.96l2.28,2.63l1.59,-0.26l0.08,-1.06l-4.38,-7.22l4.14,0.81l0.95,3.03l1.43,1.1l0.74,-0.57l-0.81,-1.5l2.82,1.01l2.43,-0.47l0.15,-1.16l-5.43,-1.65l-0.3,-1.04l1.01,-0.78l-3.03,-1.61l3.22,-2.36l1.36,2.63l0.78,-0.04l0.59,-2.17l0.65,2.75l2.04,0.49l0.61,-2.92l2.57,1.25l2.99,5.34l2.82,2.06l-0.8,3.78l0.92,0.76l2.45,-6.0l-3.57,-2.25l-0.47,-1.1l1.07,-1.12l-1.73,-0.32l-1.4,-2.41l-3.04,-2.84l4.22,-2.08l6.94,0.36l2.12,3.85l6.09,4.05l0.1,-1.56l-2.6,-1.39l-2.64,-3.56l2.43,-5.33l0.9,0.3l0.55,-0.94l1.89,-0.25l-0.21,2.37l1.45,2.23l3.16,1.29l0.2,-1.2l-2.9,-2.53l1.81,-3.13l3.37,-0.89l0.09,1.56l1.08,0.42l-0.26,1.14l0.82,0.44l1.53,-1.47l0.8,1.19l2.44,-1.16l0.54,1.8l2.03,-1.43l3.02,0.63l1.4,-0.92l-0.86,3.66l-5.49,6.35l0.73,1.25l4.23,-1.92l1.09,-2.02l1.64,-0.62l-0.23,-1.32l2.08,-3.05l0.9,-0.26l0.4,1.56l1.64,0.18l0.28,-0.66l-0.86,-0.58l0.4,-1.87l-0.54,-0.45l0.07,-0.42l0.32,-0.16l-0.04,0.76l2.83,2.83l0.62,-0.25l0.42,-2.32l2.18,-0.33l0.41,1.66l-1.26,1.57l2.95,1.54l0.15,1.36l1.46,0.06l0.29,3.25l-0.65,1.25l1.78,-0.54l0.71,-2.33l0.83,-0.34l0.87,1.08l0.38,-0.7l2.02,-0.25l2.75,2.8l0.71,4.57l-2.15,2.43l0.74,0.97l-0.64,2.61l-0.85,0.33l0.11,1.15l-3.8,6.69l-1.76,-0.44l1.06,2.04l-0.55,1.01l-4.04,0.04l-0.13,0.98l-2.31,1.76l0.2,0.86l1.88,-0.26l-0.64,0.83l-0.79,-0.44l-0.64,1.0l-7.69,3.8l-5.83,-3.2l0.44,1.16l4.34,2.87l-1.89,0.74l1.62,0.97l5.23,-2.85l2.62,0.55l-6.68,7.85l-1.32,1.21l-1.66,-0.02l-0.48,1.99l-2.52,1.31l0.8,1.26l1.09,-0.38l-0.52,1.89l15.77,-15.26l4.02,-2.71l0.76,1.57l-2.32,6.44l-2.19,1.91l-1.5,5.88l-1.61,3.14l-1.56,0.46l0.34,2.06l-4.21,8.21l-0.47,6.44l-0.92,1.26l-2.31,0.45l-0.87,-2.93l-2.64,-2.17l-0.76,0.28l2.83,3.95l0.14,2.03l2.67,1.65l-0.45,1.72l-2.6,0.08l-3.72,3.24l-1.47,-1.63l-2.54,-0.39l0.07,0.86l2.62,1.91l-2.03,1.1l0.77,1.03l4.03,-1.03l3.21,-2.6l0.66,0.72l-0.33,2.62l-2.68,1.86l-0.36,1.03l0.33,1.05l2.27,-0.58l-0.4,2.42l-4.23,4.11l-1.84,0.03l-1.35,-0.56l-0.5,-2.83l-4.08,0.49l-0.28,-0.99l-2.72,-0.24l-2.5,1.54l0.32,1.26l0.77,0.8l1.63,-0.58l4.43,0.49l2.07,4.38l-0.5,1.48l-1.61,0.49l-0.93,-1.22l-0.93,0.11l0.45,2.43l-1.01,0.71l-1.9,0.07l-2.03,-1.35l-0.44,1.08l0.94,2.58l-2.15,-0.19l-1.87,-1.27l-0.64,0.63l-1.33,-1.41l-5.02,-0.68l-0.29,1.22l0.64,0.86l-1.39,1.07l1.3,2.66l-3.18,-0.69l-0.99,0.91l3.65,1.7l-0.49,0.59l0.52,0.53l3.25,-1.28l2.94,-0.36l1.32,0.83l6.71,-0.97l-1.36,1.41l2.36,2.8l-2.7,0.6l-3.21,-0.78l-0.96,-1.92l-1.52,-0.97l-10.24,1.71l-0.61,0.97l0.81,0.74l0.7,-0.57l6.41,-0.12l2.91,0.69l-2.7,0.07l-3.72,2.2l-2.89,-1.13l-4.07,0.92l0.31,0.97l4.62,-0.44l0.75,0.49l-2.04,5.75l0.52,1.3l0.79,-0.47l1.62,-5.07l4.43,-2.33l4.73,0.72l-3.04,2.71l0.21,1.2l3.65,-1.75l3.91,0.39l1.2,3.12l-0.16,2.11l1.14,0.67l-3.09,2.42l-5.59,0.06l-1.11,0.86l0.08,0.94l2.77,-0.28l0.49,0.95l5.32,1.54l0.39,0.76l-1.37,0.5l-0.8,2.86l-5.32,-0.57l-1.6,1.33l0.25,1.1l1.78,0.65l5.04,-0.02l-0.83,3.39l-1.94,-0.74l-2.9,3.31l-1.48,-0.86l-3.65,0.65l-2.4,-1.05l-0.83,2.83l2.74,2.17l0.02,3.58l1.96,1.17l-1.13,1.17l0.25,1.4l-1.46,2.03l0.24,1.16l-2.0,1.75l0.12,-1.32l-0.64,-0.26l-1.79,2.52l-2.82,-0.37l-1.66,1.19l-2.98,-0.37l-4.19,-2.62l-3.75,-5.91l-0.93,0.02l0.24,2.06l1.48,2.19l-0.06,2.42l3.22,1.92l-3.2,1.07l-2.05,-0.28l-0.12,0.9l1.53,0.95l0.7,2.19l1.08,-0.09l3.07,-3.13l5.01,1.29l-1.18,2.84l0.85,0.62l1.7,-3.13l1.38,-1.38l1.27,-0.05l2.13,1.41l0.32,1.24l-1.49,3.21l0.08,1.68l2.71,-0.42l-0.27,1.92l1.75,0.6l1.69,-4.7l1.05,-0.55l2.45,4.33l0.24,3.88l-1.27,0.71l-0.37,2.68l-1.13,1.56l-0.61,-0.43l0.05,-1.71l-1.96,-0.2l-2.11,6.92l-1.45,-0.21l-2.66,2.31l-0.96,-0.18l-2.11,1.39l-0.3,0.82l-1.76,-0.81l1.08,-5.22l-2.54,-1.91l-0.2,-1.2l-0.72,-0.08l-1.38,2.18l-2.71,-0.68l0.08,-2.08l1.15,-2.18l-2.86,1.39l-2.8,-4.26l-0.73,0.8l1.63,3.45l2.4,1.97l-0.52,1.16l0.56,2.12l-3.0,0.93l-1.64,-1.42l-0.33,-2.96l-1.7,-2.06l-0.03,-2.0l-0.6,-0.34l-0.99,1.82l1.81,3.15l0.53,3.63l-2.22,-0.37l-3.6,-5.43l-0.91,0.48l0.76,1.13l0.21,3.65l-1.88,0.31l-1.58,-2.85l-1.33,-0.41l0.58,4.26l3.36,2.1l-4.06,0.78l-0.6,-0.7l-6.11,-1.47l-0.25,-1.66l1.11,-1.5l-2.76,-2.97l-0.46,0.74l1.83,2.29l-1.82,1.26l-0.29,2.61l-1.72,-0.52l-0.45,-1.58l-1.19,-0.11l-1.11,-3.97l-0.72,0.62l0.31,3.91l0.65,0.8l-0.75,1.5l-1.01,-1.89l-0.79,1.24l-2.32,-0.55l0.37,-2.67l-0.99,-2.63l-0.07,-5.11l-0.8,0.13l-0.92,2.26l0.57,2.6l-0.79,0.78l-0.85,4.21l-2.3,-1.8l-0.27,-2.03l-0.94,0.26l1.39,-4.03l-0.8,-2.86l5.95,-5.28l0.12,-1.01l3.66,-0.38l0.48,0.85l1.2,-0.21l0.63,-0.4l-0.3,-1.35l1.25,-0.33l1.53,1.4l1.48,-1.96l-2.98,-0.83l1.23,-1.3l-1.69,-0.5l1.99,-1.15l0.01,-0.73l-4.62,0.26l-0.15,-4.55l-2.79,-2.63l0.44,-3.88l4.54,-2.14l3.75,1.53l2.52,2.87l1.71,7.39l1.03,-0.76l0.8,1.14l2.38,0.43l1.45,1.48l1.65,0.4l0.48,-0.5l-0.84,-2.1l2.49,-0.07l3.23,1.12l0.52,-0.45l-0.4,-1.35l-1.77,-1.17l2.25,-1.39l1.88,-4.33l1.83,-6.33l-0.38,-2.63l1.24,-1.34l-0.41,-0.77l-0.98,0.14l-1.53,1.65l0.25,2.82l-0.9,1.02l-2.07,7.08l-1.97,2.55l-4.9,-0.47l1.84,-3.58l-0.42,-1.99l-2.31,3.72l-1.72,-1.12l0.44,-2.92l2.4,-2.71l1.84,0.19l0.09,-0.86l-1.56,-0.74l-3.62,0.67l-0.97,0.87l-0.93,-1.03l2.79,-2.91l1.78,0.54l2.49,-1.51l-0.36,-0.64l-2.77,0.8l-1.0,-0.8l0.37,-1.3l1.6,-0.84l2.34,0.89l1.11,-0.92l-2.53,-1.11l-2.44,0.46l0.57,-2.56l1.25,-0.99l-0.23,-0.79l-1.27,0.23l0.69,-6.07l-0.66,0.0l-0.89,2.18l-0.75,6.02l-1.81,4.32l-3.64,1.46l0.11,-1.87l1.51,-2.15l0.0,-4.26l-2.21,4.77l-1.49,-0.07l-1.1,2.26l-3.45,-0.05l2.24,-1.71l-1.13,-0.98l-1.15,0.28l-0.09,-5.02l1.57,-2.69l1.71,-0.45l-0.33,-1.08l-1.04,0.08l2.22,-5.38l4.35,-0.89l3.22,-2.37l1.72,1.18l4.75,0.51l3.08,2.66l1.99,0.73l2.71,3.07l0.94,-1.28l-1.92,-2.43l1.56,-0.41l-0.12,-1.19l-0.92,-0.38l-1.93,0.76l-2.3,-2.0l3.89,0.23l1.97,-1.17l1.55,0.41l0.13,-4.04l0.84,-1.58l-0.78,-1.1l-1.85,1.67l-0.92,2.69l-1.67,0.83l-2.17,-1.17l-6.62,0.01l-2.36,-1.93l0.97,-2.21l1.34,0.33l1.16,2.03l2.71,0.4l0.81,-1.0l-3.25,-2.16l-0.3,-2.48l-1.44,0.92l-1.21,-5.65l-2.04,-1.92l-0.94,-3.5l-1.66,-1.68l-5.45,-1.76l0.13,-5.04l3.58,0.7l1.1,0.9l0.84,-1.01l-1.65,-1.5l-4.58,-1.39l-0.61,-2.66l0.47,-4.47l2.35,-0.75l2.91,1.75l6.82,0.0l8.29,9.68l1.21,3.72l1.52,0.99l-0.35,1.77l0.89,0.78l1.35,-1.36l3.9,1.55l0.25,-1.04l3.1,-1.46l0.78,-1.84l-0.48,-0.53l-5.1,1.93l-2.93,-1.38l-1.1,-4.55l1.05,-1.31l-3.86,-1.89l-5.31,-7.57l12.41,-4.94l1.19,-1.65l9.01,-2.3l-0.18,-1.51l-8.12,0.6l6.89,-5.55l7.25,-2.54l-0.0,-1.15l-0.9,-0.71l-6.21,0.77l-3.59,1.59l-0.31,-3.3l1.55,-3.08l-0.13,-1.8l1.14,-0.81l1.79,-3.84l2.17,-1.99l1.05,-2.43l-1.11,-0.39l-5.09,5.04l-1.84,3.71l0.04,2.02l-3.46,-2.08l0.19,1.27l1.88,2.04l-0.89,2.04l0.81,1.51l-1.36,3.73l-5.1,5.15l-6.47,3.44l-2.88,0.56l0.06,-2.18l4.03,-2.58l1.53,-3.04l-1.59,-0.63l-2.52,2.89l-3.57,1.37l-0.11,-0.89l1.71,-2.36l-1.42,-0.71l-1.54,2.61l-0.89,-0.11l0.78,3.85l-0.34,2.24l-2.15,0.9l-2.45,-0.37l-0.92,0.72l-2.85,-0.66l1.04,-2.46l-1.46,0.68l-1.13,1.77l-2.57,-1.54l3.77,-9.32l2.48,-2.15l10.36,-3.87l1.42,-0.97l0.25,-1.18l-15.16,5.18l-2.55,3.23l-3.68,8.19l-1.52,-0.28l-5.52,-4.12l-2.24,-3.03l4.25,-1.92l3.52,0.41l4.2,-0.87l1.82,-1.89l1.94,-0.42l-0.13,-1.51l4.29,-3.96l0.25,-1.51l-2.63,0.01l-2.72,1.88l-2.58,3.29l-3.64,1.65l-2.07,-0.21l-8.46,1.96l-1.28,-1.35l-0.52,-3.13l1.09,-1.27l1.94,1.0l2.9,-1.73l-0.72,-0.69l-1.46,0.36l-2.15,-1.84l3.74,-3.35l0.85,0.04l-0.24,-1.23l3.26,-0.87l3.07,1.13l0.75,-0.39l-0.28,-0.99l-4.96,-2.2l-8.72,6.37l-1.32,-2.12l5.1,-4.06l0.23,-0.89l-1.89,-0.43l-1.67,-2.12l-0.45,1.26l-1.34,-0.39l-1.34,1.78l0.02,1.51l-1.09,0.35l-0.29,-1.24l-1.85,-0.94l0.27,-0.49ZM467.22,187.34l-0.02,0.7l0.08,0.54l-0.23,-0.5l0.17,-0.74ZM511.4,194.3l-0.08,0.24l-0.06,0.04l0.07,-0.21l0.07,-0.07ZM521.76,108.32l4.22,-0.05l0.38,1.75l1.07,0.74l-3.95,0.26l-1.72,-2.7ZM462.41,44.68l-0.48,-0.1l0.11,-0.41l0.37,0.52ZM479.98,42.56l-0.16,-0.42l0.09,0.02l0.07,0.4ZM553.75,2.1l0.09,-0.05l0.0,0.03l-0.09,0.01ZM485.99,154.18l-1.65,1.09l-0.22,-0.13l0.52,-1.19l1.35,0.23ZM569.79,661.05l-0.05,-0.21l0.07,-0.55l0.68,0.7l-0.69,0.06ZM569.0,481.37l0.25,0.11l-0.12,0.21l-0.05,-0.02l-0.08,-0.31ZM566.07,517.84l0.13,-0.53l1.96,-0.83l-0.06,0.3l-2.04,1.05ZM560.16,465.59l2.1,-1.05l3.51,-0.14l0.32,0.76l1.55,0.15l1.51,2.38l-0.35,1.42l-2.69,1.96l-5.95,-5.48ZM567.74,657.21l0.59,-0.24l0.46,0.97l-0.38,0.0l-0.67,-0.73ZM567.08,481.73l0.79,-0.2l0.12,0.15l-0.37,0.09l-0.54,-0.03ZM563.91,454.17l0.28,-0.52l2.0,-0.55l-0.62,1.38l-1.66,-0.3ZM561.74,604.49l0.36,-1.75l3.07,-1.32l-2.77,2.79l-0.66,0.28ZM562.62,591.14l0.29,-0.1l0.15,0.19l-0.33,-0.12l-0.11,0.03ZM561.9,579.26l0.03,-0.21l0.16,-0.38l0.23,0.82l-0.42,-0.23ZM562.22,593.87l-0.14,-1.09l0.27,-0.29l0.22,0.48l-0.34,0.9ZM546.79,664.8l1.55,-2.51l4.66,-1.23l3.06,0.13l4.08,4.11l1.48,3.29l-3.39,-0.09l-11.44,-3.71ZM555.47,342.98l2.64,-0.2l0.34,1.06l-1.68,2.76l0.27,1.38l-1.29,0.66l-1.48,-1.7l-0.39,-3.32l1.12,-1.0l0.47,0.38ZM548.37,497.83l-0.35,-4.63l1.73,-5.02l1.16,-0.82l1.47,0.44l0.98,-0.93l2.54,2.46l0.32,2.13l-3.07,11.1l-4.6,-3.84l-0.17,-0.89ZM554.12,536.8l0.54,-0.67l0.8,0.1l-0.82,1.01l-0.52,-0.44ZM553.2,539.49l0.02,-0.17l0.05,0.01l0.01,0.12l-0.07,0.05ZM518.38,254.51l0.02,-3.28l1.94,-0.65l2.28,1.5l0.72,-0.61l3.81,1.55l8.24,-1.79l4.72,1.82l1.83,1.34l1.29,2.82l2.0,0.59l1.36,3.33l2.32,1.15l0.14,2.91l1.58,0.57l0.16,1.42l-1.02,0.76l-12.46,-0.08l-6.24,4.05l-2.27,0.18l-2.95,-1.96l-1.55,-3.7l-0.47,-4.43l-4.24,-0.78l-0.48,-0.67l-0.23,-3.23l0.9,-0.63l-1.39,-2.18ZM542.4,343.23l1.71,-3.49l2.32,-0.76l0.1,-1.74l0.81,0.38l0.67,1.17l-0.8,1.23l-4.81,3.21ZM539.83,355.35l1.02,-3.29l1.77,-0.72l1.11,-3.34l0.91,-0.14l-0.76,-1.61l2.39,-1.22l0.67,1.28l-0.6,1.55l-0.94,0.07l-2.03,7.01l-2.55,1.82l-0.98,-1.41ZM544.39,363.79l1.03,-0.85l0.6,0.66l-0.77,0.79l-0.86,-0.6ZM546.23,361.86l-0.26,-0.62l-1.1,-0.62l2.08,0.52l-0.0,0.9l-0.72,-0.19ZM543.01,367.74l1.19,-0.44l0.95,0.97l-1.19,2.11l-0.95,-2.63ZM491.5,444.21l0.6,-0.54l-0.58,-3.61l1.19,-14.31l3.45,-4.37l0.11,2.65l0.82,0.13l0.58,-0.88l1.19,0.7l1.14,3.24l-1.81,0.99l-0.23,0.9l2.67,2.32l0.99,4.1l1.57,-0.26l1.49,-5.17l3.04,2.44l-0.42,1.38l1.36,1.37l5.93,1.02l2.1,3.77l2.76,1.13l1.6,1.85l1.51,0.59l1.71,-0.47l5.13,4.44l0.28,3.89l1.81,2.28l-0.08,0.86l-2.81,1.51l-0.02,1.94l4.49,-1.05l1.44,-1.05l3.48,1.36l0.51,-0.57l-0.38,-1.92l2.94,2.24l0.11,1.01l-1.42,-0.11l0.39,1.02l4.41,1.63l-2.32,0.89l-3.6,4.37l-0.37,1.42l-0.79,-0.13l-8.74,-3.71l-3.42,0.48l-0.61,-1.02l1.33,-1.33l-0.06,-2.1l-1.9,-1.28l-4.59,0.66l1.0,-3.43l-0.5,-0.96l-1.15,-0.14l-0.97,1.27l-3.03,0.75l-1.17,2.31l0.84,4.2l-1.24,0.31l-2.38,3.21l-1.83,-0.12l-2.37,6.34l-4.18,3.28l-3.23,0.73l-1.16,-2.5l0.12,-6.95l-1.51,-3.22l-1.1,1.42l-3.38,1.23l-3.76,-0.09l-1.91,2.06l-1.94,0.07l-0.65,-0.91l0.24,-1.85l2.24,-3.9l6.11,-3.91l-1.64,-4.15l-0.66,-5.63l1.24,-4.08ZM537.03,125.67l0.14,-0.6l1.77,1.03l-0.27,0.43l-1.64,-0.86ZM528.04,339.31l1.24,0.37l0.11,0.47l-1.79,0.18l0.44,-1.02ZM530.38,340.78l0.27,-1.09l-0.83,-1.63l1.44,-0.15l0.93,1.53l2.86,-1.09l0.44,-1.19l1.15,0.08l0.99,1.53l-1.6,1.72l-1.98,0.49l-1.54,-0.55l1.0,2.87l-1.35,-0.46l-0.17,-1.79l-1.59,-0.26ZM532.71,453.04l0.06,-0.06l0.37,-0.01l-0.25,0.1l-0.18,-0.03ZM516.53,485.9l0.87,-1.45l0.09,-2.41l1.48,-1.87l2.19,1.47l3.25,-2.28l2.59,0.08l1.19,-1.35l3.08,0.71l-0.28,4.19l-3.25,2.92l-0.63,1.91l-5.19,5.86l-1.93,-1.17l-3.35,2.23l-0.27,-2.41l-2.11,-2.98l2.26,-3.44ZM224.48,339.27l10.41,-29.68l3.07,4.97l8.62,5.59l0.69,2.27l2.5,3.21l4.41,3.07l1.14,1.6l2.02,0.19l2.98,2.06l0.89,-0.13l2.4,2.31l0.78,-0.7l-1.76,-3.42l2.36,1.93l2.42,-0.32l2.76,3.37l0.88,-0.03l1.2,2.81l1.35,1.18l0.3,2.22l1.65,2.99l-0.64,1.68l0.97,0.74l-1.14,2.31l-6.49,-2.8l-0.42,0.7l0.81,1.53l-0.59,0.64l-2.27,-1.38l-0.61,0.37l-0.84,2.67l0.38,0.97l-2.87,0.38l-0.51,0.95l1.74,1.32l1.04,1.98l3.02,0.67l2.45,2.45l1.4,0.13l2.17,1.57l10.93,3.14l1.2,-0.96l2.0,0.4l0.07,1.09l0.81,0.42l0.63,-1.44l3.09,1.24l1.94,-1.54l-0.11,1.43l1.58,0.24l5.48,-2.57l0.88,-0.15l1.11,1.15l0.63,-1.72l-0.24,3.09l0.7,0.76l0.69,-0.72l0.19,3.26l1.6,1.08l0.96,-1.0l2.37,0.99l0.28,3.64l-0.97,1.47l1.05,2.55l1.18,-0.34l1.72,-4.6l-0.29,5.31l0.94,0.54l0.67,-1.63l1.95,3.58l0.33,2.6l-0.29,1.31l-1.69,-0.59l-0.91,0.77l-2.38,-3.14l-0.55,0.44l0.28,2.54l2.58,2.29l-0.03,1.5l-0.9,0.74l1.74,0.69l0.16,3.36l0.73,0.24l0.29,-0.67l0.93,3.59l2.54,4.51l0.56,-1.13l-2.78,-7.77l0.7,-2.8l0.59,1.56l1.23,0.59l0.8,-2.68l1.13,2.62l1.02,0.02l-1.47,-5.0l0.9,-0.19l0.74,-1.4l-2.13,-2.14l-0.43,-3.54l1.13,-2.31l-2.38,-4.66l0.26,-1.42l0.68,-1.28l2.24,-0.89l0.39,-1.05l-0.68,-0.64l0.69,-0.93l2.24,0.49l1.65,-1.04l3.04,0.68l0.83,-1.69l0.83,0.37l0.32,-0.89l0.43,1.39l1.37,-0.19l-0.61,-1.7l0.59,-1.86l5.7,-0.59l0.67,-1.61l-0.38,-1.27l1.23,-1.54l-0.22,-0.61l-1.26,0.27l-1.13,-0.69l-4.95,1.61l-1.26,1.37l0.86,1.59l-0.65,0.65l-1.29,-1.72l-1.95,0.63l-1.81,1.67l-2.11,-2.13l-2.12,-0.27l-1.21,1.95l0.93,1.49l-4.02,0.08l-0.35,-3.71l-2.76,0.75l5.19,-6.15l7.85,-0.24l8.82,-3.41l2.59,1.66l1.74,3.52l-0.75,1.35l0.7,3.02l-1.58,1.89l1.51,0.48l0.03,1.25l2.72,3.18l2.26,0.0l-0.79,1.66l1.16,2.86l5.67,1.14l0.86,-0.74l1.24,0.18l1.04,-1.88l-0.19,3.16l2.89,2.32l1.11,2.33l2.43,1.12l1.52,2.07l1.06,-1.23l1.39,0.04l0.82,1.22l2.25,0.99l2.9,-1.25l2.29,0.29l1.89,-1.43l0.83,0.87l1.38,-0.92l6.44,1.64l2.19,2.05l2.76,0.65l0.45,-1.05l1.12,0.08l0.53,-0.78l2.72,-0.03l-0.65,-2.06l-1.84,-1.78l0.07,-1.92l0.73,-0.05l4.38,8.36l2.67,2.31l2.38,-1.08l0.96,0.6l1.32,-1.43l-0.93,-1.05l0.67,-1.15l-0.81,-2.97l-0.65,-0.18l-0.52,0.86l-2.33,-3.23l-2.98,1.2l-0.74,1.82l-1.81,-4.08l1.15,-2.2l-1.3,-1.23l-0.95,-2.33l0.41,0.49l1.06,-0.68l1.61,1.55l3.97,-1.42l-1.75,-3.21l1.71,0.28l1.22,2.35l0.82,-0.62l-0.63,-1.05l0.79,0.01l2.78,3.39l-0.51,1.81l1.23,0.6l1.74,-0.66l0.39,1.96l-1.87,2.21l0.45,1.19l1.07,0.06l0.37,-0.73l1.35,0.34l0.05,-2.01l3.31,-1.93l-2.26,10.07l-1.15,0.65l-1.37,4.54l2.71,1.5l-1.35,3.33l1.16,0.91l0.87,0.02l2.55,-2.56l1.14,0.23l-2.48,3.23l0.46,0.54l2.29,-0.85l1.07,3.83l-0.69,0.79l-0.87,0.03l-0.32,-0.82l-2.25,0.7l-0.22,-2.61l-1.42,1.67l-0.98,-0.04l0.01,-1.45l-0.95,-0.71l-1.25,0.87l2.59,5.12l1.83,1.52l0.07,3.2l0.62,0.46l1.74,-1.81l-0.09,-1.39l-0.49,-0.51l-0.53,0.64l-2.24,-4.1l5.81,1.19l1.21,-1.66l-0.77,-3.86l1.55,-2.61l-1.19,-1.53l-0.44,-2.43l0.64,-1.82l-2.68,-3.83l1.36,-1.41l-0.06,-2.11l1.27,-3.03l0.98,0.79l1.08,-0.91l2.7,1.03l4.92,-4.77l0.76,-3.04l5.89,-4.28l0.06,-0.55l-2.54,0.03l1.29,-4.2l-0.48,-2.74l-1.56,-0.33l0.09,-2.09l-1.38,0.93l-1.22,3.1l-0.02,1.06l0.75,0.43l-0.87,0.88l-2.12,0.51l-1.23,-0.72l0.37,-3.7l1.04,0.58l3.51,-4.41l-0.31,-0.69l-1.96,0.28l0.4,-3.15l3.29,-0.43l-1.04,1.69l0.19,2.02l0.66,0.2l3.72,-4.16l-0.12,-0.8l-1.22,0.19l0.95,-2.36l-1.2,-1.18l-2.52,0.89l-0.3,1.01l-2.63,-0.42l-2.48,-5.15l-1.12,0.57l-0.51,1.8l-3.7,-2.56l-1.82,-2.33l-2.36,-0.27l-0.5,-3.29l-1.16,-0.62l-1.65,-3.41l0.19,-4.23l1.56,-1.49l0.59,-2.41l0.75,0.08l0.47,-1.03l1.74,1.31l0.65,-0.46l-1.77,-1.69l1.82,-2.37l-1.22,-0.06l-2.0,1.53l-2.27,-3.41l2.08,-6.34l-1.21,-0.92l1.28,-0.4l-0.57,-2.81l1.13,-0.1l1.07,-2.14l0.99,-0.1l1.95,2.72l1.27,0.08l1.09,-2.03l-0.68,-1.12l1.26,-2.02l-3.16,-0.42l-0.45,-1.61l2.8,-2.14l1.55,0.02l0.61,-2.28l2.29,-0.15l1.05,0.27l0.34,1.88l1.37,-1.05l0.01,2.96l1.67,-2.31l1.75,0.58l1.19,-0.48l-0.76,2.42l5.56,6.86l0.65,6.62l-0.38,3.5l-0.67,-0.38l-0.34,0.96l2.43,2.04l0.21,2.15l2.47,0.98l0.33,3.3l1.82,2.28l-0.77,1.36l1.62,1.29l0.64,-1.77l0.6,0.07l-0.06,2.68l1.31,0.89l-3.08,0.37l-1.91,-2.81l-1.17,0.57l0.43,0.71l-1.34,0.59l0.57,0.61l-1.22,1.91l1.31,0.68l1.02,-0.88l1.26,0.14l0.86,0.98l-2.28,2.89l-2.9,1.73l-1.98,3.08l2.03,0.54l1.89,-0.62l2.12,2.78l2.21,1.48l3.01,-3.73l1.29,0.51l-2.65,1.88l0.02,0.7l2.97,-0.72l0.63,0.96l1.39,-0.16l0.36,0.69l1.02,0.01l0.53,-1.03l1.52,0.89l-0.6,0.64l-0.48,-0.53l-1.01,0.39l0.45,0.62l-1.08,0.99l-0.25,1.61l-0.66,-1.61l-1.72,1.43l-1.69,-1.37l-0.67,0.29l5.9,6.11l-0.39,1.34l0.76,0.7l-0.12,1.27l1.3,0.85l-1.1,1.36l0.62,0.65l0.15,5.16l-0.94,1.83l1.82,1.52l-0.76,1.04l1.18,-0.07l0.75,2.4l1.47,-0.7l-0.22,-1.21l2.53,-4.71l-0.88,-1.61l0.66,-1.17l0.25,1.24l0.85,-0.82l0.03,-7.76l3.52,-5.21l1.47,0.7l1.7,3.2l5.43,5.67l1.93,9.81l-0.74,1.96l-1.47,-0.53l-0.28,-2.77l-1.98,1.93l0.78,3.99l-0.65,2.99l1.99,6.42l5.48,6.44l0.69,2.03l-0.88,0.97l-0.09,1.63l0.8,0.3l0.68,-1.15l0.35,1.43l0.78,-0.01l0.44,-2.43l0.83,0.85l1.19,-1.63l-0.28,-1.39l0.74,-1.69l2.29,1.14l0.87,-0.85l0.25,-4.84l-0.63,-1.66l1.23,-3.16l3.31,-4.63l-0.01,-2.78l0.72,-0.74l-0.38,-2.13l1.03,-2.63l-0.67,-3.78l0.49,-2.13l1.4,-0.43l1.49,0.7l0.49,-0.72l3.33,-0.12l-0.45,-2.01l-1.59,0.03l-1.06,-0.4l1.21,-0.49l-0.1,-1.13l1.6,-0.05l-0.18,-1.05l-0.94,-0.34l2.55,0.15l0.54,-0.81l-1.73,-0.8l-0.34,-0.92l-1.18,0.19l-0.77,-2.04l-2.66,-0.4l-0.82,-1.5l0.81,-0.1l0.0,-0.83l-0.96,-1.22l0.99,-1.18l-0.72,-0.74l-0.71,0.27l0.02,-1.04l0.96,-0.72l-1.19,-2.09l1.29,-3.37l1.71,0.98l1.8,-1.51l3.23,-0.54l4.79,2.88l2.79,0.38l5.52,-0.71l-0.24,1.63l-0.91,0.6l1.79,1.11l-5.0,-0.84l-0.47,1.18l6.95,1.74l1.5,2.03l-0.72,1.48l0.5,0.56l3.8,-0.97l2.98,1.18l0.36,1.29l-1.6,2.39l-3.57,3.4l2.94,-0.68l1.34,1.48l0.97,-0.97l1.12,1.62l0.07,2.62l-2.43,2.77l-1.12,-0.34l-1.18,2.16l-0.64,-1.43l-1.23,-0.48l-0.93,0.34l0.73,1.2l-2.85,-1.27l-0.61,0.89l0.8,0.9l-0.78,0.72l2.38,1.64l-0.88,0.27l0.47,1.3l1.32,0.08l-0.48,2.02l1.95,1.1l-0.36,2.19l0.93,2.29l7.22,7.8l-0.46,8.01l-0.47,1.76l-3.69,1.09l-1.27,5.13l-1.52,0.1l-1.53,3.31l-3.21,0.57l-0.36,1.57l-2.63,2.63l-1.82,-3.11l-1.56,-0.52l-1.22,-1.47l0.84,-0.02l0.3,-0.94l-0.88,-1.37l0.07,-2.94l-0.75,0.13l-1.27,3.29l-0.76,-0.18l0.3,-1.92l-1.46,-1.06l-0.06,-2.04l-4.96,-1.37l0.52,1.66l-2.58,1.27l-0.05,1.65l0.92,0.71l1.52,-0.57l1.28,-1.95l0.9,2.46l2.33,0.87l-0.56,1.2l1.17,0.78l1.2,-0.25l-0.39,1.76l2.5,2.69l0.7,2.76l1.26,1.62l-1.31,0.22l-2.21,-2.28l-1.33,0.72l-1.52,-2.2l-1.24,1.82l2.26,2.97l-3.5,-1.81l-1.0,0.26l-1.06,-1.4l-0.94,1.28l-1.01,-4.35l-1.69,-2.05l-2.87,1.73l-2.16,0.21l-1.61,-1.0l-0.78,0.7l-1.44,-0.65l-0.35,0.93l-1.35,-0.12l0.47,1.42l-0.78,0.64l1.71,2.75l2.48,0.54l3.42,1.99l-0.82,1.21l0.29,1.35l-3.46,2.77l-0.86,4.49l-3.52,2.99l-1.11,1.7l0.29,1.02l-2.17,1.42l-5.44,-0.4l-3.38,-3.83l-1.96,-1.11l1.98,0.38l0.35,-0.84l-5.88,-1.93l-4.76,-4.34l-3.09,-0.04l2.03,2.44l-2.02,-1.36l-1.25,0.27l-0.41,-1.0l-1.47,0.42l-7.61,-1.47l-1.67,0.63l3.86,3.52l0.78,-0.69l-0.83,-1.67l8.95,2.69l3.98,3.69l0.64,2.11l1.78,1.27l1.28,2.27l8.42,1.2l2.68,-0.06l0.73,-0.68l4.93,1.04l0.9,1.55l-0.24,1.63l-1.03,1.03l-1.57,4.77l-1.71,0.78l-0.47,3.24l-1.97,1.14l-2.32,7.37l-0.94,-0.04l-4.12,3.41l-3.38,-1.51l-1.02,-2.09l-0.87,0.6l1.13,2.59l-2.84,-1.61l-0.7,0.6l-1.08,-0.5l-0.16,-3.36l-3.42,2.27l-0.05,0.72l1.38,0.47l0.48,1.07l-1.34,0.94l-0.86,-0.9l-1.17,0.51l2.71,3.88l-0.95,0.21l-0.8,2.81l-1.89,0.39l-0.23,-0.94l-1.65,-0.78l-0.8,1.51l1.26,0.44l-2.79,0.72l-5.08,-3.21l-1.21,0.14l-0.42,-1.14l-2.12,0.46l0.4,-1.11l-1.23,-0.2l-0.68,1.26l-2.38,-0.59l-9.09,-5.07l-1.31,-1.52l-0.1,-1.25l-1.79,-0.68l1.46,3.62l-1.67,0.73l1.11,2.5l2.55,1.43l1.53,-0.47l0.27,-0.5l-1.81,-2.08l6.31,3.9l1.37,-0.58l0.64,1.4l1.83,0.49l-0.34,1.0l-0.74,-0.38l-2.27,2.01l0.88,1.18l2.55,-0.4l0.29,-1.38l3.25,-1.78l3.36,4.54l3.46,0.45l0.25,1.24l2.0,0.84l0.42,5.65l-1.07,1.87l-2.1,-0.17l-3.58,3.08l-6.01,-1.84l-0.37,1.26l-2.6,-0.41l-0.4,1.17l1.52,2.4l3.47,0.94l-0.59,1.4l-1.08,-0.3l-0.33,-1.22l-2.38,1.27l-0.26,-1.03l-1.49,-0.62l-0.48,0.6l0.5,2.44l-1.28,0.07l-0.91,2.87l-4.1,-1.05l4.19,3.17l-2.98,0.84l-0.3,0.85l0.81,0.74l-1.17,1.03l-1.17,-0.68l-1.18,0.74l1.06,1.19l-0.7,0.63l-1.72,-0.71l-0.48,0.61l0.55,0.71l-0.52,1.16l1.48,0.65l0.23,1.97l-4.07,2.49l-1.42,2.04l0.19,1.66l0.98,1.0l-2.1,-0.35l-0.42,0.57l0.86,1.7l-0.83,1.09l0.32,1.46l-2.99,4.42l-1.82,5.77l-1.44,-0.29l-1.34,1.34l1.64,2.12l-2.04,7.01l-34.0,-2.48l-33.8,-3.8l10.71,-81.63l-31.59,-11.1l-25.71,-9.97l-3.84,-3.25l-7.01,-13.94l-14.83,-3.67l-25.6,-33.48l-22.77,-34.44ZM431.43,497.66l0.31,-0.12l0.17,0.01l-0.2,0.26l-0.28,-0.15ZM433.43,493.16l1.61,0.52l0.09,0.54l-0.15,0.11l-1.55,-1.16ZM459.86,461.22l0.41,0.12l0.06,0.53l-0.42,-0.04l-0.04,-0.61ZM466.21,460.65l0.17,0.26l-0.02,0.0l-0.16,-0.26ZM457.33,422.91l-0.21,0.13l-0.28,-0.01l0.5,-0.12ZM510.45,414.38l0.09,0.15l-0.04,0.09l-0.06,-0.23ZM452.6,352.21l0.03,0.15l-0.01,0.1l-0.08,-0.08l0.07,-0.17ZM409.93,384.6l0.12,0.01l-0.05,0.33l-0.07,-0.28l-0.01,-0.06ZM408.2,373.33l-0.03,-0.49l0.36,-0.47l-0.09,0.56l-0.23,0.39ZM318.49,387.42l0.17,-0.15l0.1,-0.19l-0.02,0.65l-0.25,-0.3ZM318.8,386.55l-0.03,-0.21l0.0,-0.15l0.04,0.09l-0.01,0.27ZM320.92,364.54l0.05,-0.18l0.03,-0.08l0.11,0.08l-0.19,0.18ZM329.82,363.21l-0.02,-0.07l0.05,-0.02l-0.02,0.09ZM343.75,364.08l-0.01,-0.29l0.6,-0.07l-0.05,0.14l-0.54,0.22ZM393.17,373.66l-0.08,-0.14l0.13,-0.03l-0.03,0.08l-0.02,0.08ZM393.23,373.44l0.07,-0.35l0.01,-0.02l-0.02,0.16l-0.07,0.21ZM431.06,350.19l0.25,-0.55l0.38,-0.32l-0.44,0.76l-0.19,0.11ZM427.63,295.62l-0.28,-0.5l-3.9,0.29l-0.05,-0.78l0.27,-0.75l4.16,-0.81l0.66,1.13l-0.85,1.43ZM524.08,151.98l-0.31,-0.7l1.09,-0.68l0.05,0.73l-0.83,0.65ZM520.21,200.3l0.21,-1.47l2.86,-4.4l0.44,0.9l-1.75,2.84l0.99,1.66l-1.45,0.22l-0.61,1.26l-0.7,-1.01ZM420.31,181.66l0.5,-1.13l0.61,1.02l2.18,0.2l0.2,-2.11l-2.58,-1.69l-0.08,-0.91l1.13,-0.95l0.69,0.51l1.21,-0.61l0.2,-1.3l2.62,-0.71l1.81,0.46l2.56,2.13l2.24,0.35l0.31,1.19l1.42,0.92l1.0,0.0l0.77,-1.08l1.13,0.45l2.52,4.68l-0.84,3.95l-2.07,2.49l0.7,1.81l1.09,-0.5l-0.59,-0.64l1.22,-0.89l1.6,-3.53l3.93,0.81l2.28,-1.58l2.88,-0.6l2.67,1.15l2.12,2.19l0.21,1.53l-1.81,-0.45l-0.43,-0.79l-0.97,0.82l-1.37,-0.9l-1.56,0.62l1.0,1.43l5.16,1.83l0.58,-0.43l6.3,2.56l0.54,1.01l-0.8,1.12l-6.37,0.59l-6.69,-2.54l1.9,1.9l-0.65,1.59l3.73,0.57l-0.82,0.92l0.39,0.6l-2.01,0.42l1.12,1.93l-1.13,0.97l0.03,1.86l0.86,0.06l1.6,-2.88l1.55,-0.39l-0.48,1.34l0.76,0.64l1.1,-1.51l0.94,0.71l0.6,-1.22l0.75,0.45l0.75,1.32l-0.37,2.78l0.86,0.09l1.07,-1.42l1.61,1.73l-0.48,2.76l-1.94,0.28l-0.93,1.73l0.79,0.81l2.49,-0.89l0.58,2.19l1.33,1.51l1.42,-0.6l-0.79,-3.93l0.76,-1.35l2.52,2.98l-0.56,0.98l0.98,0.87l2.69,-2.59l1.11,1.8l-0.58,0.81l1.4,0.22l0.46,-1.42l-0.54,-1.26l0.93,-1.27l2.81,3.26l2.28,0.92l-1.19,1.0l0.32,0.71l3.62,-1.4l2.85,0.31l0.14,-0.97l-3.53,-1.62l2.66,-1.59l2.21,0.32l1.6,-2.35l2.51,0.56l0.44,-0.95l-0.77,-0.68l1.79,-0.55l2.24,-2.61l4.55,1.5l4.51,-2.83l6.91,0.84l-0.53,2.99l5.66,-0.04l1.75,1.99l-1.7,1.15l0.27,0.97l3.83,-0.52l1.21,1.6l-0.53,1.79l0.92,0.75l-0.62,1.94l-1.14,0.29l-0.73,1.93l-2.6,2.21l1.13,1.01l-0.52,2.49l1.8,1.16l-0.62,1.36l0.74,1.02l-0.26,2.91l-5.19,0.58l-3.82,3.12l-3.42,-0.96l-0.78,-1.29l-0.97,1.46l-0.82,-0.18l-2.21,-2.91l-0.2,-3.81l-3.13,-1.87l-0.24,1.98l1.36,1.75l-0.71,4.18l-4.35,1.76l-3.71,0.19l-0.9,-4.45l-0.95,1.65l0.34,2.55l-0.53,0.71l-0.65,-0.02l-1.6,-4.47l-0.45,4.52l-2.58,0.37l0.09,-1.23l-1.15,-1.89l-1.13,3.17l-2.73,-3.02l-0.24,2.09l0.93,1.46l-1.06,0.13l-1.09,-0.96l-0.22,0.83l-0.85,0.11l-0.44,-1.8l-2.14,2.11l-0.75,-1.4l-0.82,0.91l-3.57,-0.34l-0.03,-2.5l1.42,-3.71l-1.17,-0.53l-0.8,-2.75l-1.07,1.47l-0.69,3.45l-0.18,-1.92l-1.67,-1.41l0.22,2.6l-1.36,-0.56l0.99,1.98l-0.25,1.63l-1.66,1.1l-2.62,0.5l-0.42,-1.29l-0.95,0.62l-1.0,-0.68l0.06,-0.86l-1.62,0.41l-1.17,-3.02l-1.41,0.98l1.62,-2.83l-0.59,-1.76l-4.4,5.7l-0.72,-1.79l-2.33,-1.7l0.36,-2.51l-1.15,-3.73l1.17,-0.44l-0.22,-1.71l-1.56,0.09l-0.97,-1.66l1.02,-3.31l-0.61,-0.69l0.38,-1.33l2.31,-3.37l-0.88,-3.82l0.34,-2.99l-2.37,-2.58l-0.62,-3.84l-2.17,-5.39l-1.27,-0.83l-1.98,1.44l-0.9,-0.3l-0.65,1.31l-4.34,-0.35l-1.27,-1.64l-3.24,-1.66l-2.26,-0.08l-0.71,-0.86l-0.49,-1.5l1.84,-0.12l1.17,-2.1l-0.46,-0.51l-1.97,1.2l-2.68,-3.53l-2.35,-0.75ZM451.53,232.53l0.2,0.49l-0.18,-0.03l-0.02,-0.47ZM519.43,222.72l2.08,-1.78l0.93,0.21l1.51,2.32l-2.89,1.86l-1.28,-0.76l-0.35,-1.86ZM455.33,199.74l0.6,-0.68l1.56,0.5l-0.2,0.22l-1.97,-0.04ZM431.08,193.14l-1.37,1.01l-1.29,-0.29l1.88,-1.41l0.78,0.69ZM519.33,369.36l0.08,-0.17l0.17,0.21l-0.24,-0.04ZM514.4,412.13l0.0,-0.0l0.0,0.01l-0.0,-0.0ZM514.58,412.33l1.89,1.01l-0.22,0.67l-1.74,-1.07l0.07,-0.61ZM505.06,417.57l-0.03,-0.82l3.18,1.26l2.57,2.18l0.11,1.35l-1.66,2.13l-1.01,-0.16l-0.76,-4.02l-2.41,-1.91ZM511.99,423.88l0.53,0.2l-0.02,0.3l-1.34,0.67l0.82,-1.17ZM512.86,424.78l0.64,-0.22l1.49,-0.08l-0.52,1.37l-1.6,-1.06ZM512.76,421.7l0.73,-0.05l-0.36,0.47l-0.37,-0.42ZM509.13,194.54l0.2,-0.25l0.21,-0.1l-0.34,0.37l-0.08,-0.02ZM505.31,340.84l-0.75,-0.58l0.04,-0.62l1.46,0.3l-0.75,0.9ZM499.75,419.3l1.02,0.26l1.78,3.19l1.39,3.85l-0.75,1.32l-1.05,-2.07l-2.03,-1.69l-0.36,-4.86ZM493.21,188.12l0.28,0.32l-0.08,0.36l-0.23,-0.13l0.04,-0.54ZM483.42,380.75l0.8,-1.64l-1.23,-1.79l1.89,-4.42l1.7,1.75l0.49,5.12l-1.32,4.42l-1.73,-1.43l-0.61,-2.01ZM484.15,162.05l1.7,-0.5l1.0,1.62l-1.04,0.74l-0.12,-1.25l-1.54,-0.62ZM479.08,334.77l1.48,-0.55l1.82,0.89l1.27,-0.58l0.97,2.02l-1.78,0.37l-1.64,-0.88l-0.74,0.52l-1.39,-1.79ZM427.65,95.01l0.27,-1.04l1.22,0.23l1.58,2.01l3.93,1.28l1.49,-0.22l1.8,1.72l0.72,-0.12l-1.6,-3.36l1.04,-1.26l2.04,-0.47l-0.04,-0.97l-2.53,-1.14l-1.83,2.17l-1.74,0.26l-0.95,-1.25l1.76,-0.53l0.22,-1.33l-2.25,-0.14l-1.26,1.09l-2.31,-2.07l0.39,-1.21l0.99,0.11l0.63,-1.26l2.63,1.42l0.57,-0.4l-0.16,-1.39l-2.47,-2.77l0.74,-1.3l-0.35,-0.92l4.17,-0.23l1.75,1.38l2.55,0.29l0.43,0.81l1.17,-0.55l-0.98,-1.99l-2.46,-0.81l-0.37,-0.98l0.08,-0.6l2.29,-0.25l0.11,-1.13l-3.86,-1.4l0.69,-0.71l-0.44,-0.87l-2.49,0.14l1.73,-1.45l-1.35,-0.79l1.22,-2.91l1.29,-1.01l1.81,2.76l2.64,-1.83l-0.15,-1.22l-1.04,-0.57l1.28,-0.11l1.29,0.95l1.89,-0.69l0.52,-2.62l-0.74,-1.47l-3.04,0.03l-1.69,-1.25l0.7,-2.47l1.83,0.73l0.57,1.15l0.83,-0.76l-0.19,-1.48l0.65,0.25l4.27,3.47l1.67,2.64l-0.43,2.4l1.58,2.67l1.88,6.54l2.15,2.67l-0.55,2.47l3.34,0.83l1.0,2.0l0.82,-0.11l-0.26,-1.63l1.61,-0.09l1.03,1.58l-0.85,1.74l0.69,0.56l-0.7,2.2l1.17,3.27l2.62,2.67l0.96,-0.69l1.24,0.34l0.84,1.37l2.79,-0.41l1.09,2.79l-2.16,3.13l1.2,0.27l1.22,-1.54l-0.58,6.24l-1.43,2.18l0.31,1.7l1.29,0.08l1.04,-2.22l1.07,1.33l0.72,-0.98l-0.31,-1.59l1.53,-0.13l1.13,1.76l-0.42,3.04l1.26,0.71l1.02,-4.81l1.45,4.01l2.55,4.05l-2.54,3.13l-4.99,2.97l-0.71,2.6l-0.81,-2.36l-0.82,-0.01l0.24,3.95l-2.97,6.75l-1.5,-4.29l-0.01,-3.36l0.86,-1.09l0.2,-2.51l-0.74,-0.07l-0.73,1.99l-1.25,0.49l0.24,8.2l-1.07,0.74l0.43,0.7l1.35,-0.23l0.55,2.31l-1.07,1.91l-1.67,-3.62l-1.84,0.17l1.38,5.18l-1.23,6.18l-5.86,-11.61l-0.9,0.8l0.12,2.33l2.56,7.01l-1.18,-0.05l-1.29,-2.64l-2.92,-0.26l-0.73,0.89l2.06,1.11l0.3,2.6l-2.68,0.25l-3.61,-1.19l-1.24,-1.3l-1.27,0.5l-0.49,-2.72l-1.98,-0.11l-1.78,-3.64l1.74,0.12l3.69,-1.35l0.86,0.49l0.59,-1.32l-6.11,-2.35l-2.41,1.06l-0.67,-1.1l0.4,-1.19l-0.98,-0.04l-1.04,-1.94l2.81,1.25l0.87,-0.29l0.08,-1.05l-2.64,-2.05l-1.57,0.04l-1.79,-3.63l3.32,-1.49l1.33,-2.87l2.16,0.72l5.01,-0.32l6.71,-1.41l1.09,-1.33l-0.62,-0.54l-3.02,0.21l-5.19,1.09l-2.43,-1.02l0.26,-0.96l3.07,0.28l3.79,-1.34l0.34,-1.72l-3.82,1.13l-3.09,-0.65l1.69,-1.39l-0.35,-0.85l-1.91,-0.0l-1.26,0.94l-1.09,-1.98l-1.44,1.08l-0.89,2.25l-0.85,0.01l0.02,1.27l-1.24,1.28l-0.58,-1.3l1.68,-1.96l-3.3,-1.25l-0.65,0.26l-0.15,2.01l-2.82,1.37l0.35,-1.57l-0.79,-1.75l-0.99,0.48l-1.03,-0.62l0.36,-2.95l4.91,-1.61l2.03,-2.07l0.3,-2.61l-0.88,-0.51l-2.15,2.69l-1.95,0.74l-2.78,-0.29l-2.35,-4.95l1.56,-1.92l-2.06,-1.42l-0.23,-1.34l1.39,-0.91l-1.55,-0.36l-0.27,-0.93ZM443.68,113.89l0.28,0.85l-0.7,0.52l0.38,-0.96l0.04,-0.42ZM461.38,146.39l0.13,0.3l0.04,0.32l-0.12,-0.23l-0.04,-0.39ZM467.83,95.12l-0.47,-2.39l-1.08,-0.44l-0.75,-1.59l0.77,-3.65l3.21,0.98l0.55,5.35l-2.23,1.74ZM428.54,100.87l-0.38,0.08l-0.0,-0.39l0.24,-0.06l0.14,0.37ZM467.85,144.53l0.1,-1.31l0.38,-0.61l-0.14,0.96l-0.34,0.97ZM468.67,140.92l0.03,-0.58l0.13,-0.04l0.0,0.05l-0.16,0.58ZM453.12,161.32l1.28,-0.9l2.87,0.68l2.74,3.46l0.67,3.57l-2.13,2.79l-1.23,0.17l-3.87,-3.88l-0.32,-5.87ZM459.03,188.82l-2.86,-6.15l1.29,-1.47l1.58,-0.38l1.49,2.86l-1.01,2.28l0.86,2.56l-1.13,-0.33l-0.23,0.65ZM457.48,356.25l0.14,0.07l-0.06,0.19l-0.08,-0.25l-0.0,-0.01ZM455.72,351.19l1.01,-1.44l0.89,0.73l-1.07,2.13l-0.83,-1.42ZM421.71,269.81l0.55,-2.41l0.89,-0.23l-0.57,-7.78l0.24,-2.03l0.85,-0.72l-0.96,-1.53l0.29,-1.54l2.13,-0.53l1.47,2.21l2.74,0.5l-0.05,-1.28l-1.14,-0.38l-1.36,-2.16l0.81,-1.29l-1.45,-0.16l-0.66,-1.39l0.47,-1.74l3.32,-1.81l4.85,-0.73l1.1,1.49l0.62,-2.05l2.47,-0.16l5.15,2.79l0.8,2.82l1.3,-0.14l1.9,-1.66l1.64,-0.14l3.56,0.65l4.75,2.14l-1.09,0.72l0.0,1.59l-2.62,5.22l-1.34,0.04l0.33,1.6l-2.19,4.92l-2.41,0.8l1.51,1.0l-4.78,9.89l-1.63,0.64l-6.15,-2.6l-7.1,1.07l-0.05,1.51l3.42,0.4l-0.14,1.38l1.23,1.05l0.93,2.98l-2.44,2.95l-2.07,5.39l-1.09,1.0l-5.9,0.08l0.81,-2.2l2.19,-0.87l-0.84,-0.59l-1.68,0.45l-0.24,-0.64l0.1,-5.21l0.64,-1.13l-1.31,-4.06l-1.38,-1.4l0.48,-0.89l-0.88,-1.38l-0.04,-4.42ZM430.89,292.66l0.04,-0.02l0.01,0.07l-0.05,-0.05ZM454.65,352.83l-0.33,-0.41l0.26,-1.19l0.58,2.35l-0.51,-0.75ZM453.0,471.13l0.19,0.06l0.17,0.16l-0.28,-0.02l-0.08,-0.2ZM446.91,341.46l0.79,-0.49l-0.07,1.35l-0.35,-0.26l-0.37,-0.61ZM446.55,468.94l0.04,0.02l-0.03,0.04l-0.0,-0.0l-0.01,-0.06ZM445.93,340.08l0.11,-0.11l0.26,-0.0l-0.36,0.11ZM425.38,160.25l0.48,-2.25l3.84,-2.17l0.53,1.65l2.42,-1.14l5.97,1.59l1.12,-0.98l1.66,1.12l0.51,1.38l-1.4,0.71l-0.94,4.39l-12.85,-1.49l-1.35,-2.81ZM419.31,222.88l1.54,-4.3l2.31,-0.56l0.69,-1.51l-0.75,-0.37l0.27,-0.52l2.01,-1.42l-0.54,-2.11l5.25,-2.91l2.61,0.99l3.95,5.88l-0.84,1.01l1.78,1.21l-0.53,1.41l0.6,1.82l-1.11,1.77l1.18,1.96l-0.24,4.58l-0.78,0.52l0.47,1.21l-0.56,0.6l-6.55,0.22l-0.53,-1.16l-1.47,-0.02l0.15,-1.12l-1.59,-1.93l-2.87,-1.1l-0.38,0.45l-1.38,-2.06l0.6,-0.63l-0.39,-2.11l-1.01,0.49l-0.55,2.09l0.12,-2.13l-1.46,-0.23ZM423.56,213.87l-0.12,-0.05l0.05,-0.1l0.03,0.01l0.04,0.13ZM433.47,79.05l2.22,0.14l0.49,1.15l-0.62,0.41l-3.69,-1.53l1.6,-0.17ZM416.22,136.4l2.05,-0.98l-1.3,-2.9l0.11,-2.87l0.9,-0.83l3.13,0.78l2.68,2.67l1.63,0.48l1.66,1.84l-0.48,2.22l1.8,1.36l1.39,-0.82l0.94,0.36l2.76,3.08l-0.08,1.03l-2.91,2.52l2.41,3.58l-0.97,3.13l-1.57,-0.19l-5.02,2.32l-0.97,-1.04l-1.33,0.69l-0.83,1.91l-0.66,-0.34l0.57,-2.92l-3.36,-2.86l0.27,-0.99l3.77,0.54l0.54,-1.86l-2.74,-2.31l-1.83,-0.37l-1.24,-2.23l0.23,-2.37l-1.49,-1.43l-0.07,-1.19ZM432.55,201.06l0.82,4.6l-1.67,0.27l-0.94,-4.09l1.79,-0.78ZM430.01,501.43l0.97,-0.01l0.44,0.57l-0.36,0.42l-1.04,-0.98ZM423.28,233.75l1.26,-1.17l1.43,2.47l-2.18,-0.68l-0.52,-0.62ZM417.48,212.26l-0.01,-0.76l2.38,-1.13l-0.06,1.93l-1.18,0.75l0.15,0.81l-0.97,-0.05l-0.31,-1.56ZM421.34,209.39l0.11,-1.06l1.96,1.73l-1.35,1.95l-0.81,-1.09l0.09,-1.54ZM421.62,297.89l0.27,-0.12l-0.0,0.05l-0.27,0.08ZM422.23,296.62l-0.31,-0.28l0.46,-0.16l-0.15,0.44ZM389.19,351.96l1.95,0.55l2.03,-0.68l1.12,-2.28l0.58,0.4l1.52,-0.72l0.14,-1.27l-1.28,-2.05l1.34,-0.17l-0.91,-2.29l0.88,0.34l1.71,3.05l1.24,-0.02l0.18,-0.77l-2.25,-3.41l0.79,-2.88l2.42,-2.54l3.0,2.8l0.46,1.11l-0.92,0.82l0.66,1.72l0.83,-0.03l0.58,-1.54l2.19,4.14l4.67,4.17l-0.47,5.36l0.77,0.85l0.76,-0.35l0.21,-3.25l1.03,6.77l1.07,0.08l0.67,1.22l2.22,-1.37l0.64,0.63l-1.91,2.36l-0.86,-0.78l-1.61,0.33l-0.77,2.34l-1.05,-0.01l-2.45,2.86l-1.47,0.43l-4.18,-3.29l-0.78,0.45l0.0,1.03l-2.13,-0.68l-2.02,-2.6l-3.15,-1.4l0.02,-2.1l-1.03,-1.12l-0.95,0.29l-0.32,1.89l-2.35,-1.9l0.57,-1.76l-1.34,-1.01l-1.67,0.69l0.3,1.29l-0.62,0.2l-1.39,-1.1l-0.88,-2.86l1.01,-1.65l1.16,-0.28ZM414.67,346.77l0.79,-2.2l1.01,-0.52l2.17,2.28l-0.36,2.41l-1.64,1.11l0.59,-3.49l-0.78,-1.58l-1.18,0.46l-0.29,3.04l-0.32,-1.5ZM414.95,348.36l-0.2,0.62l0.01,0.28l-0.08,-0.53l0.28,-0.37ZM411.32,98.34l1.01,-4.59l1.24,-1.13l1.28,1.16l1.53,-0.38l1.16,4.2l-0.81,6.55l-1.8,-1.46l0.27,-2.18l-1.22,-1.67l-2.43,0.15l-0.23,-0.65ZM374.65,271.26l1.97,-5.77l2.84,-1.37l1.55,1.82l0.05,1.86l1.25,1.11l0.57,3.29l2.19,1.66l1.59,0.06l0.69,-1.11l2.35,0.48l1.05,-1.22l0.12,-1.68l1.82,-0.35l0.42,-1.35l-0.92,-4.78l-0.97,-0.3l-0.87,0.71l-0.41,-0.77l1.36,-2.26l2.16,2.2l1.64,-0.07l0.25,-0.94l-1.66,-0.9l-2.81,-5.73l0.58,-2.35l-2.08,-1.04l0.29,-0.74l-1.18,-0.76l0.61,-2.28l3.23,-0.36l2.81,2.56l1.41,-2.63l1.47,0.9l1.99,3.57l0.77,-1.37l1.88,0.54l0.9,-0.84l3.78,-0.59l1.4,-1.38l0.62,0.59l1.21,-0.69l1.97,0.93l1.5,2.73l-0.26,1.98l-1.56,1.52l-1.16,-0.78l-0.5,1.25l-0.96,-0.32l-0.62,1.65l0.6,1.01l1.16,-0.71l1.4,0.5l-0.15,1.78l-3.64,1.11l-5.82,6.46l0.48,3.84l1.76,-2.63l1.76,-1.18l1.87,0.33l2.34,1.76l-0.22,1.33l-1.09,0.6l1.34,0.81l1.01,2.19l-1.14,1.5l0.2,1.66l1.04,-0.04l2.47,-2.03l1.12,1.43l0.68,4.68l-2.3,1.94l-1.3,-0.26l-0.36,0.62l1.76,1.4l0.5,2.45l-0.19,1.19l-2.27,0.61l-0.18,0.67l2.39,0.53l-0.21,0.9l-1.8,1.03l0.88,0.81l0.98,-0.56l-0.72,1.86l-0.73,-0.91l-1.9,1.1l-1.79,2.78l-3.0,0.77l-3.68,-1.31l-0.54,-1.24l1.3,-3.44l-1.08,-0.61l-2.02,4.09l2.62,4.72l-1.02,1.91l-2.48,2.43l-1.29,0.19l-1.19,-2.37l-1.76,0.57l-0.52,-5.08l-1.18,-0.97l-1.5,-5.44l-1.64,-0.98l-2.95,-7.01l-1.04,-0.68l-1.38,0.27l0.07,-1.82l-1.28,-1.58l-1.8,1.15l-1.95,-1.02l-0.38,-0.95l0.82,-0.69l-0.81,-0.81l-0.0,-1.42l-2.82,-2.69l-1.76,-3.24ZM390.43,268.86l-0.03,-0.05l0.05,-0.05l0.03,0.02l-0.05,0.08ZM391.13,258.22l-0.13,1.15l-2.76,1.04l-3.72,-4.97l2.35,-2.21l1.66,0.33l1.12,3.12l1.48,1.54ZM395.74,247.0l-1.15,1.05l-0.77,-0.64l1.11,-1.09l1.19,0.17l-0.38,0.51ZM383.64,205.28l0.98,-0.35l-0.1,-1.22l0.92,-0.88l2.25,1.05l0.89,-0.46l-1.01,-1.33l0.64,-1.21l-1.4,-0.09l0.59,-1.18l2.2,-0.44l1.73,3.41l1.11,0.73l2.79,-1.46l-0.32,-0.68l-2.14,0.59l-0.0,-1.51l-0.95,-0.56l-0.09,-1.13l1.71,-1.64l-0.08,-0.96l-2.37,0.42l-0.43,-0.71l0.15,-2.2l3.16,-2.97l-4.23,0.03l1.31,-2.84l-0.4,-0.94l1.17,-0.93l2.36,1.3l1.07,1.88l-0.53,2.31l2.46,2.81l-0.67,1.03l2.18,1.08l1.1,2.81l-0.34,0.81l1.3,1.29l3.61,-2.66l-2.55,0.12l-1.15,-3.95l2.31,0.7l2.05,-1.41l-1.88,0.14l-1.45,-1.62l-1.17,0.14l-1.42,-1.07l0.11,-0.5l3.22,0.42l0.05,-1.7l-1.42,-1.76l-2.77,-0.3l-1.23,-2.57l3.98,-2.87l2.12,1.16l0.39,0.02l0.59,-0.55l0.17,0.01l-0.21,0.83l0.76,0.32l2.26,4.87l0.32,-1.26l1.55,0.24l-0.83,-2.83l0.59,-1.37l1.04,0.97l1.35,-0.91l0.26,1.46l3.57,2.17l-0.94,3.69l1.31,3.45l-1.27,4.95l0.26,2.81l-2.32,2.5l3.09,2.5l-0.58,3.27l-1.38,-1.71l-2.28,2.1l-0.15,1.15l1.02,0.42l-1.01,0.13l-0.97,2.26l0.38,1.15l1.83,1.31l-0.22,1.08l0.95,1.02l-0.73,0.28l-1.64,-2.81l-0.86,1.75l0.95,3.04l-4.23,0.37l-0.99,-1.88l-0.85,1.34l-1.93,0.15l0.71,-3.06l-0.84,0.16l-1.41,3.01l-4.51,-1.58l0.29,-2.82l-0.76,-1.01l2.77,0.07l0.63,-0.78l-1.72,-0.92l-0.09,-1.25l-1.4,0.3l-0.46,-0.63l1.35,-0.75l-0.55,-1.38l3.07,-0.16l0.54,-0.85l-0.65,-0.91l1.3,-0.09l1.47,-1.72l-0.75,-0.88l4.91,-0.17l0.33,-1.35l-10.06,0.4l-4.14,0.95l-1.31,-0.58l-6.97,1.45l-0.47,-1.89ZM414.24,266.9l0.91,0.17l0.16,1.43l-0.9,1.89l-1.18,0.2l-0.74,-3.42l1.63,-1.82l0.11,1.55ZM413.9,275.02l-1.05,-0.59l1.41,-2.15l0.13,1.99l-0.49,0.75ZM411.31,235.08l-0.17,-0.77l2.09,-2.24l-0.31,1.96l-1.61,1.05ZM409.94,345.15l2.12,0.76l0.95,-0.39l-0.28,3.31l-2.79,-3.68ZM382.84,135.77l-0.59,-2.3l0.4,-2.05l1.47,-0.73l2.71,2.01l2.88,0.94l1.3,-3.47l-3.0,-0.68l2.42,-0.16l1.53,-2.23l-0.42,-1.23l-1.34,-0.04l-0.51,-0.94l-1.08,0.01l-0.37,0.97l-0.54,-0.55l2.34,-2.62l-0.92,-2.5l-0.98,-0.62l-1.67,0.95l-1.02,2.32l-1.68,1.23l2.44,-5.44l-1.31,-1.09l-2.99,0.31l0.45,-3.63l1.34,-3.45l1.11,0.94l6.93,-0.53l2.58,2.17l0.69,1.58l0.97,4.08l-1.29,3.2l0.94,0.56l0.02,1.87l1.57,-1.52l0.25,-1.95l2.39,-1.59l0.93,0.3l1.44,2.91l1.25,0.73l-1.25,3.71l1.42,1.16l2.81,-1.08l1.86,3.24l-0.91,1.75l2.41,1.23l-2.04,3.56l-0.03,3.7l1.35,0.72l2.39,5.97l-1.01,2.34l0.25,1.78l-0.75,0.82l-3.19,0.26l-0.72,0.75l-3.03,-2.19l-0.72,-3.75l0.56,-1.61l-1.23,-3.56l-1.38,0.11l-0.96,-1.37l-3.26,-1.74l-2.35,0.82l-0.76,-0.98l0.85,-1.48l-0.29,-1.0l-5.42,0.69l-1.75,1.62l-2.15,-1.03l-1.32,-2.23ZM402.18,245.84l5.3,-1.86l2.75,-0.09l-1.09,2.38l-2.21,2.01l-2.94,0.62l-4.58,-1.3l2.65,-0.81l0.12,-0.96ZM404.52,336.05l0.28,0.24l-0.19,0.5l-0.18,-0.17l0.08,-0.57ZM400.0,384.31l0.18,-0.59l0.82,-0.41l-0.03,0.27l-0.98,0.73ZM393.68,182.33l2.34,-0.92l1.47,-1.77l3.14,0.18l-5.02,2.71l-1.93,-0.2ZM392.97,153.4l0.22,-3.26l3.57,0.04l2.26,1.79l1.09,2.26l-2.85,-0.38l-1.53,1.08l-2.76,-1.53ZM390.42,142.83l-0.37,-1.01l1.77,-1.87l0.13,1.23l-1.53,1.65ZM380.94,200.83l0.6,-1.1l1.3,-0.07l0.14,-1.57l4.85,-1.31l0.73,0.88l-2.31,0.72l-1.53,2.53l-3.78,-0.08ZM378.12,196.44l4.81,-1.79l4.15,-0.08l-0.14,0.79l-7.87,1.78l-0.95,-0.71ZM375.95,190.46l3.49,-1.4l6.37,-0.48l0.58,1.84l-1.06,2.26l-3.24,1.1l-3.2,-0.16l-2.89,-1.45l-0.05,-1.71ZM382.95,318.72l1.44,0.77l0.22,2.48l-1.82,-1.42l0.16,-1.82ZM376.35,180.68l1.85,-1.9l1.59,0.1l-0.7,2.34l1.86,-0.68l0.7,2.11l2.71,2.61l-1.9,1.61l-5.37,-0.68l0.39,-3.22l-1.13,-2.29ZM382.75,351.96l0.5,1.7l-0.24,1.27l-0.95,-1.38l0.69,-1.6ZM378.63,357.96l0.57,-3.98l0.44,-0.58l2.04,2.62l-0.39,1.86l-1.43,1.5l-0.05,-1.51l-1.16,0.08ZM380.72,368.46l0.1,-0.05l-0.02,0.19l-0.08,-0.15ZM374.01,155.31l0.21,-2.42l-0.8,-2.01l0.8,-0.65l1.57,1.3l1.89,4.93l-0.54,3.16l1.37,0.18l1.17,2.66l0.14,1.85l-0.85,1.86l-1.4,0.46l-0.78,-1.62l-1.22,-0.12l-1.48,-7.58l0.58,-1.2l-0.67,-0.8ZM262.31,316.35l2.08,-0.14l-1.96,-6.32l0.67,-1.78l29.25,8.27l-0.45,3.6l3.86,0.06l0.08,-2.77l17.96,3.86l11.64,-52.14l1.02,0.72l0.45,-0.54l-0.33,-5.28l0.81,0.53l0.91,-1.42l-1.26,-1.18l0.84,-3.76l1.32,0.77l-0.68,0.91l1.98,3.52l1.31,0.03l0.66,1.95l-0.78,2.32l2.6,0.61l-1.19,4.72l-0.04,4.61l0.7,0.67l-0.61,2.61l0.7,0.59l-0.15,1.23l0.53,-0.06l-0.76,0.93l0.26,2.94l-0.58,0.75l1.35,0.47l0.24,1.97l1.62,0.74l0.65,-0.57l-0.39,-1.82l1.03,0.39l0.95,-1.25l2.37,-0.74l-0.93,-1.08l1.3,-1.05l-1.93,-2.91l0.34,-1.81l-0.81,-1.19l0.22,-2.55l0.8,-0.71l-0.48,-2.76l0.67,-0.65l-0.92,-1.26l0.86,-1.52l-0.24,-12.82l0.88,-1.09l1.54,0.68l0.58,-0.44l-1.25,-2.02l0.83,-1.15l1.76,0.8l3.3,4.11l0.86,-0.52l-0.07,-2.01l1.15,-0.22l2.82,5.57l2.41,1.22l1.77,5.26l-0.7,1.14l0.97,2.93l-0.1,2.98l-0.73,1.46l1.27,6.09l-0.78,2.36l0.62,5.17l0.86,1.04l1.18,5.51l-0.26,4.34l-1.28,0.3l-0.33,3.04l-1.64,2.12l2.84,4.68l0.53,3.8l1.04,0.58l1.58,3.35l1.99,0.55l0.87,1.98l3.24,1.02l4.5,5.28l1.19,0.26l0.88,-0.76l0.39,4.13l1.88,-0.71l0.81,0.64l1.28,-0.97l0.03,7.9l-0.86,2.57l-1.99,-0.34l-0.66,-3.2l0.48,-1.61l-0.57,-0.42l-2.18,4.42l-1.52,-1.35l-0.31,-2.12l-1.01,-0.13l-0.04,-1.44l-0.73,-0.32l-1.28,2.17l-1.57,1.08l-1.03,-0.29l1.04,2.25l-0.26,1.54l-0.39,0.73l-1.54,-0.01l-2.17,-1.88l-0.77,-1.75l-1.95,-0.38l-0.57,1.77l1.97,2.07l0.29,2.37l0.94,0.37l-0.8,3.26l-1.54,1.25l-0.03,1.94l0.83,0.08l3.22,-5.13l2.26,-0.4l0.69,-1.2l1.16,-0.27l1.41,0.47l0.57,1.19l-1.81,0.93l-0.19,0.91l0.88,0.86l-1.2,-0.23l-0.23,1.51l1.39,1.22l1.0,-1.4l0.8,1.26l-0.83,3.7l-1.57,-0.48l-0.9,0.9l-1.83,-0.25l-1.1,1.72l-1.84,-0.82l-0.04,1.26l-1.58,0.48l-1.41,-1.13l-1.54,0.16l-0.46,0.75l-0.83,-1.04l-3.94,-1.21l-1.27,-2.09l-1.5,-0.03l-1.12,1.34l-3.67,-1.26l-0.43,-0.87l2.54,-1.36l0.07,-1.33l-3.85,-1.12l-0.64,-1.26l-2.42,-0.91l-2.45,0.1l-1.13,-0.9l1.31,-1.45l0.18,-2.67l-1.8,-2.85l-1.81,1.09l-0.36,1.29l-1.64,0.17l-0.41,3.13l-3.6,3.28l-4.69,0.8l-4.32,-1.01l-0.77,1.48l-3.95,2.3l-4.82,0.78l-4.52,-0.72l-1.13,0.66l-1.45,-1.06l-1.8,0.4l-0.65,-0.82l-4.19,-0.24l0.07,1.07l-6.6,-1.54l-2.6,-0.28l-1.27,0.6l-1.79,-0.57l-0.18,-1.43l-1.54,-1.61l-1.07,-4.66l2.09,-4.8l-0.39,-2.55l1.28,0.35l-0.11,-0.95l-4.84,-3.41l-4.48,-0.59l-1.12,-0.97l-1.41,0.5l-5.16,-2.72l-3.26,-3.47l0.33,-3.36l-1.77,-0.93ZM296.42,348.86l0.63,0.22l-0.44,-0.1l-0.19,-0.12ZM366.3,318.81l-1.06,-1.02l0.04,-1.63l1.15,1.7l-0.13,0.94ZM282.72,346.82l-0.62,-0.06l-0.07,-0.11l0.28,-0.07l0.41,0.24ZM374.96,341.65l1.94,1.67l-1.05,1.12l0.26,-1.62l-1.15,-1.16ZM370.45,212.46l1.02,-2.68l1.74,-1.62l1.28,0.15l1.48,1.77l0.65,4.47l-1.81,1.97l-2.25,0.64l-3.24,-2.83l1.13,-1.86ZM372.18,349.51l-0.69,-0.62l0.14,-0.26l0.41,-0.04l0.14,0.92ZM365.6,358.91l2.37,-2.4l1.72,1.02l-0.26,2.28l-0.9,-0.23l-0.19,1.25l-2.74,-1.91ZM369.05,337.93l-0.03,-0.16l0.09,-0.51l-0.05,0.67ZM337.68,214.24l3.33,-14.87l5.76,2.77l1.51,-3.5l0.25,-2.2l-3.92,-3.56l-0.1,-1.81l-1.63,-0.12l5.0,-2.96l-0.8,-3.92l-1.48,-1.73l-0.79,0.02l1.18,-5.29l1.87,-0.82l0.02,-1.38l3.47,-4.44l2.99,-0.51l-0.22,1.64l1.01,0.5l-0.04,1.06l-1.91,1.27l0.66,2.21l-1.1,3.26l1.56,1.07l0.7,2.61l-0.87,0.53l0.36,1.05l-1.58,0.69l-1.35,3.04l0.43,0.57l3.42,0.05l0.8,1.47l-2.71,3.12l-0.33,1.81l1.16,0.02l1.48,-1.92l2.67,-0.13l0.44,6.08l0.92,0.31l0.57,-2.72l1.6,-0.89l-1.34,-0.99l0.58,-2.79l1.65,-1.78l1.33,0.24l2.88,2.18l0.61,1.29l0.03,6.89l-2.61,3.05l0.61,0.99l-0.66,2.23l-1.87,2.23l-0.39,2.47l-1.33,1.0l0.24,0.93l-4.44,0.4l-1.89,1.54l-1.09,-0.14l-2.22,-1.7l0.37,-2.12l-0.6,-1.0l-0.76,1.63l-1.43,0.28l-0.39,1.54l-2.11,0.01l-0.34,-2.82l-1.7,-1.22l-5.3,3.83l-2.16,-0.53ZM352.93,252.59l-2.03,-2.5l-1.37,-0.46l3.4,-4.11l8.91,0.49l3.37,4.72l-1.3,5.04l-1.65,3.11l-2.3,3.37l-1.39,1.24l-1.07,-0.21l-0.06,1.2l-2.02,-6.47l-0.9,-0.66l-0.05,-2.54l-1.54,-2.22ZM356.24,131.28l0.61,-2.73l1.07,-4.77l1.78,2.73l0.28,1.9l-1.49,3.66l-1.82,0.06l-0.43,-0.84ZM354.64,140.84l-0.56,0.09l0.72,-3.2l1.23,1.04l-1.38,2.06ZM344.37,358.41l2.93,0.73l0.43,2.38l-1.76,-0.48l-1.6,-2.64ZM343.31,246.11l1.2,-0.38l1.16,0.72l-2.22,0.24l-0.15,-0.58ZM319.51,383.52l0.58,1.05l0.1,0.1l-0.52,-0.1l-0.16,-1.05ZM317.62,367.22l0.19,-0.56l0.63,-0.35l-0.4,1.1l-0.43,-0.19ZM317.34,374.35l-0.13,-0.78l0.25,-1.06l0.35,1.97l-0.46,-0.13ZM316.98,377.97l0.04,-0.85l0.65,-0.18l-0.58,1.35l-0.12,-0.32ZM314.27,374.28l0.57,0.24l-0.52,0.82l-0.22,-0.84l0.16,-0.22ZM310.96,365.11l0.9,-0.17l0.05,1.27l-0.95,-1.11ZM308.75,362.36l0.31,0.23l0.02,0.64l-0.44,-0.71l0.11,-0.16ZM304.92,360.33l0.09,-0.06l-0.03,0.05l-0.06,0.01ZM298.85,350.54l1.55,-0.48l0.33,0.64l-1.15,0.07l-0.73,-0.23ZM292.43,354.37l-0.15,-0.28l0.45,-0.29l-0.16,0.44l-0.15,0.13Z", "name": "Nunavut"}, "ns": {"path": "M806.11,740.27l1.94,-4.77l1.53,-10.21l1.51,-3.01l0.15,-1.97l1.87,-0.41l-0.36,1.59l1.07,0.72l1.38,-0.48l0.25,0.69l-0.15,2.84l0.78,0.69l-0.72,7.59l0.66,0.58l-1.72,2.11l-1.3,0.41l-2.17,3.71l0.96,0.16l0.28,1.37l0.95,-0.71l0.24,0.04l-1.43,1.75l0.15,1.53l1.35,0.03l1.9,-1.77l0.72,0.25l-0.26,0.87l-2.52,2.28l-1.15,-0.45l-1.0,1.26l-1.85,-1.48l-3.05,-5.19ZM816.59,744.31l1.05,-1.42l-0.51,-1.54l2.65,-4.97l-0.63,-0.39l-2.83,2.93l-0.6,-0.45l3.92,-6.11l-0.72,-0.78l-1.52,1.81l1.07,-2.31l1.42,0.6l-0.36,1.85l1.71,-0.36l-0.0,-1.84l2.48,0.8l0.8,-0.47l-0.4,2.67l1.97,0.46l-3.13,2.47l-0.17,0.84l0.9,0.39l-1.01,1.83l-4.32,3.9l-1.76,0.09ZM816.44,732.88l0.05,-0.34l0.15,-0.22l-0.19,0.56ZM816.77,732.01l0.24,-0.64l0.0,-0.0l-0.04,0.32l-0.2,0.32ZM812.97,739.62l0.88,-1.79l0.6,-0.25l0.0,1.23l-1.48,0.81ZM759.62,789.53l0.16,-4.68l2.2,-4.08l-1.01,-0.82l0.79,-1.21l0.55,1.16l1.15,-0.48l2.56,-4.02l-0.92,-0.09l-2.38,2.22l8.34,-9.82l4.16,-3.04l0.82,-1.68l0.15,2.95l0.79,0.75l0.65,-0.85l0.83,0.28l1.64,1.93l0.85,-0.63l-0.2,-1.37l-1.52,-0.96l0.48,-1.27l4.28,-3.21l3.19,-0.71l0.95,-1.59l-3.38,-0.07l-3.46,1.51l-2.84,-0.03l-3.3,1.74l-2.47,-0.07l-1.2,0.97l-0.22,1.24l-2.04,0.04l4.14,-6.74l0.02,-1.13l1.63,-0.72l0.41,-3.75l1.44,-1.22l1.43,0.16l2.21,1.66l1.47,-0.03l1.43,-1.45l-0.11,1.13l1.96,-0.28l0.15,0.77l1.33,0.29l2.45,-1.4l0.23,-0.87l4.41,-0.24l-1.15,1.72l1.38,0.56l1.1,-0.77l-0.0,-0.87l2.14,0.66l4.61,-6.3l1.62,2.8l3.57,0.38l1.19,-1.77l3.74,2.14l-2.2,2.48l0.51,0.93l5.15,-1.32l0.05,1.13l-0.76,-0.45l-1.84,0.96l-0.78,1.92l-3.7,1.02l0.54,1.19l-1.67,0.55l-2.19,3.02l-2.05,0.97l-1.89,2.18l-0.47,-0.39l-3.51,3.25l-0.15,1.04l-1.47,0.57l-0.41,-0.68l-1.66,0.09l-0.12,1.24l-1.32,0.34l-0.06,1.77l-1.34,-0.47l-0.81,0.54l0.56,0.97l-3.16,-1.14l-0.2,0.6l1.63,1.08l1.01,2.07l-1.9,0.73l-0.83,-0.89l-1.51,0.95l-0.65,-3.4l-2.22,1.84l0.95,1.84l-0.28,0.68l-1.28,-1.4l-2.02,0.98l-0.06,2.33l0.87,0.89l-0.1,1.05l-1.02,0.47l1.06,0.58l-1.02,2.27l-1.52,1.0l1.05,0.57l-1.54,0.73l0.61,1.07l-1.6,1.43l0.4,1.43l-0.91,-0.21l-0.93,0.87l0.68,1.29l-1.25,-0.81l0.52,1.66l-3.0,-0.19l0.49,2.0l-0.73,-1.36l-1.0,0.63l0.82,2.23l-1.31,0.88l0.18,1.22l-1.36,-0.74l-1.19,1.4l-1.25,-2.57l-2.08,-1.97l-2.19,-0.02l0.72,1.81l-1.29,-0.35l-2.43,-5.2ZM815.32,751.9l-0.03,0.02l0.03,-0.1l0.01,0.08ZM814.11,746.7l0.43,-0.47l0.76,-0.29l-0.16,0.85l-1.03,-0.09Z", "name": "Nova Scotia"}, "mb": {"path": "M325.81,733.16l8.91,-123.96l2.81,-21.17l0.68,-1.04l-0.07,-3.63l1.91,-0.88l-1.53,-1.99l0.27,-2.01l2.58,-1.88l2.72,-3.66l0.59,-2.49l-1.67,0.2l-0.75,-0.71l0.21,-4.29l-1.41,0.85l-1.0,2.53l0.82,-2.47l-0.4,-0.68l4.56,-34.38l33.83,3.81l33.9,2.47l-0.48,6.3l0.68,6.11l-0.92,4.18l-1.34,-0.06l-0.7,0.81l1.81,0.42l1.05,1.4l-0.48,3.02l1.42,-0.82l1.5,3.03l1.8,-0.28l0.27,0.59l-1.11,2.12l-0.82,6.88l0.75,-0.03l1.44,-3.28l0.06,-3.8l1.1,-2.83l4.0,-0.25l1.82,0.42l0.99,1.31l1.01,-1.02l1.12,0.23l0.16,4.19l2.86,8.44l0.25,4.64l3.21,8.93l-1.85,5.4l-2.86,2.98l1.99,-0.17l2.43,-1.98l1.58,-0.33l-1.98,1.88l1.85,-0.02l1.33,-1.17l12.03,-4.28l4.28,0.66l6.26,4.2l9.56,3.02l-49.26,55.91l-17.57,16.11l-3.92,65.83l-1.43,0.88l0.3,2.14l-32.47,-2.21l-38.67,-4.14ZM358.05,659.25l-0.57,1.38l2.52,3.34l1.2,-0.32l1.1,0.68l0.62,-0.83l2.78,0.77l-4.58,1.29l-0.34,1.82l0.94,2.85l3.13,3.99l0.22,2.26l2.43,1.74l0.42,2.75l0.85,0.78l0.19,3.11l3.02,1.79l1.2,-4.49l1.9,-0.21l-1.49,1.95l0.62,1.94l2.46,-2.21l0.95,4.17l-1.21,3.82l0.46,3.17l2.17,-1.39l0.62,-2.57l2.26,-0.95l0.51,1.06l0.38,1.6l-2.51,3.7l-0.84,3.0l1.26,0.25l2.08,-2.67l0.81,0.32l-3.9,4.57l-0.97,8.83l0.63,2.85l3.31,0.71l1.33,-1.44l-0.09,-3.28l0.45,-0.38l1.4,1.29l1.52,-0.53l-0.8,-1.43l0.01,-6.93l0.84,0.05l-0.0,-1.41l1.12,-0.85l-2.33,-3.53l-0.47,-2.7l-2.13,-3.63l0.91,-0.39l-0.33,-1.21l-1.6,-1.06l0.58,-1.53l-2.3,-4.74l0.77,-0.8l-0.17,-2.6l-1.45,-5.26l-1.96,-3.44l-0.13,-1.34l1.12,-1.31l-0.84,-0.77l0.04,-2.34l-1.58,-2.21l-0.66,-3.65l-1.5,-2.46l0.32,-1.95l-1.36,-4.38l2.17,-0.28l0.64,-1.93l-2.8,0.55l-1.48,1.77l-1.1,-1.27l0.86,-0.78l0.17,-2.08l2.78,-0.81l1.18,-1.18l-1.97,-2.6l-1.06,0.24l-3.76,7.32l0.66,2.32l1.82,1.62l-2.82,-1.76l-3.25,-0.16l-1.68,-1.09l-1.33,0.35l-4.39,11.12ZM338.24,663.05l-0.65,0.97l0.87,0.92l-0.25,1.12l1.03,-0.05l0.55,1.29l2.0,-0.24l0.99,-1.7l0.09,-1.38l-1.05,-1.03l2.46,0.66l-0.57,3.78l1.64,2.97l1.19,-0.99l-0.32,-3.9l0.85,1.53l0.88,-0.01l-0.54,2.9l0.85,1.25l-0.42,1.66l-1.48,1.16l-0.83,1.91l-0.36,6.88l0.69,3.55l1.1,0.47l1.8,2.85l2.36,-0.58l0.56,2.28l1.19,-2.43l1.22,0.34l0.19,1.6l1.37,0.02l0.09,3.43l1.45,3.0l-0.79,0.41l-0.11,1.58l2.87,6.16l1.6,6.25l-0.78,1.22l0.13,1.98l1.68,1.36l3.19,-0.36l2.9,-1.85l0.24,-2.18l-4.5,-7.89l-3.89,-1.78l-0.07,-1.57l1.52,-1.23l1.34,-3.48l-2.0,-0.95l-0.47,-1.63l1.15,-2.77l-0.96,-2.78l-0.73,-0.49l-1.66,0.65l-1.94,-2.22l0.01,2.67l-0.52,0.11l-0.48,-2.45l-1.72,-0.95l-1.95,2.31l0.29,-2.62l-0.56,-1.05l-0.64,0.0l-0.97,2.03l1.25,-3.44l0.01,-1.74l-0.87,-0.31l0.05,-3.27l1.27,-1.06l1.73,-3.79l-0.43,-5.26l0.7,-1.86l-4.25,-3.36l-3.17,-1.0l-0.49,-1.05l-1.59,-0.72l-1.62,1.53l-2.05,-0.16l-0.63,-1.36l-1.79,0.41l-0.53,1.06l1.35,1.66l-0.08,1.04ZM343.01,656.44l1.13,1.51l0.98,-0.26l0.96,2.44l3.89,2.01l3.85,-0.8l0.49,1.98l2.25,-0.5l-0.1,-1.24l0.87,-0.61l-0.66,-1.0l0.38,-2.94l-2.0,0.71l-2.48,-0.31l-0.99,1.43l-0.7,-1.78l0.88,-1.47l-1.1,-2.72l-1.76,-1.5l3.0,-1.3l0.35,-1.72l0.74,1.18l0.79,-0.05l1.06,-2.81l1.32,-0.99l-0.07,-1.43l-0.89,-0.39l-2.15,2.28l-3.16,1.45l-0.24,-0.54l1.53,-1.35l-1.92,-1.62l4.72,-1.87l-0.02,-1.11l-1.87,-0.0l-1.52,-1.59l-1.47,0.99l-0.63,-0.73l-0.85,0.38l0.24,5.25l-1.56,-0.75l-1.07,0.89l0.89,1.62l-0.57,0.99l1.53,3.23l-1.1,-0.29l-0.96,0.88l-1.74,-0.65l-0.54,0.69l0.88,1.1l-2.03,-0.96l-1.8,1.37l3.2,2.86ZM341.7,570.74l0.11,0.46l-0.33,0.4l-0.3,-0.25l0.52,-0.61ZM372.43,651.83l0.78,0.33l0.07,0.14l-0.68,0.12l-0.17,-0.58ZM373.09,681.95l-0.22,-0.07l-0.17,-0.02l0.34,-0.17l0.05,0.27ZM385.47,699.16l0.7,-0.42l0.64,-0.04l-0.44,0.34l-0.9,0.12ZM383.3,699.6l-0.34,1.82l-1.34,0.72l0.88,-0.74l0.79,-1.81ZM377.76,678.72l0.37,-0.5l0.24,-0.1l-0.05,0.16l-0.56,0.45ZM370.13,675.8l0.54,-1.53l0.13,3.36l-0.46,-0.78l-0.22,-1.05ZM357.53,697.63l0.49,0.05l0.11,1.04l-0.27,-0.23l-0.34,-0.86ZM358.33,696.85l-0.03,-0.15l0.14,-0.13l-0.11,0.27ZM357.84,689.63l0.46,0.59l-0.04,2.55l-0.44,-2.49l0.02,-0.65ZM347.78,684.17l-0.0,-0.02l-0.02,-0.1l0.05,0.08l-0.04,0.04ZM347.6,681.67l-0.12,-0.23l0.03,-0.26l0.07,0.22l0.02,0.27ZM349.11,674.67l-0.15,-1.21l0.81,-1.07l-0.36,1.68l-0.3,0.6ZM348.35,656.43l0.0,0.0l-0.0,0.0l-0.0,-0.0Z", "name": "Manitoba"}, "sk": {"path": "M225.52,715.72l39.97,-178.67l7.25,-1.44l1.31,1.41l12.87,0.18l1.43,-2.31l0.88,1.22l4.11,0.42l3.46,1.73l7.89,0.67l-0.84,-0.96l-5.15,-0.85l-2.45,-1.6l-3.4,-0.16l-2.27,-2.18l-3.22,-0.71l-2.58,-1.68l-4.02,-0.32l-2.77,0.98l1.34,-2.29l-0.87,-0.76l-1.81,0.51l-0.58,-2.19l-0.93,-0.65l-2.97,-0.33l-5.02,3.79l2.54,-11.36l37.12,7.44l37.41,5.82l-4.58,34.49l-1.83,1.67l-0.01,1.71l-2.81,1.32l-1.71,2.49l-1.74,0.06l-0.19,2.8l-2.61,1.35l-1.09,3.92l1.79,-0.4l1.19,1.26l-1.32,2.68l1.76,0.57l-0.31,4.59l-2.32,0.06l-3.29,4.78l1.51,-6.72l-0.95,-0.48l-1.63,5.24l-1.25,0.01l-0.61,0.92l-0.03,1.77l0.55,0.19l-0.9,2.9l0.77,0.84l1.75,-2.64l0.13,1.02l1.37,0.4l1.78,-2.5l4.61,-1.44l0.17,-1.79l1.5,-0.27l0.7,-0.98l-1.43,-0.62l0.7,-0.7l1.47,0.09l1.37,-2.0l-2.8,21.13l-8.91,123.93l-50.48,-7.59l-49.01,-9.75ZM321.15,570.65l0.95,0.2l1.78,-1.81l1.8,0.51l0.38,1.25l-1.49,2.36l1.92,-0.81l1.84,-2.74l-1.39,-0.73l1.05,-3.5l3.03,-0.66l0.82,-1.15l-0.99,-1.18l0.63,-0.7l0.9,0.38l1.19,-1.81l-0.29,-1.14l-1.17,-0.59l-0.12,-1.79l-1.98,0.19l-0.69,-0.9l-0.89,1.02l0.19,0.93l-1.46,0.5l-1.33,-0.79l-1.32,0.9l-1.19,2.67l0.36,1.78l-1.9,1.78l0.32,0.65l2.03,-0.32l-2.97,1.62l0.31,1.04l1.31,-0.05l-2.31,2.02l-0.17,1.08l0.83,-0.21ZM329.12,591.75l0.01,0.02l-0.02,0.0l0.01,-0.03ZM337.04,580.48l0.76,-1.11l0.21,-1.05l-0.31,2.31l-0.66,-0.14ZM334.83,587.78l-0.06,-0.5l0.75,-1.28l-0.11,1.5l-0.59,0.28ZM332.55,578.38l0.2,-0.02l0.16,0.03l-0.1,0.23l-0.25,-0.24ZM324.49,566.41l0.75,-0.68l0.15,-0.05l0.08,0.36l-0.98,0.37Z", "name": "Saskatchewan"}, "qc": {"path": "M567.54,485.56l2.68,-1.98l1.59,-2.47l6.39,0.69l6.3,2.28l4.25,0.42l-2.04,2.18l0.37,0.65l4.59,-3.75l1.34,0.24l0.63,1.1l0.93,-0.89l2.52,1.84l2.15,0.56l0.33,-0.61l-1.98,-1.25l0.01,-0.69l2.64,-0.51l1.11,-1.65l2.27,-1.23l0.87,-2.05l1.31,-0.53l1.15,1.47l3.31,0.92l3.37,3.27l1.41,-0.03l0.32,-0.84l0.81,0.4l0.61,2.24l-1.14,2.9l0.44,0.56l2.15,-0.39l-0.63,-1.88l3.32,0.52l0.29,2.27l1.48,-0.07l0.73,0.84l-0.4,1.12l-1.78,0.48l0.08,1.33l3.16,-1.31l0.24,-1.94l2.68,0.89l-0.2,0.92l-1.78,0.57l0.84,1.44l-0.94,1.0l1.77,0.4l-0.94,0.39l0.28,0.79l1.22,0.1l-0.28,0.74l1.22,0.54l0.82,1.88l1.12,-0.73l1.12,0.98l0.99,-0.79l0.6,0.52l1.4,-0.43l1.24,0.89l1.95,-0.4l0.47,0.74l1.44,0.04l1.87,-2.0l1.12,-0.12l0.88,1.88l-0.23,1.61l2.73,1.17l0.99,-2.2l0.66,0.54l0.86,-0.68l-0.68,-2.21l0.39,-1.34l2.03,2.74l0.4,1.74l-2.54,2.76l0.92,2.18l-1.2,1.53l1.51,2.42l-0.12,1.26l1.77,1.39l0.42,2.48l-1.52,0.27l-0.12,1.39l-4.28,0.38l-2.16,1.18l-4.19,-0.67l-0.74,0.79l5.04,1.01l7.7,-1.58l-0.08,1.01l1.78,0.38l0.15,3.34l1.33,0.37l-1.61,2.91l1.54,2.47l-0.64,1.56l1.63,0.02l1.62,-1.44l0.55,0.66l0.9,-0.37l0.42,1.2l-1.79,0.29l-0.81,1.56l1.94,4.81l-0.53,1.75l-0.49,0.33l-0.49,-0.84l-0.43,-2.08l-2.54,-1.36l0.07,2.24l1.07,1.13l-0.9,1.22l-2.52,1.17l-0.21,0.87l3.16,-0.09l2.25,2.48l1.48,-3.64l2.54,-3.15l3.47,-0.41l0.89,-0.97l4.23,1.35l0.88,3.2l2.07,2.53l0.03,5.92l-1.06,1.95l-5.56,3.96l-1.58,3.45l3.83,-4.1l4.86,-3.19l0.7,-1.85l-0.2,-7.51l1.76,-0.2l1.11,3.2l-1.48,4.96l0.81,0.14l0.86,-1.54l1.17,-3.78l1.04,1.05l0.48,5.63l1.0,0.4l-0.27,-3.89l0.92,-3.12l3.42,-2.57l0.63,-2.68l1.04,1.17l0.55,-1.56l1.61,-0.49l-0.5,-3.33l0.91,-1.35l-0.08,-2.13l4.9,2.94l0.38,3.6l-0.65,1.08l1.18,0.8l0.82,-5.76l-2.39,-1.59l-0.76,-2.0l2.26,-0.94l-0.23,-0.75l-1.62,-0.02l0.76,-1.47l1.91,0.43l-0.97,-1.83l2.13,0.56l0.2,-0.65l-1.0,-0.55l1.84,-0.07l0.57,-0.69l-2.51,-0.75l-0.86,0.79l-0.95,-1.14l1.63,-2.34l-1.22,-1.3l1.63,1.03l0.65,-0.66l-1.2,-1.2l0.27,-1.02l-0.91,-0.42l1.58,-0.5l2.03,1.08l1.18,-0.2l-2.5,-1.88l-2.27,-0.15l-2.07,-3.34l1.18,-2.17l2.75,0.78l1.03,-0.65l-2.55,-0.99l0.83,-1.94l-0.92,-1.51l0.72,-3.18l2.37,-0.35l0.39,0.53l-1.02,0.44l0.27,0.84l-1.61,0.8l1.18,1.74l1.8,0.19l-0.93,1.95l1.24,5.32l2.0,1.75l2.73,-2.15l-1.08,1.6l0.96,4.42l1.29,1.97l1.91,0.72l-4.47,-0.11l-0.76,1.69l0.28,1.7l5.87,-0.6l0.77,1.65l1.34,0.35l3.31,-3.48l2.62,1.19l-4.93,3.05l0.59,2.54l0.98,0.39l1.01,-0.96l0.71,0.98l-2.51,3.1l0.08,2.13l-1.41,1.31l0.05,2.0l0.64,0.85l1.8,-0.09l3.0,4.39l1.14,-0.81l1.6,1.6l1.76,0.07l-0.75,1.73l1.5,3.17l-0.87,1.11l0.05,1.7l1.5,1.96l-0.57,1.26l0.73,3.23l-0.83,0.91l0.33,1.16l-0.83,1.87l3.76,4.08l-2.68,0.86l1.07,2.62l1.03,0.74l1.87,-0.08l-0.99,1.19l0.5,1.88l1.22,-0.66l1.2,0.69l2.14,-0.12l-0.88,1.63l0.62,1.68l2.96,2.0l1.05,1.64l2.06,0.9l1.25,-0.5l0.24,1.93l1.03,0.77l-3.29,3.75l0.16,2.77l1.69,1.08l-0.72,7.12l-7.14,-0.89l-2.03,1.25l-2.45,0.1l-3.14,1.95l-3.52,0.02l-2.1,1.19l-2.7,-2.92l-2.07,0.38l-2.35,-0.87l-4.27,-3.5l-2.9,-1.23l-0.87,1.07l1.96,1.57l-0.17,2.11l1.48,1.67l-0.4,1.11l1.8,2.02l-0.87,1.11l-6.47,-3.28l-0.16,-1.16l-1.37,-0.14l-0.77,0.94l0.2,1.29l2.53,2.68l-0.03,1.02l1.44,0.79l-0.02,0.93l1.91,0.16l-1.55,0.44l-0.36,1.99l-2.07,-0.88l-1.48,0.78l0.14,2.15l2.19,2.6l-1.79,5.54l2.42,1.66l0.46,1.12l1.76,0.66l0.23,3.29l0.89,0.64l3.05,-0.25l1.66,2.57l1.09,-0.28l0.81,0.77l-0.36,2.35l0.9,2.89l-0.65,2.01l1.25,4.36l3.53,0.01l1.16,-1.3l-0.51,-4.02l1.22,-0.52l0.08,-1.42l2.1,1.75l-0.84,0.91l0.94,1.83l-0.9,0.76l1.11,2.51l-0.4,0.73l1.33,1.83l-0.78,2.0l1.83,2.63l1.35,0.07l-0.43,-2.68l1.31,0.96l0.94,-0.23l0.96,2.03l3.17,0.35l0.08,-1.35l2.55,0.46l0.37,-3.06l3.66,-0.38l3.28,1.73l0.71,1.7l3.05,0.82l-0.99,1.63l2.72,3.16l2.93,-4.57l-1.46,-1.65l-0.38,-4.86l1.35,-1.05l-1.32,-4.92l1.22,-0.11l-0.3,1.18l2.44,0.0l2.61,3.99l-1.28,-0.17l-0.48,0.73l1.68,1.11l35.01,-11.1l35.07,-12.54l3.42,9.02l-1.77,-0.95l-2.75,2.28l-1.08,0.49l-0.72,-0.49l-2.68,4.19l-1.64,1.25l-1.0,-0.75l-0.11,1.13l-1.43,-0.17l-1.72,1.36l-0.6,1.16l1.14,1.19l-3.26,3.83l1.5,3.76l-0.63,-1.43l-0.81,-0.1l-0.43,2.86l-0.77,0.21l-1.21,2.32l-0.67,3.58l-2.17,1.52l-0.5,1.77l0.65,0.77l-1.2,1.54l-2.9,0.03l-0.31,0.93l-2.71,1.52l-0.41,-0.49l-0.86,0.79l-1.54,-0.22l-0.9,1.3l-6.38,3.28l-0.63,-0.58l-1.77,1.59l-1.49,-1.29l-3.94,1.02l-2.28,-0.28l-3.14,1.2l-0.63,-0.4l-2.2,1.18l-1.14,-0.17l-3.8,2.96l-4.91,-0.34l-3.53,1.93l-3.54,-0.01l-4.49,2.21l-4.62,0.41l-4.94,2.55l-2.65,0.05l-1.66,2.26l-2.24,0.48l-0.93,-0.98l-0.82,0.24l-2.35,4.9l-1.87,1.56l-0.22,2.67l-1.15,0.65l0.37,6.89l-0.9,2.3l-7.12,2.55l-2.85,2.86l1.47,0.84l-1.15,0.54l-0.93,-1.34l-1.01,0.1l0.64,1.28l-1.75,1.62l-0.67,2.63l-3.49,3.63l-0.27,3.11l-1.0,0.53l-1.29,5.65l-2.01,3.09l-1.29,0.07l-2.38,-1.59l-1.96,0.46l-3.06,-1.17l-3.75,0.48l-3.78,-0.53l-1.08,0.61l0.34,0.72l2.87,-0.0l-0.93,0.89l0.77,0.75l4.35,-1.54l4.13,1.14l2.46,-0.31l2.54,1.29l-0.84,6.13l-2.02,2.56l-0.47,3.04l-2.8,1.66l-1.43,6.21l-2.49,2.27l-2.57,4.76l-5.07,3.11l-2.2,0.19l-3.66,3.19l-0.16,1.61l-3.51,3.69l-4.41,2.47l-0.11,1.93l-1.55,0.98l-2.15,5.95l-3.75,2.23l-2.78,3.92l-3.31,-0.18l-4.81,-1.52l-7.53,2.73l-6.18,4.37l-2.82,-1.86l-2.34,0.27l-0.91,1.01l-3.85,-1.06l-3.2,-5.29l-1.74,0.28l-0.33,1.68l-2.91,-1.28l-1.98,-2.69l-4.14,-1.81l-13.22,-1.13l-3.35,-2.85l-6.82,-9.11l-0.54,-3.26l-1.96,-2.87l0.5,-2.68l-6.88,-58.58l1.67,2.7l0.76,-0.3l-2.63,-4.13l-1.45,-10.21l1.8,-2.07l0.51,0.3l-0.05,1.75l1.97,-0.07l1.17,0.94l1.17,4.32l2.02,0.89l-0.92,-1.44l0.7,-2.4l-0.66,-0.48l1.87,-2.2l-1.42,-0.35l-0.2,-1.85l-2.72,-2.34l1.92,-1.2l-0.7,-1.8l1.4,-0.7l1.48,-2.63l0.22,-2.55l1.53,-0.35l-1.62,-0.87l0.35,-0.97l-1.08,-3.34l-1.97,-0.38l0.3,-0.73l-1.54,-2.57l0.77,-0.58l-0.19,-2.18l-1.55,0.32l0.7,-1.5l-0.99,-0.9l-0.91,0.22l0.22,-3.89l-2.13,-4.19l0.97,-1.93l-1.87,-3.11l0.14,-1.17l1.02,0.29l0.34,-0.65l-1.75,-0.7l0.54,-0.95l-0.65,-1.0l0.79,-0.61l-1.92,-1.3l0.47,-1.99l-2.94,0.06l0.37,-1.03l-1.53,-0.25l-1.71,-5.56l-1.6,-1.27l12.54,-7.64l5.83,-5.38l5.76,-8.04l0.03,-1.54l3.67,-6.25l0.7,-7.28l-2.09,-12.99l-4.38,-10.16l-4.3,-5.9l-3.31,-2.21l-0.4,-0.99l-5.76,-2.52l-4.54,-4.12l-1.36,0.49l0.77,-1.64l-1.24,-3.71l2.05,-0.16l1.57,-5.91l2.29,-1.62l0.35,-1.83l0.75,-0.42l-0.01,-0.71l-1.88,-0.96l1.18,-1.28l-0.12,-1.72l-0.72,-0.58l1.56,-0.14l1.48,1.82l1.76,-0.42l-1.31,-0.66l-1.04,-2.07l1.87,-1.5l-1.03,-2.89l1.33,-2.14l-0.47,-0.56l-3.35,0.5l1.59,-1.31l-1.31,-0.85l0.39,-0.86l-0.77,-1.16l-2.18,-1.91l2.59,-3.27l-1.49,-0.49l-1.22,0.52l-1.2,-1.06l2.38,-4.21l-0.95,-0.23l-2.27,1.59l-0.86,-1.07l-2.14,0.94l2.89,-4.95l0.63,-2.61l-1.13,-4.32l1.75,-1.37l-1.13,-1.19l1.27,0.24l0.34,-0.62l-1.23,-1.21l-1.15,-0.05l-0.92,-1.42l-1.99,-0.29l-2.53,-8.09l-0.22,-2.36l0.82,-1.84ZM689.57,666.14l2.97,2.78l0.4,4.81l3.85,2.18l2.91,3.03l-0.08,2.64l1.13,1.65l0.1,-6.44l1.08,-1.92l1.66,-0.63l-0.19,-1.37l1.35,-2.13l-1.37,-1.44l-0.69,-3.39l-0.83,-0.4l0.98,-1.49l-0.24,-1.9l-1.02,-0.45l-0.51,3.11l-1.74,-0.59l0.3,-3.81l-2.42,-1.16l0.9,3.16l-0.05,1.06l-0.54,-0.56l-0.61,0.45l0.5,1.31l-1.72,0.69l-0.92,-1.3l-0.87,2.84l-2.4,-5.39l-0.46,1.1l1.2,4.24l-2.2,-2.96l-0.38,1.02l-0.98,0.1l0.87,1.15ZM641.29,697.73l-1.32,5.35l0.92,-0.27l1.5,-3.61l1.02,0.96l0.17,1.97l1.01,0.68l-1.41,0.75l-2.37,3.12l0.88,0.82l1.32,-0.43l0.12,-1.1l2.26,-2.64l-0.25,-2.25l0.82,-0.6l-1.24,-1.43l-0.37,-2.37l4.08,-9.43l0.55,-0.8l0.05,1.71l-1.74,2.01l-0.84,3.7l4.78,-6.08l0.82,-2.37l3.4,-2.58l-0.15,-0.73l-1.75,-0.25l-0.62,0.53l-0.45,0.12l0.95,-2.03l-4.09,0.13l-2.49,2.35l-3.6,5.35l-2.17,1.13l0.23,2.25l0.66,0.46l-0.68,5.6ZM578.58,653.33l-0.12,0.05l-0.03,-0.04l0.15,-0.0ZM653.17,787.27l4.41,1.1l0.65,0.96l-1.84,0.63l-1.91,2.07l-1.51,-1.14l0.21,-3.62ZM655.64,541.71l0.05,-0.09l0.04,0.01l-0.05,0.06l-0.03,0.02ZM627.38,494.93l0.16,-0.06l-0.08,0.05l-0.09,0.01ZM639.8,499.28l-0.07,-0.03l0.04,-0.08l0.03,0.12ZM657.49,533.45l0.42,-0.03l0.38,-0.21l-0.29,0.53l-0.52,-0.29ZM677.32,543.83l-0.22,-0.37l-0.25,-1.11l0.12,-0.83l0.35,2.31ZM692.9,522.01l-0.29,-0.07l-0.05,-0.23l0.17,0.12l0.17,0.19ZM695.33,499.9l-0.07,-0.73l1.02,0.21l-0.34,0.12l-0.61,0.4ZM696.44,499.35l0.14,-0.3l0.34,0.14l-0.21,0.11l-0.26,0.05ZM721.21,553.5l-0.0,-0.22l-0.06,-0.42l0.12,0.17l-0.05,0.47ZM742.68,638.01l-0.94,-0.91l-1.23,-4.78l2.19,-1.57l-0.57,-3.86l2.03,-0.83l1.87,2.26l0.26,3.08l2.85,1.31l-4.71,1.98l-1.74,3.3ZM572.29,551.83l-0.04,-0.14l0.05,-0.08l-0.01,0.22ZM809.54,639.84l0.11,-0.18l0.38,-0.14l-0.2,0.29l-0.28,0.03ZM794.07,718.76l-0.04,-0.31l0.4,-0.4l-0.02,0.55l-0.34,0.16ZM794.08,721.05l0.12,0.06l0.22,0.03l-0.4,0.14l0.05,-0.23ZM752.05,684.58l3.35,-1.98l12.06,-0.48l7.47,1.06l4.76,2.11l3.86,-0.07l3.15,2.43l-0.94,1.38l-4.79,1.57l-10.21,0.1l-5.99,-1.0l-1.45,-1.91l-4.1,-1.89l-7.17,-1.32ZM652.71,796.39l2.37,-2.89l3.83,-1.92l2.72,-3.56l2.68,-0.68l0.07,-5.26l2.17,-3.82l0.22,-2.72l4.72,-3.18l2.23,-3.77l2.48,-1.6l0.65,-2.03l1.89,-1.12l1.43,-2.03l1.92,0.23l4.53,-3.0l1.48,-2.1l4.17,-2.21l2.66,-2.41l8.34,-16.91l0.68,-3.09l5.71,-8.22l7.34,-7.76l14.54,-11.65l4.17,-2.69l7.07,-3.0l8.62,-0.99l3.41,0.69l4.64,2.34l0.25,0.85l-3.4,-0.34l-0.76,0.51l0.9,1.37l1.21,-0.43l0.13,0.76l3.16,1.24l-0.69,1.61l1.11,0.79l-0.89,1.66l-3.97,2.67l-0.08,2.5l-1.99,0.9l-0.01,1.14l-2.76,2.81l-1.46,0.58l-4.54,-0.82l-1.94,-1.54l-1.61,2.77l-4.74,0.93l-0.62,1.24l-3.97,2.56l-0.15,1.39l-1.26,-0.06l-3.13,2.04l-2.65,-0.67l-0.75,-1.02l-5.83,1.45l-0.09,1.3l-2.99,1.14l1.44,6.32l-1.36,2.4l-4.88,3.54l-0.62,-2.08l-2.76,0.16l-6.09,15.23l0.29,5.14l-1.15,1.5l-0.55,2.85l0.72,1.19l-0.26,2.96l0.87,0.77l-1.38,2.38l0.31,1.47l-2.74,3.32l-0.21,1.82l1.32,1.03l-1.96,-0.13l-0.29,2.78l-1.38,-1.09l-1.81,2.22l-2.46,-0.16l-1.2,1.39l0.52,0.71l-0.6,3.08l-37.0,7.26ZM695.11,673.17l-1.2,-1.89l1.28,-3.57l2.36,-1.72l2.65,0.97l1.12,3.06l-1.49,-2.14l-0.88,0.09l-0.35,1.07l1.59,2.2l1.6,0.33l-0.48,1.45l-1.08,-0.11l-0.18,0.98l-1.7,0.54l-1.79,-1.34l-1.43,0.06ZM699.83,676.44l0.05,-0.39l0.27,-0.52l-0.05,0.36l-0.26,0.55ZM688.63,755.76l1.98,-2.71l0.28,-0.13l-0.38,1.07l-1.88,1.77ZM659.46,787.18l2.28,-1.7l1.54,-2.74l-0.52,3.86l-3.3,0.58ZM659.81,785.25l1.03,-1.6l0.72,-0.51l-0.63,1.6l-1.12,0.51ZM659.11,532.42l0.63,-0.24l0.62,1.37l-0.55,1.27l-0.69,-2.4ZM656.94,791.1l0.16,-0.25l0.89,-0.1l-0.46,0.23l-0.58,0.13ZM652.03,682.85l-1.22,1.65l-0.39,-0.18l0.87,-0.97l0.73,-0.5ZM649.56,685.96l-0.16,0.02l-0.35,0.32l0.38,-0.81l0.12,0.47Z", "name": "Qu\u00e9bec"}, "pe": {"path": "M769.24,739.85l-0.18,-1.73l2.38,-5.55l0.78,1.7l-0.66,2.7l1.46,0.36l2.27,2.05l-0.46,2.1l1.16,-0.5l0.61,0.64l1.57,-0.17l0.11,-2.32l2.73,1.04l1.06,-0.97l1.95,1.15l7.37,-2.66l0.67,-1.07l5.69,-1.66l-1.8,2.01l-1.67,0.27l-0.29,1.75l-1.05,0.36l0.88,0.75l-1.76,0.32l0.28,1.54l1.91,0.57l-1.06,1.49l1.06,0.39l-2.59,1.13l-1.77,-0.58l-0.25,-2.19l-1.63,-0.62l-1.22,0.39l1.06,-1.86l-0.51,-0.53l-1.64,1.82l-1.07,0.01l0.29,0.75l-0.86,1.0l0.82,0.47l-3.05,-0.53l-1.4,0.5l-2.44,-1.08l0.82,-0.41l-0.92,-1.1l-4.45,1.08l0.16,-2.7l-0.78,-1.42l-0.79,0.92l-2.8,0.36Z", "name": "Prince Edward Island"}, "bc": {"path": "M13.68,416.26l38.29,21.56l40.78,20.26l41.78,18.1l42.4,15.79l-37.34,108.94l0.23,2.34l1.36,1.97l-2.01,-0.53l-0.39,1.88l1.81,4.12l2.62,0.69l0.45,3.38l2.09,1.93l1.26,-1.4l0.77,1.04l0.58,1.33l-0.59,0.93l0.97,0.98l-0.26,2.71l1.46,0.32l0.34,1.0l-0.42,9.09l2.27,0.12l0.91,-1.11l1.91,1.91l-1.43,1.59l0.3,1.88l1.42,1.86l3.03,0.67l-0.09,1.84l1.68,3.03l0.35,4.0l1.36,0.39l1.81,-1.22l0.08,2.89l2.0,4.22l-0.25,2.61l1.91,2.06l0.16,2.41l1.93,1.34l1.19,2.3l-0.77,2.06l2.77,3.21l0.39,3.35l2.44,0.37l1.38,4.09l-0.14,5.53l-0.98,2.53l0.11,2.26l-2.3,3.28l1.69,1.46l-0.74,2.47l1.46,4.06l2.11,1.46l0.58,2.44l-54.57,-16.38l-42.44,-14.97l-1.34,-2.34l-2.28,0.42l1.41,-1.4l-1.8,-0.63l1.1,-0.76l-0.62,-1.25l3.35,0.77l1.94,-2.65l-0.87,-0.46l-1.34,1.81l-0.73,-0.02l-2.26,-1.5l3.4,-5.58l-1.54,0.14l-0.64,1.13l-3.29,0.49l-0.74,1.8l-2.22,-2.35l1.18,-1.54l3.24,-0.79l-0.37,-0.66l-2.84,-0.01l-0.59,-2.27l1.35,-1.97l-0.25,-1.64l2.91,-1.08l-0.39,-1.65l-1.48,-1.88l-0.67,0.31l1.11,2.67l-2.3,0.5l-2.93,3.08l-2.88,-0.88l-1.94,-4.22l3.27,-3.87l-0.4,-1.99l0.66,-0.64l2.68,0.23l1.56,-1.1l-0.53,-0.58l-1.92,0.55l-2.02,-0.55l-2.16,1.19l-0.86,-0.52l0.19,-1.72l-0.86,-0.14l3.08,-1.59l1.61,-2.59l-0.54,-1.17l1.94,-1.18l-0.12,-1.14l-0.81,-0.31l-2.3,1.51l0.22,1.81l-0.79,1.69l-3.79,2.15l0.16,-1.29l-1.14,-0.17l-0.23,-1.39l-1.19,0.93l-1.01,-0.17l1.36,-2.4l1.52,-0.77l-0.21,-0.88l-2.03,0.51l-2.34,3.14l-0.55,-2.01l-2.3,0.15l-1.87,-1.12l0.32,-0.73l5.59,0.31l1.71,-1.03l0.34,-1.63l0.94,0.18l1.32,-1.41l-0.32,-3.45l-0.89,0.49l-0.07,2.73l-1.67,0.34l-0.41,1.52l-1.26,0.7l-1.91,-0.24l-0.41,-0.77l-2.03,-0.08l2.36,-1.07l-1.65,-0.62l0.58,-1.2l-0.82,-0.57l1.48,-0.85l-3.03,-1.52l0.13,-2.45l-1.55,2.18l-1.62,0.38l-1.26,-1.83l-1.03,0.28l-2.78,-1.56l-0.03,1.06l-1.91,-2.09l0.18,-0.81l-0.87,-0.64l1.2,-1.71l-2.02,-0.72l-0.34,-2.17l2.39,-0.07l3.73,1.75l1.27,-0.28l0.88,-1.35l-0.59,-0.45l-2.09,0.8l-1.52,-0.85l-0.02,-0.89l-3.06,-0.81l3.0,-0.69l1.92,-2.23l4.52,1.2l3.66,2.02l1.79,-1.19l-0.38,-2.15l-1.39,2.05l-6.12,-3.54l-0.79,0.4l2.07,-2.17l-0.61,-0.83l-2.47,2.04l-1.94,-0.38l0.85,1.33l-1.62,1.97l-1.06,-1.22l0.06,-2.5l1.21,-2.96l1.4,-0.83l1.32,0.33l1.96,-1.48l1.81,0.23l0.25,-1.47l3.62,-0.97l1.19,0.83l1.4,6.84l0.91,-1.43l-1.14,-3.48l0.26,-1.89l2.56,-0.31l-0.5,-0.96l-2.81,-0.06l-1.19,-1.21l0.44,-2.15l3.22,-0.88l1.43,-1.41l0.28,-2.14l-0.81,-1.58l-0.65,0.29l-0.22,3.03l-3.76,1.37l-0.84,1.41l-3.04,0.79l-2.28,0.14l0.03,-1.16l-1.92,1.47l-0.07,-1.06l1.33,-0.79l0.83,-4.09l-2.89,0.28l-1.92,1.56l4.7,-7.11l1.47,-0.62l-1.26,-0.96l-2.19,1.52l-1.33,-1.02l0.85,-4.21l1.01,-1.4l-0.84,-0.43l-0.19,-1.93l-0.88,0.13l-0.66,-1.45l0.74,-2.41l0.91,-0.63l-0.91,-1.26l1.28,0.17l-0.12,1.24l1.75,3.88l0.96,-1.37l3.2,1.11l-0.64,1.96l0.94,-0.15l0.03,2.25l1.24,0.61l0.19,-2.33l-1.0,-3.59l-2.27,-1.32l-1.99,0.31l-1.33,-3.84l1.65,-2.6l1.19,-0.39l1.97,1.07l0.05,-1.0l-1.41,-1.23l1.57,-2.17l-0.99,-0.09l-3.25,1.95l-0.57,-1.39l-0.8,0.06l-0.29,1.7l-0.47,-0.69l-0.66,1.18l-2.69,1.13l-2.16,3.62l-2.66,-9.4l0.18,-1.8l-0.78,-0.55l1.81,-3.54l1.68,4.79l-0.08,-4.94l2.67,1.58l2.23,-0.66l-0.37,-0.7l-1.5,0.3l-1.83,-1.67l-3.38,-0.01l-0.89,-1.25l1.17,-0.49l0.43,-2.86l-1.71,0.68l-0.64,-0.71l0.52,-0.88l0.82,0.14l0.4,-1.89l0.58,-0.0l0.81,5.21l1.31,0.88l-0.43,-2.01l1.95,-1.82l-1.29,-0.41l-0.83,0.73l-0.5,-4.19l1.16,-0.05l1.29,2.42l1.75,0.73l-1.81,-3.81l2.23,-1.4l0.1,-0.88l0.54,-0.4l0.09,1.05l2.0,-0.48l2.14,0.76l0.42,-0.72l-3.37,-1.69l6.34,-5.04l1.97,0.13l-0.21,-0.94l-2.03,-0.26l0.42,-3.12l-0.63,-0.43l-2.89,5.71l-4.38,3.54l0.19,-1.23l3.65,-2.47l1.85,-8.34l3.08,-2.48l0.24,-3.33l-2.86,-2.26l0.24,-1.84l-1.34,-1.53l-0.43,-1.97l-2.66,-2.59l-2.71,-5.17l-2.36,-1.11l1.2,-3.41l-1.5,-2.18l1.9,-2.25l-2.06,-2.5l1.76,-1.48l-0.9,-23.72l0.09,-1.46l0.99,-0.7l-1.5,-7.31l-2.39,-3.93l0.48,-5.51l-0.8,-0.66l-0.18,-2.6l-1.73,-1.64l0.25,-2.83l1.73,-2.27l-1.63,-6.02l-5.6,-0.15l-2.2,-0.69l-1.03,-0.17l-0.14,0.0l-0.63,0.11l0.16,1.76l-1.03,0.68l-1.72,-0.48l-1.53,2.9l-1.84,1.18l-2.14,-0.96l-7.6,0.93l2.24,-5.74l-3.41,-13.53l0.63,-3.0l-1.2,-1.82ZM73.27,652.68l0.29,0.56l-0.5,0.41l0.15,-0.35l0.07,-0.62ZM65.49,639.77l-0.05,0.24l-0.09,0.16l-0.03,0.01l0.17,-0.41ZM46.9,622.45l0.58,0.56l0.35,0.23l-0.42,0.17l-0.51,-0.97ZM45.51,609.91l-0.17,0.0l-0.36,-0.19l0.3,0.13l0.23,0.05ZM49.86,591.97l-0.53,1.61l-0.68,0.46l0.16,-1.83l1.05,-0.24ZM46.31,592.25l-0.74,0.75l-0.66,0.39l0.64,-1.17l0.75,0.02ZM51.41,599.9l0.12,-0.02l0.32,0.0l-0.13,0.19l-0.3,-0.17ZM55.89,626.23l-2.74,-0.27l-0.32,-0.43l0.61,-0.51l2.44,1.22ZM55.17,631.07l-0.22,-0.02l-0.62,-0.24l0.11,0.01l0.74,0.26ZM72.62,660.16l-1.15,-1.36l-0.28,-2.05l0.99,-1.2l0.44,4.6ZM76.93,661.93l0.48,-0.35l0.04,0.63l-0.15,-0.16l-0.38,-0.13ZM76.29,664.18l0.11,-0.16l0.39,-0.19l-0.22,0.27l-0.28,0.08ZM71.32,674.26l-0.21,-0.6l0.34,-1.42l0.54,1.27l-0.67,0.75ZM70.18,655.53l-0.06,-0.38l0.7,-0.3l-0.51,0.61l-0.13,0.07ZM32.64,621.08l0.68,-0.17l-0.74,-1.07l0.22,-1.3l5.36,0.74l3.39,3.27l-0.02,1.6l0.6,-0.15l4.55,5.7l6.73,4.07l1.93,2.25l4.68,3.02l0.26,7.98l1.84,4.7l-1.4,0.36l0.69,4.35l2.14,2.76l3.72,2.75l-0.42,0.9l2.04,1.19l-0.26,1.6l1.09,0.84l0.1,1.41l-1.08,0.55l1.57,3.71l-1.15,0.93l0.85,1.83l-0.98,2.32l0.85,0.38l1.35,-1.36l-0.07,3.71l-1.43,-1.03l-2.12,1.49l-0.76,-0.26l-6.76,-6.52l0.14,-0.88l-2.79,-1.25l-3.6,-4.45l-0.31,-1.19l5.54,-2.62l1.13,-1.58l-0.22,-2.1l-2.58,3.54l-2.64,-0.93l-1.1,0.36l-0.45,-0.34l0.86,-0.46l-0.95,-1.1l-2.44,1.38l-0.89,-1.16l-1.27,-2.46l2.18,-0.5l0.91,-0.99l-0.46,-0.57l-1.28,0.35l0.96,-2.94l-0.65,-0.54l-1.11,1.17l-1.57,-0.16l1.04,-0.37l1.32,-2.07l-0.7,-0.23l-1.4,1.27l0.29,-2.16l-1.77,0.02l-0.5,-1.02l-0.8,1.05l-0.81,-2.22l-1.16,0.39l-0.16,0.81l-0.28,-0.45l1.23,-2.55l5.26,1.02l0.36,-1.01l-3.85,-1.53l1.24,-1.08l-0.63,-1.0l-1.68,0.97l0.63,-3.12l-0.98,-0.43l-0.6,-2.02l-1.45,-0.4l-0.81,1.52l-1.65,-0.66l-0.32,-1.71l2.46,-1.59l0.4,-1.05l-1.6,0.13l-1.02,-1.33l-1.3,1.56l-0.46,-0.99l0.8,-0.46l-0.19,-1.5l-2.04,0.4l0.25,-1.15l-2.51,0.74l-0.68,-0.62l2.5,-1.18l-0.61,-0.93l0.54,-0.89l-1.5,-1.03l1.07,-1.19l3.27,0.93l0.71,2.43l0.68,-0.27l-0.22,-2.73l2.1,-0.71l-5.12,-3.14l0.17,1.47l1.91,1.19l-5.13,-1.05l-1.14,-3.24ZM42.73,638.87l0.18,0.66l-0.39,0.25l0.21,-0.91ZM48.16,658.18l-0.19,-0.14l-0.04,-0.06l0.11,0.01l0.12,0.19ZM65.5,652.35l2.27,2.11l0.58,2.49l-1.49,-2.95l-1.36,-1.66ZM68.05,643.88l-0.05,0.24l-0.39,0.41l0.11,-0.31l0.33,-0.33ZM67.01,658.01l0.26,0.09l0.46,0.37l-0.41,-0.15l-0.3,-0.32ZM65.56,642.66l0.9,0.14l-0.27,0.67l-0.55,-0.11l-0.08,-0.69ZM66.41,644.41l0.09,0.18l-0.5,0.24l-0.01,-0.2l0.41,-0.22ZM63.88,645.46l-0.21,-0.95l0.93,-0.53l-0.29,1.49l-0.43,-0.01ZM63.51,655.92l-0.0,-0.0l0.0,0.0l-0.0,0.0ZM61.36,639.62l0.04,-0.17l0.14,0.12l-0.07,0.05l-0.11,0.0ZM62.49,639.49l0.42,-0.95l0.59,0.96l0.17,3.08l-0.26,-2.27l-0.92,-0.82ZM61.23,643.16l0.03,-1.75l0.74,-0.6l0.33,1.46l-1.11,0.89ZM60.56,638.05l0.47,-0.38l1.13,-0.03l-0.83,0.65l-0.77,-0.24ZM59.53,637.03l0.18,-0.02l0.48,0.11l-0.61,-0.06l-0.05,-0.04ZM56.7,635.33l0.86,0.09l0.09,0.38l-0.33,-0.07l-0.61,-0.41ZM47.05,600.72l2.52,-3.17l6.61,-1.18l-0.51,1.31l-4.2,0.56l-2.9,2.62l-1.53,-0.13ZM51.25,628.36l2.59,-1.08l1.31,0.42l0.04,0.85l-1.28,0.95l-2.66,-1.14ZM51.19,630.96l1.85,0.01l0.22,0.32l-0.39,0.14l-1.68,-0.47ZM49.16,624.77l0.02,0.01l0.0,0.06l-0.02,-0.07ZM50.08,625.28l0.07,-0.07l0.64,0.3l-0.56,-0.01l-0.15,-0.22ZM48.4,587.0l0.14,-1.17l0.6,0.19l-0.53,0.82l-0.2,0.17ZM45.28,570.42l0.29,-0.57l0.16,-0.22l-0.2,0.65l-0.25,0.13ZM45.8,569.53l1.13,-1.95l2.4,0.2l-0.72,1.13l-2.81,0.62ZM45.97,597.4l0.63,-0.09l0.89,0.46l-0.56,0.43l-0.96,-0.8ZM46.73,596.18l1.01,-0.33l-0.49,-0.88l0.72,0.24l-0.14,1.53l-1.1,-0.57ZM44.4,591.29l1.02,-0.72l1.98,-5.16l-1.2,4.81l-1.8,1.07ZM41.13,582.84l0.04,-2.1l0.67,0.54l0.37,-0.87l3.25,-1.66l-0.98,-2.79l-0.6,0.02l1.1,-2.33l2.74,4.19l-0.64,3.91l-2.91,4.7l-0.83,-0.37l0.76,-1.87l2.26,-2.34l0.28,-1.43l-1.65,0.38l-2.15,3.48l-0.91,0.15l-0.83,-1.63ZM44.49,586.33l0.0,0.03l-0.02,-0.02l0.02,-0.0ZM43.58,576.61l0.66,1.48l-2.46,1.26l-0.04,-1.71l1.83,-1.04ZM42.97,587.05l1.52,0.5l-0.57,2.32l-0.91,-1.61l-0.04,-1.22ZM43.46,542.33l-0.02,-0.54l3.49,-1.73l-2.18,1.92l-1.29,0.35ZM46.87,655.68l-0.0,-0.0l0.0,0.0l-0.0,0.0ZM44.85,572.36l0.01,-0.26l1.86,-1.75l-0.47,2.63l-1.39,-0.62ZM45.33,652.85l0.48,-1.03l0.67,0.05l-0.21,1.74l-0.94,-0.76ZM42.7,600.88l1.89,-2.0l1.62,0.26l-2.46,4.01l0.03,-1.71l-1.08,-0.57ZM43.96,597.71l0.09,-1.03l1.12,-0.67l-0.62,1.32l-0.6,0.37ZM43.69,595.14l0.27,-0.49l0.51,0.28l-0.61,0.53l-0.16,-0.32ZM40.64,642.42l1.43,-0.61l-0.76,-0.86l1.66,-0.07l0.6,0.8l-1.0,3.81l-1.93,-3.08ZM41.58,608.24l0.22,-2.76l1.49,-0.67l-0.54,4.43l-1.17,-0.99ZM41.45,575.4l0.26,-1.41l1.63,-1.34l-0.96,3.17l-0.92,-0.42ZM41.25,591.58l0.36,-2.24l0.32,-0.39l0.56,0.41l-1.24,2.22ZM41.52,542.29l0.92,-0.2l0.04,0.0l-0.38,0.77l-0.57,-0.58ZM37.32,560.75l0.55,-1.25l-0.44,-0.75l0.81,-0.37l1.97,4.36l0.94,4.51l-0.92,0.17l0.21,0.68l1.4,1.38l-1.79,1.53l-0.23,1.15l-1.37,-5.61l1.36,-2.66l-2.01,-1.21l0.25,-1.11l-0.75,-0.82ZM38.12,563.82l-0.21,0.15l-0.18,-0.06l0.16,-0.11l0.23,0.02ZM40.09,551.37l0.12,-0.25l0.34,-0.21l-0.2,0.34l-0.26,0.12ZM38.87,583.4l0.33,-2.35l1.34,4.3l-0.73,1.53l-0.95,-3.48ZM39.97,554.02l0.01,-0.26l0.12,-0.15l0.17,0.38l-0.3,0.03ZM39.41,574.37l0.05,-0.86l0.56,2.86l-0.15,0.8l-0.46,-2.8ZM38.81,636.1l0.02,-0.04l0.01,0.01l0.01,0.02l-0.04,0.02ZM36.0,544.84l1.15,-1.7l0.93,0.78l-0.43,0.41l-1.65,0.51ZM33.38,556.4l0.03,-0.04l0.04,0.11l-0.07,-0.07ZM34.97,554.87l2.69,-0.5l0.49,1.68l-0.08,0.84l-1.9,1.13l-0.24,-0.64l1.94,-0.78l0.12,-0.89l-1.57,-0.45l-0.97,1.11l-0.49,-1.49ZM37.19,573.52l0.12,0.1l0.17,0.59l-0.22,-0.31l-0.08,-0.39ZM32.8,562.24l0.45,-0.7l0.45,0.35l2.97,4.84l0.26,5.13l-1.43,-0.5l-0.37,-3.33l-1.63,-2.24l-0.14,-1.69l0.87,-0.41l-1.44,-1.43ZM35.07,560.95l1.21,-0.39l0.7,1.39l-0.5,1.33l-1.42,-2.32ZM34.98,550.97l0.11,-0.11l0.25,0.66l0.06,0.42l-0.02,0.03l-0.41,-0.99ZM9.63,550.74l0.94,-3.63l-1.0,-0.91l0.61,-0.4l-0.14,-1.49l2.18,-1.79l0.84,-1.77l3.53,2.7l-2.1,1.55l-0.15,0.93l4.15,-1.1l0.82,0.23l0.38,2.12l-0.58,2.09l-1.81,0.84l-4.92,-0.51l-0.08,1.66l1.42,0.52l-0.46,1.19l4.46,-0.42l0.44,-1.5l2.06,-1.36l0.52,-2.22l1.91,0.69l2.51,-0.26l-6.35,6.43l-1.95,4.43l-1.3,1.07l-2.45,-0.68l-2.47,0.46l-1.08,-2.8l1.55,-0.1l0.49,1.19l0.99,-0.9l-0.51,-2.05l-1.03,-0.96l0.24,-0.95l-0.65,-1.04l-0.81,0.17l-0.18,-1.41ZM9.63,555.39l-0.19,-0.06l0.1,-0.07l0.09,0.13ZM9.22,560.26l4.7,1.56l3.09,-0.19l-0.5,0.93l0.84,2.28l-1.54,-1.24l-1.76,-0.62l-0.57,0.44l0.18,1.57l1.54,-0.22l1.49,1.66l-0.45,0.79l-1.67,-0.13l-0.97,-1.76l-1.41,0.96l1.13,0.77l-0.98,2.53l0.88,1.12l-0.53,3.05l1.34,1.42l0.26,0.91l-0.47,0.44l-2.35,-4.76l-0.66,-3.28l1.18,1.12l0.51,-1.36l-0.8,-2.18l-1.38,1.18l-0.48,-3.08l1.59,1.01l1.16,-1.6l-3.41,-2.39l0.01,-0.97ZM13.68,576.98l0.77,3.02l-0.35,0.26l-0.72,-0.39l-0.43,-2.31l0.73,-0.59ZM15.02,580.68l0.03,0.01l-0.01,0.03l-0.01,-0.04ZM15.12,581.11l0.09,0.21l-0.08,0.07l0.01,-0.07l-0.02,-0.2ZM16.04,581.92l0.28,0.15l0.16,-0.01l-0.23,0.19l-0.21,-0.33ZM15.54,580.45l0.02,-0.36l0.45,-0.11l0.17,0.59l-0.65,-0.13ZM13.0,576.92l-0.13,-0.08l0.01,-0.05l0.07,0.08l0.04,0.06ZM14.54,571.61l0.03,0.04l0.11,0.01l-0.16,0.04l0.02,-0.08ZM15.25,571.87l0.28,0.01l0.58,-0.26l-0.53,0.92l-0.33,-0.67ZM15.16,583.7l0.03,-0.12l0.17,-0.25l0.1,0.28l-0.3,0.09Z", "name": "British Columbia"}, "yt": {"path": "M99.9,241.74l2.97,2.91l3.27,1.52l3.63,4.87l0.6,7.06l1.7,0.59l0.4,3.07l3.81,6.94l1.36,0.8l1.09,2.36l1.9,0.57l-11.85,21.13l-0.58,1.5l0.84,1.37l-0.55,2.17l-1.23,1.62l-0.36,2.35l-2.22,1.68l-1.26,3.47l14.63,8.28l-0.45,0.78l0.89,3.72l-1.18,1.06l0.09,3.77l-3.88,3.76l1.31,1.97l-0.91,1.75l-1.85,1.06l0.32,1.03l-0.74,1.47l1.78,1.57l2.31,-0.42l1.52,0.54l-1.27,1.1l0.35,1.2l1.31,0.21l2.22,-1.21l0.27,1.26l1.01,0.21l-2.9,1.53l0.78,2.27l-0.08,3.66l-5.53,3.93l-2.43,0.63l-0.27,1.37l1.59,0.51l-0.7,1.31l1.05,1.7l-1.75,0.48l-0.7,1.7l-1.68,0.84l0.08,1.28l1.82,1.02l1.34,2.27l-0.01,2.15l1.22,2.06l-1.67,1.12l-0.4,1.41l1.66,1.01l2.55,-0.73l1.23,1.28l-0.11,4.86l-0.84,0.83l-0.15,1.89l2.25,5.83l1.55,1.63l-1.75,0.01l-0.68,0.79l2.13,2.94l-0.05,2.63l-1.48,1.48l-2.07,0.18l-0.81,0.97l1.31,2.45l-0.28,2.33l1.55,1.11l-2.93,2.76l0.39,4.52l-1.1,1.81l1.21,0.35l1.19,2.39l-1.55,0.62l-0.97,4.11l-1.11,0.79l1.1,1.56l1.98,0.93l0.51,1.51l2.31,-0.36l0.59,5.79l1.09,0.63l-0.38,3.07l0.84,2.24l1.52,2.86l2.17,0.81l0.74,1.3l-0.91,5.2l-1.71,1.78l0.21,1.0l1.02,0.01l-1.32,3.55l0.04,2.37l0.9,-0.15l0.76,1.06l1.68,-0.65l1.88,1.47l1.27,-1.19l1.39,1.75l1.48,-1.19l3.85,3.92l2.18,-0.54l2.61,0.9l1.33,-1.65l1.56,0.69l-0.24,3.02l-2.02,1.63l0.34,4.36l1.61,0.99l-0.73,2.35l0.28,4.82l-0.91,1.18l-52.11,-22.5l-28.56,-14.1l-24.05,-12.91l-23.42,-13.53l-0.11,-1.79l3.21,-3.12l0.08,-1.24l-5.14,-2.7l-3.89,0.93l-2.41,-4.18l-1.66,0.64l-2.54,-3.47l99.42,-158.23ZM110.53,248.98l1.12,-0.26l0.66,1.18l-1.67,0.15l-0.12,-1.07Z", "name": "Yukon"}, "nb": {"path": "M711.42,743.4l4.88,-3.44l1.67,-2.57l-1.15,-6.84l2.7,-0.66l0.09,-1.3l5.1,-1.27l0.53,0.94l3.2,0.99l0.62,-1.14l2.68,-1.28l1.53,0.15l0.32,-1.87l1.78,-0.33l3.5,-2.52l0.93,0.83l6.82,0.46l2.82,4.06l4.5,-4.8l1.26,-0.71l0.41,1.01l2.56,-1.38l-0.51,0.9l1.22,0.58l-0.67,2.74l0.48,4.67l-3.72,5.12l2.64,0.43l3.85,-1.89l0.54,1.22l-0.64,2.18l1.73,2.28l-0.1,1.13l1.88,-0.05l0.76,2.83l1.48,0.9l-0.59,1.93l1.96,-0.46l0.23,1.66l4.02,-0.96l1.4,0.81l2.16,-0.91l2.12,0.21l-2.95,1.52l0.3,1.48l-0.94,0.55l-0.72,2.11l-1.22,-0.13l-0.53,2.15l-1.32,-1.94l-3.9,-2.32l3.2,3.71l-1.03,4.22l-1.71,0.5l-8.21,9.21l-1.85,1.2l-2.25,-0.95l0.9,-1.59l-0.53,-1.41l-2.29,3.0l1.52,1.27l-0.32,0.86l-1.78,0.25l-0.87,2.28l-1.24,-0.74l-1.86,1.85l-1.9,0.31l0.01,-0.72l-1.71,-0.72l-1.2,1.53l-1.8,-1.85l-1.44,2.06l-1.91,-1.39l-1.05,-5.84l-4.88,-0.68l-0.29,-3.7l-5.75,-20.08l-6.62,-3.72l-7.05,4.81l-1.78,-0.76ZM746.71,774.61l-0.04,0.04l-0.08,0.14l-0.05,-0.07l0.17,-0.11ZM759.72,722.42l-0.02,-0.05l-0.0,-0.01l0.06,0.02l-0.04,0.04ZM768.58,746.15l0.01,-0.09l0.03,0.05l-0.05,0.04ZM759.92,720.39l0.52,-0.56l0.81,0.01l-0.55,1.43l-0.78,-0.88ZM760.91,718.13l0.09,-0.3l0.01,-0.4l0.08,0.22l-0.18,0.48ZM748.69,781.87l0.11,-1.21l0.29,-0.8l0.38,1.59l-0.77,0.42Z", "name": "New Brunswick"}, "nl": {"path": "M818.49,689.15l0.02,-0.65l1.55,-2.42l1.38,1.36l-2.94,1.71ZM822.12,687.09l0.09,-0.28l0.2,0.08l-0.18,0.14l-0.11,0.06ZM824.04,685.87l-0.05,-9.48l0.64,0.38l1.82,-0.8l1.87,1.03l2.29,-0.74l-0.5,-0.76l-2.26,0.05l-0.8,-1.03l2.21,-0.76l0.36,-1.83l-1.2,0.28l-0.06,-1.05l-3.24,1.03l-0.72,-2.28l1.19,-3.08l1.98,1.73l-0.15,-1.35l2.27,-0.23l-3.27,-1.53l-0.87,-1.68l0.65,-17.4l2.04,-1.08l-2.31,-0.88l1.93,-2.2l0.89,-2.81l-0.87,-1.18l0.9,-3.28l-0.48,-3.01l6.52,-8.45l0.7,1.99l2.84,-0.55l0.35,-1.06l-1.21,-0.63l1.45,-1.04l0.84,0.68l-0.78,0.93l0.95,0.36l0.12,1.05l-0.92,1.43l-4.26,0.62l-0.95,0.99l0.23,0.79l1.02,0.19l0.13,1.52l1.83,0.78l1.53,-1.81l0.9,1.86l-0.65,0.47l0.31,2.92l-0.78,3.08l-0.82,-2.1l-0.61,-0.28l-0.62,0.97l1.97,3.56l-1.37,3.22l0.66,0.38l-0.55,1.91l-0.98,0.27l0.99,1.57l-0.14,2.05l-1.11,1.58l-0.03,3.77l0.85,1.9l-0.97,1.75l1.61,0.47l0.47,3.3l0.68,-0.49l1.16,-6.05l0.4,-0.71l1.07,0.13l-0.16,-3.28l0.95,-2.77l0.79,0.59l-0.18,3.42l0.93,-0.5l0.35,-1.41l1.06,0.05l-0.0,-1.09l2.77,0.99l2.22,-2.07l-1.66,3.19l-2.66,2.53l-0.74,3.71l0.9,0.17l0.71,-2.13l1.15,-0.64l-0.26,1.38l0.59,0.25l-1.6,3.0l0.53,0.67l2.71,-2.86l2.45,1.63l0.59,-1.21l0.32,0.99l0.71,-0.1l0.19,-1.95l0.79,0.49l-0.13,1.27l2.17,0.02l0.11,-0.88l0.52,1.06l-0.93,2.32l1.03,0.85l-0.22,1.48l2.24,-2.29l-0.65,-0.61l-0.51,0.55l-0.18,-1.15l1.53,-2.5l0.41,1.47l0.7,-1.52l1.67,-0.42l1.17,-5.2l2.42,3.97l0.26,-3.2l1.64,0.58l1.0,-2.39l1.68,-0.45l5.77,0.89l-0.64,2.87l0.81,0.8l-2.57,1.5l-0.11,1.54l0.91,0.29l-1.15,0.8l0.16,1.13l-1.86,1.47l0.58,1.24l1.42,-1.37l0.14,0.84l1.0,0.06l1.38,1.5l-0.02,1.59l1.84,-0.67l-2.93,2.73l-0.16,1.46l0.67,0.47l2.12,-2.82l0.83,1.31l0.65,-1.99l2.06,-0.03l0.87,-2.6l-0.28,-1.66l2.47,0.79l0.94,-3.37l0.86,0.76l0.31,2.82l-0.8,1.71l-2.03,0.34l0.22,1.79l-1.79,3.06l-3.22,0.02l-0.41,1.32l1.35,1.88l2.18,-0.61l-1.93,0.8l0.21,0.92l1.9,-0.22l1.18,-1.04l-0.06,1.61l-1.04,0.83l0.85,0.23l0.02,1.22l-1.26,-0.75l-0.84,0.55l2.04,2.42l3.09,1.38l0.28,0.85l1.71,-1.1l-0.83,-3.75l0.52,-5.24l1.91,-1.36l0.72,-2.61l0.43,0.3l-1.04,7.55l0.77,1.14l-0.42,1.63l0.51,0.96l0.88,-0.04l0.66,1.71l1.03,0.06l1.96,-4.0l-0.45,-3.72l1.84,1.57l0.18,1.36l1.14,0.61l-0.5,3.74l0.6,3.82l-0.59,0.45l1.18,0.95l0.77,4.09l-0.98,3.43l-1.51,-1.06l-1.64,0.27l-1.5,2.87l-1.09,-2.43l0.65,-2.17l-1.23,-1.29l-1.09,-0.0l0.54,-2.43l-1.62,-1.32l-2.29,7.81l-0.69,1.14l-1.16,0.24l-0.62,-6.94l0.67,-0.26l-0.92,-0.96l1.1,-3.35l-1.4,0.01l-0.71,-2.4l-3.07,-3.37l-1.38,-0.56l-0.33,0.87l-1.83,-0.48l-0.28,0.71l0.99,0.27l0.23,1.41l-0.7,1.6l0.37,1.7l-0.69,0.17l-0.99,4.53l-0.72,0.7l-0.95,-0.72l-0.75,0.59l-1.68,5.5l1.08,1.66l-1.06,0.18l0.45,2.57l-1.17,0.7l-0.02,0.81l-1.87,-0.71l-1.27,2.06l-1.9,0.6l-1.62,-0.42l0.46,-2.28l3.89,-2.8l1.31,-3.14l-0.02,-3.56l2.27,-1.82l1.78,-4.22l-1.59,0.08l-2.16,2.36l-0.07,-3.54l-0.96,3.25l-2.76,0.48l-0.96,-0.77l-0.73,0.71l0.13,1.83l1.21,0.81l0.24,1.37l-1.1,0.92l-0.26,-0.99l-1.08,-0.43l-0.8,1.48l-0.85,-1.66l1.28,-1.85l-0.83,-0.14l-1.53,1.71l-0.77,-0.1l0.26,-4.71l-1.06,-0.99l-0.16,3.43l-1.49,2.1l-0.11,-1.33l-0.54,0.35l-1.26,-0.92l0.77,2.76l-0.54,1.27l-1.32,-1.89l0.31,2.6l-4.86,1.56l0.52,1.58l-2.48,-0.05l-1.5,0.92l-0.74,-0.93l-1.47,1.43l-0.63,-0.85l-2.38,0.77l-0.77,1.11l-1.38,-0.43l-0.81,0.72l-1.26,-0.76l-3.66,2.09l-0.87,0.03l0.41,-1.32l-0.5,-0.16l-1.15,0.85l-0.09,1.71l-1.35,0.05l-1.6,1.8l-5.51,2.43l-3.59,-4.46l3.45,-5.51l1.99,-5.3l3.51,-4.35l-0.91,-0.21l-2.2,1.3l-1.98,-0.14ZM875.12,662.32l0.01,-0.05l0.03,0.05l-0.04,0.0ZM877.63,662.89l0.01,0.0l-0.0,0.01l-0.0,-0.01ZM877.65,663.11l0.18,0.25l-0.68,1.05l-0.32,0.16l0.81,-1.47ZM877.92,687.63l0.03,0.05l-0.01,0.02l-0.03,0.0l0.01,-0.07ZM861.05,691.78l-0.07,0.12l-0.12,0.06l0.18,-0.19ZM860.08,692.69l-0.48,0.59l-0.29,-0.1l0.05,-0.05l0.72,-0.44ZM879.4,666.53l0.09,-0.58l0.24,-0.6l0.19,0.13l-0.51,1.05ZM875.09,662.18l-0.1,-0.13l0.04,0.02l0.06,0.11ZM856.71,657.24l-0.75,-1.19l0.65,-0.66l0.34,0.61l-0.23,1.24ZM855.59,655.75l-0.04,-0.03l0.02,-0.02l0.02,0.05ZM854.12,657.33l0.0,-0.25l0.09,-0.07l-0.09,0.32ZM880.23,672.13l2.14,-0.42l1.19,-1.04l0.07,0.96l-3.4,0.5ZM880.31,686.28l0.4,-1.02l-0.02,0.87l-0.39,0.14ZM880.62,683.42l-0.08,-0.03l0.05,-0.13l0.03,0.16ZM865.38,648.2l1.06,0.13l0.06,-1.23l0.98,0.8l-1.68,2.0l-0.43,-1.69ZM859.69,653.01l0.19,-0.17l0.32,0.44l-0.25,-0.18l-0.25,-0.09ZM860.58,653.35l0.24,-0.05l0.02,0.23l-0.08,0.03l-0.18,-0.21ZM861.92,651.98l-0.05,-0.37l0.49,-0.4l0.03,0.24l-0.48,0.53ZM862.01,654.58l0.02,0.04l-0.01,0.11l-0.04,-0.08l0.03,-0.06ZM859.27,690.37l0.8,-0.58l0.4,0.51l-0.91,0.12l-0.29,-0.05ZM850.53,655.89l0.16,0.11l-0.16,0.24l-0.04,-0.3l0.04,-0.05ZM850.64,657.23l0.03,-0.01l-0.01,0.06l-0.01,-0.05ZM843.72,636.73l0.01,-0.34l0.77,-0.76l-0.18,0.87l-0.6,0.23ZM838.14,616.17l0.06,-0.8l0.21,-0.21l-0.04,0.83l-0.22,0.19ZM695.98,500.41l0.18,0.94l1.28,-1.03l0.89,0.17l-0.49,0.97l0.49,0.51l1.04,-0.8l-0.45,1.69l-1.25,-1.45l-1.19,0.27l-0.74,-0.45l0.23,-0.83ZM697.79,503.53l-0.02,0.02l-0.01,-0.01l0.03,-0.01ZM697.64,505.65l1.21,-1.47l1.28,-0.58l-1.17,1.01l1.54,0.5l-0.46,1.78l1.72,-1.6l0.96,0.23l-0.44,0.91l0.94,0.13l0.19,0.94l-0.54,1.1l1.68,1.31l1.18,-0.26l0.02,3.21l0.84,-2.29l0.23,1.88l0.69,0.1l0.53,-1.32l1.06,0.32l-0.12,1.5l-2.03,0.86l-0.08,1.13l3.15,-0.37l-0.39,1.97l0.59,0.39l1.72,-2.67l-0.32,2.47l1.1,0.04l0.63,-0.88l0.72,0.85l-2.24,2.64l-2.49,0.28l-0.46,1.71l1.19,-0.29l1.34,1.07l-0.23,-1.4l2.96,-0.87l1.44,-1.67l0.57,0.35l-0.78,0.64l1.02,0.38l0.03,1.4l1.0,-0.21l-0.78,1.74l2.04,0.19l0.51,-1.11l1.44,0.52l-0.71,1.87l2.06,0.47l-2.1,3.43l-2.7,0.75l-0.46,1.24l1.75,-0.45l-1.47,3.18l0.46,0.75l2.4,-3.97l1.0,-0.4l-0.29,1.33l0.62,0.69l0.61,-1.65l3.89,-2.46l-0.44,1.25l0.84,1.88l-2.01,1.41l0.22,1.67l-1.45,0.73l0.32,0.82l-1.25,1.46l0.46,0.55l-1.25,1.18l0.44,0.58l2.18,-1.12l1.11,-2.84l3.0,-1.1l1.22,1.28l0.4,-0.76l0.95,0.44l-1.65,0.65l-0.96,2.27l1.99,-1.2l1.31,1.64l1.0,-1.67l0.97,-0.03l0.02,-0.85l0.69,2.75l1.36,0.21l1.74,1.86l-1.38,1.23l-0.03,0.93l-1.56,0.45l-0.27,1.54l-2.01,-0.32l-0.06,0.88l2.15,0.88l2.0,-1.35l2.59,0.11l0.7,1.91l-0.99,0.53l0.14,0.95l2.83,0.91l3.06,-0.99l1.01,0.4l0.47,1.67l-1.35,0.99l-0.33,2.98l-2.27,1.06l0.26,2.44l-4.73,-0.44l3.45,-1.47l-0.57,-0.9l-4.31,1.04l-0.71,1.4l0.36,0.64l5.06,0.99l-0.89,0.22l0.17,0.9l5.89,-0.44l-3.97,1.63l0.0,1.56l3.06,-0.22l0.93,0.79l-2.47,0.9l-0.17,1.07l2.07,0.91l5.38,-1.88l0.35,1.69l-0.68,2.36l1.47,0.69l2.6,-1.03l0.58,0.38l-0.91,1.14l1.33,0.47l3.43,-1.17l-0.22,1.19l-1.47,0.65l0.77,0.93l1.92,-0.77l0.6,-1.24l0.98,4.06l0.76,-1.77l-0.15,-3.1l1.12,0.13l-0.84,3.45l1.26,-0.6l0.01,1.78l0.89,0.11l-0.27,2.61l1.02,-0.07l-1.18,3.59l0.63,0.48l0.6,-0.86l-1.21,2.98l0.49,1.28l3.47,-6.14l0.23,0.96l0.8,-0.89l-1.12,3.19l0.8,0.87l2.91,-6.78l0.73,1.37l-1.85,1.52l0.31,1.13l2.05,-0.32l2.32,-1.98l0.58,0.28l-2.41,5.52l0.29,3.02l1.46,-1.28l-0.4,-1.77l2.11,-3.94l1.35,0.79l2.26,-3.74l0.21,2.07l1.58,0.35l-0.61,1.5l1.66,0.68l5.65,0.03l0.38,-1.14l1.25,-0.48l0.78,0.67l1.95,-0.14l1.19,-0.94l2.32,1.16l2.02,-1.08l0.99,0.79l0.48,1.14l-2.84,1.38l0.43,0.75l1.46,-0.47l-0.65,1.12l-5.22,2.32l-0.63,1.34l0.44,0.77l-3.95,3.54l-8.17,4.8l0.02,0.77l1.19,0.5l4.37,-2.64l1.08,0.42l-4.24,4.4l-3.76,0.96l-0.33,1.08l-1.99,0.98l-0.44,0.59l1.0,0.76l0.75,2.72l-9.59,-2.25l0.24,2.79l3.26,-0.69l6.62,1.59l-2.62,2.85l0.38,0.99l1.55,-0.45l-1.56,1.55l3.83,-1.13l-0.17,-1.13l2.33,-3.51l-0.19,-0.73l2.55,-1.52l1.37,-2.76l2.28,-1.08l0.45,-1.73l-0.83,-0.68l1.23,-2.95l6.14,-5.14l3.25,-0.59l0.5,-0.7l-0.75,-0.57l-2.52,0.21l-1.58,0.38l-0.93,1.24l-0.95,-0.28l1.37,-1.89l8.21,-1.63l3.58,4.01l1.26,0.49l0.19,1.3l-3.07,4.15l2.41,-0.36l0.55,2.8l1.35,-0.49l1.29,-6.18l2.41,-1.22l0.54,0.16l-0.83,0.48l0.48,0.53l4.11,-0.47l3.9,1.29l0.98,1.79l1.33,-0.9l0.39,1.44l0.81,-0.21l0.24,1.44l1.23,0.68l-1.72,1.23l0.93,0.4l-0.08,0.69l-2.54,1.2l1.26,1.15l1.97,-1.07l1.65,1.48l-3.37,2.2l3.17,1.61l-1.49,0.4l-0.08,0.83l1.44,-0.22l-1.61,1.71l-3.51,0.6l1.1,0.54l6.54,-1.37l2.3,0.38l0.34,0.7l-1.48,0.14l-0.04,0.72l-3.99,-0.27l-0.53,0.74l5.51,1.03l1.88,2.39l-0.87,0.56l0.29,1.1l-1.42,0.52l0.83,1.52l-2.14,3.49l-3.89,4.33l-0.58,3.39l-1.14,0.3l0.15,1.24l-0.9,0.28l-4.06,-9.59l-35.42,12.67l-33.81,10.74l-2.68,-5.23l-2.2,0.09l-0.59,-1.58l-1.29,0.17l1.45,-2.72l4.48,-1.81l0.57,-0.88l-2.9,-1.63l-0.29,-2.93l-1.86,-2.41l-1.73,-0.29l-1.8,1.2l0.41,3.96l-1.42,0.33l-0.67,1.47l1.29,5.09l2.22,2.68l0.71,3.75l-1.29,0.7l0.01,3.15l0.4,2.47l1.35,1.35l-2.11,3.15l-1.95,-2.06l1.05,-1.0l-0.33,-1.03l-3.13,-0.86l-0.59,-1.61l-3.59,-1.9l-4.28,0.45l-0.57,3.04l-2.11,-0.54l-0.52,1.3l-0.89,0.16l-1.53,-0.59l-0.78,-1.85l-1.06,0.18l-1.91,-1.18l-0.45,2.74l-1.16,-2.28l0.83,-1.83l-2.01,-4.67l0.87,-0.55l-0.93,-1.92l0.88,-1.26l-2.81,-2.38l-0.91,0.2l-0.09,1.73l-1.26,0.55l0.76,3.73l-0.98,0.86l-1.09,-0.9l-0.21,1.03l-1.4,0.2l-0.91,-4.06l0.68,-1.6l-0.9,-2.96l0.26,-2.71l-1.26,-1.15l-0.86,0.17l-1.81,-2.41l-3.62,-0.16l-0.29,-3.34l-1.83,-0.72l-2.75,-2.7l2.24,-3.96l-2.6,-4.05l-0.09,-1.49l3.25,0.49l0.49,-2.11l1.82,-0.97l-3.52,-2.36l0.1,-1.01l-1.14,-0.61l-1.56,-2.75l0.86,-0.27l0.18,1.13l3.3,1.27l1.43,1.53l3.08,0.4l0.79,-1.96l-1.85,-2.05l0.48,-0.97l-1.58,-1.83l-0.08,-2.45l0.69,-0.18l4.58,3.66l2.6,0.96l1.8,-0.47l0.76,1.43l2.31,1.56l2.28,-1.23l3.59,-0.04l3.18,-1.96l2.33,-0.06l1.95,-1.24l4.14,1.0l3.13,-0.13l0.99,-1.46l0.28,-6.6l-1.76,-1.27l-0.09,-2.24l2.63,-2.42l0.69,-1.59l-1.15,-1.09l-0.49,-2.23l-1.64,0.4l-1.75,-0.81l-0.86,-1.5l-2.93,-1.97l-0.34,-1.36l1.88,-1.76l-0.06,-0.97l-3.85,0.65l-0.96,-1.24l-1.12,1.1l0.72,-2.63l-2.83,-0.66l-0.52,-1.79l2.29,-1.28l-3.87,-4.11l0.81,-1.49l-0.33,-1.27l1.11,-1.04l-0.99,-3.15l0.35,-3.55l-1.39,-1.2l0.94,-1.54l-1.51,-3.16l0.92,-1.94l-0.25,-1.73l-0.87,-0.13l-0.39,1.06l-1.7,-0.19l-0.95,-1.15l-1.25,0.53l-2.5,-3.96l-2.15,-0.07l-0.15,-1.73l1.45,-1.45l-0.1,-2.05l2.55,-3.36l-1.33,-1.84l-1.65,0.83l-0.35,-1.74l4.52,-2.28l0.35,-1.35l-1.4,-1.26l-1.94,-0.37l-3.33,3.5l-2.0,-2.0l-2.56,0.63l-1.66,-0.61l-0.97,0.85l0.19,-2.23l3.27,0.69l1.51,-1.43l-1.03,-1.09l-1.22,-0.08l-0.99,-1.57l-0.88,-4.18l1.03,-1.31l-0.19,-0.83l-1.49,-0.14l-1.77,2.04l-1.26,-1.1l-1.18,-5.04l0.86,-2.18l-1.56,-0.93ZM749.39,644.84l-0.21,0.06l-0.38,-0.16l0.32,0.07l0.27,0.03ZM827.51,605.61l1.17,-0.58l0.2,0.18l-0.76,0.65l-0.62,-0.26ZM813.84,589.92l0.16,-0.56l0.67,-0.26l0.12,0.19l-0.94,0.63ZM742.74,556.87l0.27,-0.15l1.16,0.42l-1.11,0.28l-0.32,-0.55ZM743.03,556.07l0.11,-0.16l0.77,-0.05l-0.64,0.05l-0.24,0.16ZM724.98,532.85l0.14,-0.75l1.74,-0.61l-0.23,0.87l-1.66,0.49ZM716.17,518.63l0.26,-0.13l0.06,0.04l-0.32,0.09ZM701.93,503.54l-0.06,0.03l-0.14,-0.01l0.19,-0.05l0.02,0.03ZM746.29,561.73l1.29,-0.12l1.03,-0.44l-0.04,0.65l-2.29,-0.08ZM765.01,574.66l-0.09,-0.09l0.07,-0.12l0.12,0.1l-0.09,0.11ZM766.08,573.43l-0.2,-0.4l-0.0,-0.06l0.04,0.0l0.17,0.46ZM777.41,577.24l0.21,-2.19l0.71,0.01l-0.44,0.65l-0.49,1.53ZM787.98,592.89l2.02,-1.46l1.55,-1.88l-1.08,2.63l-2.49,0.7ZM779.43,607.25l0.03,-0.02l0.01,0.02l-0.04,0.0ZM820.59,590.96l0.0,0.0l-0.0,0.0l-0.0,-0.01ZM701.83,596.32l-0.57,-0.35l-0.42,-0.33l0.73,0.21l0.27,0.47ZM790.47,576.88l1.36,-1.34l0.67,1.44l-1.32,0.73l-0.72,-0.82ZM757.36,567.04l0.54,-0.08l0.35,0.26l-0.22,0.16l-0.67,-0.34ZM753.28,565.8l0.47,-1.29l1.15,0.24l-0.22,1.07l-1.41,-0.01ZM748.69,558.87l-0.2,-0.17l0.27,-0.02l-0.08,0.19ZM747.92,558.58l-0.96,0.19l-0.02,-0.12l0.73,-0.16l0.26,0.09ZM750.02,555.78l0.08,-0.3l0.2,-0.06l0.02,0.17l-0.3,0.18ZM744.65,553.12l0.64,-1.81l0.75,0.24l0.31,1.02l-0.83,0.06l-0.53,1.29l-0.35,-0.8ZM745.49,555.18l1.39,-0.96l0.4,1.98l-1.15,-0.57l-0.64,-0.45ZM739.53,542.37l0.1,-0.7l0.05,-0.02l0.14,0.64l-0.29,0.08ZM737.08,536.88l0.54,-0.31l0.66,1.05l-0.18,0.15l-1.02,-0.9ZM736.98,542.04l0.94,-0.75l0.6,0.38l-0.67,1.26l-0.88,-0.88ZM734.56,536.7l0.49,-1.0l0.84,0.73l-0.23,0.65l-1.11,-0.37ZM704.5,508.32l0.25,-0.58l0.82,0.14l-0.81,0.77l-0.26,-0.33ZM704.47,507.42l-0.04,-0.66l0.08,0.11l-0.04,0.55Z", "name": "Newfoundland and Labrador"}, "on": {"path": "M399.41,727.97l3.25,-56.87l17.49,-16.02l50.18,-56.7l5.89,5.74l3.34,1.59l4.16,6.66l0.07,1.64l0.93,-0.9l1.53,0.7l0.47,1.09l3.72,0.22l7.51,3.34l3.52,0.63l3.74,2.18l0.82,1.61l2.04,1.5l1.96,0.55l-2.57,4.18l-0.2,2.26l0.59,0.29l3.0,-5.44l5.1,0.47l3.97,-1.2l1.6,0.26l1.47,-0.99l2.08,1.72l1.21,-0.17l0.56,1.64l0.68,-0.28l-0.38,-1.87l3.93,0.68l1.97,-0.84l0.22,2.18l3.44,-1.25l3.66,1.53l1.13,3.89l-1.85,8.94l0.54,3.1l0.67,1.51l1.45,0.82l1.61,4.42l-0.68,3.75l1.63,5.71l-1.29,1.28l-0.03,5.11l2.94,1.95l1.54,2.72l4.34,3.83l0.32,1.88l-2.77,1.36l-0.69,1.37l0.67,0.57l1.21,-0.98l2.42,-0.18l1.79,2.17l4.34,1.42l0.88,1.66l3.87,3.05l2.5,5.84l-2.02,1.29l-3.65,4.63l-0.29,0.63l0.81,0.81l6.1,-6.51l4.45,1.01l5.72,4.84l7.01,59.69l-0.5,2.75l2.01,3.02l0.61,3.39l7.32,9.7l3.52,2.67l9.71,0.57l5.65,1.33l2.13,1.35l1.34,2.16l2.97,1.37l1.25,-0.14l0.13,-1.76l0.79,-0.05l2.75,4.99l4.05,1.38l2.76,-1.35l3.47,1.9l1.37,-0.21l1.06,-1.56l4.54,-2.65l7.43,-2.67l2.95,0.8l-0.25,4.37l1.74,1.53l-3.52,4.2l-2.35,0.3l-4.22,3.29l-7.43,9.8l-10.39,5.66l-1.99,-0.83l-2.14,1.15l-0.78,-0.34l-4.0,1.92l0.07,1.37l-17.36,5.52l-4.64,4.39l-1.39,0.28l-1.48,1.77l-1.77,4.33l0.19,1.1l2.64,1.18l3.48,0.07l3.08,-1.79l0.22,3.11l1.89,2.65l-1.64,0.78l-7.98,0.75l-5.89,1.98l-2.79,2.58l-0.45,1.65l-6.1,-1.03l-5.59,0.87l-2.51,1.82l-4.56,5.7l-1.8,0.33l-3.67,2.49l-1.52,2.88l-1.92,-1.04l-3.18,1.24l-2.5,-1.04l0.23,-3.72l1.37,-0.67l4.23,0.23l2.75,-0.95l0.02,-3.2l-2.7,-0.36l1.3,-1.87l0.73,-6.43l3.62,-1.93l4.0,-4.29l0.8,-2.06l-1.43,-11.81l1.34,-2.3l0.15,-2.05l2.09,-2.07l1.49,-3.89l-1.97,-6.43l-0.93,-0.06l-1.89,-2.92l-1.62,-0.74l4.39,-0.17l-0.43,1.17l1.19,2.97l1.72,0.67l0.31,0.93l1.26,-0.3l-1.24,2.92l2.85,-0.84l-0.2,3.37l0.73,0.14l2.66,-2.55l1.29,1.87l6.61,1.78l1.27,-1.38l-0.05,-2.95l-1.76,-1.81l1.5,-0.96l1.11,1.62l2.82,-0.09l0.25,-0.64l-0.74,-0.46l0.13,-1.8l-1.13,0.57l-3.99,-3.64l0.8,-1.08l-1.71,-1.33l0.92,-1.39l-0.63,-1.56l-1.34,-0.3l-1.54,0.95l-0.23,-1.09l-0.96,-0.31l-0.56,-2.76l-0.71,-0.28l-0.59,0.8l-3.52,-5.53l-1.01,-0.63l-4.1,0.66l-0.5,-1.26l-1.21,0.97l-2.42,-0.2l-1.04,-1.77l-1.21,-0.45l-0.72,0.76l-5.92,-0.16l-2.09,-1.06l-3.46,0.67l-0.44,-0.8l-4.14,1.13l-13.09,-1.81l-0.69,-0.77l0.39,-1.86l-1.1,-1.15l-4.5,1.29l-0.77,-0.76l1.82,-2.92l-0.71,-1.01l-0.82,0.15l-0.03,-0.85l1.61,-0.14l0.62,-1.12l-1.42,-1.43l-2.26,0.46l-1.63,-0.89l2.09,-5.6l-1.97,-2.61l-3.59,-2.57l1.63,-6.41l-1.36,-0.45l-7.14,1.19l-3.76,-0.81l-2.62,-2.95l-2.62,-7.54l-2.35,-3.41l-1.68,0.65l-1.66,-1.25l-1.76,1.04l-1.54,-0.93l-3.38,0.86l-3.47,-1.85l-4.37,-1.08l-1.54,-1.38l-2.91,1.14l0.18,1.94l1.8,1.59l-0.71,2.41l-1.35,-0.31l0.4,-1.68l-0.64,-1.58l-2.01,-0.19l-2.9,8.53l-1.08,0.6l1.44,-3.51l-0.47,-0.9l-5.21,2.26l-1.88,6.26l-2.82,2.11l-3.67,0.23l-2.51,-2.31l-7.44,0.52l-1.66,-2.7l-6.62,3.42l-2.89,-1.08l-0.63,-1.46l-2.68,-1.03l-1.32,-2.1l-2.73,0.25l-0.76,1.87l-1.31,-3.75l-2.46,-0.29l1.07,-0.69l-0.3,-0.8l-4.08,-1.73l-5.02,-0.14l-1.38,1.25l-3.01,0.33l-1.09,-2.11l-4.32,-0.55l-0.74,-1.12l-3.39,-0.37l-1.14,-1.77l1.38,-1.44l1.69,-0.49l1.73,-2.47l1.71,0.52l1.37,-1.02l0.67,-0.78l-0.75,-0.53l0.85,-2.93l-1.34,-1.05l0.67,-0.77l-3.37,-2.07l0.99,0.2l0.42,-0.61l-0.89,-0.66l0.73,-0.77l-0.67,-1.05l-1.42,-0.26l-0.97,-2.13l0.36,-1.57l-1.02,-1.13l-1.24,0.08l-0.58,0.92l1.46,2.37l0.06,1.75l-2.78,0.05l-1.13,1.44l-2.32,-0.86ZM469.67,728.45l1.67,1.42l0.23,1.55l-0.99,-0.96l-0.76,0.55l1.51,2.45l1.84,-1.22l-0.46,0.66l0.7,1.13l1.89,0.59l0.94,-0.84l1.18,1.62l1.63,-1.99l2.16,0.98l-0.37,-3.25l0.77,-1.47l-0.58,-2.28l0.44,-2.16l1.11,-0.99l-2.32,-1.72l0.65,-1.03l-0.82,-2.07l-2.54,-1.64l-1.61,1.18l-1.01,-0.84l-0.98,0.31l-1.54,1.57l-0.43,2.25l-1.04,0.41l0.93,2.15l-1.34,0.8l0.2,1.59l-0.37,-1.2l-0.84,-0.03l-0.43,1.8l0.54,0.71ZM540.56,627.39l-0.07,-0.12l0.08,-0.1l0.01,0.04l-0.02,0.17ZM625.48,816.5l-0.88,0.97l-0.47,0.08l0.55,-0.74l0.8,-0.31ZM617.32,819.18l1.96,-1.47l1.51,0.73l0.49,-0.98l1.66,-0.66l-0.41,1.69l0.39,0.57l1.51,-0.3l-0.58,1.21l0.49,0.7l-1.15,0.87l-0.53,-0.19l0.23,-1.4l-4.11,0.62l-1.47,-1.38ZM624.91,820.35l0.01,-0.01l0.01,0.0l-0.02,0.01ZM478.49,748.07l0.15,0.64l-0.97,0.3l0.81,-0.95ZM477.13,749.61l-0.41,0.47l-0.16,0.72l0.06,-0.73l0.51,-0.46ZM472.6,753.18l-0.12,0.04l-0.06,0.0l0.02,-0.03l0.16,-0.01ZM409.98,736.99l-1.24,-1.83l-2.23,0.71l-0.95,-1.1l0.31,-0.87l-2.37,-0.23l0.19,-0.55l5.22,-0.85l-0.85,1.31l0.47,0.65l0.86,-0.42l-0.01,1.28l1.48,0.84l-0.87,1.06ZM401.76,728.88l0.69,0.17l-0.45,0.55l-0.32,-0.09l0.08,-0.64ZM631.42,815.59l-0.13,-0.74l0.55,-0.02l-0.02,0.39l-0.4,0.37ZM627.23,816.23l0.77,-0.4l0.07,-0.04l-0.2,0.32l-0.64,0.12ZM581.85,801.71l0.01,-0.5l0.57,0.08l-0.37,0.17l-0.21,0.24ZM582.47,809.41l0.08,-0.02l-0.03,0.08l-0.05,-0.05ZM575.9,692.07l1.12,-1.08l0.85,7.34l-1.99,-2.2l0.02,-4.05ZM543.99,793.29l0.64,0.68l2.98,-1.21l0.99,2.07l2.33,0.02l0.5,0.81l-7.92,-1.58l0.49,-0.78ZM551.7,795.68l0.77,-1.33l-0.92,-0.74l1.53,-1.12l1.04,-0.37l2.14,2.32l2.38,-2.74l0.44,1.27l1.05,0.28l-0.19,1.49l1.03,1.14l-2.87,2.6l-6.4,-2.79ZM561.3,795.7l0.14,-1.12l0.31,-0.89l0.37,-0.6l-0.5,1.08l1.39,0.74l-2.12,3.83l-0.59,0.22l1.7,-2.36l-0.71,-0.91ZM561.37,800.05l0.39,-0.41l0.14,-0.07l-0.3,0.46l-0.22,0.02ZM559.04,790.43l0.46,-0.13l0.58,0.12l-0.77,0.13l-0.27,-0.12ZM549.74,793.07l0.11,-0.31l0.76,-0.12l-0.14,0.32l-0.72,0.11ZM540.29,794.07l1.01,-1.22l0.82,0.55l-0.61,1.12l-1.21,-0.46ZM532.17,788.03l1.6,-0.01l1.59,1.01l-1.21,2.0l-1.98,-3.01ZM508.33,763.17l0.76,-0.68l2.4,0.26l-0.97,0.41l-2.18,0.01ZM486.08,744.61l0.14,-0.01l0.53,0.92l-0.33,0.04l-0.33,-0.95ZM482.03,744.94l1.2,-0.66l1.87,0.08l-0.46,1.02l-2.38,0.75l-0.23,-1.19ZM477.93,719.83l0.17,-0.01l0.17,0.44l-0.2,-0.06l-0.14,-0.37ZM478.55,720.5l0.14,0.03l0.06,0.19l-0.05,-0.01l-0.14,-0.21ZM475.07,730.34l0.17,-0.01l0.06,0.15l-0.14,-0.1l-0.09,-0.04ZM475.4,723.45l-0.02,-0.28l0.1,0.01l-0.07,0.24l-0.01,0.03ZM474.42,725.62l0.1,0.02l0.16,0.3l-0.46,-0.02l0.2,-0.3ZM469.69,755.38l0.19,-0.22l0.17,-0.01l-0.36,0.22ZM403.6,737.46l0.64,-0.37l0.83,0.44l-1.23,0.69l-0.24,-0.77ZM406.38,737.1l0.0,-0.01l0.02,-0.07l0.01,0.08l-0.04,-0.0ZM405.0,739.21l0.5,-0.36l0.12,0.28l-0.18,0.39l-0.43,-0.3ZM399.11,732.44l1.97,-0.65l0.88,-0.67l-0.87,1.65l-1.81,0.48l-0.16,-0.81ZM402.77,730.48l1.11,-1.11l0.95,-0.18l-0.74,1.0l-1.33,0.3Z", "name": "Ontario"}, "ab": {"path": "M139.57,606.56l0.37,-1.05l1.18,0.57l0.81,-0.56l-1.58,-4.38l37.33,-108.91l45.27,14.12l45.98,11.63l-2.72,12.15l-4.26,2.55l-1.83,0.1l-4.59,4.95l-1.83,0.73l-0.86,-1.64l-1.67,0.79l1.38,3.5l-0.16,1.93l0.92,0.24l1.46,-1.94l-0.31,2.62l0.56,0.52l1.32,-1.15l0.14,-1.43l3.55,0.95l0.97,-1.38l-0.73,-1.28l4.31,-2.81l-39.85,178.15l-45.48,-11.24l-0.72,-2.98l-2.23,-1.66l0.23,-0.86l-1.58,-2.96l0.8,-2.77l-1.71,-1.0l2.24,-2.87l-0.07,-2.44l1.05,-2.7l0.11,-5.55l-1.47,-4.33l-1.24,-1.02l-1.26,0.24l-0.4,-3.13l-2.69,-3.15l0.84,-0.16l-0.02,-1.71l-1.31,-2.54l-1.92,-1.32l-0.11,-2.34l-1.88,-1.98l0.3,-2.47l-2.03,-4.3l-0.2,-3.14l-1.26,-0.33l-1.4,1.25l-0.62,-0.25l-0.14,-3.71l-1.62,-3.01l0.14,-2.56l-3.37,-0.27l-1.21,-1.61l-0.28,-1.09l1.58,-1.91l-2.46,-2.86l-1.36,1.2l-1.4,-0.1l0.7,-1.26l-0.7,-2.97l0.77,-0.81l-0.3,-3.43l-0.53,-1.4l-1.3,-0.18l0.31,-2.51l-1.07,-3.42l-1.29,-1.58l-1.31,1.23l-1.63,-1.38l-0.34,-3.23l-2.89,-1.04l-1.44,-3.37Z", "name": "Alberta"} }});
\ No newline at end of file
diff --git a/js/vmap/dist/maps/jquery.vmap.europe.js b/js/vmap/dist/maps/jquery.vmap.europe.js
new file mode 100644 (file)
index 0000000..fc2aa2d
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add Europe Map Data Points */
+jQuery.fn.vectorMap('addMap', 'europe_en', {"width":680,"height":520,"paths":{"gl":{"path":"M13.47,93.57C12.35,92.52 12.34,90 10.44,89.14 10.62,88.14 13.84,87.66 11.35,86.39 10.05,87.17 9.25,86.92 8.71,87.58 6.27,88.12 8.6,85.09 6.17,85.17 5.23,84.47 10.33,84.75 9.98,83.14 11.32,83.4 14.67,82.04 12.37,81.03 11.23,81.19 6.54,82.06 10.06,81.32 13.04,80.64 9.92,76.6 8.71,79.05 9.24,77.06 11.03,78.05 12.88,77.78 14.68,74.59 9.38,77.17 8.23,75.54 7.26,73.61 12.43,77.09 11.48,74.6c2.44,-0.76 -0.97,1.23 1.21,1.43 1,0.07 3.06,0.24 1.26,-0.8C15.39,74.51 14.27,73.05 14.04,72.76 16.26,70.08 9.73,69.39 11.65,72.54 9.43,70.77 7.4,69.72 5.62,68.37 4.84,67.27 3.62,65.14 5.75,64.54 6.27,63.17 3.83,63.23 6.08,62.64 8.52,60.62 3.8,58.38 3.79,56.87 4.78,56.07 3.39,53.57 4.92,55.82c2,1.48 -1.5,0.05 -0.41,1.67 0.7,1.18 4.94,4.58 4.09,1.22C7.96,57.37 6.11,57.21 8.09,56.47 5.75,56.14 4.83,52.58 8.11,53.61c1.58,0.65 2.17,-1 2.13,-1.24 1.86,-0.56 0.99,-3.89 0.14,-5.02 -2.29,-0.92 1.59,-2.34 -1.23,-2.91 0.6,-3.73 4.98,-2.29 7.51,-3.37 2.78,-1.33 -1.33,-1.73 -1.69,-3.06 -3.07,-1.99 2.8,-0.5 3.28,-2.76 2.87,0.22 -2.67,-2.82 -1.49,-3.84 1.34,0.59 4.57,3.1 4.27,-0.2C20.58,29.48 17.09,31.14 17.33,29.6c1.78,1.02 0.79,-3.69 2.33,-1.12 1.76,1.21 4.05,-0.81 1.11,-1.21 -0.72,-0.16 1.96,-1.91 2.18,-0.31 2.04,0.89 2.39,3.26 4.86,3.29 1.12,-1.58 -2.89,-2.38 -0.16,-2.31 1.35,-1.83 -5.03,-0.94 -1.14,-2.29 1.39,-1.55 1.81,4.29 2.64,1.36 -0.57,-1.39 -0.41,-4.67 1.53,-2.59 0.16,2.02 -2.74,3.73 -1.03,6.23 2.7,1.13 0.11,-4.85 3.69,-4.25 2.74,-0.7 0.37,-3.01 -1.39,-3.16 0.93,-1.59 -0.48,-0.52 -0.91,-1.1 -1.26,0.42 -2.63,-0.27 -1.15,-1.19 -0.81,-1.9 -3.85,0.74 -5.54,0.53 -3.44,0.64 1.14,-2.76 2.36,-3.3 2.28,-0.77 4.66,2.97 6.55,0.04C34.81,17.14 33.04,17.79 32.17,17.97 30.61,18.81 30.38,17.32 30.54,16.77 29.14,17.79 26.4,16.27 29.42,16.34 29.89,14.12 31.85,14.39 33.58,13.44c0.27,-2.21 -3.96,0.03 -1.92,-1.94 2.34,1.37 5.29,0.49 7.37,1.6 0.49,1.25 2.93,3.07 2.07,0.58C40.16,10.86 37.07,10.79 34.89,10.94 32.01,10.71 38.39,8.92 36.45,6.69 35.49,6.8 33.31,6.65 34.75,5.53c1.74,0.57 3.45,1.31 2.13,3.63 0.97,-0.77 3.6,0.14 4.92,-0.01C42.62,6.51 37.36,8.29 39.31,5.97 39.94,4.69 35.39,5.71 36.07,3.41c2.18,-0.52 6.21,0.1 8.48,1.64 1.78,-0.72 2.84,-0.23 4.07,0.55 1.73,-0.23 3.46,0.06 2.78,2.25C52.75,9.86 54.51,8.35 52.72,6.73 52.71,4.07 54.56,10.07 55.78,8.98 56.01,5.87 52.57,4.02 49.87,3.57 48.45,2.66 43.96,4.29 45.02,2.48 44.96,1.07 43.75,0.16 45.71,1.28 47.56,3.52 50.55,-0.47 53.01,0.78 55.13,-0.05 52.02,4.62 54.57,4.07 55.09,3.62 56.43,7.62 57.26,5.53 57.36,3.28 54.5,4.61 54.71,2.93 54.66,0.68 56.28,0.89 57.93,0.78 59.1,1.36 57.92,5.72 60.98,5.64 61.74,4.33 57.63,0.17 61.09,2.11 61.53,3.09 65.18,3.43 63.42,2.17 61.88,1.53 60.02,-0.12 62.69,1.24c1.18,0.74 1.27,-0.27 2.37,-0.09 0.49,-0.8 2.06,-0.17 3.01,-0.37 45.89,0 91.78,0 137.67,0 0.61,1.21 1.15,3.04 -0.24,1.09 -2.48,-0.7 1.23,2.94 1.58,3.94 1.63,2.86 -1.86,0.67 -3.36,1.88 1.28,-1.72 -2.26,-4.24 -1.57,-1.36 0.03,2.25 1.64,3.73 3.68,2.39 1.03,0.77 -1.42,2.8 -1.62,3.53 -3.09,0.12 0.02,1.62 1.04,2.22 0.66,2.09 4.04,0.64 2.3,3.22 -1.05,1.95 -3.92,1.82 -3.21,-0.86 0.14,-3.28 -4.67,-1.36 -4.04,-5.02 -2.02,-0.71 -0.18,3.84 -2.96,2.48 -0.73,0.74 0.41,1.75 -1.42,1.32 -2.61,0.54 1.71,4.84 -0.38,4.25 -1.39,0.66 -1.21,4.72 0.33,2.08 -0.04,-1.13 1.18,-4.09 2.39,-2.05 0.43,1.69 3.14,3.16 0.34,3.59 0.86,3.33 -3.29,2.48 -4.22,0.42 -0.56,1.42 -4.92,2.25 -4.96,-1.01 -1.09,-1.09 -0.61,-6.28 0.38,-2.79 -0.38,2.15 4.88,3.94 3.74,1.34 -3.75,0.99 -2.13,-7.24 -6.06,-4.79 -0.93,1.3 -1.66,1.94 -1.57,-0.09 0.87,-1.48 -0.65,-6.36 -1.62,-2.76 -0.29,1.71 1.87,5.7 -1.38,4.23 -1.61,0.79 -3.43,1.95 -3.68,-0.56 -1.68,-1 0.16,-4.48 -2.68,-3.04 -0.67,1.11 2.68,6.25 0.02,3.71 -0.94,-1.89 -3.02,-1.6 -4.56,-0.77 1.83,0.09 2.37,0.85 0.57,2.18 0.59,2.05 2.81,-2.2 3.66,0.12 1.38,0.4 3.13,-0.11 3.81,2.17 2.43,3.24 -2.95,0.83 -4.01,1.04 -0.05,-1.82 -4.79,-3.3 -3.23,-1.13 1.49,0.95 1.71,0.82 0.15,1.51 -1.1,2.37 1.53,3.48 2.9,1.87 3.12,-1.53 5.02,4.79 1.15,3.53 -2.62,-0.97 -1.48,2.05 -3.89,2.7 -0.43,2.18 2.56,-0.04 2.88,-0.79 2.47,-0.74 2.4,2.46 3.26,3.28 -2.41,2.08 2.06,1.61 0.72,3.86 0.87,0.94 2.37,2.01 0.05,2.28 -2.05,0.35 -0.86,2.02 0.59,1.45 -1.67,-0.11 -1.69,1.85 -1.36,2.27 -1.73,0.52 -2.08,4.37 -0.55,3.78 -0.25,-2.23 4.33,-2.23 2.08,-0.24 -2.82,-0.46 -0.7,2.99 -3.43,2.2 2.08,0.81 0.22,1 -1.03,1.19 -1.32,0.16 3.49,1.1 1.39,1.26 -1.9,0.07 -0.29,1.99 -2.31,1.42 1.18,0.54 1.34,1.84 1.35,2.8 -2.18,2.04 -4.44,-0.74 -2.18,-2.64 1.63,-0.69 0.76,-4.19 -0.17,-2.1 -0.64,2.71 -4.66,4.66 -4.98,0.68 -0.13,-3.43 1.98,-6.57 2.12,-10.01 -0.26,-1.47 -2.38,-1.12 -1.92,-3.26 0.2,-2.67 -2.43,-4.09 -3.97,-4.66 0.54,-2.82 0.04,-5.39 -1.15,-7.72 0.49,-2.96 -3.2,-2.36 -2.3,0.29 0.39,1.99 2.16,3.98 1.82,5.79 -0.98,-1.18 -4.72,-2.37 -4.53,0.09 1.53,0.74 4.96,0.32 3.23,3.09 -0.36,0.92 2.65,-0.97 2.92,1.14 1.39,1.16 4.2,3.13 1.09,4.33 -2.3,0.81 -7.78,0.76 -7.23,-2.79 1.56,-1.72 -2.19,-2.27 -1.32,0.16 -1.72,-2.55 -3.53,-0.09 -1.9,1.66 -2.13,2.01 -4.41,0.62 -6.81,0.57 -2.19,2.71 4.76,1.16 2.08,3.05 0.58,1.9 4.08,1.91 5.81,2.83 1.96,1.43 -0.47,2.15 -1.35,0.46 -1.82,-1.08 -3.45,2.21 -4.74,-0.62 -0.64,-2.28 -4.68,1.1 -2.47,0.81 1.98,0.42 2.27,5.38 5.07,2.98 1.84,-3.35 3.57,2.14 6.26,0.44 1.29,-0.17 2.13,-0.02 0.67,0.65 1.09,1.24 2.33,0.17 2.6,1.96 1.19,2.8 4.25,5.41 6.32,6.4 -0.65,1.36 -3.26,-1.74 -3.14,1.07 -0.24,-1.71 -1.8,-0.78 -1.41,0.45 -1.2,-0.78 -1.84,-2.07 -1.82,0.08 -0.39,2.77 -2.92,-1.74 -2.76,-0.46 0.55,1.51 -0.55,2.28 -0.85,0.45 -2.38,-1.66 -2.14,3.66 -3.7,0.79 -1.88,-0.98 -0.85,3.28 -2.38,0.99 -2,-0.69 -1.48,2.95 -3.73,1.98 -1.43,0.57 -1.73,-1.87 -2.48,0.33 -1.28,0.15 -2.02,-1.77 -3.67,-0.49 -1.51,-0.59 -3.89,-0.69 -5.18,-1.79 -1.83,0.4 -3.94,-2.71 -4.99,0.05 -1.52,0.2 0.6,-5.44 -2.51,-2.84 -0.5,1.46 -2.44,2.79 -1.46,0.41 -0.04,-2.08 -3.47,-2.35 -1.81,-0.01 -0.33,2.95 -2.47,-1.46 -3.31,-2.22 2.66,-0.66 -1.9,-3.4 0.58,-4.85 0.98,-1.25 -0.43,-3.9 -1.29,-1.57 -2.2,1.2 0.59,4.8 -2.3,3.1 0.07,1.58 0.73,2.33 -0.49,2.37 -0.31,3.19 -2.4,-0.77 -3.7,1.08 -1.26,-0.57 -3.86,-0.58 -3.24,0.73 -1.86,1.54 -5.17,-0.4 -5.06,3.18 -2.02,-0.95 -3.43,1.13 -4.24,1.49 -0.67,-0.74 -1.24,2.48 -2,1.23 2.12,-2.45 -2.15,-1.8 -1.8,0.58 -2.16,1.39 -3.92,0.18 -2.08,-1.7 -1.67,0.05 -3.09,2.47 -2.5,-0.4 -0.88,-2.96 -1.92,-0.22 -2,1.13 -1.96,-0.26 -4.27,2.16 -3.76,-0.97 -0.78,-1.12 -2.93,1.49 -3.4,-0.02 1.83,-0.91 0.7,-3.4 -0.63,-1.07 -0.78,1.04 -1.78,1.59 -1.04,-0.05 -2.35,-3.54 3.85,-1.66 4.59,-3.73 -0.17,-1.96 -2.75,-5.32 -4.26,-2.64 1.79,0.66 -1.44,2.8 -2.07,2.43 -1.51,-3.02 -4.63,-0.57 -2.13,1.56 0.17,1.83 -2.38,1.81 -1.85,-0.14 -1.36,-2.38 -2.64,3.42 -2.69,-0.09 0.92,-1.47 0.05,-4.47 -1.39,-1.81 0.69,-2.4 -1.59,-1.67 -2.42,-0.69 -1.63,-2.6 -2.81,-0.08 -1.32,1.39 -0.12,2.09 -5.82,3.27 -3.43,0.33 -0.7,-1.39 -2.14,-1.09 -2.9,-2.54 -1.31,0.12 -1.87,1.12 -2.63,1.96 -0.18,2.43 -0.75,4.74 -2.05,6.98 -0.56,-1.99 -3.06,-1.81 -4.45,-3.2 -2.37,1.32 0.55,4.85 0.85,5.51 -2.93,-1.09 -0.49,5.23 -3.18,2.66C53.03,69.44 53.8,64.37 51.35,66.72c-0.01,1.25 1.67,5.14 1.03,4.67 -0.53,-2.51 -2.88,0.37 -2.61,-2.21 -1.56,-2.63 -4.32,1.46 -2.75,2.77 0.01,1.17 -1.56,2.39 -0.5,0.42 0.86,-3.51 -4.59,-2.97 -3.27,0.28 1.49,1.65 -0.07,2.95 -1.09,0.84 -1.55,-1.63 -4.28,0.31 -4.69,-2.84 -1.38,-1.87 -1.94,1.56 -0.77,2.26 -0.06,1.31 -0.47,2.49 -0.74,0.56 -1.54,-2.22 -1.58,2.78 -0.86,3.53 1.64,2.36 -5.86,1.67 -2.64,3.82 2.3,1.03 -2.22,1.12 -2.82,0.61 -1.74,0.43 1.87,2.58 -0.75,1.83C27.52,82.87 27.84,78.97 25.72,81.05c-0.33,1.79 3.97,2.08 0.81,3.67C24.18,85.6 27.77,81.48 24.7,81.96c-1.65,-0.58 -3.25,0.94 -2.07,2.52 -0.13,-1.56 -3.34,-2.97 -2.3,-0.65 0.92,1 3.65,4.19 0.68,3.11 -0.39,-1.36 -2.18,-3.54 -2.55,-1.53 -2.1,0.36 1.98,3.44 0.79,3.95 -0.52,-1.87 -2.86,-1.68 -1.64,0.35 -0.16,0.51 -2.67,-2.78 -2.9,-4.29 -1.64,-2.64 -1.84,0.81 -1.4,1.86 -0.78,1.52 2.24,0.79 1.57,2.42 -1.75,-0.73 -3.2,1.28 -0.75,1.28 -0.16,0.78 0.34,2.28 -0.65,2.59z M34.12,18.3c-1.05,0.6 -2.47,3.81 -0.57,3.47 1.95,-0.22 4.06,-4.82 0.57,-3.47z m-22.97,56.17c-2.31,-0.35 -0.79,-1.58 0,0z M2.14,66.59c-1.38,-1.11 -0.95,-1.35 0.46,-0.36 -0.18,-0.08 -0.27,0.6 -0.46,0.36z m168.23,-6.32c-0.28,-1.85 2.85,0.02 0.03,0l-0.03,0z M7.85,51.96c-0.57,-0.92 1.55,0.27 0,0z m1.18,-1.63C7.41,50.26 7.17,48.77 8.95,49.87 10,50.07 10.77,49.96 9.03,50.33z M184.09,37.53c-0.77,-1.48 -1.43,-4.23 -2.73,-6.24 -2.01,-2.67 1.21,-6.02 3.05,-2.64 0.95,1.04 0.93,3.38 1.44,4.42 -4.98,-0.16 0.39,3.51 -1.76,4.46z M23.01,25.35c-1.12,-0.81 -0.79,-3.25 0.17,-0.92 0.17,0.37 -0.49,0.58 -0.17,0.92z M209.99,8.88c0.65,-1.41 0.2,-3.29 -1.61,-3.21 -0.07,-1.5 -1.95,-5.46 0.62,-4.89 1.44,0 2.88,0 4.31,0 1.06,2.38 -1.6,4.58 -1.58,7.24 -0.32,0.7 -1.06,0.8 -1.74,0.86z M44.32,3.05c-1.74,-0.98 -6.31,0.12 -6.14,-2.09 1.47,1.81 3.05,0.95 2.25,-0.17 2.2,-0.52 2.82,0.46 3.89,2.27z","name":"Greenland"},"is":{"path":"m151.61,141.44c-2.42,-0.05 -4.73,-1.12 -5.95,-3.36 -0.71,-2.06 -4.34,-1.68 -3.81,-4.38 0.8,-0.95 3.4,-0.95 1.03,-1.6 -1.69,0.92 -0.37,-1.61 -2.18,-0.86 -0.88,-0.03 -1.32,-2.12 -2.96,-2.05 -1.43,-1.13 -6,-1.27 -4.53,-3.48 1.4,1.45 5.16,1.15 5.29,-1.63 0.95,-0.08 4.39,1.14 2.46,-0.91 -1.28,-0.31 -3.16,-1.27 -0.58,-1.35 2.41,0.51 2.39,-2.69 -0.02,-1.57 -1.25,0.39 -2.36,1.06 -1.66,-0.43 -0.34,-1.62 1.57,-4.11 -1.54,-3.94 -1.49,-1.7 -3.83,-2.36 -5.98,-2.91 1.9,-1.43 2.13,2 4.45,0.36 0.58,-0.11 0.84,1.82 1.93,0.36 1.45,0.02 2.12,1.75 4.12,1.85 1.57,1.88 4.72,-0.08 2.56,-1.73 -1.13,0.23 -4.71,-0.08 -2.41,-1.51 1.13,0.1 5.66,-0.35 3.94,-1.58 -2.53,-0.05 -1.4,-0.83 -0.29,-1.63 0.84,-2.83 -2.64,-1.96 -3.34,-1.81 -1.47,-0.72 -2,-0.85 -1.64,-2.44 2.52,0.42 0.64,-2.75 -0.27,-3.56 -0.04,-0.34 1.76,2 1.91,-0.11 -0.65,-3.43 1.88,0.34 1.11,2 -0.95,4.21 5.86,2.44 3.19,-0.73 -1.94,-1.31 0.11,-2.67 -1.13,-4.2 1.13,0.42 1.67,1.6 2.04,1.18 1.98,0.31 -0.01,2.5 1.33,3.37 0.86,1.89 -0.77,4.19 1.64,5.57 -1.28,0.64 -3.87,-0.52 -2.63,1.99 -0.4,1.18 -1.92,2.25 -0.42,2.93 -1.31,1.46 -1.09,4.59 1.22,2.7 0.49,-1.4 2.89,-6.12 2.22,-2.37 2.69,2.22 4.53,-3.04 4.48,-5.25 2.58,0.03 -0.68,6.63 3.51,5.53 -0.01,-0.74 0.05,-5.1 1.81,-2.72 1.08,-2.01 3.5,-0.36 1.83,1.62 2.1,1.36 -0.53,3.45 0.95,5.46 2.69,-0.06 0.02,-7.39 2.92,-6.07 -0.32,2.52 1.49,4.92 3.27,1.85 1.68,-2.37 1.62,3.33 3.69,1.28 1.71,-0.8 1.1,-6.38 3.47,-3.02 -0.81,1.5 1.32,1.54 -0.24,3.29 -0.5,2.17 2.82,1.16 2.36,3.29 2.02,0.52 2.1,1.62 0.19,2.57 -2.6,1.53 3.45,1.86 0.49,3.25 -0.74,0.55 -3.68,1.15 -1.27,1.34 1.72,-0.23 4.34,-1.28 4.35,1.54 -0.04,2.17 -4.93,1.21 -2.47,3.09 1.83,0.33 2.75,2.38 0.41,2.2 -1.18,-0.56 -1.74,-0.63 -0.71,0.56 -0.6,-0.3 -3.92,0.12 -2.06,0.55 2.71,0.87 -0.55,1.36 -1.7,1.52 -1.06,0.04 -2.49,1.02 -2.87,2.69 -1.35,-0.83 -1.72,1.98 -2.29,-0.35 -0.72,-2.57 -2.1,-0.68 -2.71,0.31 -2.09,-0.1 -4.17,0.18 -5.78,1.63 -1.89,0.57 -3.52,-3.04 -3.52,0.21 -2.4,-1.75 -5.62,-1.53 -6.88,1.4l-0.35,0.08 0,0z m24.31,-7.94c-1.58,1.64 1.17,1.65 0.84,-0.23 -0.28,0.08 -0.56,0.15 -0.84,0.23z M147.49,99.76c-2.33,0.02 -1.42,1.38 0.2,1.79 0.14,-0.38 0.69,-1.97 -0.2,-1.79z m33.62,15.99c1.19,-0.59 1.6,-0.17 0,0z m-44.05,-9.09c-1.62,-0.01 -0.68,-1.6 0.37,-0.74 1.34,-0.47 -0.84,-4.6 0.49,-2.48 -0.6,1.82 2.54,3.42 -0.86,3.22z m-1.42,-1.5c-1.66,0.2 -1.5,-3.06 -0.29,-0.86 -0.05,0.3 1.22,0.95 0.29,0.86z m4.48,-1.49c-0.86,-0.96 -0.83,-1.57 0,0z","name":"Iceland"},"pt":{"path":"m126.31,476.79c-3.11,-0.89 -5.74,-4.21 -9.28,-3.12 -1.78,0.38 1.76,-2.58 1.47,-3.95 0.39,-1.92 1.56,-3.11 1.18,-4.56 -0.46,-1.65 0.47,-3.6 1.4,-5.27 -0.61,-1.65 3.07,-0.14 2.33,-1.74 -1.59,-1.17 -2.48,-2.71 -4.71,-1.61 -1.89,-0.04 -2.12,-3.1 -2.67,-4.46 0.27,-2.21 3.57,-4.27 2.21,-6.5 2.42,0.37 3.47,-2.17 4.77,-3.81 0.98,-1.71 1.87,-3.43 3.16,-4.47 -0.79,-1.76 1.02,-5.31 3.28,-5.87 1.59,-1.26 -0.95,-2.63 0.8,-4.09 0.23,-2.53 -1.05,-5.19 -0.11,-7.75 2.54,0.06 0.15,-1.87 0.17,-2.24 1.59,-1.44 4.74,-3.3 6.49,-1.31 -3.35,1.53 -0.16,3.98 2.09,3.19 1.85,-0.17 3.87,2.53 6.45,0.97 1.56,-0.13 6.26,-0.07 4.22,3.05 0.22,1.77 4.81,2.08 1.88,3.98 -2.66,0.33 -4.02,2.88 -6.33,3.35 -0.97,1.66 1.09,4.53 -0.81,6.49 -1.07,1.01 0.55,2.39 -1.62,2.77 -2.6,1.54 1.62,6.06 -2.82,6.49 -1.74,-0.37 -5.6,-2.08 -3.57,1.31 1.07,1.89 -0.41,4.57 2.03,6.2 1.92,2.91 -3.81,2.81 -3.68,5.95 -1.09,1.6 0.5,5.45 2.67,5.41 -1.19,1.2 -4.31,1 -5,3.34 -3.07,2.07 -0.28,7.22 -4.25,7.62 -0.55,0.29 -1.11,0.63 -1.75,0.65z","name":"Portugal"},"ma":{"path":"m114.26,519.26c5.38,-1.06 11.75,-0.39 15.9,-4.63 5.26,-4.88 8.22,-11.54 11.83,-17.6 2.3,-1.64 3.11,0.89 3.7,2.43 3.25,0.06 3.27,5.03 6.51,6.18 2.01,2.4 5.02,1.6 7.69,1.35 1.26,1.84 3.78,-0.68 5.41,1.5 1.48,1.09 4.97,-1.46 5.09,1.72 1.76,1.07 3.75,0.97 5.94,1.12 1.21,2.49 5.27,4 3.5,6.77 1.55,1.82 -0.97,1 -2.11,1.18 -21.15,0 -42.31,0 -63.46,0z","name":"Morocco"},"es":{"path":"m170.08,507.95c-0.69,-0.45 0.64,-1.19 0,0z m-23.1,-9.15c-1.89,-0.27 -1.23,-3.36 0.81,-2.76 -1.01,0.61 -0.28,2.16 -0.81,2.76z m-1.53,-5.41c-1.92,-1.84 -4.81,-3.55 -4.78,-6.5 1.74,-1.65 -3.05,-2.72 0.06,-3.62 1.8,0.08 1.95,-2.62 0.29,-1.71 -1.68,1.92 -1.49,-3.2 -3.57,-3.37 -1.21,-2.54 -5.06,-1.7 -6.26,-3.7 0.08,-2.72 1.22,-5.37 3.58,-6.95 1.91,0.46 5.66,-3.3 1.98,-3.27 -1.9,-2.17 -1.67,-5.74 1.14,-6.99 3.7,-0.95 1.1,-4.57 -0.28,-6.35 0.58,-1.68 0.45,-3.01 -0.84,-4.53 2.46,2.34 7.45,0.07 6.4,-3.43 -2.26,-2.56 3.15,-2.71 1.97,-5.34 1.81,-1.67 0.28,-5.41 1.17,-6.21 1.77,-2.14 4.99,-2.46 6.88,-4.55 1.92,-2.79 -4.07,-2.45 -2.2,-4.91 0.43,-3.16 -4.07,-2.3 -5.69,-3.2 -1.8,2.37 -3.89,-1.02 -6.23,-0.51 -0.28,-1.34 -3.49,1.05 -2.42,-0.88 2.82,-1.19 -0.75,-4.5 -2.73,-2.96 -2.11,1.45 -3.86,-0.78 -1.34,-1.64 0.94,0.28 2.32,-1.98 0.72,-1.58 2.23,-1.63 -2.16,-0.92 -0.24,-2.66 2.41,-1.99 0.28,-4.66 -2.06,-3.75 -2.26,-1.66 -0.12,-3.23 1.07,-4.13 3.66,0.29 6.76,-2.08 9.92,-3.51 1.78,-2.19 1.34,2.22 3.29,-0.21 3.33,-0.27 2.62,6.64 6.6,4.09 2.47,1.16 5.51,0.94 8.02,1.44 1.9,-1.24 3.14,2.45 5.32,2.3 2.35,0.57 4.3,2.34 6.75,2.93 2.65,1.41 5.29,-0 7.84,-0 2.13,0.65 4.69,5.39 6.5,1.98 2.5,1.32 5.04,3.91 8.46,3.08 1.39,-0.01 3.8,0.79 4.14,1.8 -1.87,1.22 0.06,2.67 1.22,2.4 1.66,1.57 5.29,1.19 5.34,4 1.46,0.54 4.43,-0.57 4.33,1.92 1.41,-0.29 3.73,0.98 4.54,0.5 1.54,0.01 3.53,0.67 3.72,-1.35 1.63,1.02 3.94,2.12 5.05,3.3 -0.62,2.48 1.62,2.94 3.4,2.37 1.23,1.43 2.74,2.23 4.47,1.42 1.62,0.92 3.85,2.1 4.94,-0.04 1.38,-0.43 5.47,1.31 2.5,2.25 -0.52,2.49 0.35,5.62 -3.02,6.24 -3.95,0.65 -6.55,3.99 -10.24,4.85 -4,0.26 -8.86,0.24 -11.41,3.91 0.64,1.13 2.06,1.75 -0.08,1.82 -2.98,1.35 -3.8,5 -6.55,6.72 -2.04,2.09 -4.6,4.27 -5.09,7.29 -0.14,3.13 0.72,6.8 3.86,8.19 -0.28,2.13 -4.94,1.61 -6.14,3.93 -1.51,0.81 -1.84,2.35 -3.08,3.65 0.22,1.68 -4.27,3.01 -1.46,5.03 -0.94,1.1 -4.96,-1.49 -6.88,0.41 -2.79,1.13 -4.55,3.71 -5.69,6.37 -2.11,3.74 -4.63,-2.34 -7.31,0.69 -2.28,0.2 -4.7,-1.72 -7.4,-1.1 -2.51,-0.92 -5.12,-1.75 -7.89,-1.82 -2.99,0.03 -4.54,3.25 -7.74,1.83 -3.45,-0.48 -3.73,3.46 -6.83,4.06z M229.67,469.73c-3.03,-0.94 2.34,-1.17 0,0z m-3.28,-1.86c-1.31,-1.98 3.63,-2.8 0.96,-0.55 -0.28,0.23 -0.58,0.51 -0.96,0.55z m8.15,-0.95c-0.99,-1.19 -3.24,-1.21 -2.69,-3.07 -1.57,-0.61 -4.43,-0.57 -1.44,-1.83 1.82,-0.69 5.61,-3.6 5.15,-0.13 1.01,1.13 4.03,0.64 1.76,2.77 -0.83,0.87 -1.8,1.58 -2.78,2.26z m11.67,-5.53c-0.43,-1.32 -5.6,-1.9 -2.47,-2.15 1.42,0.04 2.4,0.66 2.47,2.15z","name":"Spain"},"tn":{"path":"m284.9,519.26c-2.21,-1.12 0.73,-3.64 -0.95,-5.51 -1.46,-3.16 2.15,-6.93 -0.12,-9.45 -0.67,-0.73 2.93,-1.29 1.98,-2.95 2.23,-0.03 1.46,-2.58 3.74,-2.85 2.52,-1.83 5.41,-3.02 8.35,-3.78 1.3,0.18 -1.34,3.29 1.51,2.64 0.71,-1.15 1.1,-2.15 2.08,-1.26 -0.76,0.27 1.03,1.6 0.03,2.09 1.72,0.55 2.13,5.46 4.03,3.7 1.46,-0.73 4.4,-5.15 5.37,-2.71 -0.9,2.37 -2.28,5.07 -4.51,6.35 -3.22,1.82 -2.27,6.37 0.87,7.67 1.26,0.82 1.66,2.08 3.04,2.36 -0.15,1.99 1.01,4.41 -1.79,3.68 -7.88,0 -15.77,-0.01 -23.63,0.01z","name":"Tunisia"},"dz":{"path":"m181.84,519.26c-2.16,-1 0.09,-2.29 0.05,-3.03 -0.8,-1.48 -5.28,-4.37 -1.47,-3.7 2.83,-0.51 5.98,-1.33 7.84,-3.67 1.17,-2.46 3.66,-2.95 5.89,-2.07 1.44,-0.79 2.77,-2.77 3.38,-0.29 3.67,1.9 4.38,-3.05 7.15,-3.91 3.27,-1.17 6.41,-3.1 10.01,-2.8 3.04,0.05 6.13,0.57 9.13,-0.19 2.74,1.56 5.53,-0.24 7.63,-1.26 2.46,0.75 5.2,0.79 7.75,-0.34 2.83,-0.67 5.62,0.67 8.61,0.23 3.35,0.17 5.17,6.05 8.94,3.1 1.43,-2.77 7.09,0.3 7.33,-3.88 2.03,-1.62 1.87,1.59 2.96,1.23 1.79,0.05 6.14,2.99 6.01,-0.61 2.5,-2 5.17,3.33 8.12,2.16 1.57,-1.13 4.46,-0.6 5.35,-0.15 -1.62,-0.02 -2.54,1.2 -1.93,2.18 -1.87,0.63 -3.58,2.5 -1.04,3.3 0.38,2.87 -2.09,5.94 -0.27,8.63 -0.06,1.4 0.31,4.98 -0.86,5.05 -33.52,0 -67.05,0 -100.57,0z","name":"Algeria"},"be":{"path":"m265.32,343.64c-0.99,-1.16 -1.81,-2.49 -3.73,-3.37 -2.08,-0.35 -0.28,-1.85 -1.25,-2.79 1.47,-1.88 -0.53,-2.73 -1.47,-0.87 -1.28,2.32 -4.46,0.99 -3.2,-0.74 -0.78,-0.74 1.11,-3.63 -1.62,-3.19 -2.17,0.83 -2.23,-1.41 -2.67,-2.1 -3.94,1.05 -1.51,-5.53 -5.39,-3.71 -2.36,1.07 -3.02,-4.27 -0.45,-4.53 1.73,-0.62 4.14,-3.17 4.52,-0.63 2.42,-0.22 3.66,2.56 5.83,0.13 1.3,-0.02 1.88,1.91 1.96,-0.36 0.89,-2.95 2.67,0.31 4.45,-0.43 0.58,-0.7 1.45,3.34 3.54,2.07 2.55,0.01 1.99,1.94 1.4,3.06 -1.22,1.97 -0.15,4.06 2.13,3.5 1.5,1.19 1.36,3.16 2.63,4.39 -1.48,2.22 -4.2,1.28 -5.1,4.2 -1.39,2.28 2.74,5.98 -1.59,5.37z","name":"Belgium"},"it":{"path":"m350.4,500.36c-1.75,-1.38 -4.77,0.56 -6.21,-2.11 -0.98,-3.12 -4.25,-2.35 -6.74,-3.12 -2.11,-1.47 -4.61,-1.93 -6.58,-3.76 -2.2,-1.23 -6.25,0.31 -6.1,-3.66 0.15,-1.98 2.31,-4.17 3.5,-1.8 2.52,0.49 3.53,-4.85 5.24,-0.9 2.01,0.26 4.02,2.27 5.97,0.45 2.63,-0.1 5.81,0.01 7.46,-2.47 1.45,0.01 4.12,1.89 4.36,-0.76 1.1,1.6 3.69,-2.6 2.02,0.26 -1.4,3.25 -4.08,7.31 -3.12,10.66 1.21,0.69 0.93,2.35 2.17,3.37 -1.93,0.14 -1.88,2.41 -1.97,3.84z m7.22,-15.37c-2.78,-0.14 -2.87,-3.99 -0.28,-4.55 1.37,-2.08 -1.36,-4.79 2.17,-5.13 3.25,-2.22 -1.35,-4.63 -1.21,-7.46 -1.16,-2.63 -2.56,-4.66 -3.09,-7.45 -1.59,-2.98 -4.91,-0.29 -6.78,-2.73 -1.65,-0.84 -0.12,-5.17 -3.33,-5.63 -1.56,-0.37 -4.03,2.8 -2.57,0.22 0.06,-2.91 -3.33,-1.3 -4.25,-2.37 -0.69,-2.23 -3.26,-6.17 -5.36,-4.2 -1.73,-2.18 -4.5,1.85 -5.25,-1.44 -2.69,-0.65 -4.1,-2.62 -6.18,-4.28 -0.73,-3.32 -5.19,-3.11 -5.74,-6.57 -1.05,-1.9 -5.27,-0.02 -4.05,-2.26 -1.1,-2.38 -3.86,-3.39 -4.73,-5.46 -3.13,0.51 0.07,-2.73 -1.71,-4.47 -2.14,-2.56 -1.2,-6.42 -3.6,-8.63 -2.19,-1.12 -4.5,-0.88 -6.03,-3.28 -2.22,-0.9 -4.82,-2.51 -7.33,-1.86 -1.74,1.89 -3.46,3.3 -4.61,5.48 -1.55,2.14 -5.91,2.59 -3.27,-0.76 1.07,-4.25 -4.16,-0.46 -5.52,-3.08 -2.08,-1.9 -1.08,-4.02 0.62,-5.53 0.76,-2.12 -4.77,-3.84 -2.88,-4.68 2.55,0.23 5.53,-3.6 2.83,-5.28 -0.93,-1.94 -2.92,-4.5 0.7,-3.9 2.4,0.04 4.29,-1.2 6.65,-0.24 1.85,-1.05 2.45,-2.98 2.51,-4.87 1.03,-0.35 2.29,-2.18 1.57,0.13 -0.67,2.56 4.99,2.17 2.47,4.45 0.19,0.08 2.08,0.32 2.23,1.7 1.41,1.01 2.54,-1.65 0.98,-2.25 0.53,-2.02 3.41,-3.57 2.37,-5.9 0.68,2.09 2.82,3.69 4.41,1.42 0.81,0.91 2.52,3.75 3.07,0.97 -0.97,-1.55 1.29,-1.81 -0.84,-2.7 -0.29,-2.99 3.05,2.3 3.43,-1.02 -1.77,-2.29 0.88,-4.07 2.84,-1.92 2.41,1.34 1.9,-4.15 4.64,-2.65 2.33,0.51 5.21,-2.28 6.13,0.74 1.38,2.34 4.22,3.29 6.93,3.47 1.41,0.44 5.26,-0.07 4.99,0.93 -2.13,0.92 -2.35,3.92 0.43,3.72 -1.26,1.22 -1.47,2.53 -0.57,3.56 0.79,3.16 -4.05,-1.16 -3.93,2.42 -2.22,1.73 -5.54,2.13 -7.33,4.03 -0.52,1.97 1.06,2.99 1.39,4.46 3.61,0.71 -1.06,2.87 -0.87,4.28 0.35,2.85 0.62,6.32 3.48,7.85 2.75,2.1 5.47,4.43 8.75,5.58 2.03,1.86 2.11,4.88 3.12,7.29 0.93,3.7 3.47,6.75 6.72,8.67 2.2,2.52 5.18,4.19 8.71,3.54 1.79,0.5 5.88,-2.59 5.92,0.29 -0.8,1.53 -3.65,2.89 -1.29,4.86 4.13,2.94 10.13,1.81 13.75,5.65 1.89,1.55 5.85,0.5 6.34,3.52 1.71,1.18 6.04,2.73 4.13,5.37 0.4,1.63 -0.95,3.55 -2.34,1.36 -0.96,-2.97 -3.23,-5.68 -6.54,-4.48 -2.32,-1.32 -6.05,-2.69 -6.78,1.09 -1.28,2.2 -1.32,4.97 -2.42,7.17 0.64,2.84 4.59,1.65 5.83,3.73 1.59,0.26 0.35,2.98 1.81,3.8 -0.21,3.1 -5.83,1.6 -5.88,5 0.28,1.92 0.81,4.68 -1.72,5.06 -1.23,1.65 -1.39,4.64 -3.63,5.25z m-35.56,-71.98c1.98,1.43 0.5,-2.39 0,0z m-33.54,62.41c-0.72,-1.6 -3.1,-3.35 -3.37,-5.68 1.54,-2 1.07,-4.81 2.16,-7.03 -3.26,0.28 0.82,-2.8 -0.89,-4.55 -0.02,-1.96 -1.35,-4.24 -2.94,-4.22 0.19,-1.55 0.4,-3.39 2.06,-1.78 3.1,0.15 5.25,-2.55 7.52,-4.29 0.91,-0.84 5.63,1.48 2.53,2.55 -0.36,1.47 2.3,1.33 1.41,2.66 3.07,1.36 0.3,4.08 -0.53,6.16 1.23,2.67 0.22,5.65 0.3,8.76 -0.33,1.29 -0.37,5.73 -2.35,3.37 -1.49,-1.18 -4.61,-1.6 -3.46,1.11 -0.38,1.17 -0.94,2.88 -2.43,2.94z","name":"Italy"},"by":{"path":"m402.72,308.87c0.99,-3.18 0.27,-7 -3.79,-7.04 -0.71,-2.3 3.14,-4.07 4.34,-6.18 -0.26,-5.15 -3.83,-9.19 -5.74,-13.77 2.18,-0.83 4.01,-0.87 5.95,-0.9 0.86,-1.84 2.51,-1.83 3.98,-0.84 -1.05,-1.12 -2.37,-3.07 0.28,-3.17 1.9,0.02 -0.71,-2.58 2.17,-2.24 -1.28,2.76 4.76,1.14 2.24,-1.38 -2.85,-0.47 0.33,-3.89 -1.4,-5.76 0.96,-1.56 2.7,-3.08 2.72,-4.65 2.53,0.76 4.43,-4.49 0.94,-3.47 -1.1,-1.17 0.25,-4.78 1.91,-6.11 2.45,0.48 4.37,-0.43 4.51,-3.22 0.17,-2.25 2.08,-1.78 3.18,-1.85 2.02,-2.32 2.15,2.85 3.69,0.14 1.75,-1.51 3.73,-0.83 3.53,1.45 2.17,2.99 3.24,-2.73 5.87,-2.54 1.93,0.2 3.24,2.17 5.04,1.95 0.25,2.02 -0.47,3.85 1.8,5.15 0.82,1.65 -1.87,4.51 1.47,4.95 2.1,-0.08 0.99,1.32 1.56,1.96 1.72,2.18 3.98,3.94 6.71,3.73 0,1.84 0.71,4.69 2.92,2.85 2.09,-1.22 3.09,0.78 3.28,1.76 2.02,-0.38 3.13,1.46 1.26,2.31 -0.06,3.07 -3.04,4.09 -5.35,2.65 -3.54,0.27 -2.85,5.57 0.51,5.52 0.97,2.55 1.33,5.72 3.91,7.42 -2.66,1.35 -6.88,2 -6.85,5.76 -1.23,2.53 1.43,5.57 1.33,7.2 -1.16,-1.33 -5.51,-3.73 -5.13,-0.77 -2.24,-2.52 -3.75,4.16 -4.59,0.03 -1.77,-2.65 -4.04,1.4 -4.28,1.56 -1.22,-2.58 -2.82,1.6 -3.58,-0.67 -1.01,0.66 -2.93,1.68 -4.34,1.01 -1.39,0.16 -1.96,2.41 -2.67,0.56 -2.3,-2.34 -5.69,0.72 -8.43,-0.73 -2.87,-0.21 -5.7,0.69 -8.51,0.87 -1.69,1.51 -4.3,1.17 -5.72,2.79 -0.82,1.63 -1.2,4.18 -3.37,2.88 -0.54,-0.03 -1.11,0.27 -1.34,0.78z","name":"Belarus"},"pl":{"path":"m378.8,342.69c0.85,-2.71 -2.77,-1.44 -3.2,-3.81 -2.16,-0.74 -2.68,4.74 -4.1,1.6 -1.34,-0.42 -0.38,-2.05 -2.3,-2.3 -1.38,-1.23 -0.72,-3.2 -2.99,-2.63 -1.39,-1.14 -3.17,-0.83 -4.08,-0.27 -2.65,-1 1.12,-2.8 -1.66,-3.95 -1.04,2.08 -3.71,0.51 -5.13,-0.34 -2.56,-1.21 -1.29,2 -1.13,2.64 -1.27,1.67 -2.44,1.3 -2.92,-0.65 -1.25,-0.75 -2.67,-1.29 -0.72,-2.16 1.16,-2.1 -2.17,-2.93 -3.11,-1.63 -1.5,-2.25 -5.49,-1.16 -6.45,-4 -1.21,-1.39 -2.59,1.06 -1.9,-1.41 0.23,-2.18 -0.48,-4.58 -2.34,-5.49 -1.37,-2.65 0.61,-5.37 -0.78,-8.1 -2.17,-1.37 0.53,-5.96 -3.41,-5.97 -3.09,-2.11 2.9,-5.25 0.3,-8.13 -0.64,-1.64 -2.11,-4.93 -1.01,-5.69 2.39,-0.86 4.49,-2.6 7.02,-3.34 1.88,-0.91 4.34,-1.13 5.97,-2.18 0.73,-2.97 3.72,-4.13 6.19,-5.25 2.44,-1.51 5.22,-3.64 8.26,-2.74 0.34,2.92 2.37,6.29 5.83,5.11 2.32,-0.46 3.66,-2.87 6.19,-1.88 5.94,0.22 12.06,0.04 17.77,-1.75 2.19,-1.89 4.37,-0.56 6.59,0.69 0.91,5.68 5.67,10 6.52,15.73 -0.74,2.77 -4.55,3.76 -4.71,6.89 0.95,2.08 5.51,0.97 4.43,4.48 -0.75,3.1 1.11,5.48 1.99,8.14 0.77,2 4.89,2.48 3.07,4.57 1.18,1.35 3.03,3.77 0.15,4.64 -2.63,0.49 -3.02,4.28 -4.54,6.17 -0.82,2.29 -3.04,4.17 -2.56,6.78 1.11,1.72 -0.12,4.53 2.39,4.91 -2.96,0.2 -5.66,-0.81 -7.88,-2.64 -2.12,-1.23 -4.34,-0.31 -6.37,0.12 -1.06,0.6 -0.02,2.66 -2.03,1.15 -2.7,-1.27 -4.67,0.77 -6.02,2.87 -0.44,-0.92 -1.49,0.48 -1.34,-0.18z","name":"Poland"},"jo":{"path":"m566.3,519.26c-0.01,-4.69 -2.26,-8.97 -3.12,-13.51 1.51,-3.32 4.45,-0.15 6.76,0.1 3.02,0.33 6.94,0.22 8.51,-2.87 4.44,-5.57 8.37,-11.53 12.83,-17.08 1.86,2.51 3.76,5 5.38,7.68 -2.06,2.03 2.19,4.71 3.12,1.72 0.91,2.72 -2.48,4.53 -4.03,6.38 -4,3.47 -8.47,6.39 -12.72,9.51 -2.44,0.61 -3.15,3.3 -0.46,3.9 2.58,1.36 5.17,2.72 7.71,4.17 -7.99,0 -15.99,-0 -23.98,0z","name":"Jordan"},"gr":{"path":"m449.88,508.26c-1.41,-0.44 -0.91,-2.43 -2.98,-2.05 -2.92,-1.02 -4.66,0.87 -7.49,-0.12 -2.89,2.86 -3.34,-3.03 -1.84,-3.28 2.13,1.48 4.85,0.78 6.99,2.27 2.66,-1.89 5.67,-2.41 8.68,-1.61 1.64,-0.07 3.7,-0.37 4.57,-0.83 -1.03,2.5 2.95,2.63 3.64,0.39 1.59,-1.01 2.86,-0.15 1.23,1.36 -4.14,0.67 -8.27,1.86 -12.04,3.72l-0.39,0.1 -0.37,0.03 0,0z m-26.29,-13.55c-0.61,-2.64 -1.46,-5.84 -4.37,-6.76 -3.02,-0.62 -1.68,2.8 -1.92,4.11 -2.48,0.25 -0.03,-2.58 -2.33,-3.13 -1.56,-1.69 2.11,-3.33 -0.42,-5.29 -1.75,-1.46 -3.48,-2.23 -4.88,-3.8 -1.71,-0.32 1.67,-2.18 0.95,-3.89 1.31,0.41 3.43,-0.58 4.2,-2.4 2.31,-0.03 5.27,1.8 8.03,2.01 1.1,0.72 3.08,0.98 3.24,1.46 1.77,0.36 1.5,3.47 4.29,3.78 1.97,0.86 -3.33,1.22 -3.75,-0.39 -3.29,-1.87 -3.6,3.04 -0.88,3.97 1.42,2.4 3.54,4.49 2.98,7.25 0.93,1.21 1.93,2.16 0.11,0.68 -1.13,-1.37 -3.59,-4.36 -5,-1.33 -0.38,1.2 -0.28,2.48 -0.25,3.72z m12.62,-17.67c-0.61,-1.76 -3.37,-2.18 -4.61,-3.83 -1.54,-1.35 -1.12,2.07 -3.22,1.63 -1.32,1.11 -3.33,0.37 -1.06,-0.31 2.53,-1.38 -0.23,-3.22 -1.98,-2.17 -2.19,0.64 -2.76,-3.59 -4.29,-0.5 0.28,-1.81 -1.78,-2.98 -1.95,-0.63 -1.85,0.67 -5.66,-0.17 -7.42,2.31 -1.43,-1.51 -2.69,-1.73 -3.58,0.32 -0.06,-3.13 -3.02,-4.71 -4.64,-5.97 -0.05,-3.03 -3.45,-4.15 -5.3,-5.69 0.58,-2.13 -4.66,-2.22 -1.22,-2.7 1.45,0.13 1.31,-1.81 1.97,-2.79 -2.74,-2.59 4.57,-2.51 2.29,-5.81 0.57,-2.27 3.93,-4.04 1.77,-6.57 2.29,-1.19 5.68,-0.59 7.21,-3.12 0.92,-4.2 5.51,-0.91 7.7,-3.66 0.88,-0.81 0.03,-3.12 2.26,-2.13 2.68,-1.49 5.94,-1.98 8.75,-3.4 1.35,-1.69 4.25,-2.43 5.72,-0.71 1.88,0.93 3.48,-0.95 5.39,0.66 2.83,0.48 5.06,-1.99 7.75,-2.56 2.63,-1.48 -0.92,-3.81 -0.19,-4.93 2.53,-0.82 6.54,2.78 3.07,4.45 -2.66,1.03 1.16,6.08 -1.92,6.2 -2.59,-1.16 -5.58,1.42 -8.08,-0.62 -2.31,-0.06 -3.98,4.61 -5.94,1.87 -2.75,-0.21 -2.93,5.39 -5.82,3.29 -2.56,0.13 -2.19,2.87 -0.61,3.88 1.51,1.31 -0.02,1.67 -0.46,3.12 -2.01,-0.91 -2.94,1.12 -4.72,-0.3 -3.05,1.25 -3.01,-2.2 -1.76,-3.97 -0.09,-0.54 -2.81,1.81 -3.44,2.49 -1.02,1.92 0.18,3.87 -0.21,6.03 1.55,1.98 3.8,3.4 4.84,5.84 0.92,0.8 4.25,2.4 3.42,2.64 -2.14,-2.19 -4.85,-0.02 -3.78,2.46 1.31,0.13 3.2,1.7 0.6,2.21 -1.13,0.04 -4.23,2.36 -2.68,2.49 2.62,-1.25 4.96,1.17 7.41,0.98 0.52,2.36 2.91,0.77 3.98,2.53 2.06,0.36 4.93,0.25 3.64,2.95 0.1,1.33 1.96,3.02 1.13,4.05z m-32.41,-12.35c-2.66,1.97 2.35,4.76 3.65,1.72 0.88,-3.08 -2.48,0.37 -3.25,-1.63l-0.4,-0.09 0,0z m1.2,12.17c-2.12,0.67 -3.94,-2.49 -2.24,-3.05 -0.52,2.11 1.79,2.11 2.24,3.05z m35.21,-4.75c-1.33,-0.45 -3.15,-2.25 -0.48,-1.45 1.91,-0.84 2.27,1.01 0.48,1.45z m-3.1,-3.76c-1.98,-1.68 -5.22,0.85 -5.86,-2.11 -1.43,-1.48 -5.05,-2.2 -5.77,-2.78 2.78,-2.67 4.14,2.1 7.15,1.68 1.66,0.78 3.06,-0.62 3.9,1.22 0.4,0.59 0.43,1.32 0.58,1.99z m-10.1,-17.81c-3.53,-1.73 2.32,0.07 0,0z m3.59,-1.57c-2.32,-1.62 -0.44,-1.62 0.45,0.12l-0.11,0.22 -0.34,-0.34z","name":"Greece"},"tm":{"path":"m679.06,344.59c-1.21,-0.72 -0.78,-2.05 -2.51,-2.48 -0.91,-2.53 -0.44,-5.74 -2.11,-7.9 1.43,2.3 3.65,0.44 4.81,-0.09 -0.04,3.47 0.02,6.95 -0.03,10.42l-0.16,0.04z m-9.11,-14.43c-1.83,0.29 -2,-1.85 -2.97,-2.07 -2.67,-0.77 0.57,-4.63 0.48,-6.52 1.65,-3.13 3.89,-6.16 6.88,-8.09 1.36,-0.18 5.09,-1.73 4.9,0.43 0,2.65 0,5.3 0,7.95 -2.35,-1.52 -3.83,-5.43 -6.79,-5.11 -2.41,2.22 -6.24,4.38 -5.17,8.26 -0.05,1.27 0.71,3.09 1.95,2.4 0.34,0.89 0.41,1.85 0.72,2.75z m9.29,-40.46c-2.98,-4.77 -6.29,-9.32 -9.41,-14 0.44,-3.11 3.69,-4.89 4.74,-7.82 1.56,-2.45 3.21,-4.85 4.68,-7.37 0,9.73 0,19.46 0,29.19z","name":"Turkmenistan"},"kz":{"path":"m665.18,326.25c-2.97,-1.86 -1.2,-5.67 -2.65,-8.21 0.53,-3.17 -3.51,-2.8 -4.88,-0.83 -1.79,-1.67 -2.48,2.95 -4.91,0.84 -1.43,-2.21 -3.22,-0.68 -4.76,0.52 -0.4,-3.09 -3.28,-5.18 -6.16,-5.75 -2.02,-1.36 -4.24,-5.19 -6.86,-2.37 -2.9,1.87 -4.15,-4.1 -0.51,-3.35 1.06,-1.32 1.8,-1.79 3.42,-0.84 1.53,-0.78 2.76,-2.24 4.06,-3.11 -1.44,-2.18 -5.78,0.43 -7.07,-2.22 0.12,-1.34 3.47,-2.2 0.83,-3.45 -1.26,-2.14 2.16,-2.43 1.45,-4.52 2.51,-0.62 4.01,-2.7 6.42,-3.67 1.55,-0.68 5.82,-1.56 4.27,-3.73 -2.44,0.42 -5.53,1.2 -4.64,-2.51 0.27,-3.12 -0.67,-6.7 -3.34,-8.56 -1.46,-0.11 0.78,-3.59 -1.86,-3.15 -1.5,-2.77 -4.84,0.02 -6.51,0.7 0.1,2.2 -0.93,4.69 -3.45,3.61 -2.4,0.56 -6.57,-0.38 -7.49,3.29 -0,2.58 -2.65,3.31 -2.68,6 -1.27,1.57 -1.07,5.37 -3.43,5.36 -2.12,-0.08 -2.2,2.62 -2.46,3.63 -1.26,0.74 -5.86,0.39 -4.64,-0.82 3.5,0.56 3.47,-4.4 0.06,-4.32 -3.14,-1.51 -5.73,-4.02 -8.93,-5.36 -2.47,-0.32 -4.25,2.11 -6.54,2.07 -0.12,1.28 0.37,2.59 -1.35,1.17 -1.8,-0.93 0.01,-2.79 -2.21,-3.3 0,-2.52 -4.2,-0.23 -5.74,-0.66 -0.96,-2.72 -0.8,-5.85 -0.41,-8.82 0.73,-3.23 -4.34,-1.07 -3.74,-4.61 -1.48,-2.21 -1.17,-5.16 0.32,-7.28 -2.58,-1.5 -1.53,-6.73 1.82,-4.04 2.29,0.54 4.78,3.98 7.13,1.98 1.97,-1.65 2.09,-5.06 -0.41,-5.79 -0.5,-2.08 -4.31,-2.93 -1.9,-4.7 0.1,-1.7 1.79,-4.1 2.05,-4.93 -2.7,-0.86 -1.25,-3.39 0.39,-3.59 0.3,-2.73 3.83,-4.97 2.24,-7.88 -1.16,-1.26 2.12,-0.49 0.87,-2.37 -0.73,-0.82 1.71,-0.82 1.99,-1.86 2.14,-0.45 -1.05,2.08 1.69,2.02 1.48,-0.55 1.41,-1.96 2.93,-1.7 0.29,-1.63 -1.06,-3.26 1.01,-4 0.5,-1.63 0.88,-2.2 1.87,-0.46 3.2,2.4 4.8,-3.1 7.46,-3.43 1.62,1.55 3.73,2.04 5.43,0.37 1.27,1.42 3.01,1.43 4.62,1.61 -0.26,2.56 4.05,4.44 3.68,0.87 -0.11,-2.04 -2.23,-3.06 -3.52,-3.49 2.49,-1.89 5.28,1.44 8.06,-0.13 2.65,1.71 2.89,-3.09 2.88,-4.82 -0.94,-1.46 1.32,-2.87 0.36,-4.29 1.64,0.4 1.75,-1.1 1.34,-1.85 1.08,-2.25 2.79,-1.39 4.44,-0.52 1,-0.8 1.78,-2.46 2.98,-2.01 -1.89,-1.21 -2.16,-3.64 0.61,-3.9 -0.26,-1.23 0.14,-1.29 1.28,-1.45 1.06,-0.94 2.07,2.58 4.01,1.26 1.98,1.74 4.96,-3.12 5.37,-1.36 0.29,1.89 3.37,-0.99 2.39,-2.55 -0.11,-1.94 -1.41,-4.21 1.46,-3.17 2.91,-0.36 4.26,-3.79 5.34,-6.17 1.47,-2.93 -2.47,-4.1 -2.09,-6.64 -1.36,-2.25 -4.48,-0.11 -5.91,0.2 -2.22,-2.09 -4.58,3.81 -4.91,0.16 -1.29,-0.68 -2.71,2.23 -3.65,0.73 1.29,-1.47 1.19,-4.25 2.39,-6.18 1.51,-3.13 -2.02,-3.28 -3.58,-4.22 -3.1,0.97 0.81,-3.99 -1.61,-4.03 1.01,-2.42 4.84,-2.6 5.47,-5.2 -0.01,-2.9 -4.66,-1.68 -5.74,0.02 -1.13,1.71 -4.5,-0.24 -1.75,-0.92 2.16,-2.49 -2.77,-3.66 -2.05,-1.2 -2.33,3.55 -0.85,-4.14 -3.83,-1.64 1.26,-0.48 -0.31,-3.76 1.92,-2.68 1.3,1.04 0.21,-2.26 2.14,-1.3 2.74,-0.21 -1.15,-2.68 1.49,-3.26 1.26,2.1 3.9,-0.29 1.53,-1.19 0.54,-2.35 2.7,-4.74 3.28,-7.51 1.48,-0.31 3.12,-1.58 1.37,-2.69 1.12,-2.77 3.18,-4.87 5.44,-6.15 -0.1,-1.8 -3.04,-1.6 -1.06,-3.51 0.73,-2.38 2.55,-3.81 3.48,-6.49 2.08,-2.53 2.36,-5.49 3.47,-8.34 0.29,-1.69 3.72,-3.96 0.35,-4.97 -1.01,-0.43 2.31,-2.04 0.29,-3.41 -1.75,-1.68 3.22,-0.78 0.65,-2.37 -1.73,-0.49 3.06,-0.82 1.8,-2.5 2.25,-1.54 6.79,-0.26 5.35,-4.64 -0.2,-2.91 3.08,-0.72 4.32,0.28 1.69,1.75 4.12,-0.2 4.78,2.52 1.5,0.9 1.01,3.62 3.74,3.35 2.67,0.01 -0.81,-3.38 2.11,-2.14 1.93,-0.51 -0.97,-4.41 1.41,-3.27 0,52.65 0,105.3 0,157.95 -2.28,4.16 -5.07,8.03 -7.49,12.09 -2.11,1.94 -4.29,5.26 -1.49,7.58 3.01,4.53 6.37,8.91 8.98,13.65 0.02,6.62 -0.04,13.29 0.04,19.87 -3.05,0.34 -6.58,0.54 -8.5,3.49 -2.48,2.8 -4.81,5.91 -5.35,9.73 -0.09,0.46 -0.18,0.92 -0.25,1.38z","name":"Kazakhstan"},"fi":{"path":"m382.62,208.07c0.7,-3.07 -2.78,1.32 -3.86,-1.32 0.05,-0.96 1.56,-3.75 -0.71,-2.21 -1.13,1.69 -1.33,-1.45 -2.92,-0.68 -0.94,0.89 -2.97,-0.9 -3.55,-0.42 -0.14,-2.36 -1.97,-0.15 -2.25,-0.03 -0.63,-1.67 -0.91,-3.6 -2.08,-5.17 1.86,-0.74 1.72,-4.06 0.26,-5.25 -0.34,-1.47 3.17,-0.38 1.07,-2.02 -1.2,-2.15 -2.78,-4.06 -3.52,-6.25 0.62,-2.08 -0.63,-3.97 -1.49,-4.42 0.49,-1.2 -0.5,-2.29 -0.95,-2.29 0.13,-1.71 3.82,-4.59 2.52,-5.52 -3.07,-0.18 0.32,-3.17 1.17,-0.45 1.02,-1.23 3.05,-2.66 2.12,-4.84 0.01,-1.7 0.15,-2.94 1.36,-1.21 0.12,-2.42 1.26,-4.91 3.64,-5.85 -0.72,-2.45 1.54,-4.8 2.24,-7.01 -0.27,-2.84 0.9,-5.24 3.71,-6.24 1.6,-1.13 1.77,-3.36 -0.51,-2.84 -0.44,-2.27 -0.12,-5.32 -2.74,-6.02 -2.3,1.99 -2.43,-3.68 -4.97,-1.88 -1.75,-2.03 -4.37,-4.52 -3.48,-7.48 1.52,-3.03 -0.83,-5.16 -2.34,-7.18 -0.2,-1.46 0.87,-4.46 -1.6,-3.74 -0.01,-2.39 -0.15,-4.83 -1.27,-7.01 -2.48,-1.84 -4.57,-4.14 -8.05,-4.18 -1.93,-1.7 -6.43,-2.88 -5.46,-6.12 -0.41,-2.16 1.14,-3.53 2.73,-1.48 2.59,1.31 1.85,6.17 5.39,5.44 2.27,0.35 4.34,-0.45 4.98,-2.51 2.4,-0.26 6.27,3.96 5.78,-0.87 -0.39,-2.02 3.32,-1.43 1.97,-3.98 -1.32,-3.02 -2.11,-7.03 -0.35,-9.99 -0.31,-2.74 4.21,-0.11 4.22,-3.35 1.47,-1.91 3.36,2.08 5.49,1.78 2.95,0.9 3.14,3.84 1.7,6.03 1.41,1.64 0.21,2.38 -0.46,3.84 1.14,0.8 2.75,1.02 1.72,2.87 -0.47,3.13 2.02,6.77 5.45,6.28 1.67,2.35 6.13,3.59 3.92,7.14 -0.75,2.27 -1.97,4.85 -0.96,7.21 3.59,3.29 6.5,7.25 9.05,11.36 0.06,1.49 -2.83,0.38 -0.84,2.06 -0.22,2.17 0.21,4.77 1.29,6.07 -1.26,3.74 5.08,3.34 3.58,6.82 0.48,3.1 6.13,1.5 4.41,5.52 -0.25,1.99 -2.95,4.48 0.53,5.03 2.93,1.69 6.43,2.67 8.87,5.07 1.06,2.48 -0.3,5.24 -0.57,7.75 -2.26,6.49 -4.21,13.14 -7.27,19.3 -1.55,2.69 -3.59,5.26 -4.3,8.32 -1.76,0.21 -3.5,-1.24 -4.38,1.19 1.52,0.77 -3.01,1.75 -1.49,-0.16 -0.76,-2.31 -1.99,0.16 -1.56,1.47 -1.82,-2.09 -4.5,1.44 -1.45,2.01 0.62,2.53 -3.67,-2.15 -3.14,-0.28 0.89,2.06 -2.52,3.25 -2.85,3.52 -2.72,0.33 -4.14,2.39 -6.64,3.79l-0.57,0.27 -0.58,0.1 0,0z","name":"Finland"},"de":{"path":"m302.45,372.15c0.39,-0.91 1.99,-2.77 0.16,-1.49 -1.57,0.93 -2.11,-2.91 -4.19,-2.08 -2.04,1.85 -3.44,-2.27 -6.01,-1.15 -2.15,0.46 -2.02,-2.87 -4.5,-1.23 -1.72,0.52 0.38,3.76 -1.44,1.73 -1.84,0.2 -4.84,0.84 -5.69,-0.07 -0.64,-1 1.16,-4.13 0.65,-5.99 1.9,-2.36 0.91,-6.25 3.86,-7.87 2.56,-1.63 0.59,-4.12 -1.86,-3.67 -2.56,0.2 -2.84,-3.15 -5.48,-1.32 -1.23,0.08 -2.11,-2.54 -3.28,-1.12 -0.17,-2.33 -4.09,-3.23 -1.38,-5.35 1.81,-3.01 -5.32,-3.18 -1.88,-6.63 1.67,-1.33 2.21,-2.89 0.22,-4.22 1.95,-2 -1.2,-0.75 -1.34,-2.77 1.01,-1.22 0.18,-2.51 -0.16,-3.21 1.78,-1.86 2.88,-5.05 1.22,-7.64 -2.19,-2.06 0.71,-2.52 2.29,-1.67 2.39,0.34 3.33,-2.08 3.64,-3.33 2.38,-1.19 2.15,-5.11 -0.59,-5.64 -0.03,-1.55 3.42,0.08 2.83,-2.66 0.31,-2.54 1.52,-4.9 2.38,-7.37 -0.34,-0.18 -3.53,0.96 -2.22,-1.41 0.9,-2.9 4.25,-1.28 6.2,-2.15 0.16,2.03 2.57,6.54 4.4,3.34 0.14,-1.85 -1,-6.59 2.18,-4.76 1.27,0.28 4.88,-0.75 2.09,-1.66 -3.15,0.44 1.18,-4.81 -1.98,-5.31 4.2,-1.72 -2.92,-4.5 -0.43,-6.3 2.37,1.37 6.56,0.38 7.64,2.55 -0.45,0.53 1.55,0.68 -0.04,1.71 -1.46,1.22 0.47,2.21 1.51,1.23 -1.09,2.31 1.04,2.07 1.81,0.68 1.67,1.18 3.81,1.56 5.14,0.49 0.21,1.77 -4.56,3.93 -2.04,5 1.38,0.2 3.65,-1.17 3.27,1.31 2.66,-0.01 2.46,-4.21 4.91,-4.12 1.43,1.57 3,-1.39 3.56,-2.49 0.61,-2.1 3.54,-0.7 4.16,-0.17 0.88,1.8 2.57,3.83 4.93,3.32 -0.95,4 4.51,3.57 4.6,6.93 3.14,3.28 -3.49,6.24 0.16,9.19 2.04,0.76 2.91,2.01 2.23,4.17 0.93,1.99 2.9,4.81 0.48,6.79 1.68,1.23 1.03,4.11 3.18,4.83 0.68,1.92 0.82,5.65 -0.66,6.5 -0.87,-1.78 -4.46,-3.53 -3.95,-0.41 1.16,0.88 -2.8,1.08 -3.3,2.22 -2.5,0.18 -3.71,2.69 -5.8,3.41 -0.73,-0.12 -0.57,1.65 -2.06,0.72 -2.78,-0.99 -2.28,4.11 -4.17,1.96 -3.51,0.44 1.56,4.5 2.19,5.46 -2.26,2.79 1.42,6 3.88,7.15 1.53,1.88 3.04,3.44 5.43,4.44 2.44,1.22 2.24,4.86 -1.02,3.8 -0.57,1.52 -0.37,3.53 -2.79,3.73 -3.29,0.46 -2.9,3.65 -1.01,5.5 0.76,1.93 -3,3.3 -3.36,1.75 -0.45,-0 -3.6,-1.29 -2.93,0.98 -3.48,-0.65 -5.56,1.87 -8.47,2.95 -1.59,-0.45 -2.06,-3.03 -4.27,-1.95 -2.85,-1.05 -0.37,3.13 -2.89,3.37z m-6.7,-79.27c-0.21,2.06 4.44,6.44 3.78,2.2 -1.59,0.14 -2.26,-2.95 -3.66,-2.25L295.75,292.88z m29,76.43c-1.59,-1.17 -0.3,-3.24 0.69,-1.13 -0.04,0.43 -0.23,0.99 -0.69,1.13z m-0.01,-83.07c-2.42,-0.16 -2.07,-4.22 0.32,-2.83 -1.17,-1.29 -0.5,-0.74 0.89,-0.58 -1.82,1.06 2.32,2.92 -0.86,3.34l-0.35,0.07 0,0z","name":"Germany"},"se":{"path":"m323.06,272.38c-2.85,0.68 -1.5,-2.92 -0.88,-3.47 -1.34,-1.73 -2.37,-3.77 -4.04,-5.01 0.79,-1.22 -1.53,-2.8 1.01,-1.48 2.77,0.18 -2.19,-2.84 0.98,-2.65 2.38,-2.15 -2.21,-3.59 -2.38,-5.5 -2.18,-0.93 -1.38,-4.24 -3.57,-5.03 -0.5,-2.35 -1.05,-4.69 -2.37,-6.57 0.36,-2.06 3.34,-6.36 -0.08,-6.96 -1.38,2.23 -3.39,1.39 -2.89,-1.18 0.66,-1.66 -0.9,-5.32 -0.3,-5.55 1.22,1.95 2.5,1.63 3.29,-0.5 0.91,-2.52 -0.9,-5.03 -0.38,-7.57 2.08,-1.14 -0.02,-3.96 3.05,-4 2.39,-1.51 1.37,-4.54 1.71,-6.85 0.8,-2.58 -4.53,-6.31 0,-6.91 1.04,-0.81 1.22,-3.31 1.37,-4.79 -1.12,-2.38 -6.01,-2.81 -4.1,-6.25 1.84,-3.74 -1.45,-6.92 -1.02,-10.47 0.52,-2.44 0.53,-5.73 -0.14,-7.32 0.64,-2.96 1.19,-6.43 4.34,-7.91 2.35,-0.49 6.23,1.31 6.51,-2.71 0.96,-3.43 -4.73,-4.28 -1.85,-7.71 0.9,-2.93 3.32,-5.66 2.42,-8.87 0.15,-1.92 0.67,-3.87 -0.11,-5.73 -1.01,-2.32 3.73,-0.74 3.99,-3.33 -0.13,-2.25 -0.54,-4.21 1.52,-5.81 2.69,-2.56 2.7,-6.48 0.46,-8.94 2.93,-1.39 1.66,-4.89 3.52,-7.09 1.35,-0.88 5.1,1.96 4.84,-1.65 -0.51,-1.95 -1.78,-6.23 1.75,-4.92 2.24,0.45 5.5,2.66 7.12,-0.07 1.29,-1.53 -2.75,-1.44 -0.66,-3.53 0.95,-1.42 0.76,-3.57 -0.83,-4.28 3.02,-0.52 2.64,2.5 5.35,3.5 2.17,2.8 6.24,2.01 8.45,4.17 1.81,1.26 3.78,2.76 3.22,5.22 1.03,1.27 -0.68,4.42 1.98,4.24 -0.85,2.83 1.11,4.63 2.62,6.51 0.04,2.86 -1.49,6.25 1.05,8.57 1.6,1.29 3.31,4.27 -0.1,3.45 -1.76,0.14 -2.91,-0.92 -2.17,1.42 -0.95,1.6 -5.22,-2.83 -4.14,0.58 0.84,1.65 -2.05,2.45 -1.57,1.13 -2.06,-0.65 -0.53,1.54 0.66,1.49 -0.6,0.2 -1.52,0.57 -0.3,1.82 -1.49,0.26 -4.7,1.58 -1.68,2.64 2.32,2.25 -3.2,4.64 -1.02,7.19 1.54,0.9 4.4,2.82 1.64,4.33 -1.68,2.21 -0.66,5.89 -3.12,7.17 -0.94,1.59 -3.16,2.96 -4.81,3.45 -0.21,1.34 -1.22,2.8 -1.35,4.54 -1.77,-1.72 -2.61,0.56 -2.76,1.85 -1.12,0.81 -2.56,2.13 0.01,2.01 -0.44,1.31 -4.33,0.73 -2.47,3.43 -0.06,0.73 -0.49,2.94 -1.88,1.95 -2.76,-0.24 -2.07,3.37 0.06,3.69 -0.77,1.95 -1.46,4.89 0.24,6.81 -3.74,-1.85 -2.36,2.41 -0.94,3.91 0.18,1.27 -3.07,0.5 -0.73,1.44 0.84,1.85 1.12,4.66 1.43,6.67 -0.32,2.79 5.02,-0.22 4.86,2.53 0.7,1.96 4.04,1.71 4.48,1.82 -3.19,-0.43 -0.28,3.53 1.17,3.32 1.13,1.08 3.55,2.93 0.69,3.17 -0.96,1.32 -2.08,3.54 -3.42,3.71 1.54,1.27 -2.79,1.25 -1.63,-0.68 0.49,-2.21 -4.13,-4.8 -3.64,-1.69 1.43,0.51 0.2,2.21 2.13,2.69 -1.79,0.21 -3.94,-2.79 -5.52,-0.41 -0.59,-1.15 -2.36,-1.3 -1.99,0.35 -2.53,-0.76 -3.68,2.49 -1.03,1.96 1.95,-0.49 4.14,0.17 6.05,0.67 -0.71,2.97 4.28,-1.28 2.88,1.93 -0.14,2.13 -0.95,4.88 -3.12,4.77 0.18,1.44 -0.14,1.56 -2.15,1.24 -1.48,-0.93 -5.69,1.16 -2.24,1.59 0.93,-0.93 4.88,0.08 2.51,0.95 -1.3,-0.74 -2.65,-1.15 -1.6,0.7 1.1,0.49 3.58,1.85 1.37,2.42 -0.48,1.93 2.49,4.34 -0.83,3.78 -1.22,1.55 3.46,2.55 0.79,3.59 -0.59,1.57 1.8,1.83 -0.1,3.07 -0.36,1.71 1.22,3.68 -0.24,4.3 0.8,1.29 0.72,4.62 -0.49,4.51 -0.92,1.99 -0.01,8.09 -3.9,5.74 -0.75,-0.04 -1.2,1.04 -1.28,-0.03 -1.81,1.13 -4.91,0.3 -5.24,2.54 -3.47,0.86 -2.77,5.15 -1.48,7.22 -1.25,2.12 -3.78,-0.71 -5.21,1.44 -0.58,0.2 -1.19,0.28 -1.8,0.28z m21.76,-13.69c-0.6,-1.64 -0.03,-5.51 0.58,-5.62 -0.47,1.84 -0.07,3.79 -0.58,5.62z m11.16,-10.28c-1.47,-2.04 -0.57,-3.97 -1.15,-6.17 0.13,-1.54 3.5,-5.82 3.93,-3.32 -1.59,1.67 -1.23,4.3 -0.42,5.29 -0.56,1.58 -2.33,2.58 -2.36,4.21z m-6.04,-22.62c-0.58,-0.9 -1.01,-2.64 0.37,-3.19 0.51,-2.57 3.62,1.5 0.73,1.06 -0.71,0.44 -0.93,1.57 -1.1,2.14z m3.41,-4.74c-1.71,-0.56 1.15,-0.98 0,0z","name":"Sweden"},"no":{"path":"m283.92,239.69c-2.05,0.82 -1.04,-2.38 -3.04,-0.45 -2.25,0.63 -2.45,-1.19 -0.48,-1.71 1.16,-1.98 -1.94,-1.69 -2.54,-0.89 -1.88,-1.69 -4.73,-3.13 -5.46,-5.54 0.16,-1.17 0.04,-2.84 1.26,-1.53 2.45,-0.31 0.5,-3.28 2.63,-3.15 -0.92,-1.74 3.6,-1.24 2.16,-3.19 -1.49,-0.01 -3.77,0.75 -1.5,-1.08 1.07,-1.87 -4.03,-2.48 -3.95,0.31 -0.43,1.99 -1.31,-1.27 0.03,-1.59 -0.59,-1.71 3.37,0.46 2.3,-1.73 2.11,-0.09 3.7,-3.31 0.62,-1.92 -2.12,1.06 -0.9,-1.62 0.69,-0.69 -1.77,-1.8 3.78,-2.21 0.57,-3.6 -0.56,-4.05 -3.61,3.53 -2.9,-0.4 -0.09,-1.07 2.45,-2.14 0.56,-2.38 1.23,-1.75 0.14,-1.45 -1.12,-1.67 -0.48,-2.03 3.39,-0.54 1.29,-2.62 -1.57,-0.11 -2.3,1.01 -2.92,1.83 0.23,-1.47 -0.96,-1.1 0.71,-1.97 1.17,-0.81 3,-0.92 0.68,-1.9 -1.68,1.41 -3.48,-0.55 -1.63,-1.27 2.35,2.15 4.25,-2.5 6.35,0.43 1.83,1.86 1.2,0.18 2.05,-1.15 2.54,-0.3 -0.18,4.44 3.17,3.6 2.08,-1.21 -0.36,-4.05 -1.72,-4.82 -1.87,-1.19 -2.86,1.17 -4.77,-0.24 -1.71,-0.32 -5.74,2.24 -5.21,-1.12 1.24,-0.84 -1.48,-1.91 1.02,-1.63 0.93,-0.21 -1.41,2 0.86,1.55 1.15,0.42 4.11,-2.74 2.32,-2.56 -1.17,0.24 -3.58,0.07 -2.04,-0.78 0.01,-1.15 -2.86,-0.72 -1.37,-2.6 1.92,-1.21 1.67,-2.06 2.44,-3.76 1.13,0.7 1.55,1.95 2.59,0.89 1.71,1.83 3.67,-1.21 0.78,-1.26 -1.72,-1.7 2.02,-2.98 1.47,-0.81 -0.08,1.94 2.1,2.28 1.49,0.15 -1.54,-0.73 -0.39,-3.26 1.26,-2.04 -0.9,2.54 1.99,2.46 3.2,1.29 -0.57,-1.07 -3.07,-0.84 -2.76,-2.61 -1.93,-0.78 -0.88,-1.18 0.63,-1.75 -0.31,2.53 1.54,0.84 1.46,0.89 0.76,2.66 4.97,0.16 2.35,-0.64 -1.68,1.13 0.97,-2.47 -1.62,-1.35 -1.33,0.1 -1.92,0.19 -0.62,-0.55 0.77,-1.45 -3.3,-3.11 -0.25,-2.56 1.36,2.34 4.5,0.23 4.77,-0.42 0.76,1.21 1.99,4.78 3.9,2.5 -0.19,-1.38 -1.61,-1.13 -0.15,-1.91 -0.52,-0.88 -3.96,-0.82 -1.31,-0.98 2.56,1.07 3.94,-2.68 1.6,-3.22 -2.38,3 -0.29,-2.57 1.23,-0.79 -1.13,2.54 3.47,1.05 2.52,-0.37 0.79,-1.1 1.41,-2.4 1.63,-0.68 1.42,0.16 -1.15,3.34 1.22,2.27 1.23,1.9 3.05,-0.32 1.25,-1.45 2.02,0.81 5.84,0.23 4.08,-2.68 2.55,-0.11 3.44,-2.71 1.89,-3.48 2.7,-0.44 1.04,-4.25 -0.61,-2.47 -0.94,0.99 -4.98,3.53 -3.32,4.59 1.36,-0.14 -3.55,4.36 -3.84,1.11 1.8,-0.4 1.59,-2.97 -0.14,-1.47 -1.54,1.59 -1.58,-0.15 0.05,-0.55 1.29,-0.12 3.11,-2.23 0.74,-1.96 0.49,-1.84 0.69,-1.57 2.55,-2.66 -0.01,-1.8 3.87,-1.75 1.44,-3.46 1.6,-3.11 2.62,3.25 4.94,0.36 -0.07,-0.91 1.83,-2.92 -0.44,-2.32 -1.97,0.37 0.51,-3.35 0.91,-3.77 2.46,-0.4 5.23,-2.14 6.04,-4.52 -0.69,-1.41 -1.97,0.46 -0.84,-1.25 0.83,-2.9 -4.58,-0.06 -1.84,-2.23 2.88,-0.42 -1.2,-4.08 2.2,-4.17 1.93,2.26 1.6,-1.88 -0.02,-2.41 1.79,-0.55 2.5,-1.55 4.25,-0.42 0.51,-2.76 -3.45,-2.33 -4.43,-3.58 -0.26,-3.01 2.59,-3.12 4.58,-3.67 0.29,-0.78 -0.81,-3.13 0.47,-2.48 2.46,0.65 2.45,-2.36 2.11,-3.23 1.27,-0.62 3.06,1.08 2.81,-1.49 0.06,-2.75 -4.88,2.23 -2.7,-0.53 -0.33,-1.84 3.17,-2.65 3.79,-1 0.44,2.38 2.69,0.96 0.74,-0.53 -0.37,-0.19 2.89,-3.12 0.16,-2.12 -1.52,1.62 -2.69,-1.67 -0.67,-0.49 2.18,0.6 1.78,-2.26 0.1,-2.63 1.64,-0.99 1.76,-1.25 3.09,0.31 2.65,0.05 -0.04,3.53 -1.13,3.83 -0.13,2.43 3.49,4.78 1.03,6.94 -1.52,2.38 -4.26,5.02 -2.96,8.1 -1.03,2.23 -5.62,0.34 -3.97,3.87 1.08,2.24 -0.41,4.62 0.29,6.91 -0.21,2.4 -1.5,4.65 -2.48,6.84 -1.89,2.33 -0.64,4.78 1.42,6.24 1.36,2.71 -1.06,4.75 -3.56,3.4 -3.47,0.13 -6.05,3.54 -6.55,6.75 -0.09,2.61 -2.39,4.76 -0.87,7.58 1.7,0.33 -0.26,3.51 0.65,5.09 0.93,2.11 2.11,4.27 1.04,6.66 -1.85,3.6 1.33,5.61 3.87,7.28 0.34,1.26 -0.49,2.52 -0.69,3.78 -4.37,0.5 -1.64,4.45 -0.68,6.73 -0.19,2.39 0.87,5.69 -1.37,7.29 -2.33,-0.08 -2.37,2.05 -2.44,3.42 -2.81,2.64 1.45,6.5 -0.89,9.33 -0.63,-0.51 -0.86,-4.28 -3.41,-3.07 -1.98,0.66 -1.1,-2.02 -2.18,-2.85 0.06,-1.66 0.25,-4.8 -1.34,-6.05 -1.51,0.96 0.6,3.37 -1.47,1.82 -1.6,1.08 1.29,3.05 0.43,4.75 1.82,1.57 -1.36,1.57 -0.61,3.28 -0.57,0.33 -1.78,3.28 -2.33,0.68 -1.69,-2.25 -3.03,0.06 -1.93,1.1 -2.37,0.2 -1.22,2.58 -3.27,2.72 0.26,1.74 0.63,2.15 -0.66,0.4 -0.55,-0.29 -0.31,3.24 -1.72,3.89 -1.13,1.13 -2.53,1.14 -2.96,2.81 -1.25,-1.4 -1.53,-2.14 -2.1,0.08 -0.58,1.07 -1.97,0.9 -2.97,1.19z m1.79,-42.62c-2.02,0.59 -1.81,3.69 -1.92,5.35 2.29,1.58 5.16,-1.56 2.82,-2.47 -2.51,1.62 -0.41,-2.26 1.2,-2.22 -0.69,-0.24 -1.35,-0.63 -2.1,-0.66z m-8.26,-3.48c1.26,1.05 1.96,-0.59 3.75,0.18 2.86,-0.7 0.32,-3.31 -1.23,-1.63 -0.54,1.11 -4.66,-2.16 -3.53,0.83 -0.64,0.74 0.98,1.54 1.01,0.63z m-1.56,-1.31c1.64,-1.54 -2.29,-0.9 0,0l0,0z m-3.39,20.54c-1.15,-1.48 -0.79,-2.31 1.27,-2.09 -0.5,0.65 -0.76,1.45 -1.27,2.09z m20.58,-43.12c1.89,-0.99 1.05,0.09 0,0z m18.74,-19.12c-0.11,-1.35 1.21,-2.72 0.71,-0.65l-0.24,0.29 -0.47,0.36 0,0z m7.46,-19.18c-1.61,-0.55 0.1,-1.14 0,0l0,0z m3.95,-10.61c-1.42,-0.85 2.16,-3.22 0.98,-0.56 -0.23,0.31 -0.59,0.56 -0.98,0.56z m8.03,-3.21c-0.35,-1.4 -4.22,-5.53 -0.69,-3.55 1.98,-0.66 -2.87,-2.41 0.24,-2.21 2.34,-1.07 1.29,3.96 3.81,2.24 0.12,-1.58 -1.95,-2.83 0.76,-2.09 1.98,-2.01 2.51,5.82 -0.36,3.01 -2.2,-1.1 -3.01,1.06 -3.76,2.6z m-5.57,-1.57c-2.14,-0.36 2.05,-0.11 0,0z m-7.93,-1.09c-0.6,-2.04 2.47,-0.64 0,0z m7.12,-4.13c0.59,-2.37 4.58,-1.01 4.01,-4.46 0.66,-1.69 0.95,3.05 2.77,1.99 1.53,1.25 -2.5,3.06 -1.7,0.6 -1.05,-1.01 -2.27,1.66 -3.77,0.7 -0.56,0.22 -0.96,0.7 -1.3,1.17z m7.58,-0.78c-1.19,-2.28 3.86,-0.43 2.34,-2.88 -3.7,-0.04 1.43,-1.56 0.6,-2.56 -2.52,-1.2 0.41,-2.37 1.15,-2.81 0.41,-3.22 -2.85,-1.84 -4.06,-0.47 -1.59,-2.04 2.26,-2.36 2.32,-4.57 0.14,1.33 0.46,2.85 1.65,2.42 0.8,1.52 3.32,1.84 3.24,-0.37 1.68,1.68 2.77,1.67 2.31,-0.48 0.79,-1.17 0.35,-2.79 1.61,-3.02 -0.4,-0.66 -1.42,-3.92 0.2,-3.31 0.95,2.39 -0.14,5.28 -0.89,7.26 2.94,1.88 1.55,-3.57 4.12,-3.05 0.22,-1.76 -3.3,-2.79 -1.17,-4.59 1.11,2.64 2.9,-1.39 2.9,-1.08 0.95,0.44 4.33,3.19 2.86,0.58 0.52,-1.54 -0.4,-5.86 -2.92,-3.36 -3.05,-0.22 1.04,-4.05 2.23,-1.43 1.8,-0.47 3.36,-0.55 3.65,1.78 1.6,2.82 3.68,-1.17 2.1,-1.52 0.07,-0.51 -0.69,-2.47 -0.41,-3.71 -0.86,-0.45 -2.21,1.67 -1.86,-0.59 0.28,-1.23 2.77,-3.11 1.94,-0.75 0.94,1.47 4.41,-0.15 2,-1.03 0.6,-1.49 3.48,0.04 1.97,-2.16 -0.79,-0.71 -2.04,-3.95 0.25,-3.13 1.93,-0.42 3.84,0.45 2.02,2.21 -1.75,1.98 -0.56,3.61 -0.42,5.65 -2.28,2.68 3.1,3.87 2.24,0.45 -0.18,-2.74 0.93,-5.32 1.76,-8.05 1.89,-3.05 -1.06,3.6 0.33,2.81 1.3,-1.62 0.64,3.35 2.9,1.4 2.12,-1.22 -1.68,-4.46 1.77,-4.91 0.72,-1.47 -2.34,-1.18 -0.57,-2.18 -0.51,-2.17 4.79,-1.62 2.39,1.11 -1.65,1.09 -1.95,4.14 -0.56,3.08 -0.4,2.24 2.84,0.85 3.62,0.4 -0.89,-1.13 -1.79,-4.79 0.32,-4.87 0.09,2.52 4.6,3.29 3.84,0.25 1.3,0.25 1.81,0.78 0.68,1.44 0.12,2.4 2.78,-0.68 3.9,1.46 2.08,1.26 -1.72,0.74 -1.03,2.68 -0.51,3.31 -7.08,0.08 -6.25,3.51 1.53,-0.19 4.57,0.06 4.67,1.27 -0.73,2.54 2.28,1.63 2.62,2.01 1.41,2.24 -3.5,3.67 -1.9,6.17 0.12,3.04 -1.51,0.49 -0.35,-1.03 0.73,-2.35 -0.61,-5.22 -3.22,-5.51 -2.52,-0.23 -4.95,-4.8 -6.83,-0.86 -0.98,2.59 -3.07,-0.98 -3.73,2.03 -1.82,2.85 -1.43,6.39 -0.81,9.47 1.12,1.85 1.17,3.38 -0.82,4.1 -0.7,1.31 0.29,4.41 -1.67,2.5 -2.14,-1.69 -5.02,-0.86 -5.85,1.4 -2.54,0.85 -4.72,0.04 -5.34,-2.66 -0.99,-2.14 -5.91,-6.2 -6.14,-1.61 0.57,2.13 -0.39,0.96 -1.13,1.23 -0.7,0.99 -4.96,0.92 -2.14,2.3 2.85,1.94 -1.88,4.5 0.34,5.92 1.59,3.24 -4.12,0.39 -5.68,0.21 -2.06,-1.04 -3.15,2.55 -4.42,0.38 -1.01,-0.36 -2.16,1.19 -2.67,1.07z m-9.01,-1c0.11,-2.56 2.91,0.13 0,0z m-1.13,-1.28c-0.8,-1.29 3.49,-1.49 0.69,-0.52l-0.34,0.34 -0.36,0.18 0,0z m4.3,-0.48c-1.71,-0.47 -0.9,-2.93 0.17,-2.2 -0,0.74 -0.11,1.47 -0.17,2.2z m4.79,-4.64c0.18,-0.78 1.29,-1.07 0,0z m7.64,-3.83c-2.24,0.29 -1.11,-3.47 -0.22,-0.75 0.06,0.35 1.74,0.98 0.22,0.75z m2.2,-0.62c-2.38,-0.91 -2.84,-5.4 0.1,-4.68 0.37,1.54 -0.1,3.12 -0.1,4.68z m-1.72,-6.1c-4,-0.97 3.45,-2.52 1.03,-0.52 -0.42,0.05 -0.59,0.56 -1.03,0.52z m5.27,-4.48c-0.27,-0.28 0.7,-0.67 0,0z m42.25,-2.91c-1.73,0.39 -2.88,-3.16 -0.45,-1.74 1.34,-0.78 2.3,1.96 0.45,1.74z m-35.9,-2.93c0.17,-2 2.33,-0.17 0,0z m1.12,-1.12c1.6,0.69 0.37,-2.16 2.16,-2.14 -0.43,0.5 -1.9,3.93 -2.16,2.14z m20.87,-4.79c0.68,-1.68 0.54,-0.43 0,0z m-9.67,-2.21c-2.58,-0.52 -0.4,-3.09 0.65,-0.8 -0.07,0.3 -0.24,0.8 -0.65,0.8z M319.32,12.08c-0.3,-1.14 -1.45,-2.77 -2.39,-2.03 -1.57,-1.66 3.97,-2.79 -0.11,-4.02 -1.19,0.78 -1.7,1.41 -2.54,-0.32 -1.8,0.29 -3.52,-4 -2,-4.15 0.28,2.4 2.41,-1.85 3.57,0.39 1.62,1.46 1.99,-0.61 1.81,-1.03 1.1,0 2.2,0 3.3,0 -1.65,1.5 0.79,4.98 -1.45,5.97 1.81,0.96 -0.87,3.73 0.84,4.72 -0.27,0.27 -0.64,0.46 -1.03,0.47z M334.56,1.41c-0.71,-0.78 1.26,-0.59 0,0z","name":"Norway"},"ua":{"path":"m458.88,376.43c-1.65,0.13 -4.78,-1.76 -1.5,-2.12 1.11,-0.94 -0.88,-2.9 1.02,-4.06 0.62,-1.77 2.75,-4.95 1.17,-6.55 -2.35,-0.6 0.77,-4.92 0.58,-1.37 1.22,0.09 1.33,-0.46 2.29,-1.4 1.42,1.03 2.11,1.68 2.01,-0.49 0.8,-0.31 0.98,2.31 1.91,0.48 2.09,-0.77 2.07,-2.38 0.02,-2.62 0.48,-3.05 -2.01,-4.08 -4.34,-4.76 -1.03,-1.35 0.14,-4.1 -2.32,-4.58 -0.19,2.48 -3.85,-0.68 -2.94,-2.62 0.58,-1.57 -1.58,-5.77 -2.62,-3.02 -1.32,-0.9 -3.45,-3.78 -4.76,-1.05 -0.61,-1.26 -0.31,-1.31 -2.39,-0.85 -1.59,-0.19 -3.7,-2.91 -5.96,-1.05 -1.9,1.41 -4.52,1.99 -6.34,2.49 -0.3,1.21 -2.98,2.87 -3.26,4.06 0.69,2.88 -3.92,2.94 -5.88,3.36 -1.91,1.06 -2.85,5.5 -5.12,2.22 -2.55,-1.4 -4.85,1.16 -7.45,0.17 -2.78,0.68 -6.22,-1.81 -7.42,1.27 -1.7,-1.79 -4.36,-1.99 -6.08,-3.8 -1.69,-1.99 1.67,-4.76 1.1,-7.32 0.71,-2.08 3.89,1.72 3.03,-0.71 -0.43,-1.86 -2.14,-2.21 -2.09,-4.41 -1.6,-2.52 1.02,-5.01 1.85,-7.4 1.48,-2.09 2.06,-5.46 4.76,-6.09 3,-1.14 0.85,-4.79 0.14,-5.51 2.5,-2.1 -3.76,-3.23 -3.93,-5.84 -0.3,-1.41 -1.88,-4.75 0.96,-3.25 2.78,-0.65 2.08,-4.77 5.31,-4.83 2.44,-2.13 5.65,-1.09 8.41,-2.29 2.86,0.12 5.82,0.8 8.71,-0.13 1.44,0.02 2.96,3.43 4.46,0.67 0.48,-0.61 1.02,3.11 2.27,0.92 -0.68,-2.01 1.68,-0.28 2.33,-1.83 1.72,1.64 3.14,-2.06 4.36,1.19 0.98,-0.83 1.53,-5.36 3.12,-2.13 0.91,1.83 2.9,1.59 3.18,-0.37 1.11,-0.89 4.84,0.77 2.92,-1.35 2.22,-0.55 3.94,4.29 5.74,0.82 -0.53,-2.27 -3.24,-4.21 -1.65,-7.03 0.3,-2.91 3.55,-3.36 5.73,-4.62 2.8,0.98 5.55,-1.1 4.6,-3.99 2.15,-0.59 4.74,-0.01 5.62,-2.79 1.28,-1.72 2.08,2.03 2.83,-0.54 3.15,-1.7 3.09,3.74 6.17,3.78 2.69,0.81 -2.77,1.83 -0.06,3.34 0.97,1.1 0.27,1.92 1.66,2.64 0.13,1.93 0.76,2.76 1.8,0.93 1.75,0.21 3.63,-0.42 4.86,-1.04 1.22,1.6 2.86,1.33 3.58,3.44 0.66,2.12 2.97,6.38 5.86,3.86 0.95,-2.66 2.98,0.62 4.61,-0.26 2.96,0.38 3.76,-3.58 5.99,-4.66 2.15,1.36 3.87,3.07 6.32,3.78 2.39,1.73 1.46,-2.06 1.83,-2.22 2.04,0.83 3.63,-0.35 5.65,0.78 1.64,-1.06 3.29,-0.67 5.4,-0.98 -0.34,2.96 3.78,0.35 3.93,-0.21 -1.54,1.79 2.89,1.91 1.36,4.34 -0.91,1.71 -3.3,4.32 0.42,4.36 1.34,-0.17 -2.51,1.76 -0.87,3.22 0.73,1.16 4.31,0.82 2.94,3.4 -1.12,2.14 2.56,-1.79 1.05,1.32 0.04,1.92 1.74,4.67 -1.56,4.6 -2.59,0.04 -5.57,1.58 -4.88,4.34 -1.93,1.59 -3.46,4.3 -2.04,6.74 1.21,-0.9 1.4,3.27 -0.48,2.33 -2.61,-0.17 -4.34,2.86 -4.47,4.25 -3.32,-0.37 -1.93,5.58 -4.94,3.83 -1.97,0.68 -1.55,3.31 -3.9,2.83 -2.31,2.16 -4.28,4.87 -4.46,8.16 0.05,2.37 -1.89,1.63 -2.69,0.94 -1.43,2.66 1.92,4.83 3.49,6.52 1.72,1.52 4.3,4.21 6.67,2.42 1.12,-1.05 0.41,-2.57 2.09,-1.56 1.41,-0.15 1,-2.82 3.17,-2.37 1.15,-0 0.13,2.98 0.5,4.21 -1.72,0.79 -3.13,2.24 -5.41,1.17 -2.72,0.19 -1.51,3.05 -3.33,4.45 -1.46,1.36 -5.27,2.16 -5.39,5.34 -0.65,2.52 -2.91,5.33 -5.63,3.62 -2.92,-0.52 2.13,-0.53 -0.45,-1.77 -0.6,-1.76 -0.24,-6.9 -3.31,-5.63 -2.51,0.74 -5.09,-2.4 -7.49,-0.19 -0.84,-1.11 2.17,-2.44 2.5,-3.9 1.15,-2.11 4.76,-3.17 5,-5.4 -1.21,-0.47 -1.1,-4.45 -2.98,-2.14 -0.01,2.53 -3.55,-2.55 -3,-0.06 -1.18,1.35 -4.02,3.26 -6.29,3.26 -0.55,-2.41 -5.82,0.8 -2.84,-2.01 -2.07,-2.11 3.13,-0.37 2.51,-2.12 0.43,-0.87 2.54,-3.83 0.04,-2.33 -1.67,2.49 -5.64,0.74 -4.34,-2.2 -3.44,-0.71 0.17,4.67 -3.05,4.35 -0.95,0.4 -1.24,-2.89 -2.18,-0.81 1.19,3.1 -5.65,1.69 -4.31,5.43 -0.19,2.64 -0.71,6.16 -2.65,8.5 -1.92,0.15 -2.28,-0.37 -1.97,1.56 1.06,2.6 -1.47,1.65 -1.44,-0.04 -3.03,0.54 1.86,5.97 -1.63,4.84 -1.69,1.04 -2.76,2.58 -4.85,3.23 -0.33,0.68 0.22,1.06 -0.9,0.94z m8.84,-3.13c-1.24,-0.5 0.31,-1.59 0,0z M480,354.71c-2.02,-0.24 1.4,-0.94 0,0z","name":"Ukraine"},"il":{"path":"m564.91,519.32c-2.79,-0.13 -5.59,-0.02 -8.39,-0.06 1.03,-3 0.55,-6.35 0.36,-9.47 -0.77,-1.89 -0.08,-3.97 0.69,-5.38 -2.21,-3.68 3.62,-1.36 3.34,-4.63 0.16,-2.5 0.5,0.45 0.78,1.3 0.41,1.74 0.97,3.45 0.64,5.26 0.64,4.15 2.85,8.05 2.93,12.32 -0.33,0.17 0.28,0.88 -0.36,0.66z","name":"Israel"},"sa":{"path":"m593.15,519.31c-2.83,-0.62 -5.1,-2.77 -7.77,-3.86 -1.58,-0.98 -5.22,-1.86 -2.02,-3.26 5.2,-3.81 10.77,-7.23 15.26,-11.9 1.43,-2.99 4.63,-3.12 7.49,-3.98 3.73,-1.26 7.76,-1.54 11.57,-0.41 3.34,1.04 6.79,1.79 10.32,1.49 3.1,-0.23 6.16,0.27 9.07,1.36 7.05,2.14 14.23,3.86 21.25,6.06 3.22,1.22 7.13,2.8 10.33,0.7 3.47,-1.54 7.12,-2.66 10.59,-4.19 0,5.98 0,11.96 0,17.94 -28.52,0 -57.04,0 -85.55,0l-0.54,0.05z","name":"Saudi Arabia"},"iq":{"path":"m665.09,505.54c-3.93,-0.14 -7.37,-2.41 -11.2,-3.08 -6.98,-1.9 -13.93,-3.92 -20.88,-5.88 -4.51,-0.55 -9.21,0.46 -13.56,-1.25 -4.06,-1.23 -8.45,-1.67 -12.53,-0.27 -2.28,0.01 -6.14,3.28 -6.23,-0.28 -1.25,-1.52 -3.9,2.58 -3.26,-0.38 2.09,0.09 -1.51,-3.02 -1.67,-4.04 -1.32,-2.57 -5.49,-5.02 -2.13,-7.49 4.5,-5.84 9.16,-11.56 13.6,-17.45 2.04,-3.07 2.39,-7.4 0.02,-10.4 -1.41,-3.28 0.38,-7.66 -2.62,-10.31 -3.09,-2.29 -2.71,-6.73 0.85,-8.16 2.5,-2.92 2.33,-7.04 4.39,-10.19 0.66,-2.04 0.93,-3.47 3.19,-3.89 2.1,-2.75 5.72,-0.13 8.03,-2.44 0.9,-1.04 2.2,-3.85 2.95,-0.99 0.24,2.01 2.47,2.98 2.75,0.39 0.38,-1.99 1.84,-3.41 3.5,-1.73 2.25,0.16 -1.13,2.67 1.73,2.71 2.42,-0.18 1.65,4.3 5.21,2.73 1.14,1.18 1.93,5.76 4.16,3.01 2.6,0.76 5.25,0.47 7.14,-1.59 0.61,0.22 -3.19,2.13 -1.4,3.83 1.09,1.94 5.9,4.19 1.79,5.59 0.41,2.25 -2.38,5.11 0.78,6.65 -2.86,-0.58 -2.74,5.86 0.16,4.24 -0.52,2.48 -0.45,5.39 2.6,5.52 0.99,0.71 1.98,1.43 2.96,2.14 0.34,-1.31 1.06,-1.78 0.88,-0.17 1.65,-0.62 3.99,0.32 4.03,2.59 0.12,1.35 0.91,3.75 2.75,1.76 3.33,-1.46 6.61,1.38 9.97,1.03 2.56,-1.77 4.83,0.86 6.18,2.91 0,13.19 0,26.38 0,39.57 -4.3,1.87 -8.8,3.32 -13.06,5.23 -0.36,0.05 -0.72,0.08 -1.09,0.08z","name":"Iraq"},"az":{"path":"m625.84,392.01c-2.29,-1.74 -6.12,-1.39 -7.67,-4.17 -2.87,-0.9 2.82,-3.1 1.5,0.21 -0.29,2.16 0.66,-0.38 1.38,-0.86 1.98,0.67 2.99,-0.38 4.14,-1.97 0.78,0.36 1.17,3.12 3.09,2.25 0.41,1.86 5.4,3.6 1.25,3.88 -1.24,0.15 -2.44,0.52 -3.69,0.66z m9.25,-4.53c-1.22,-1.31 -1.37,-1.74 -0.58,-3.22 -0.7,-1.79 -4.05,0.28 -2.18,-2.45 -0.71,-3.07 -3.86,1.6 -5.74,-0.73 -1.12,-1.04 -4.8,-0.64 -2.24,-1.72 1.66,-3.91 -3.46,-4.05 -5.96,-4.45 -3.06,-0.54 1.31,-0.13 -0.04,-1.79 -1.74,-0.11 0.76,-3.32 -2.15,-2.78 -1.13,-2.07 -3.77,1.24 -3.43,-1.3 -3.83,0.78 -1.14,-4.07 1.25,-3.79 1.55,-0.11 2.45,2.19 4.64,1.11 1.17,-0.47 1.66,-2.32 3.53,-1.24 4.04,0.44 2.81,-5.63 -0.82,-5.09 -1.19,-0.23 -4.57,-0.92 -2.6,-1.97 -1.03,-3.22 2.59,-2.79 4.29,-1.55 1.8,0.76 4.71,-0.66 4.29,1.94 2.3,1.27 5.96,-0.02 6.83,-2.57 -0.51,-2.81 0.78,-5.44 1.5,-8.17 0.77,-1.87 3.93,1.21 5.57,1.75 2.04,2.28 4.63,3.86 7.4,4.84 2.72,2.9 5,-2.29 8.05,-0.66 2.42,0.7 -1.69,0.86 -2.16,1.8 -1.58,1 -0.94,2.98 -2.64,4.05 -0.87,2.65 2.35,4.7 1.48,7.28 0.01,2.24 2,3.06 1.53,5.18 2.05,2.31 -2.94,0.21 -1.67,3.07 0.41,2.71 2.06,5.63 2.66,7.96 -1.4,1.58 -3.89,-2.8 -4.72,-0.12 -0.51,-2.33 -5.01,-0.05 -2.24,-2.75 1.89,-2.25 -0.89,-2.79 -2.14,-3.4 -0.39,-1.7 3.13,-2.19 0.43,-2.98 -2.55,-2.17 -6.8,-1.82 -7.18,2.01 -1.56,2.2 -2.45,4.87 -3.2,7.25 -1.02,1.28 -1.42,2.9 -1.76,4.47z","name":"Azerbaijan"},"ir":{"path":"m679.21,458.81c-1.85,-0.64 -2.96,-4.67 -5.07,-2.4 -2.51,1.13 -4.99,-0.69 -7.5,-0.94 -1.54,-1.25 -4.65,1.4 -4.88,0.3 -0.35,-2 -1.76,-5.08 -4.31,-4.59 -0.55,-2.48 -2.8,0.93 -4,-1.28 -1.15,-1.36 -3.82,-0.5 -2.7,-3.18 1.2,-2.24 -1.18,-2.93 -1.92,-2.92 -0.76,-2.14 0.85,-1.8 1.93,-2.95 -0.87,-1.54 -2.25,-2.23 -1.18,-3.98 1.41,-1.22 -0.93,-2.74 1.62,-3.12 2.22,-2.84 -3.32,-4.02 -3.44,-6.68 1.23,-0.62 3.69,-3.96 0.62,-3.5 -2.16,1.88 -4.6,2.34 -7.4,1.61 -2.13,2.68 -1.52,-4.01 -4.35,-3.02 -2.59,1.12 -1.74,-3.71 -4.6,-2.9 0.47,-2.81 -2.6,-2.62 -3.34,-4.74 -3.51,-0.37 -2.73,-5.88 -6.79,-4.9 -2.43,-0.23 0.88,-4.74 -1.15,-6.42 -2.63,1.81 -2.65,-3.09 -4,-4.32 -2.26,0.51 -1.17,-4.01 -3.82,-4.01 -1.08,-1.34 3.43,-0.98 2.24,-3.41 -0.62,-1.73 -1.46,-4.27 1.42,-2.93 2.06,1.49 5.14,2.91 7.63,3.88 2.25,1.24 5.18,-0.04 7.5,-0.74 2.07,-1.71 5.07,-2.61 4.75,-5.97 2.3,-2.33 1.71,-5.53 3.7,-8.09 0.98,-2.61 2.58,-5.68 5.71,-3.44 1.82,0.32 -1.95,3.66 1.08,3.95 4.06,-0.35 -2.73,4.32 1.52,4.83 1.27,-1.49 2.59,2.44 3.8,0.15 1.45,1.58 3.99,1.1 4.87,0.71 1.82,2.85 3.68,6.92 7.62,6.9 3.17,0.36 5.34,-2.56 8.13,-3.02 2.01,0.9 4.99,2.01 6.34,2.88 -0.02,22.74 0.03,45.49 -0.03,68.23z","name":"Iran"},"ge":{"path":"m581.92,380.27c-2.26,-0.5 1.41,-3.83 -0.72,-5.4 -1.82,-2.3 -4.05,-4.17 -5.45,-6.77 -1.72,-2.18 -4.46,-0.36 -5.95,-2.58 -2.48,-1.15 -5.99,1.77 -7.69,-0.38 -1.24,-0.61 -3.4,-1.34 -1.11,-2.52 2.92,-1.18 5.31,-0.74 8.31,-1.17 2.62,-0.64 4.81,0.81 7.27,-1.05 1.64,-1.03 2.03,-2.53 4.37,-2.32 3.09,-1.55 5.23,0.93 8.34,0.23 1.97,-0.34 3.8,-1.06 3.76,1.37 3.33,1.16 4.09,-3.43 6.09,-4.97 1.82,1.19 3.56,0.44 3.29,-1.84 2.38,1.1 4.89,0.94 6.98,-0.29 0.1,2.19 0.6,4.52 3.44,3.9 1.82,0.87 6.7,-2.08 4.44,1.62 -1.04,4.09 6.18,1.33 6.51,4.88 -0.55,2.71 -3.63,-0.63 -4.78,1.93 -2.42,2.07 -3.95,-2.25 -6.59,-0.28 -2.88,0.84 -1.75,4.15 -4.11,5.26 -2.15,1.64 -6.02,2.97 -7.99,5.72 -1.4,1.55 -3.24,0.61 -4.57,1.11 -0.32,-2.7 -4.41,-0.39 -5.08,-2.59 -2.74,0.39 -1.4,4.41 -4.46,3.55 -2.08,-0.04 -2.63,2.5 -4.3,2.58z","name":"Georgia"},"sy":{"path":"m570.98,505.1c-2.37,-0.06 -4.22,-2.23 -6.66,-1.9 -1.76,1.54 -0.95,-3.61 -2.17,-4.66 0.26,-2.1 3.06,-4.25 2.48,-6.23 -2.86,0.37 -0.12,-3.18 1.61,-2.81 1.41,-1.1 -2.08,-2 0.23,-3.24 2.46,-1.85 0.82,-6.41 -2.32,-5.73 1.74,-2.54 -3.41,-1.48 -4.52,-0.5 -2.16,-1.45 -1.71,-4.59 -2.2,-6.89 -0.72,-2.13 -3.63,-2.2 -2.69,-4.95 -1.91,-3.07 4.61,0.44 2.96,-3.37 1.96,-1.34 -0.54,-4.12 2.56,-4.37 1.92,-1.95 -2.9,-3.08 -1.96,-5.67 -0.17,-2.68 3.53,-1.88 4.07,-0.24 2.8,-1.4 6.26,-2.87 7.96,-6.08 1.77,-3.87 6.01,-0.57 8.96,-1.32 4.89,-1.98 9.3,-5.28 12.15,-9.78 2.06,-3.09 5.52,-4.42 8.88,-5.51 3.15,-0.62 4.71,-4.01 6.68,-5.54 2.16,2.06 -0.35,4.49 -0.71,6.75 -0.34,2.94 -3.64,3.54 -4.67,5.93 -0.77,2.72 0.96,5.34 2.92,7.06 1.91,2.86 0.25,6.61 2.05,9.52 1.43,2.7 2.07,6.08 0.11,8.71 -2.41,4.04 -5.84,7.35 -8.54,11.19 -6.92,8.84 -13.8,17.72 -20.31,26.87 -1.64,2.62 -4.19,2.66 -6.86,2.76z","name":"Syrian Arab Republic"},"tr":{"path":"m494.91,482.2c-2.64,-0.83 -6.61,0.7 -6.69,-3.38 -0.28,-2.26 -4.06,-2.7 -3.32,0.14 -2.13,0.72 -2.01,-4.36 -4.24,-2.06 -1.1,1.64 -1.71,4.09 -2.75,1.3 -0.06,-0.7 3.87,-0.84 1.58,-2.85 -2.66,-0.75 -4.9,2.05 -7.56,2.3 -3.22,0.12 2.63,-2.09 -0.16,-3.58 -1.02,-1.26 -2.59,-1.78 -3.85,-0.25 0.8,-2.14 -2.11,-2.59 -0.3,-4.42 0.7,-2.91 -3.46,-4.14 -4.72,-3.08 -0.35,-2.13 -2.41,-1.66 -2.94,-0.12 -0.96,-0.52 -4.49,-1.13 -1.65,-1.67 1.95,-1.12 -0.35,-1.93 -0.64,-2.3 -0.1,-2.91 1.76,1.21 2.44,2.3 1.21,0.53 0.61,-1.54 2.32,-0.91 2.14,0.31 3.08,-4.19 0.9,-2.3 -2.98,0.71 -3.35,-2.88 -0.63,-3.63 1.42,-2.31 -2.41,-1.49 -2.02,-3.47 -1.48,-1.26 -3.08,-1.7 -1.12,-3.61 1.88,-4.06 -3.41,-1.44 -4.89,-0.21 -3.22,2.13 -1.41,-2.71 -2.53,-4.43 0.27,-1.5 2.4,-1.02 1.65,-3 1.08,-2.79 3.49,-3.54 5.85,-4.95 1.33,-0.2 3.18,2.13 5.06,0.5 2.19,-0.32 0.53,-4.12 2.21,-2.66 -1.01,2.78 3.65,-0.5 5.07,-0.34 1.73,-0.22 7.01,-0.13 5.15,-2.97 -1.48,-0.21 -3.18,0.39 -0.99,-0.95 1.96,-1.62 4.19,-2.4 6.66,-2.8 2.77,-0.54 1.2,-2.91 -0.89,-1.86 -1.93,1.45 -3.4,0.81 -4.38,0.32 -3.58,0.35 -2.31,-4.79 0.81,-3.52 2.71,0.01 5.57,-0.39 7.64,-2.28 2.46,-0.32 5.31,1.16 7.39,-0.69 2.9,-0.41 1.41,-4.52 4.23,-5.54 2.71,-2.98 4.61,-6.84 8.39,-8.68 2.29,-1.78 4.29,-3.83 7.39,-4.02 3.16,-0.7 6.47,-1.22 9.26,-2.97 -0.18,-2.01 2.92,-3.03 2.12,-0.46 1.09,2.77 5.37,3.22 7.04,0.72 1.14,-1.37 -0.27,2.45 1.16,0.14 2.04,-1.94 2.88,3.79 5.57,2.83 1.27,-1.86 4.62,-3.78 5.67,-1.09 1.67,-0.99 4.1,0.27 5.52,-0.17 -0.07,-1.45 1.44,-1.93 0.76,-0.72 3.48,0.31 7.66,-0.08 9.71,-3.32 2.34,-1.18 4.33,-4.18 7.15,-3.36 2.71,-0.07 6.67,-0.67 7.5,-3.83 1.38,-2.88 4.81,-4.34 5.49,-7.63 0.34,-3.02 3.69,-0.01 3.89,-2.79 0.79,-1.71 6.06,-0.8 5.2,-2.54 -0.27,-1.98 1.64,-2.11 0.91,-0.61 1.97,-1.13 4.24,-0.33 5.11,0.95 0.95,1.76 2.34,-1.7 3.43,0.93 2.07,0.94 4.5,1.8 3.64,4.81 0.12,2.83 2.56,6.38 5.64,4.35 1.45,-1.61 6.05,-1.12 6.12,-0.28 -2.87,1.25 2.28,4.65 -1.45,5.76 -2.31,0.86 -1.86,1.74 0.02,2.55 2.07,1.41 1.16,4.02 3.6,4.69 1.23,1.57 1.59,5.71 3.8,4.2 0.43,2.37 -1.79,7.52 2.74,6.05 2.64,-0.44 0.94,3.97 3.94,4.02 3.58,1.02 -1.74,2.3 -1.12,4.76 -1.2,0.98 -0.5,-3.85 -3.12,-2.67 -1.98,1.2 -2.57,4.14 -5.61,3.29 -2.88,-0.31 -4.84,1.72 -7.02,2.7 -0.69,1.88 -0.86,5.21 -2.91,2.44 -2.75,-0.22 -2.61,4.46 -5.58,4.92 -2.98,1.72 -6.75,1.93 -9.15,4.66 -2.61,2.66 -4.36,6.14 -7.61,8.16 -2.25,1.32 -4.52,3.36 -7.26,3.28 -3.54,-1.52 -7.49,-0.78 -9.08,3.03 -1.68,2.28 -5.43,4.75 -7.39,2.82 -3.82,-1.14 -4.64,3.62 -2.75,6 0.73,1.14 2.5,1.57 0.17,2.12 -3,0.1 0.83,3.76 -2.09,4.07 1.59,1.89 -1.39,2.48 -1.35,0.31 -1.32,-1.73 -3.85,-3.07 -1.43,-5.18 3.46,-2.09 -0.87,-8.48 -3.12,-4.45 -0.21,1.09 -4.52,4.06 -1.07,3.29 -0.14,0.32 -3.7,3.62 -5.39,1.57 -3.14,-1.5 -6.7,0.91 -7.75,3.93 -2.31,1.12 0.64,5.77 -2.52,4.44 -0.89,2.68 -3.25,3.27 -5.84,4.06 -1.96,1.06 -3.83,3.65 -6.37,2.47 -2.84,-1.55 -5.07,-4.65 -8.7,-4.14 -2.94,-0.38 -6,-0.94 -8.9,-0.06 -3.48,-0.29 -3.26,3.57 -2.85,5.62 -0.19,1.75 1.15,3.5 -1.34,2.67 -2.13,0.36 -2.94,2.88 -4.85,3.38z m-22.48,-0.92c1.54,-1.56 1.67,0.46 0,0z m4.91,-2.51c-0.79,-0.93 0.97,-1.15 0,0z m-7.81,-0.87c-2.21,-0.79 -0.04,-1.14 0.54,-0.39 -0.12,0.2 -0.29,0.4 -0.54,0.39z m-17.07,-35.78c-2.05,-1.66 3.84,-4.8 1.02,-1.64 -0.17,0.27 -1.7,3.54 -1.02,1.64z m-2.5,-4.63c-2.27,-0.95 2.99,-3.59 0.8,-5.77 -1.18,-2.59 4.67,-3.55 1.64,-6.24 -1.25,-1.27 -3.7,-1.75 -1.56,-3.41 0.31,-2.43 2.93,-0.92 3.7,-3.21 1.99,-1.8 4.08,2.49 6.12,-0.22 3,-2.82 1.8,3.03 4.59,3.75 2.54,1.72 5.71,1.31 8.59,1.46 1.59,1.71 -1.83,5.17 -3.31,2.87 -1.59,0.83 -4.21,-0.49 -5.46,2.07 -2.23,0.06 -4.36,0.17 -4.68,3.06 -0.43,2.55 -2.87,5.66 -5.23,3.75 -1.9,0.1 -3.3,1.78 -5.2,1.9z","name":"Turkey"},"am":{"path":"m631.96,389.85c-1.96,-0.78 -2.5,-4.05 -4.9,-3.4 0,-2.98 -2.99,-2.85 -3.89,-0.42 -0.72,0.59 -2.05,-1 -2.73,0.47 -1.44,-4.24 -3.82,2.15 -6.08,-0.34 -2.43,-1.36 -5.05,-0.13 -7.33,0.88 -1.6,1.02 -2.24,-1.35 -3.25,-2.19 -0.22,-2.63 -0.35,-6.8 -3.95,-6.8 -1.56,-1.33 3.34,-2.22 3.67,-4.1 2.01,-1.81 4.84,-2.17 7,-3.75 -1.93,-0.72 2.92,-0.35 0.29,0.72 0.12,2.73 3.55,-1.6 5.25,0.33 2.07,0.17 -1.51,3.12 1.09,4.06 1.57,1.97 7.78,-0.09 6.04,3.56 -1.81,0.88 -2.21,2.81 0.36,2.27 2.62,0.26 4.73,3.06 7.3,0.67 1.25,-0.38 -1.56,2.52 0.95,2.4 1.37,0.14 2.22,0.32 0.58,1.07 -0.16,1.55 3.78,3 0.58,4.04l-0.53,0.37 -0.44,0.16 0,0z","name":"Armenia"},"cy":{"path":"m527.35,491.44c-2,0.03 -5.42,-2.87 -2.34,-3.85 0.27,-2.84 4.77,-0.45 3.78,-3.88 -1.1,-2.02 2.82,-0.4 4.03,-1.67 3.21,-1.08 5.34,-3.84 7.9,-5.9 -1.85,1.69 -5.66,5.67 -1.55,7.09 -1.16,0.96 -4.02,1.69 -3.88,3.92 -1.79,0.94 -4.14,2.55 -4.75,3.95 -1.18,-1.33 -2.1,0.23 -3.19,0.34z","name":"Cyprus"},"ie":{"path":"m160.13,300.45c-1.94,-0.73 -5.41,-0.29 -5.93,-1.1 2.68,-0.96 1.02,-3.47 -1.27,-2.29 -2.17,-0.03 4.61,-0.27 1.86,-1.87 -1.29,0.35 -5.82,0.84 -4.6,-0.88 0.33,-2.41 5.15,0.07 4.57,-2.91 -1.5,-0.99 -3.62,0.6 -3.81,-1.26 1.2,-0.91 6.26,2.54 3.91,-0.67 0.38,-1.38 3.44,-1.82 5,-1.34 1.1,0.96 5.65,0.21 3.16,-0.84 -0.11,-2.83 -2.54,-0.03 -3.01,-0.47 -0.23,-0.23 -3.43,-0.5 -1.1,-1.34 2.22,-1.01 0.54,-4 2.82,-3.42 2.56,1.02 3.91,-3.17 0.52,-2.46 -1.68,0.14 -2.56,-0.23 -2,-1.83 -0.18,-2.01 -5.12,-1.21 -3.94,-2.82 2.15,0.5 2.19,-2.65 4.57,-1.69 2.67,-0.16 1.13,-2.7 -0.21,-3.26 0.29,-1.31 0.02,-3.18 -0.75,-3.28 2.65,-0.82 4.91,0.87 5.93,2.56 1.46,-1.86 3.2,1.45 5.23,1.05 -1.45,-1.4 -1.04,-3.03 1.32,-2.78 1.21,-0.78 -0.05,1.72 1.32,2.45 1.11,1.84 4.55,5.05 6.16,2.17 -0.49,-1.92 2.26,-1.77 1.43,0.13 0.94,1.15 1.06,2.27 0.8,3.26 0.63,1.48 4.47,-0.64 2.75,0.86 -2.34,0.42 -0.05,3.2 -0.77,4.83 0.46,1.62 -0.08,2.98 -1.28,2.32 1.02,2.41 1.46,5.54 -0.48,7.61 -1.25,2.01 -3.34,4.38 -4.14,6.02 -2.56,-0.85 -5.09,-0.34 -7.67,-1.06 -1.16,0.41 -0.62,2.52 -2.3,1.42 -1.5,0.14 -2.91,2.49 -3.4,0.19 -2.29,-1.05 -1.04,2.27 -2.69,2.29 -0.11,0.95 -1.6,-1.12 -2.01,0.4z m13.73,-33.46c2.33,-2.06 -0.9,-1.95 -2,-2.14 -1.29,-0.53 -2.55,-1.96 -0.25,-1.08 1.89,0.69 2.47,-1.66 2.15,-3.1 -1.16,-1.71 7.03,-1.16 4.23,1.31 -0.31,1.85 2.66,-0.08 1.09,1.63 -0.53,1.73 -5.09,0.69 -2.83,2.72 -0.77,0.31 -1.61,0.36 -2.38,0.64z m6.45,-5.05c0.02,-0.88 0.61,0.23 0,0z","name":"Ireland"},"gb":{"path":"m182.64,325.46c0.06,-1.95 -4.47,-2.09 -0.74,-2.3 2.67,-0.61 3.94,-3.31 6.49,-4.14 2.12,-0.77 1.4,-4.5 3.94,-3.31 1.45,-3.67 5.43,-1.45 8.06,-0.26 2.91,0.6 2.6,-3.72 5.07,-4.06 1.35,-0.1 4.35,-3.93 1.42,-2.57 -1.86,1.99 -5.05,0.84 -6.82,2.84 -2.27,-0.51 -2.72,-5.62 -5.77,-3.31 0.24,-2.37 -1.53,-4.27 -3.69,-2.44 -0.87,0.75 -2.94,0.79 -1.58,-0.17 0.16,-1.27 -3.6,-0.88 -1.52,-2.98 1.52,-0.74 3.44,0.29 4.82,-1.36 2.13,0.95 4.49,-1.92 5.83,-3.38 1.68,-2.26 0.05,-8.36 -3.37,-5.58 -1.46,1.33 -0.19,-1.41 0.97,-0.91 1.28,-1.84 2.91,-2.79 5,-2.8 1.2,0.32 4.62,-0.54 5.23,2.01 0.71,1.84 0.61,0.28 0.62,-0.81 -0.49,-1.45 0.01,-1.88 0.83,-1.63 -1.44,-2.21 1.58,-2.99 1.67,-4.6 -1.45,-0.49 -1.63,-2.14 0.09,-1.51 0.69,-1.16 0.79,-2.38 1.37,-3.56 -0.63,-2.27 -3.62,2.01 -2.38,-1.12 -0.36,-1.35 -2.39,0.41 -1.46,-1.51 -2.08,-2.31 0.12,-6.19 3.07,-5.98 2.74,-1.73 -0.83,-1.86 -2.08,-2.37 -0.92,0.48 -3.28,2.29 -4.42,1.19 -1.32,1.2 -1.79,-3.4 -3.43,-0.83 0.32,2.13 0.14,1.46 -0.76,0.01 -1.33,-0.68 -2.66,-1.39 -1.32,-3.18 1.13,-2.26 5.13,-4.6 2.33,-7.17 0.52,-2.42 1.47,-4.31 0.99,-6.83 -1.19,-2.25 -5.91,3.7 -3.96,0.19 -1.17,-1.95 1,-2.29 1.54,-3.39 -1.93,-1.31 3.92,-1.92 1.97,-3.06 1.93,-2.14 -1.4,-1.12 -1.91,0.17 -2.64,0.37 -2.78,2.95 -5.17,3.25 1.64,-1.88 1.56,-3.32 4.36,-3.1 0.45,-1.67 -5.98,-1.25 -1.81,-1.19 1.82,-0.7 -1.08,-3.69 1.83,-2.58 2.2,1.18 2.55,-1.86 1.62,-2.28 3.21,-0.32 0.94,-5 -0.12,-6.67 -1.49,-3.19 1.62,1.59 1.66,-1.31 -0.16,-0.99 3.11,1.17 2.06,-1.21 -1.02,-1.19 -0.29,-1.17 0.73,-0.82 0.07,-1.49 0.01,-1.71 1.64,-1.31 1.56,-1.15 -0.74,-2.21 0.86,-3.26 -0.88,-3.08 1.49,-0.59 1.87,-0.27 0.74,0.04 0.92,2.92 2,0.79 2.21,-0.9 6.43,0.18 7.86,0.3 -1.51,1.12 -1.16,3.83 -3.76,4.28 -1.25,1.24 -5.25,2.21 -4.45,4.19 2.02,-0.77 1.46,0.73 0.51,0.2 -2.65,-1.31 -3.91,3.83 -0.65,3.27 1.6,-1 4.76,-1.27 6.96,-0.43 2.15,0.77 9,0.4 6.36,4.13 -2.17,1.32 -1.95,4.3 -3.79,5.88 -1.36,2.24 -3.73,4.99 -6.67,3.85 -2.54,0.88 -0.66,2.52 1.1,1.38 0.78,-0.5 3.15,3.35 0.84,1.99 -2.07,-0.28 -3.16,1.31 -5.18,1.63 -0.02,2.53 4.56,1.95 5.82,1.47 2.3,1.2 3.8,3.55 4.55,5.85 2,2.23 0.13,5.79 1.35,8.49 -0.45,3.02 1.26,4.86 3.81,6.01 1.66,1.49 2.34,4.19 3.57,5.37 -2.57,1.95 1.1,5.12 0.44,6.31 -2.04,-0.08 1.34,3.78 1.3,5.11 0.78,2.24 -5.08,2.32 -2.09,4.71 1.56,2.69 3.3,0.05 4.83,-1 2.51,1.1 6.37,1.79 6.61,5.25 -0.28,2.6 -1.71,7.67 -4.87,6.84 -2.14,0.29 1.39,3.23 -1.35,2.01 -1.64,-1.62 -4.38,2.64 -1.7,1.39 1.98,0.5 -1.21,2.23 -2.35,1.41 -3.04,0.03 -0.52,3.18 1.11,2.57 2.13,-1.55 -0.82,1.67 1.85,1 1.37,0.01 4.16,-1.13 2.4,1.04 0.18,1.94 -3.04,1.77 -3.79,3.01 -3.03,-0.26 -5.14,2.46 -7.81,0.22 -2.14,-0.87 -5.12,1.06 -5.71,-1.04 -0.97,0.35 -1.61,-1.39 -2.37,0.11 -0.34,-1.96 -3.3,-2.15 -1.9,0.13 -1.76,0.29 -4.97,-1.2 -5.38,0.98 -2.03,-0.7 -3.26,-0.69 -4.99,-2.14 -2.67,-1.4 -6.68,-1.13 -6.68,2.71 -0.68,3.61 -3.23,0.34 -4.72,-0.57 -1.81,-0.09 -4.28,-1.13 -5.91,0.19 -1.52,-0.34 -2.18,1.47 -2.78,2.5z m18.76,-70.13c1.65,1.54 3.03,-0.19 0.57,-0.92 -0.47,-0.23 -0.39,0.68 -0.57,0.92z m-3.12,31.93c0.55,0.53 0.27,0.88 0,0z m-1.17,-10.07c0.02,-1.53 3.39,-4.02 1.66,-1.22 -0.39,0.58 -0.96,1.08 -1.66,1.22z m-10.63,-1.73c-1.59,-0.31 -2.08,-2.29 -3.03,-0.36 -1.91,-0.73 1.49,-2.2 -1,-2.29 0.13,-2.31 -2.8,-4.88 -3.79,-2.04 0.08,3.32 -3.97,-0.09 -4.6,-1.78 -1.85,-2.46 4.1,-0.54 2.7,-3.31 3.07,0.55 2.59,-4.32 5.36,-2.92 1.06,-1.19 2,-1.61 3.15,-1.03 2.23,-0.98 4.88,1.21 3.52,3.35 -0.19,2.26 3.15,1.24 0.87,3.27 -2.06,1.44 -0.04,2.03 1.25,1.47 1.84,1.95 -0.91,4.87 -2.77,3.75 -0.28,0.8 -0.67,1.84 -1.67,1.88z m10.61,-7.92c-1.67,-0.09 0.88,-0.41 0,0z m-4.29,-6.97c1.08,-0.83 2.3,-4.85 2.33,-3.8 -0.86,1.14 -0.52,3.62 -2.33,3.8z m2.73,-6.13c0.35,-1.24 0.97,-0.17 0,0l0,0z m-3.97,-25.03c-1.05,-1.04 1.79,-1.33 0,0z m1.85,-1.48c-0.51,-1.01 -1.32,-1.32 -0.4,-1.6 -1.54,-1.3 0.12,-2.32 1.22,-0.9 1.22,-0.53 0.35,-2.59 1.9,-1.78 0.84,-0.86 3.02,-1.98 1.27,-0.28 -1.41,1.61 -1.17,5.41 -3.42,2.95 -0.74,0.32 -0.1,1.35 -0.58,1.61z m38.33,-20.76c-1.93,-1.65 4.17,-0.89 0.99,-0.51l-0.47,0.12 -0.53,0.39 0,0z","name":"United Kingdom"},"ch":{"path":"m292.05,389.98c-1.12,-2.03 -1.49,-3.96 -4.14,-4.68 0.24,-1.27 0.28,-4.19 -2.02,-2.48 -2.76,1.07 -0.98,6.19 -4.8,5.6 -1.34,-2.05 -4.35,2.18 -5.85,-0.49 -0.66,-1.9 -1.54,-2.82 -1.22,-5.23 -0.26,-1.58 -4.49,-1.34 -5.35,0.35 0,0.96 -0.92,3.04 -1.36,2.14 2.08,-0.65 -0.4,-3.99 1.78,-5.21 1.94,-0.57 2.18,-1.6 2.3,-3.5 2.42,-0.82 3.23,-3.53 5.4,-5.02 0.92,-1.36 3.51,-0.53 3.7,-1.93 2.51,-0.36 5.31,-0.33 7.48,-0.01 1.57,-0.63 0.5,-2.03 0.36,-2.23 1.31,-1.57 1.36,1.33 2.5,0.98 1.1,0.96 4.91,-0.68 5.97,2.04 0.36,1.7 -2.95,6.33 1.28,6.08 1.9,0.87 4.09,3.47 5.78,0.3 -0.28,1.18 -0.17,4.33 -0.42,4.42 -1.87,-2.39 -4.17,0.79 -2.27,2.33 0.4,3.64 -0.7,-1.85 -2.69,-0.06 -1.62,2.46 -2.25,-1.46 -3.43,-1.76 -2.43,0.76 -0.07,4.33 -2.78,4.97 -1.02,0.89 -0.72,2.33 -0.22,3.4z M275.63,370.8c0.49,-1.83 2.92,0.14 0.45,0.04l-0.53,0.11 0.08,-0.14 0,0z","name":"Switzerland"},"at":{"path":"m338.89,381.72c-2.92,-0.37 -5.68,-0.8 -8.68,-1.29 -3.41,-0.44 -7.47,0 -10.13,-2.59 -0.49,-1.79 -2.01,-0.99 -0.74,-2.9 -1.54,-1.34 -4.15,1.63 -6.36,0.74 -2.58,-0.56 -3.71,1.14 -4.67,3.02 -0.77,-1.61 -4.07,-0.58 -3.15,-2.45 -2.02,-1.72 -4.43,3.34 -5.34,-0.45 -2.71,0.05 -3.32,-2.5 -1.76,-4.48 -0.11,-1.92 0.65,-1.26 2.03,-1.24 0.77,2.34 2.91,4.54 4.57,1.3 -0.46,-2.13 1.09,-1.56 2.51,-1.62 1.01,3.44 4.52,1.32 6.34,0.3 1.07,-2.1 5.55,-0.39 5.96,-2.32 1.02,0.88 3.01,0.37 3.69,0.59 0.18,3.89 5.07,0.73 2.69,-1.53 -0.2,-1.43 -1.39,-3.39 -2.11,-5.03 1.93,-1.47 5.36,-2.58 5.54,-5.05 1.88,0.9 2.55,-1.98 3.13,-1.73 2,1.9 4.33,0.91 6.33,0.45 0.7,-1.97 2.92,-2.39 2.31,-5.03 1.96,0.92 4.91,0.17 6.97,1.75 1.9,2.39 4.37,-0.77 6.11,0.38 1.43,-0.03 2.77,1.31 1.21,2.94 -0.45,2.79 3.86,4.35 2.35,7.1 1.97,3.48 -4.51,0.08 -4.56,2.79 1.63,1.11 3.27,1.96 0.42,2.95 -0.98,1.81 1.97,4.01 -0.88,5.49 -1.01,1.14 -3.1,1.64 -2.24,3.63 -2.75,-0.79 -4.87,2.27 -7.7,0.89 -1.89,0.31 -2.39,2.61 -3.87,3.38z","name":"Austria"},"cz":{"path":"m335.18,355.05c-3.65,-0.41 -4.96,-4.57 -8.41,-5.66 -1.31,-1.75 -2.19,-2.91 -4.32,-3.66 -1.8,-1.56 -2.64,-3.53 -1.6,-5.57 -0.16,-1.57 -4.02,-3.53 -3.2,-4.17 1.42,3.2 2.44,-2.24 4.26,-2.25 1.35,1.3 3.09,-0.63 3.77,-1.12 1.58,-1.86 4.18,-2.74 6.59,-3.91 1.63,-0.69 3.11,-2.35 4.59,-0.56 2.65,1.13 2.61,-4.69 4.17,-1.06 1.38,1.66 3.64,0.69 5.11,2.36 0.67,1.75 5.33,-1.17 2.84,1.24 -1.67,2.06 2.09,2.81 2.61,4.74 2.09,1.86 2.12,-0.93 3.96,-1.42 0.43,-1.39 -1.9,-2.7 0.65,-1.55 1.23,1.3 3.29,0.96 4.4,0.53 -3.27,0.95 2.17,5.16 3.09,2.65 2.93,0.44 4.53,2.63 6.07,4.63 -2.15,1.71 -4.92,3.04 -5,6.15 -1.22,2.56 -3.35,3.75 -6.24,3.67 -1.85,1 -3.16,2.67 -5.05,0.79 -2.11,1.83 -4.69,0.96 -6.9,-0.42 -1.92,-1.1 -4.07,-0.45 -5.85,-0.93 -0.34,2.31 -2.03,3.48 -2.87,5.34 -1.07,-1.47 -1.28,0.34 -2.66,0.17z m-0.68,-28.45c-2.43,-2.03 2.32,0.24 0,0z","name":"Czech Republic"},"sk":{"path":"m364.44,362.94c-2.39,-2.37 -6.56,-2.63 -7.73,-6.02 -0.46,-2.43 0.4,-6.56 3.64,-6.16 3.23,0.29 4.91,-3 5.9,-5.48 0.17,-1.96 3.95,-5.08 5.19,-3.02 2.43,1.82 3.49,-4.97 4.66,-0.89 1.56,0.35 1.91,0.85 1.91,2.52 2.64,1.02 3.89,-1.84 5.57,-3.22 1.58,-0.07 4.26,1.88 5.1,-0.34 0.99,-1.59 4.74,-1.57 6.47,-0.13 1.28,2.35 6.24,0.73 4.22,4.32 -1.5,2.17 -0.53,7.67 -4.43,6.22 -0.53,-3.18 -3.88,-1.31 -5.83,-0.46 -2.77,-2.02 -4.98,0.68 -5.07,3.51 -1.08,0.67 -2.09,-0.14 -2.29,1.79 -1.29,1.17 -3.96,-2.16 -4.46,1.1 -0.72,2.43 -5.78,-0.07 -5.66,3.66 1.11,2.54 -4.04,1.94 -5.84,2.51 -0.44,0.04 -0.88,0.07 -1.32,0.1z","name":"Slovakia"},"hu":{"path":"m369.77,387.01c-2.75,-0.58 -5.39,-1.37 -7.78,-2.73 -2.27,-2.63 -5.77,-3.91 -7.5,-7.04 -1.21,-1.85 -2.06,-2.65 0.1,-3.74 1.43,-1.97 -1.64,-4.55 1.32,-5.48 2.04,-1.7 -3.3,-3.48 -0.09,-2.71 2.81,1.04 3.86,-1.91 3.11,-3.93 1.93,-1.05 3.43,2.43 5.44,2.58 3.24,-0.18 6.53,-0.68 9.48,-2.09 -2.94,-1.84 0.68,-3.88 2.85,-2.99 1.75,-0.27 1.26,-4.31 3.33,-2 2.26,0.8 3.01,-1.99 4.8,-2.5 0.41,-2.48 1.52,-4.92 4.25,-3.08 1.93,-0.18 4.28,-2.95 5.05,0.14 2.1,1.7 4.8,-1.81 6.38,0.84 2.12,-0.07 1.45,3.23 3.34,1.35 3.46,3.21 -4.18,3.49 -4.55,6.38 0.35,2.87 -2.65,4.72 -2.5,7.52 0.37,3.17 -2.46,5.43 -2.51,8.54 0.01,3.02 -4.16,0.17 -4.1,3.12 -3.14,1.57 -7.09,0.21 -9.73,1.82 -1.24,2.36 -3.12,1.16 -4.53,3 -2.57,0.36 -3.31,3.42 -6.16,3.01z","name":"Hungary"},"lt":{"path":"m397.76,280.99c-1.28,-1.32 -1.63,-4.58 -4.11,-3.7 -1.13,-2.07 -4.01,-0.28 -3.26,-3.14 1.62,-3.48 -2.4,-7.19 -5.64,-5.13 -2.28,0.26 -5.13,-1.48 -6.05,-2.17 -0.51,-2.23 -1.53,-3.51 -2.2,-5.4 -1.37,-2.68 1.24,-5.63 3.5,-7 1.88,-1.44 4.85,-0.65 6.6,-1.37 0.56,-1.26 2.33,2.09 2.82,-0.31 2.06,-0.86 4.97,0.1 6.62,-0.3 1.76,-0.28 3.35,-0.61 3.78,-2.83 1.19,2.4 3.3,3.12 5.7,2.26 2.79,0.52 4.16,3.86 7.04,4.08 1.64,1.42 -0.82,5.15 2.39,4.69 0.41,1.84 -3.75,0.79 -2.82,3.52 -2.05,1.6 -2.93,3.79 -1.88,6.23 -0.12,2.13 -0.68,3.69 -2.75,4.26 -0.43,1.13 -0.04,1.82 -1.97,2.11 -0.51,1.51 -1.38,2.09 -2.67,3.35 -1.72,-1.32 -3.41,0.53 -5.09,0.87z m13.27,-5.67c-0.11,-1.17 -1.77,-2.09 0.31,-1.22 0.43,0.34 0.36,1.19 -0.31,1.22z","name":"Lithuania"},"lv":{"path":"m375.49,257.31c-1.25,-2.79 -1.57,-6.54 -0.19,-9.24 2.63,-2.07 -0.8,-6.67 2.34,-8.6 1.69,0.07 4.11,-4.27 4.4,-1.32 2.44,1.48 4.79,3.19 5.76,5.78 2.55,1.96 6.17,0.07 7.13,-2.71 1.39,-2.75 -1.14,-5.3 -1.86,-7.82 1.34,-1.86 3.66,-3.57 5.64,-3.47 0.08,-0.9 1.63,1.08 2.69,0.67 1.72,0.06 3.13,2.25 4.97,3.22 2.21,0.36 3.53,-2.11 5.72,-1.12 1.76,-0.72 2.78,1.38 4.4,2.33 -0.55,1.5 -1.61,1.77 0.06,2.4 -0.17,1.1 -0.46,3.72 1.44,2.57 1.53,2.66 6.04,5.32 2.65,8.5 -1.42,1.56 -0.49,4.51 -3.48,3.69 -2.28,0.64 -3.94,4.9 -6.51,1.93 -2.03,-2.26 -5.06,-3.95 -7.91,-2.78 -1.1,-1.49 -3.6,-4.26 -4.46,-0.94 -1.47,1.77 -5.35,0.57 -7.87,1.17 -1.87,0.26 -2.16,0.89 -3.44,-0.06 -2.37,1.98 -6.1,0.17 -8.37,2.54 -1.6,0.14 -2,4.17 -3.11,3.25z","name":"Latvia"},"md":{"path":"m454.92,374.42c-0.33,-2.09 -1.86,-4.78 -2.23,-7.4 0.38,-3.56 0.07,-7.47 -2.96,-9.91 -3.2,-3.43 -7.96,-5.44 -9.93,-9.93 -0.24,-2.34 -6.31,-3.34 -2.39,-4.03 2.67,0.33 3.73,-3.48 6.57,-2.14 1.32,0.97 1.83,2.54 3.78,1.18 -0.02,0.82 2.42,2.73 2.56,0.37 1.33,-1.44 3.96,3.6 4.43,1.55 1.2,-1.55 0.65,3.03 1.22,3.93 0.07,2.32 4.57,4.13 4.42,2.59 -0.43,1.81 0.64,4.31 3.01,4.64 2.61,-0.41 1.35,4.32 2.84,4.34 -0.24,1.12 -3.35,-2.1 -2.5,0.78 -1.04,0.18 -2.3,-2.64 -2.02,-0.03 -1.22,0.21 -2.31,-1.71 -3.62,0.36 -1.34,1.85 1.39,3.73 0.77,5.48 -0.5,2.25 -2.95,4.34 -2.23,7.32 -0.82,-0.46 -1.48,0.35 -1.72,0.91z","name":"Moldova"},"ro":{"path":"m414.71,404.53c-2.94,-0.37 2.3,-2.82 -0.89,-3.86 -1.36,-0.38 -6.12,-1.72 -3.63,-3.39 3.62,-1.4 -2.29,-3.42 -3.82,-3.63 -1.25,0.73 1.78,4.33 -1.06,3.46 -0.47,-2.42 -4.24,0.23 -4.49,-2.27 -1.54,0.07 -1.87,0.1 -0.31,-0.74 0.46,-1.41 -2.15,-1.17 -0.71,-2.27 0.07,-4.02 -6.25,-1.24 -6.86,-4.86 0.56,-2.93 -2.25,-4.23 -4.45,-5.46 -1.23,-1.35 3.36,-1.23 3.59,-2.71 4.37,0.45 2.54,-4.6 4.68,-6.55 1.28,-2.95 0.7,-6.3 2.76,-8.97 0.62,-2.75 1.58,-5.21 4.69,-5.79 2.24,-1.25 2.4,-5.8 5.34,-3.67 2.44,-0.6 4.8,0.38 7.17,-0.21 2.51,-1.94 3.7,1.15 5.91,1.18 2.03,-1.31 2.68,-4.39 5.67,-3.96 2.31,-0.28 4.86,-1.95 4.49,-4.32 1.75,-2.97 4.98,-1.01 6.29,1.29 1.93,4.74 7.06,6.72 10.28,10.39 2.93,2.37 2.34,6.09 2.36,9.35 0.53,2.52 1.69,4.86 1.92,7.13 1.82,1.67 4.12,3.74 6.83,2.36 1.37,-1.24 4.51,-5.35 6.51,-2.84 1.18,1.97 2.1,5.63 -1.2,6.33 -1.85,1.04 -1.42,-3.67 -3.88,-1.61 -1.51,1.92 1.84,2.51 -0.11,4.51 -0.61,2.57 2.04,-0.86 0.82,1.98 -2.28,2.63 -0.38,5.59 -0.04,8.5 -1.15,2.51 -5.2,-0 -6.02,-1.11 -1.09,1.46 -1.67,-0.92 -3.54,0.54 -1.82,0.49 -3.31,-1.46 -5.44,0.01 -3.08,1.35 -6.52,2.81 -8.17,5.95 -1.31,3.55 -4.97,3.29 -8.01,2.77 -2.75,-0.48 -4.92,1.71 -7.44,1.75 -2.74,-0.25 -5.83,-1.37 -8.31,0.42l-0.52,0.24 -0.43,0.06 0,0z","name":"Romania"},"bg":{"path":"m419.98,434.43c-0.77,-1.6 0.33,-5.03 -1.67,-6.74 -1.14,-2.34 -7.05,-2.04 -4.41,-5.19 -0.49,-1.45 -2.46,-4.37 -1,-5.23 2.16,0.54 4.75,-3.78 2.92,-5.59 -2.57,-1.55 -5.66,-2.78 -5.98,-6.24 -0.97,-2.47 2.74,-1.99 1.69,-4.32 2.08,-0.06 3.2,1.11 1.22,2.59 -0.15,3.28 3.83,0.6 5.65,0.71 2.58,-0.64 5.13,0.94 7.65,0.08 2.61,-1.18 5.46,-2.28 8.27,-1.01 3.32,0.37 5.6,-2.51 6.93,-5.13 2.16,-2.35 5.29,-3.61 8.27,-4.56 1.69,0.75 3.92,0.92 5.2,0.32 0.77,1.61 2.46,-1.39 3.17,1.07 1.58,2.18 6.09,-1.71 5.26,2.45 0.21,2.63 -4.48,0.38 -4.02,3.94 -1.88,1.85 1.39,5.32 -0.17,7.14 -1.24,1.25 -1.7,3.03 -2.93,4.26 0.82,1.66 4.27,-0.37 3.64,2.02 1.44,0.86 3.71,1.89 1.23,2.18 -1.9,3.08 -4.18,-1.08 -6.49,0.5 -1.52,1.95 -4.37,1.58 -4.82,4.55 -1.37,1.04 -4.43,1.49 -2.91,4.13 3.08,3.26 -3.78,2.7 -5.13,4.68 -1.95,0.62 -4.22,-2.41 -5.93,-0.29 -2.04,-2.63 -5.18,-1.43 -7.46,0.15 -2.06,2.52 -5.54,1.17 -7.76,3.47l-0.43,0.06 0,0z","name":"Bulgaria"},"al":{"path":"m396.5,458.88c-2.16,0.08 -0.81,-2.55 -2.74,-3.41 -0.91,-2.13 -5.81,-2.06 -5.48,-3.81 2.36,-1.04 -1.62,-3.19 -0.48,-4.99 0.36,-1.26 2.66,-2.2 0.57,-3.3 1.39,-2.49 -3.57,-5.96 0.77,-6.52 2.37,-0.03 -1.92,-0.89 -0.55,-2.51 -0.14,-2.15 -3.24,-0.23 -2.21,-2.9 -1.48,-2.28 0.07,-4.41 1.36,-6.71 1.01,3.42 4.23,-2.13 4.66,1.78 1.21,1.69 4.6,1.07 3.88,4.25 -0.33,2.87 -0.02,5.6 0.51,8.19 0.21,1.77 2.38,5.51 4.15,4.74 1.69,-0.32 2.5,4.45 0.05,5.02 -0.86,1.75 -0.27,5.37 -3.24,5.56 -2.01,1.26 1.3,2.75 -0.81,3.98l-0.23,0.5 -0.19,0.12 0,0z","name":"Albania"},"ee":{"path":"m378.18,234.33c-0.29,-1.42 0.77,-0.85 0,0z m29.34,-1.46c-2.55,-0.18 -3.15,-3.15 -5.39,-3.23 -0.21,-1.76 -1.21,1.44 -2.27,-0.65 -2.12,-1.63 -4.52,1.21 -6.27,2.48 -1.26,-0.67 1.67,-5.98 -1.81,-5.74 -1.1,1.92 -1.82,2.36 -3.83,1.3 -0.08,-2.54 -3.43,-2.95 -2.01,-5.67 0.96,-2.03 -3.8,-2.6 -0.62,-3.95 1.35,-0.61 4.23,-0.97 2.3,-2.67 2.82,-0.9 4.5,-2.4 7.47,-2.41 1.66,-0.56 1.5,-2.75 3.42,-1.67 0.91,-1.72 4.64,0.07 6.63,-0.66 2.13,-0.1 4.26,0.22 6.03,-1.29 -1.43,2.67 -1.02,5.84 -2.24,8.62 2.11,2.2 1.2,5.64 3.15,7.83 0.24,0.52 1.89,2.24 1.35,2.38 -0.73,0.83 -0.81,2.27 -1.35,2.68 1.66,2.85 -2.28,0.25 -2.89,1.26 -0.29,0.68 -0.83,1.4 -1.65,1.38z m-28.89,-1.28c-1.29,-0.43 -2.59,-1.4 -0.92,-2.29 -0.22,-0.67 0.59,-1.5 0.99,-0.78 -0.53,-2.4 4.69,-3.37 4.19,-1.27 0.07,2.48 -3,2.5 -4.26,4.33z m1.02,-7.14c-0.54,-0.34 -0.96,-2.14 -1.01,-2.27 0.8,-1.29 0.79,-1.32 2,-0.55 1.89,-0.4 1.35,1.06 -0.17,0.69 0.83,0.84 0.55,2.1 -0.81,2.14z","name":"Estonia"},"lb":{"path":"m557.2,501.39c0.58,-2.8 0.32,-5.88 1.17,-8.53 -0.92,-2.02 1.77,-3.87 0.09,-5.88 -0.28,-2.6 2.65,-3.83 2.23,-6.01 1.03,-0.93 3.35,-2.1 2.42,0.09 1.64,0.57 3.96,0.89 3.49,3.25 -1.11,1.34 -2.61,3.51 -1.84,4.51 -2.48,0.69 -2.89,3.8 -1.53,5.08 -0.04,2.15 -2.43,3.34 -3.12,4.26 0.57,1.87 -1.28,3.1 -2.91,3.25z","name":"Lebanon"},"ad":{"path":"m225.99,427.08c-4.4,2.06 -0.81,-5.33 0.49,-0.98l-0.2,0.53 -0.29,0.45z","name":"Andorra"},"sm":{"path":"m321.66,413.68c0.71,-2.83 1.59,1.21 0,0z","name":"San Marino"},"mc":{"path":"m273.92,416.64c-2.8,-1.65 2.23,-1.64 0.39,-0.13l-0.39,0.13 0,0z","name":"Monaco"},"lu":{"path":"m268.7,344.38c-1.34,-0.37 0.48,-2.79 -0.9,-3.99 -1.47,-1.94 2.76,-5.38 1.98,-1.49 0.37,1.78 4.79,2.33 1.84,4.09 -0.47,1.66 -1.49,1.22 -2.93,1.39z","name":"Luxembourg"},"fr":{"path":"m292.72,444.55c-0.12,-2 -3.86,-0.94 -2.75,-2.99 -2.34,-0.62 -0.11,-2.51 0.75,-3.57 0.35,-0.55 -3.76,1.07 -1.24,-0.63 0.32,-1.34 -2.6,-2.05 -0.51,-3.01 -0.25,-1.14 -1.13,-1.51 -0.02,-1.71 -0.89,-2.66 3.14,-1.71 3.48,-3.51 1.94,0.96 2.98,-0.2 2.33,-2.11 1.79,-2.18 -0.99,3.51 1.02,4.43 1.2,3.29 -2.09,6.35 -1.33,9.73 -0.95,0.89 -1.15,2.64 -1.75,3.36z m-58.87,-15.16c-2.27,-2.01 -5.59,-0.28 -7.2,-2.87 1.48,-2.11 -2.14,-2.13 -2.92,-2.19 -1.78,-1.34 -3.82,-2.36 -5.67,-3.53 -1.54,0.58 -1.53,2.27 -3.51,1.46 -1.54,0.07 -2.66,-0.59 -3.93,-0.35 -0.8,-2.33 -2.93,-1.69 -4.53,-2.09 -1.06,-2 -2.81,-3.32 -5.06,-3.18 -1.57,-1.15 -1.33,-1.7 -1.45,-3.5 -1.23,-0.24 -3.44,-0.96 -1.02,-1.55 3.04,-3.75 2.96,-8.84 4.5,-13.21 0.85,-1.4 2.99,0.68 2.08,-1.85 -1.2,-1.06 -2.14,-0.84 -1.15,-2.81 1.1,-1.59 0.63,-5.99 2.35,-6.1 1.89,1.55 0.82,3.87 1.88,5.79 -0.05,2.01 2.7,3.12 1.93,0.38 -2.25,-2.11 -0.08,-5.11 -2.23,-7.23 -1.52,-1.07 -0.74,-1.21 -0.52,-2.39 -2.12,-1.87 0.87,-2.79 -0.3,-5.08 -0.91,-0.78 2.06,-4.15 0.31,-2.92 -1.7,1.58 -2.8,-0.99 -4.34,-1.54 -1.66,-0.48 -1.34,-4.04 -3.07,-5.27 1.45,-1.37 2.03,-3.5 -0.17,-4.21 -1.28,-1.38 -1.85,-1.7 -0.64,-3.42 1.28,-3.05 -5.85,-0.88 -2.14,-2.3 -0.4,-2.26 -4.49,0.28 -3.4,-2.31 -0.36,-2.67 -3.56,0.62 -4,-1.74 -2.28,-0.09 -2.42,-4.2 -4.81,-1.84 -1.78,1.57 -0.33,-2.39 -2.37,-2.56 1.59,0.62 3.87,-0.51 1.92,-2.13 1.84,1.1 2.88,-0.7 0.65,-1.01 0.13,0.05 1.59,-2.28 -0.46,-1.5 -1.34,1.45 -4.19,-0.07 -1.73,-1.25 1.3,-0.76 2.79,-0.81 2.95,-0 1.4,-0.85 2.87,-0.97 3.66,0.09 0.65,-1.02 3.21,1.35 3.19,-1.26 2.43,-1.62 2.22,2.03 2.47,2.06 1.69,-2.75 1.86,2.19 3.17,3.11 1.26,-0.74 3.83,-3.16 3.73,-0.14 1.62,2.63 2.82,-1.65 4.78,0.11 0.83,-0.47 4.32,1.06 3.36,-0.07 -1.65,-1.65 -2.42,-4.02 -1.35,-6.19 0.76,-2.4 -2.42,-4.6 -1.19,-7.04 1.21,1.81 5.2,-0.98 3.31,2.03 -0.19,2.43 1.93,3.76 3.68,2.84 2.59,0.56 5.12,3.56 7.68,1.11 2.16,-0.17 1.32,-1.39 0.53,-2.64 1.54,-3 5.41,-2.03 8.05,-3.16 1.81,-0.67 4.58,-1.88 5.31,-3.4 -1.75,-1.03 0.04,-4.18 -0.3,-6.15 0.44,-3.1 4.2,-2.36 6.44,-2.8 0.98,0.77 1.49,6.24 4.58,4.17 1.46,-0.35 0.7,4.82 3.67,3.62 -0.14,3.07 3.12,1.53 4.18,2.82 -0.64,1.44 -0.56,1.83 -0.25,2.78 -0.88,2.67 3.93,2.4 4.83,0.49 0.88,1.69 -1.1,3.55 1.66,3.61 2.55,0.29 2.49,4.49 5.21,3.37 2.65,1.52 6.43,-0.33 7.5,3.53 0.45,0.9 2.96,3.41 2.01,0.96 0.54,-1.16 0.79,1.42 0.5,1.49 1.47,-0.3 3.92,-1.81 4.53,0.32 1.92,0.28 7.08,0.84 3.22,2.94 -2.39,2.02 -1.66,5.55 -3.51,7.88 -0.4,2.45 -0.29,5.21 -1.25,7.67 -1.85,0.33 -4.65,-1.22 -4.94,2.33 0.2,1.24 -1.59,3.49 -3.64,4.12 -0.97,0.48 0.4,3.01 -1.75,3.44 -3.21,1.4 -0.53,4.69 -2.87,6.5 1.14,2.08 4.46,-0.29 3.63,-2.44 2.64,-1.79 4.27,0.65 3.32,3.02 0.97,1.33 2.7,2.42 0.16,3.24 -1.7,2.56 4.01,4.8 1.9,7.11 -0.78,1.84 -6.17,0.54 -3.47,3.57 1.68,1.38 4.39,3.16 1.43,4.85 -1.24,3.13 2.12,7 5.6,6.15 2.64,-0.69 -0.62,4.28 -2,4.64 -1.17,-0.72 -4.03,-3.03 -4.38,0.05 0.55,1.28 1.71,2.84 -0.72,3.26 -2.25,0.54 -0.87,3.61 -3.15,2.9 -1.62,1.27 -2.66,0.82 -4.12,0.04 -1.35,1.82 -1.33,-1.1 -3.38,-0.87 -2.84,0.75 -0.64,-3.44 -1.53,-2.84 -0.63,0.89 -3.09,1.3 -1.09,0.56 1.49,-2.74 -3.49,-2.8 -2.54,-0.31 -2.24,0.5 -1.46,-2.79 -1.57,-3.36 -1.08,1.05 -1.96,2.65 -0.52,3.91 -1.04,-0.28 -1.31,-2.83 -3.36,-2.08 -2.5,-1.7 -5.52,-1.71 -6.96,1.2 -2.68,0.79 -5.03,2.02 -5.69,4.77 0.13,1.89 -0.47,3.75 0.65,5.49 -1.42,-0.84 -3.32,-0.38 -4.33,0.88z","name":"France"},"li":{"path":"m296.51,373.48c1.45,1.4 -0.83,3.11 -0.11,0.58 0.04,-0.19 0.08,-0.38 0.11,-0.58z","name":"Liechtenstein"},"nl":{"path":"m269.04,328.72c-2.4,0.87 -0.84,-4.47 0.3,-2.01 0.8,0.23 0,1.75 -0.3,2.01z m-0.07,-3.78c0.6,-3.32 -5.02,-1.6 -5.27,-4.51 -0.12,-2.74 -3.14,1.24 -2.06,-1.29 -0.99,-0.79 -2.22,1.2 -3.22,-0.45 -0.9,0.27 -1.14,2.68 -1.08,0.81 0.68,-2.17 -1.32,-2.87 -3.53,-3.17 2.34,0.11 2.58,-2.07 3,-3.35 2.89,-2.17 4.59,-5.57 4.61,-9.18 -0.19,-3.29 4.06,-0.89 5.3,-3.43 1.14,-2.76 4.56,-2.87 7.04,-3.65 2.21,-0.91 4.28,0.51 5.07,2.25 2.56,1.19 -1.21,4.26 -0.45,6.54 -1.09,0.31 -2.87,-0.17 -2.83,1.81 -1.46,0.58 -1.58,0.91 0.09,0.93 3.35,-0.05 2.57,4.59 -0.38,4.58 -2.35,0.19 2.62,1.25 -0.12,2.19 -2.05,1.07 -3.43,-1.35 -5.33,0.59 -1.38,2.19 2.97,4.39 0.94,6.8 -0.8,0.77 -1.72,1.2 -0.27,1.66 -0.44,0.36 -0.82,1.02 -1.51,0.87z m-14.99,-3c-0.33,-1.2 -5.07,-0.99 -2.8,-1.87 1.14,1.13 2.85,1.22 3.93,0.81 -0.06,0.56 -0.57,1.04 -1.13,1.06z m0.03,-2.7c-1.37,-0.05 -4.02,-1.94 -1,-1.43 0.49,-0.33 2.23,1.73 1,1.43z","name":"Netherlands"},"ba":{"path":"m376.75,425.9c-1.98,-1.6 -4.83,-1.93 -6.41,-4.05 -1.67,0.65 -0.52,0.38 -0.54,-0.48 -1.09,-2.31 -4.84,-2.74 -4.68,-5.7 -3.06,-0.33 -4.09,-3.71 -6.36,-5.29 -1.63,-1.9 -4.06,-2.19 -3.82,-4.87 -1.04,-2.44 -3.06,-3.46 -4.21,-5.63 -0.7,-2.04 0.84,-4.87 2.73,-2.36 1.15,1.84 2.68,1.49 3.04,-0.59 0.75,-2.51 2.6,0.54 3.87,-1.57 1.61,1.11 3.76,0.32 5.58,0.98 1.67,0.69 2.8,0.63 3.98,-0.64 1.28,0.32 2.43,1.79 1.94,-0.33 2.34,0.41 3.8,0.76 5.26,2.77 1.51,0.59 4.58,-2.46 3.33,0.9 -1.48,2.62 -1.55,6.27 2.2,6.4 -0.16,1.48 3,1.5 0.7,2.04 -2.41,-1.63 -1.77,2 -0.04,2.77 1.22,1.2 1.32,2.1 -0.54,1.97 -0.8,1.43 -2.82,1.15 -3.55,0.9 0.15,1.26 1.77,2.85 -0.32,2.67 -1.22,1.98 -1.74,4.24 -3.03,5.92 0.2,1.48 1.25,2.79 0.88,4.2z","name":"Bosnia and Herzegovina"},"si":{"path":"m332.96,393.93c-2.25,0.07 3.69,-1.78 0.33,-3.25 -2.05,-0.05 -1.39,-3.19 -2.18,-3.5 2.21,-1.77 -0.2,-2.6 -1.36,-3.11 1.58,-3.35 4.85,-1.64 7.7,-1.58 3.3,1.9 3.73,-4.65 7.02,-2.86 2.43,0.1 4.45,-1.78 6.8,-1.33 -0.07,-1.25 0.26,-3.28 1.79,-1.82 0.58,1.34 2.29,2.96 -0.11,2.97 0.07,3.17 -6.44,2.43 -4.97,6.04 0.89,1.87 0.62,3.86 -1.85,3.13 -2.37,0.85 1.33,6.35 -2.15,4.17 -1.76,0.02 -2.78,0.57 -3.81,-1.48 -1.83,-1 -1.59,2.92 -3.88,1.76 -1.41,-0.46 -2.2,0.65 -3.34,0.85z","name":"Slovenia"},"mk":{"path":"m403.18,443.19c-1.28,-0.84 -1.77,-0.72 -3.14,-0.4 -2.27,-2.33 -2.73,-5.58 -2.85,-8.64 -1.26,-2.44 2.39,-0.6 1.33,-3.13 0.23,-2.42 3.43,-3.85 5.06,-1.8 1.38,1.18 -1.35,-3.28 1.33,-2.73 2.83,0.6 4.67,-2.89 7.49,-1.79 1.51,2.18 4.77,1.95 5.79,4.72 1.29,2.63 0.37,4.95 -1.12,7.01 -1.05,2.69 -5.33,0.11 -7.05,2.7 -0.97,2.88 -4.09,3.39 -6.84,4.04z","name":"Macedonia"},"hr":{"path":"m375.93,426.49c-1.17,-0.64 -1.03,-0.77 0,0z m-5.08,-2.9c-0.73,0.27 -1.25,-2.08 0,0z m-2.28,-1.81c-3.23,-1.04 -5.06,-4.7 -8.53,-5.08 -1.74,-1.23 -4.13,-1.36 -6.19,-0.38 -0.54,-3.7 -5.51,-3.9 -7.37,-6.92 -1.68,-2.86 2.16,-0.38 2.91,-1.43 -1.18,-2.05 -5.06,-2.05 -5.62,-5.05 0.07,-2.45 -0.12,-5.23 -2.77,-6.41 -1.46,-3.02 -5.35,-1.33 -4.75,1.8 -0.1,1.22 -1.81,1.15 -1.78,3.18 -0.42,-0.02 -2.43,-3.25 -2.8,-4.77 0.5,-1.41 -1.33,-2.59 0.97,-1.85 1.93,-0.05 3.32,-1.26 5.49,-0.87 1.75,-0.28 1.19,-2.99 2.55,-0.54 1.83,1.65 2.98,0.1 5.14,0.7 1.63,-0.59 0.6,-2.35 1.05,-3.41 -2.13,-1.84 3.84,-0.57 2.93,-3.42 -1.1,-1.62 -1.88,-3.53 0.82,-4.04 1.16,-1.26 3.54,-0.9 3.14,-3.3 3.59,0.79 6.21,3.61 8.62,6.19 2.91,-0.18 5.33,2.55 8.31,1.69 2.32,0.95 5.06,-5.2 5.33,-0.4 0.15,1.9 1.2,2.64 1.4,4.46 1.55,0.76 2.24,0.37 1.04,2.01 -0.17,1.69 1.08,1.86 -0.44,2.99 -1.42,0.96 -2.53,-3.66 -4.34,-2.06 -2.98,-1.4 -5.14,1.63 -8.13,0.38 -2.22,0.17 -4.52,-1.28 -6.44,-0.34 -1.8,-0.84 -3.54,0.72 -3.99,2.64 -1.51,-1.59 -4.97,-3.78 -5.35,0.02 -1.16,3.92 2.99,5.58 4.38,8.58 -0.13,1.41 -1.05,2.05 0.83,2.59 2.9,1.5 4.8,4.21 6.98,6.53 2.65,1.59 3.98,4.49 6.78,6.28l-0.16,0.23 0,0z","name":"Croatia"},"dk":{"path":"m311.37,281.37c-1.81,-0.13 -3.63,-2.95 -0.99,-2.75 0.71,0.89 2.21,0.72 1.2,1.27 0.93,0.68 0.95,1.07 -0.21,1.48z m2.12,-1.04c1.35,-0.18 -0.34,1.13 0,0z m0.84,-0.24c-0.07,-1 -2.35,-2.59 0.16,-1.62 2.08,0.28 -0.51,1.71 -0.16,1.62z m-17.99,-0.84c-2.31,-0.88 -6.15,-0.22 -4.5,-3.71 0.81,-2.84 -1.69,-4.3 -3.84,-4.7 -1.19,-2.12 0.77,-2.92 1.79,-2.7 1.1,-1.9 -0.71,-4.04 -1.69,-4.68 0.35,-1.37 0.2,-5.41 0.68,-4.97 1.59,3.78 6.34,-5.25 4.96,-0.56 0.24,2.86 4.45,-0.07 2.01,-1.61 0.04,-2.03 -0.06,-3.57 2.27,-2.05 0.18,-1.79 3.93,-0.45 2.6,-2.4 -2.36,-1.07 -4.97,1.4 -7.44,0.51 -0.9,0.41 -2.06,0.6 -1.03,-0.46 2.89,0.74 6.43,-0.56 7.07,-3.76 0.42,-1.7 4.2,-3.59 3.75,-0.9 2.01,1.66 -0.21,4.73 -1.55,6.01 0.4,0.87 0.32,2.52 0.39,3.1 -1.16,1.34 2.36,4.31 4.12,3.09 1.32,1.67 -1.85,5.56 -2.69,2.65 -3.21,0.21 -0.77,4.74 -2.69,6.35 -0.74,1.02 -5.24,-0.82 -2.77,1.37 1.61,1.85 3.89,1.32 5.37,0.39 1.04,1.32 2.66,0.54 1.88,1.61 2.2,1.44 0.71,6.32 -1.89,3.8 -0.99,-0.9 -2.97,-2.42 -3.55,-4.38 -0.8,-2.14 -4.39,1.02 -3.28,1.06 2.19,-0.86 -0.04,1.87 1.38,2.68 -1.87,1.01 -1.25,3.06 -0.58,3.35 -0.3,0.27 -0.55,0.59 -0.78,0.92z m18.96,-2.29c-1.92,-0.02 -1.04,-3.7 -3.92,-2.81 -3.51,-0.09 0.22,-3.64 -2.76,-5.02 -1.79,-1.21 3.2,0.15 3.13,-2.28 0.04,-2.46 4.91,0.23 1.92,1.9 1.06,2.45 3.33,-0.76 2,-2.36 -0.51,-1.34 -2.25,-2.02 0.21,-1.96 2.33,-0.37 1.21,1.23 1.29,2.13 2.22,2.03 -1.98,3.78 -1.88,4.86 2.05,0.87 2.04,2.76 -0.28,2.66 -0.97,0.83 0.11,2.08 0.29,2.88z m-25.23,-19.54c-1.89,-1.51 1.09,-5.6 1.21,-4.99 -1.52,1.21 -1.11,3.3 -1.21,4.99z","name":"Denmark"},"ru":{"path":"m558.98,364.3c-2.56,-0.91 -4.97,-2.14 -7.36,-3.43 -2.39,-1.15 -4.94,-2.06 -7.59,-2.35 -2.81,2.28 -5.5,-0.94 -8.06,-1.85 -1.23,0.3 0.78,2.15 -1.52,1.8 -2.42,-0.25 -3.69,-3.69 -6.4,-2.82 -1.31,0.16 -4.41,0.18 -1.55,-0.66 1.64,-0.7 0.81,-3.34 -0.75,-1.74 0.37,-1.63 2.93,0.94 3.87,-1 1.25,-0.31 2.74,-1.24 3.63,-1.06 1.16,-2.32 -3.44,-3.39 -1.08,-5.92 0.57,-0.81 -0.94,-4.08 0.12,-2.72 0.39,2.37 2.24,1.11 1.25,-0.78 -1.26,-3.41 3.86,0.53 3.04,-2.81 -1.97,-1.81 -4.99,-1.7 -7.55,-2.54 -2.06,-0.94 2.06,-1.24 1.86,-3.16 2.06,1.7 4.87,-1.76 1.32,-1.4 -0.21,-1.02 3.11,-2.69 3.56,-4.64 3.16,0.27 3.03,-5.1 -0.28,-4.48 -2.62,0.21 -2.08,3.91 -4.95,4.14 -2.31,1.85 -0.59,-0.97 -1.26,-1.15 -2.27,0.02 -1.28,-3.82 0.48,-4.34 1.4,-2.13 0.73,-5.08 4.3,-4.68 2.91,0.1 4.24,-2.66 2.99,-5.05 -0.44,-0.81 1.31,-4.54 -0.5,-3.12 -0.89,0.38 -1.08,-3.79 -3.06,-2.28 -2.61,-1.85 3.34,-2.5 1.03,-4.59 -1.03,0.14 -4.3,0.91 -2.02,-0.74 1.96,-2.14 1.02,-4.53 -0.68,-6.4 1.16,-2.59 -2.93,-0.35 -3.64,0.61 0.41,-2.95 -3.61,-0.32 -4.74,-2.01 -1.3,0.69 -2.17,2.73 -3.44,0.57 -1.62,0.46 -2.9,0.42 -4.52,-0.03 -1.18,0.97 0.35,3.57 -1.91,1.94 -2.66,-0.03 -3.84,-4.48 -6.19,-3.24 -2.12,0.99 -3.16,6.03 -6.01,3.79 -0.55,1.88 -3.23,-1.75 -4.12,0.93 -2.26,2.15 -4.17,-0.6 -4.14,-2.64 -1.31,-0.74 -1.67,-2.47 -1.76,-3.17 -1.84,0.68 -2.55,-1.54 -3.04,-1.81 -1.53,1.29 -5.9,2.64 -6.27,0.53 -0.46,-1.43 -3.35,-2.71 -0.58,-3.43 0.87,-2.91 -3.85,-2.55 -4.29,-5.27 -1.34,-1.28 -2.82,-2.7 -4.07,-0.62 -2.6,-1.29 -3.34,1.16 -4.86,2.57 -2.29,-0.64 -4.88,0.47 -3.99,3.28 -1.64,3.09 -5.33,-1.16 -5.28,-3.38 0.29,-1.54 -1.99,-0.85 -0.93,-2.73 -1.04,-1.23 -5.06,-2.53 -2.44,-4.58 2.85,1.31 6.86,-0.11 6.98,-3.34 2.36,-1.51 -0.16,-3.89 -1.6,-4.2 -0.58,-2.91 -4.71,-0.88 -5.61,-1.07 0.65,-2.69 -1.62,-3.41 -3.71,-3.4 -2.11,-1.16 -3.32,-2.8 -3.81,-4.83 -2.42,0.17 -3.41,-1.67 -2.18,-3.83 -0.02,-1.71 -2.9,-2.44 -1.99,-4.84 -0.01,-1.79 -0.45,-2.87 -2.15,-2.08 -2.12,-2.07 -5.85,-2.66 -7.51,0.31 -0.95,2.92 -2.17,-0.33 -1.92,-1.55 -1.94,-2.34 -4.43,2.65 -5.64,-0.22 -1.71,0.04 -3.09,1.26 -3.28,-1.31 -0.9,-2.65 -2.85,-5.01 -4.71,-6.53 -1.83,-1.02 1.04,-5.27 -2.45,-5.76 -1.67,-0.51 -0.04,-2.71 -2.19,-1.57 0.05,-1.42 0.26,-2.99 1.68,-3.72 -0.54,-0.99 -1.34,-2.16 -1.45,-2.96 -2.84,-0.69 -1.01,-4.26 -2.77,-5.86 -2.08,-2.24 0.85,-4.53 0.39,-6.92 -1.01,-2.41 3.22,-2.6 0.55,-4.16 -0.83,-1.3 -2.35,-4.31 0.18,-2.28 1.51,-0.56 0.02,-3.79 2.55,-2.16 2.03,-0.4 0.55,-4.34 3.6,-3.39 1.61,0.41 6.06,0.64 4.72,-1.87 -2.47,0.38 -3.46,-3.31 -5.66,-1.7 -1.73,1.59 -3.35,0.22 -4.28,-0.75 -2.83,1.04 -0.5,-5.97 -3.43,-3.33 -0.79,1.95 -3.72,3.09 -1.67,0.48 4.94,-7.07 7.08,-15.55 9.98,-23.55 0.44,-3.03 2.51,-7.51 -0.31,-9.8 -2.38,-1.89 -5.29,-2.93 -7.96,-4.32 -3.88,-1.06 2.38,-6.07 -1.12,-8.02 -2.45,-0.36 -4.96,-1.94 -3.33,-4.47 -1.48,-1.21 -6.02,-2.28 -3.05,-4.86 0.42,-0.7 -3.23,-0.64 -2.08,-2.79 0.39,-2.06 -0.85,-2.94 1.09,-3.89 -0.82,-2.4 -2.73,-4.51 -4.14,-6.68 -1.51,-2.32 -3.78,-4.06 -5.41,-6.21 -0.98,-3.34 2.21,-6.3 1.62,-9.59 -0.91,-2.31 -3.95,-2.73 -4.86,-5.04 -3.1,0.98 -6.11,-2.82 -4.58,-5.63 1.26,-2.13 -3.52,-2.39 -0.66,-3.49 1.51,-2.49 0.64,-5.59 3.12,-7.72 -0.6,-2.56 3.46,0.62 3.16,-2.41 -2.11,-2.17 1.85,-1.54 2.99,-1.35 2.03,1.63 4.11,1.29 6.52,0.08 0.37,0.23 -0.76,2.57 1.13,2.81 -1.22,0.77 -1.32,4.65 0.4,2.88 0.2,-1.73 1.36,-3.42 1.9,-5.04 3.21,0.08 6.07,-1.95 9.29,-1.34 2.75,0.76 5.58,1.26 8.28,2.2 2.14,0.82 4.03,2.32 6.18,3.01 2,-1.35 5.54,1.61 7.21,-0.07 2.23,0.7 3.31,3.46 5.54,1.69 1.16,1.01 0.65,2.43 2.18,2.82 1.01,2.1 3.8,2.21 3.29,5.21 -0.09,3.44 0.15,7.2 -2.11,10.07 -2.26,3.09 -6,5.79 -10.02,4.97 -2.84,-0.74 -5.34,0.99 -8.08,1.16 -2.01,0.97 -5.49,-2.15 -6.54,-0.13 -1.33,0.97 -2.24,-0.89 -2.89,-1.46 -1,2.57 -7.21,1.52 -6.06,-1.62 -0.53,-0.64 -4.07,0.19 -5.44,0.48 -1.33,1.22 -0,2.41 1.25,1.32 2.16,-0.38 0.62,2.19 3.06,2.74 1.23,1.53 6.57,0.25 5.42,2.51 -1.91,3.1 2.22,0.91 3.81,1.72 2.09,0.58 5.78,2.19 4.56,4.13 2.75,1.59 0.23,3.96 -0.48,5.25 2.3,-0.18 4.43,1.99 4.35,4.27 2,-0.84 0.78,1.8 1.68,2.47 0.1,3.23 4.49,3.53 6.69,2.22 2.28,0.22 3.06,3.83 6.02,2.68 3.14,0.7 6.51,-0.4 7.17,-3.81 0.24,-2.71 -4.02,-6.69 -5.49,-3.3 -2.65,0.34 -5.44,-2.93 -6.7,-4.13 2.45,-0.62 0.68,-2.65 0.87,-3.74 2.98,-0.53 5.18,2.7 8.25,1.24 2.42,-0.59 5.57,1.81 7.6,-0.26 0.47,-1.42 5.9,0.3 3.69,-2.76 -1.12,-2.61 -3.65,-4.39 -6.37,-5.3 -3.26,-1.55 -1.48,-4.68 -0.67,-7 0.13,-2.98 3,-4.72 3.48,-7.44 -0.29,-1.95 -0.01,-6.22 2.42,-3.58 1.94,-2.25 5.82,-1.29 7.83,0.68 1.2,2.1 3.32,0.53 1.22,-1.06 -2.48,-1.87 -1.81,-4.87 -2.24,-7.47 -1.88,-1.57 -2.53,-5.38 -5.87,-5.07 -3.66,0.72 -1.05,-5.18 -3.4,-6.67 -1.19,-0.92 0.46,-3.75 -1.48,-3.55 -1.01,-2.39 -5.64,-2.94 -6.17,-3.55 2.64,0.97 4.98,-0.76 6.95,-2.52 2.55,-2.21 4.69,1.32 7.17,1.82 2.66,0.14 2.98,2.58 0.58,3.55 -1.44,1.01 -3.37,2.5 -1.86,4.15 -2.05,2.82 1.45,5.04 4.18,4.46 2.24,0.66 3.9,4.74 5.89,0.83 -0.45,2.74 1.7,0.82 1.6,-0.76 0.67,-1.92 4.97,-2.44 2.12,-4.7 -0.88,-2.08 -0.93,-5.08 -2.83,-6.29 1.51,-0.41 1.74,-3.36 4.33,-3.14 0.74,-1.52 -4.26,-0.47 -1.65,-2.01 1.38,-2.03 1.95,-4.13 2.25,-6.48 -0.71,-3 2.32,-4.04 2.61,-6.78 0.79,-1.07 0.87,-3.3 2.02,-0.85 0.37,3.39 3.79,-1.54 1.28,-2.71 -2.87,-0.55 -1.44,-3.38 -0.47,-5.41 0.59,0.58 1.75,-1.54 1.49,0.66 0.07,2.26 4.9,2.03 2.07,4.51 -3.06,1.89 2.52,2.73 3.16,0.29 0.8,-0.58 2.28,-0.85 1.45,-2.12 2.18,1.11 3.08,-1.11 1.14,-2.24 -0.63,-3.15 1.27,-6.2 4.04,-7.12 3.15,-0.33 1.76,-4.5 2.46,-6.7 2.68,1.91 1.44,-1.23 0.17,-1.57 -0.24,-1.73 3.07,-1.64 3.49,-0.99 -0.52,3.68 4.93,5.45 5.98,1.6 -0.74,-2.19 -4.02,-2.52 -1.51,-4.94 1.37,-2.71 -0.97,-5.14 -3.64,-5.47 -2.06,-0.69 -6.98,-0.83 -4,-3.86 -2.84,-2.24 1.77,-2.66 3.14,-4.1 2.67,-3.27 6.84,-5.01 10.97,-5.41 2.08,0.66 3.04,-0.42 5.04,-0.78 3.26,-0.69 5.53,-2.7 8.88,-1.89 1.83,0.09 3.72,-0.92 5.18,-0.23 3.3,-0.51 -0.59,-3.78 0.31,-4.05 7.13,0.01 14.26,-0.01 21.38,0.01 2.09,0.14 -2,3.01 0.93,2.93 1.33,0.5 2.97,0.39 1.78,1.28 0.04,1.2 -0.09,5.95 -1.36,3.75 0.88,-1.97 -1.47,-3.03 -1.4,-0.65 -0.13,1.49 -3.77,0.21 -3.69,2.55 -3.37,1.5 0.23,4.73 2.72,4.05 3.82,-0.71 6.21,-3.84 8.09,-6.94 1.84,-0.32 4.98,-2.24 2.66,-4.31C557.34,3.94 555.66,1.55 558.62,2.18c40.17,0 80.35,0 120.52,0 0,32.42 0,64.83 0,97.25 -2.09,0.36 -2.95,2.3 -1.54,3.74 -2.44,-1.53 -2.16,1.82 -2.17,2.03 -1.83,-0.06 -0.41,-2.79 -2.86,-3.06 -0.55,-1.54 -1.56,-2.65 -3.54,-1.77 -1.52,-1.23 -4.42,-2.86 -6,-3.08 -2.3,1.54 0.4,6.71 -3.71,5.55 -1.63,0.21 -3.74,1.9 -3.4,2.86 -1.22,-0.25 -2.92,1.14 -1.43,2.07 -2.82,1.19 1.7,2.9 -0.94,4.55 -2.72,2.09 2.48,0.44 1.29,3.06 -2.53,0.4 -0.3,2.61 -2.09,4 -0.4,3.26 -2.41,5.93 -3.86,8.82 0.28,0.79 -3.1,0.12 -1.27,1.6 -1.02,2.01 -3.11,4.53 -0.2,6.39 -2.52,0.22 -3.43,3.38 -5,5.17 -0.91,1.5 1.12,2.54 -1.32,2.93 -1.23,2.37 -2.15,5.27 -3.97,7.32 1.46,1.7 -3.54,1.33 -2.2,4 0.89,0.84 -2.06,0.35 -2,1.51 -2.16,-0.19 -3.58,4.12 -1.57,4.8 2.75,-1.67 -0.46,5.07 2.92,2.57 1.47,-1.64 1.11,3.68 3.89,2.06 1.15,-1.3 4.64,-3.43 5.55,-1.97 -0.97,2.34 -5.83,2.91 -5.32,5.59 1.65,1.51 -1.67,5.32 2.05,4.87 0.58,1.25 3.67,-0.2 3.17,2.56 -0.46,2.07 -2.09,3.57 -1.96,5.92 -2.28,1.79 1.99,3.07 3.27,1.27 1.22,3.88 3.54,-2.53 5.73,-0.07 1.71,0.15 3.48,-3.04 4.82,-0.75 0.7,2.54 3.93,4.85 1.33,7.39 -0.96,2.05 -3.49,5.21 -5.83,2.98 -2.18,1.39 0.8,4.71 -0.35,6.74 -1.64,-3.35 -4.19,2.67 -7,1.13 -1.58,0.37 -1.77,-1.65 -2.62,-1.81 -0.7,0.72 -4.76,0.36 -3.34,1.66 -0.36,0.87 -3.77,2.22 -1.73,4.23 -0.31,2.89 -2.88,-1.51 -4.31,1.09 -1.46,1.61 -3.55,2.49 -3.46,4.75 -0.41,1.43 -0.54,3.48 -0.05,5.34 -0.27,1.74 -0.64,1.81 -2.46,1.7 -2.35,1.24 -5.67,-2 -7.94,0.36 -1.02,1.19 0.11,2.72 -2.11,2.54 -1.91,-2.74 -5.13,1.42 -6.94,-1.53 -3.68,-1.24 -4.83,6.16 -8.08,2.91 -0.68,-0.31 -3.05,-3.22 -2.23,-1.07 0.44,2 -3.21,4.32 -1.91,5.59 -1.58,-0.54 -1.24,3.52 -1.64,0.7 -1.39,-2.07 -3.9,0.94 -5.63,0.87 0.37,1.37 0.82,0.9 -0.34,1.77 -0.21,2.03 1.56,4.11 -0.43,6.09 -0.26,2.82 -3.85,3.15 -3.39,6.04 1.82,1.79 -0.1,4.43 -1.07,6.43 -3.76,0.87 1.99,2.12 2.03,4.1 0.89,1.78 3.76,2.19 1.71,4.57 -2.3,2.9 -5.15,-1.81 -7.83,-2.01 -3.78,-1.12 -4.32,3.77 -2.19,5.82 -2.31,2.78 -0.33,6.19 0.38,9.1 0.77,1.86 4.43,0.77 3.16,3.54 -0.62,2.49 -0.11,4.99 0.21,7.43 1.17,3.44 5.88,-1.22 6.9,2.2 0.63,0.39 -1.33,1.3 0.64,1.71 0.61,2 4.71,2.89 4.1,0.07 2.42,-0.19 4.16,-3.38 6.65,-1.26 2.61,1.3 4.67,3.68 7.51,4.49 2.44,-0.41 2.29,3.63 -0.15,2.17 -3.16,1.33 0.69,4.72 2.95,3.33 2.69,-1.74 4.67,2.16 2.98,3.28 -1.53,-1.48 -3.23,1.37 -1.51,2.46 -1.66,0.09 -1.17,4.59 -3.15,5.57 -2.16,-0.57 -0.01,3.21 -2.03,1.18 -1.51,-0.51 -1.63,0.74 -2.82,1.17 0.46,1.78 3.76,-0.82 2.44,1.78 0.45,1.46 -0.73,2.48 0.5,3.94 -0.91,1.42 1.06,4.29 -0.87,5.01 0.89,2.05 -1.39,4.46 -0.11,6.57 1.6,2.36 2.84,-1.08 4.63,0.84 2.19,0.61 6.36,2.5 5.42,5.48 1.51,1.9 3.6,2.8 3.89,5.79 1.08,1.98 3.28,1.24 4.3,3.24 2.25,0.68 4.45,1.39 6.37,2.79 1.16,1.48 3.78,2.23 4.69,2.86 -0.38,2.65 -2.37,5.25 -1.49,7.93 0.05,2.46 -6.1,4.34 -5.15,1.14 -2.52,-0.74 -5.24,-0.5 -7.55,-1.88 -1.49,0.54 -3.24,0.69 -4.5,0.55 -1.71,1.13 -6.19,1.11 -5.4,-1.84 -0.88,-3.94 -4.63,1.38 -6.95,-0.97 -1.81,-1.22 -2.73,1 -2.64,2.13 -3.4,-2.47 -4.1,3.12 -6.37,4.33 -1.56,1.14 -0.42,-3.07 -2.75,-1.69 -2.4,0.37 -5.28,1.01 -7,-0.66 -2.78,0.67 -5.63,0.98 -8.42,1.61 1.94,1.66 -2.76,2.56 -3.79,2.43 -2.67,-0.72 -5.06,0.99 -7.69,0.02 -2.34,1.37 -6.27,0.31 -6.05,4.11l-0.04,0.01 0,0z m57.81,-33.85c-0.89,-1.57 0.49,-2.17 0,0z m-241.23,-51.26c-1.5,-0.26 -4.88,0.4 -5.3,-0.46 2.59,-1.58 -0.9,-5.56 2.71,-5.44 2.09,-0.97 5.31,1.36 6.88,-1.15 -0.17,-1.75 -1.39,-4.59 1.04,-3 2.58,1.66 5.83,-0.05 8.09,1.03 2.4,1.17 -0.19,4.14 1.51,6.12 -0.91,2.05 -4.72,1.7 -6.85,2.38 -2.67,0.39 -5.38,0.53 -8.08,0.53z m245.17,-54.27c-0.96,-0.5 -1.79,-4.14 -0.7,-1.7 0.41,0.34 1.1,1.13 0.7,1.7z m15.47,-62.08c-0.5,-1.68 1.86,0.26 0,0z M392.43,81.96c-1.18,-1.24 -0.52,-3.74 1,-1.58 0.97,0.64 4.51,-0.85 3.11,1.22 -1.28,-0.1 -4.06,-2.2 -4.11,0.36z m69.72,-22.48c-3.13,-0.37 -5.18,-4.96 -3.51,-7.6 1.49,-0.95 5.9,-1.19 6.08,0.31 -0.75,2.23 0.93,5.01 -1.2,6.83 -0.37,0.32 -0.88,0.46 -1.36,0.46z m1.2,-32.66c0.64,-1.98 -0.94,-1.7 -1.81,-2.37 0.83,-0.97 3.57,-1.76 1.01,-2.23 -1.29,0.52 -2.78,0.7 -3.28,0.14 -1.2,0.89 -3.04,-4.18 -2.96,-0.9 1.94,3.97 -3.66,-2.01 -2.98,1.25 2.3,2.87 -2.86,2.37 -3.53,0.29 -1.84,-1.41 -2.9,-5.04 0.07,-4.98 -0.36,-1.21 -1.52,-2.86 -0.18,-4.45 -3.01,0.94 -0.61,-2.79 -2.49,-3.65 -1.26,2.21 -4.03,0.25 -1.58,-1.13 2.3,-1.91 -4.09,-1.91 -1.43,-4.6 0.66,-1.81 2.03,-2.29 3.79,-2.01 1.73,-0.33 3.25,0.66 4.85,0.17 2.53,-1.3 -3.03,3.08 0.48,2.2 3.11,-1.44 -1.22,5.41 2.65,3.83 2.34,0.52 1.33,4.72 3.21,4.64 2.81,0.65 4.59,3.49 7.55,3.98 2.95,1.5 6.52,1.02 9.42,1.43 -0.95,0.85 -5.31,2.46 -4.34,3.45 -1.86,0.24 -4.2,1.89 -2.01,3.36 -1.56,0.82 -3.63,-0.42 -4.9,1.06 -0.87,-0.61 -1.05,-0.3 -1.52,0.53z m23.35,-5.93c-1.68,-0.42 -4.33,-0.5 -2.76,-2.36 -1.89,0.07 -1.65,-3.14 0.36,-1.62 2.48,0.8 5.12,0.27 7.63,0.6 2.21,1.62 -2.46,4.83 -3.16,1.83 -0.45,0.12 -0.96,1.84 -2.07,1.55z","name":"Russian Federation"},"mt":{"path":"m343.65,509.08c-1.52,-0.23 -1.75,-0.24 0,0z m1.95,2.72c-1.32,-0.63 -1.5,-0.7 0,0z","name":"Malta"},"me":{"path":"m385.29,433.13c-1.98,-1.45 -3.12,-5.3 -6.16,-4.27 -0.68,-0.6 -0.46,-1.87 -1.44,-2.17 0.16,-1.66 0.06,-3.3 -0.89,-4.86 1.96,-1.05 1.28,-4.74 3.12,-5.09 1.81,3.01 2.14,-1.15 0.71,-2.43 2.24,-0.2 3.4,-2.11 5.57,-0.36 3.49,0.56 2.95,4.72 6.22,5.9 -2.5,0.45 -0.84,6.17 -3.72,4.67 0.19,-3.37 -2.81,0.5 -2.99,1.87 -0.8,1.83 -2.3,3.26 -0.46,4.87 0.08,0.47 0.4,1.59 0.03,1.87z","name":"Montenegro"},"rs":{"path":"m397.48,431.57c-0.16,-2.49 -1.05,-5.46 -3.99,-5.18 -0.83,-1.86 -3.16,-3.89 -0.74,-5.1 2.42,-2.35 -3,-3.15 -2.73,-5.8 -1.28,-2.34 -5.16,-1.7 -5.47,-5.07 -0.61,-1.48 -2.43,-2.36 0.08,-2.14 2.37,-1.69 -1.79,-3.25 -2.79,-4.49 -3.49,-0.35 0.76,-4.99 -0.07,-7.08 -1.54,-0.41 -2.38,-0.6 -2.22,-2.53 -0.29,-0.9 3.52,-0.03 1.84,-1.89 -1.99,-0.46 -4.18,-1.03 -2.61,-2.61 0.5,-1.92 -2.64,0.29 -1.69,-2.2 -0.12,-1.58 -1.93,-2.81 0.65,-3.27 2.64,-1.35 4.3,-3.64 7.52,-3.04 2.34,-0.11 4.56,2.67 6.11,3.82 1,0.92 0.22,4.94 3.24,4.94 1.65,0.3 5.5,0.5 3.47,2.78 1.27,1.27 0.97,1.07 -0.4,2.22 0.32,1.47 3.21,0.4 3.09,2.01 1.78,0.14 4.21,-0.13 4.93,1.74 2.85,0.45 1.17,-3.79 1.99,-3.56 1.66,0.7 3.37,1 1.04,1.99 -1.64,2.21 4.19,3.86 0.86,5.71 -2.2,2.75 0.34,6.72 2.98,8.19 2.92,0.51 3.82,2.98 1.52,5.06 -0.82,0.05 -2.7,-0.25 -2.65,1.85 -1.23,2.37 3.66,5.04 -0.48,5.54 -2.42,1.11 -4.61,2.18 -7.35,2.39 -1.32,2.74 -6.31,0.55 -6.16,5.74z","name":"Serbia"}}});
diff --git a/js/vmap/dist/maps/jquery.vmap.fr_regions_2016_mill.js b/js/vmap/dist/maps/jquery.vmap.fr_regions_2016_mill.js
new file mode 100644 (file)
index 0000000..2084e28
--- /dev/null
@@ -0,0 +1,158 @@
+jQuery.fn.vectorMap('addMap', 'fr_regions_2016_mill',{
+    "insets": [
+        {
+            "width": 100, 
+            "top": 600, 
+            "height": 122.71220181016422, 
+            "showTooltip": true, 
+            "backgroundColor": '#a5bfdd',
+            "hoverColor": '#c9dfaf',
+            "bbox": [
+                {"y": -640515.9263248637, "x": -6082830.163693012}, 
+                {"y": -235112.28629661424, "x": -5752460.702426716}], 
+            "left": 0
+        }, 
+        {
+            "width": 50, 
+            "top": 440, 
+            "height": 42.928059423707, 
+            "bbox": [
+                {"y": -1855676.1027106678, "x": -6882793.3793751765}, 
+                {"y": -1778355.8860469644, "x": -6792735.480530344}], 
+            "left": 0
+        }, 
+        {
+            "width": 50, "top": 510, "height": 57.21127928831266, 
+            "bbox": [
+                {"y": -1668974.3969949444, "x": -6819419.302373176},
+                {"y": -1615651.747314515, "x": -6772817.783980524}],
+        "left": 0
+        },
+        {
+            "width": 50,
+            "top": 700,
+            "height": 42.31095479952366,
+            "bbox": [
+                {"y": 2357030.8412201093, "x": 6150785.273719754},
+                {"y": 2416319.6251247157, "x": 6220848.433704593}],
+            "left": 740
+        },
+        {
+            "width": 40,
+            "top": 690,
+            "height": 55.96611426730096,
+            "bbox": [
+                {"y": 1415975.8044653006, "x": 5016650.333473452},
+                {"y": 1454680.1669724442, "x": 5044313.045465417}],
+            "left": 640
+        },
+        {
+            "width": 900,
+            "top": 0,
+            "height": 749.2159980728637,
+            "bbox": [
+                {"y": -6244653.662562441, "x": -571670.6975907331},
+                {"y": -4882430.695155527, "x": 1064707.428102987}],
+            "left": 0
+        }
+    ],
+    "paths": {
+//        "fr-gf": {    
+//            "path": "M0.97,715.11l0.03,-0.01l1.04,0.32l0.16,0.02l0.86,-0.15l0.51,-0.46l0.86,-2.17l2.19,-0.54l1.75,-1.7l3.1,-6.63l2.47,-3.35l0.8,-2.07l0.47,-0.34l0.06,-0.66l-0.55,-0.79l0.94,-2.39l-0.02,-0.46l-0.64,-0.76l0.44,-0.66l-0.5,-1.65l0.23,-1.91l-0.45,-0.69l-0.46,-0.14l0.86,-1.73l2.07,-2.81l1.19,-0.89l0.84,-2.29l1.16,-1.21l0.63,-1.48l-0.08,-2.67l0.59,-2.69l-0.24,-0.63l-0.99,-0.8l-0.94,0.14l-0.73,-1.11l-0.67,-2.34l-1.1,-1.52l-2.15,-0.96l-0.85,-1.38l-0.94,-0.69l-0.78,-1.45l-0.91,-0.91l-0.6,-1.53l-1.41,-1.5l0.64,-2.85l-0.13,-0.85l-2.32,-1.44l0.46,-1.46l-0.01,-1.08l-0.33,-1.55l-1.0,-2.09l-0.57,-3.53l0.9,-2.56l0.01,-1.55l-0.48,-1.52l0.02,-2.19l-1.39,-1.38l0.0,-4.12l-0.26,-0.77l1.19,-1.14l-0.22,-1.91l0.25,-0.92l2.73,-3.76l0.74,-0.61l1.11,-2.37l4.66,-4.06l2.22,-1.17l1.58,-1.93l1.87,-4.21l0.52,-3.48l1.46,-2.55l2.53,0.36l1.76,0.65l0.25,-0.36l3.4,2.05l6.81,3.12l3.05,0.38l3.49,0.88l0.86,-0.07l1.81,1.42l0.75,-0.24l0.28,-0.38l-0.11,-0.54l0.6,0.16l3.21,1.77l2.63,0.74l0.44,-0.2l3.1,1.65l2.24,2.12l1.54,0.85l1.06,1.69l7.47,6.54l0.33,0.77l1.43,0.41l2.53,2.16l0.64,1.06l-0.27,1.23l0.6,0.43l2.01,-1.77l1.2,0.54l0.54,0.96l-2.76,4.28l0.03,1.47l0.4,0.37l0.6,-0.32l0.54,-0.93l0.57,-1.94l2.11,-1.78l0.87,0.63l1.21,1.89l2.18,1.25l2.26,2.1l0.89,1.31l1.5,6.51l-0.33,1.34l-1.91,1.37l-0.89,1.13l-0.01,0.47l0.45,0.15l2.11,-0.67l1.15,-0.61l0.64,-0.84l0.53,-2.04l-0.28,-4.87l0.65,-1.95l1.05,-0.2l1.97,1.65l0.0,0.74l1.13,1.9l0.28,1.83l0.66,0.89l-0.25,0.37l0.26,0.94l0.51,0.66l1.03,0.2l-0.69,0.86l-0.09,1.41l1.97,3.43l0.18,0.84l-0.06,2.16l-0.64,2.0l-0.3,0.58l-2.4,1.19l-1.04,0.92l-1.71,3.75l-2.1,2.32l-1.35,0.82l-0.13,1.42l-0.89,0.24l-0.67,0.68l-0.88,2.96l-1.99,3.34l-0.78,0.63l0.04,0.74l-4.48,7.35l-0.56,0.42l-1.13,0.12l-0.77,0.72l-0.64,1.51l-1.27,1.01l-0.24,0.8l0.31,2.33l-2.32,4.42l0.33,0.96l-1.39,1.05l-2.96,7.18l-1.09,0.6l0.67,2.17l-2.13,3.57l-1.21,1.07l-1.71,2.4l-5.24,2.87l-0.69,0.6l-0.84,1.79l-2.17,0.93l-2.57,-0.42l-1.92,-1.13l-5.09,0.79l1.41,-1.11l-0.13,-0.65l-2.09,-1.75l-0.88,-1.21l-0.87,-0.45l-0.43,0.08l-1.13,1.43l-2.74,1.58l-2.14,0.34l-1.52,-0.76l-2.22,-0.27l-2.22,-0.96l-0.87,-0.06l0.23,-1.21l-0.6,-0.69l-0.75,-0.14l-1.33,0.55l-1.05,1.47l-1.27,0.26l-0.98,1.22l-1.24,-0.04l-0.49,1.63l-0.46,0.33l-1.97,0.97l-0.71,-0.32l-1.16,0.23l-0.87,2.01l-0.86,0.39l-1.72,-1.68l-2.66,0.42l-1.6,-0.21l-2.03,-1.41l-3.41,-0.59l-1.86,-1.51l0.34,-0.7l-0.6,-0.59l-1.7,-0.92Z",
+//            "regionName": "Guyane fran\u00e7aise",
+//            "post_id": "47"
+//        }, 
+       "fr-h": {
+            "path": "M838.53,672.37l1.08,0.06l0.88,-0.67l0.97,0.12l1.07,-2.21l1.86,-0.26l0.74,-0.59l0.25,-1.79l0.9,-1.48l-0.38,-0.73l-0.69,-0.15l0.49,-1.84l0.66,-0.7l2.07,-0.66l0.26,-0.57l-0.29,-0.57l0.29,-1.57l1.09,-0.31l1.75,0.99l1.22,-0.28l0.96,-0.92l0.83,-2.39l1.69,-0.12l3.84,-1.79l6.8,-1.3l2.03,-0.92l0.4,-1.61l3.75,-3.54l2.7,-0.22l4.3,0.91l1.55,0.91l1.19,2.4l0.37,0.25l0.75,-0.18l2.19,-3.35l0.93,-2.22l-0.53,-1.78l0.44,-1.29l-0.33,-1.53l-1.69,-2.25l1.55,-2.06l-0.41,-1.45l0.2,-1.05l1.75,-1.77l0.11,-1.69l-1.01,-1.98l0.14,-1.93l0.77,-0.45l2.42,-0.01l0.97,-0.35l0.69,0.85l1.59,0.95l-0.62,1.65l0.32,1.04l0.64,0.74l-0.24,1.34l1.15,6.71l-0.1,2.14l-1.97,6.87l-0.02,4.12l-0.45,1.01l0.91,0.83l0.24,0.8l-0.14,1.25l1.14,1.91l2.33,1.17l0.51,-0.65l0.25,0.54l0.31,7.85l0.73,1.54l-0.6,1.91l-0.19,2.68l1.67,5.79l-0.45,9.13l0.43,1.76l-0.38,2.31l-0.37,0.56l-1.68,1.43l-1.61,2.76l-5.49,7.01l-0.58,7.85l0.53,5.07l-0.08,5.26l-1.16,0.85l-0.93,1.45l0.36,0.56l0.38,0.0l-0.34,1.47l-1.74,0.45l-0.13,1.0l-2.1,-0.31l-0.71,0.1l-0.34,0.46l0.08,0.47l-0.87,1.33l0.15,0.53l1.18,0.53l2.94,-0.89l0.29,0.34l-0.16,0.77l-1.25,1.25l-1.71,0.61l-1.08,1.44l-0.92,0.16l-0.29,0.57l0.28,0.85l-0.28,0.85l0.82,0.98l-0.71,0.84l0.01,0.67l-2.14,1.17l-0.98,0.12l-0.35,0.4l0.0,0.54l0.75,0.99l-0.59,0.7l-0.15,0.77l0.54,0.37l1.71,-1.1l-1.36,2.96l-0.77,0.37l-0.56,-0.17l-1.56,-1.26l-4.09,-1.13l0.5,-1.41l0.63,-0.25l0.15,-0.7l-3.04,-1.76l0.64,-0.96l0.0,-0.46l-0.51,-0.38l-2.15,1.21l-0.36,-0.76l-1.07,0.38l-0.9,-0.82l-1.69,-0.51l-2.48,-0.05l-1.61,-1.23l-1.4,-0.31l-0.77,-0.93l-1.36,-0.18l0.42,-0.48l-0.28,-0.83l-3.45,-1.04l0.22,-1.42l-0.44,-0.73l-0.5,-0.17l1.06,-2.73l1.05,0.33l3.28,-1.35l0.76,-0.71l0.25,-0.88l2.21,-1.71l-0.28,-0.67l-8.03,-1.29l-0.49,-0.46l0.45,-1.23l-0.37,-0.54l-1.66,0.01l-3.15,0.9l0.15,-0.36l-0.39,-0.56l-1.58,-0.18l1.37,-0.22l1.43,-1.12l0.36,-1.08l-0.11,-0.68l-0.53,-0.48l2.22,-0.4l2.07,-1.1l0.18,-0.51l-0.3,-0.7l-0.72,-0.7l1.32,-0.68l0.04,-0.58l-0.51,-0.92l1.44,-2.22l-1.63,-2.04l-1.3,-0.47l-1.37,0.15l-3.3,1.36l-2.54,0.15l-1.78,0.63l-0.16,-0.36l0.64,-1.35l-0.36,-1.17l-1.16,-1.23l2.2,-0.2l1.3,-0.47l1.04,-1.45l-0.12,-0.56l-0.44,-0.27l0.27,-0.44l1.08,-0.73l3.47,-1.33l0.38,-0.36l0.09,-0.92l-0.43,-0.78l-0.97,-0.68l-1.71,-2.86l-0.82,-0.13l-1.52,0.37l-0.72,-1.14l-1.11,-0.59l-2.23,-0.31l0.1,-0.87l-0.66,-0.46l0.63,-0.4l0.19,-0.89l-0.4,-0.4l-0.84,0.0l0.49,-1.2l-0.24,-0.73l-0.53,-0.37l0.18,-0.95l-1.46,-1.0l2.12,-0.06l1.46,-0.81l2.49,-0.44l2.27,-0.94l0.28,-0.91l-1.26,-1.16l-2.16,-0.95l-0.59,-1.02l-0.54,-0.04l-0.76,0.57l-0.02,-0.4l1.8,-0.96l0.05,-0.67l-1.61,-1.07l-1.41,0.12l-1.48,0.55l-0.55,-1.32l-0.01,-0.82Z",
+            "regionName": "Corse",
+            "post_id": "495"
+        }, 
+       "fr-f": {
+            "path": "M352.12,269.71l-0.39,-0.79l0.59,-1.42l1.29,-1.16l5.17,-2.45l1.63,-1.53l1.57,-4.34l0.07,-3.55l0.45,-1.34l2.91,-2.22l0.88,-1.62l-0.43,-1.98l0.6,-3.59l-0.6,-0.63l-1.31,-0.12l-0.88,-2.08l2.47,-0.44l0.71,-0.46l0.07,-1.0l-1.12,-0.94l0.07,-0.52l3.99,-2.03l0.86,-0.92l-0.08,-0.73l-0.51,-0.52l-3.66,-0.66l-2.36,-1.54l1.12,-0.96l0.25,-1.0l-1.86,-3.44l0.07,-2.76l-0.31,-0.7l-0.92,-0.77l0.03,-1.1l0.42,-0.63l2.29,-0.4l5.6,-2.3l2.13,-1.95l0.67,-1.64l1.22,-1.8l-0.16,-0.83l-1.74,-2.11l0.08,-3.7l-3.65,-3.73l-2.55,-1.62l-1.61,-2.81l-0.36,-3.23l1.82,-1.67l1.34,-0.77l5.76,-1.41l2.04,-0.07l0.74,-0.36l1.7,-2.02l3.48,-0.35l0.63,-0.53l0.22,-1.53l3.0,1.67l3.49,-0.02l1.93,0.63l4.71,-2.07l1.42,-1.16l0.69,-1.87l0.95,-1.4l1.34,-1.03l2.49,-1.16l1.05,-1.01l0.26,-1.64l-0.52,-1.68l0.12,-0.44l2.22,-1.39l3.12,5.29l1.41,1.78l0.26,1.59l-0.56,2.83l0.31,1.68l0.56,0.67l1.6,0.81l-0.36,1.11l-1.35,1.63l-0.2,0.71l0.26,0.98l1.48,0.99l0.55,1.38l1.5,1.71l3.83,2.4l0.73,2.38l2.38,1.58l0.52,0.67l0.38,1.69l-0.03,2.29l1.38,2.04l1.1,0.79l4.59,1.88l2.43,-0.21l0.24,2.38l2.15,2.42l0.66,2.91l0.56,0.84l1.26,0.74l-1.59,2.0l-0.13,0.8l0.28,0.63l1.27,0.64l8.96,-1.77l2.18,-0.89l1.74,-2.19l1.08,0.42l1.34,1.84l0.89,0.32l1.9,-0.44l1.41,-1.25l0.41,-0.04l2.61,1.32l2.42,-0.25l1.05,1.47l1.06,3.38l3.56,2.09l1.09,1.21l-0.82,1.86l0.48,1.68l-2.36,-0.11l-1.14,1.09l0.09,1.33l1.07,0.83l2.02,0.26l3.17,-0.65l8.35,0.59l2.29,-0.94l1.66,-1.6l0.83,-0.26l2.03,0.05l-0.41,1.53l0.32,0.38l1.06,0.2l7.05,-1.97l1.76,0.12l2.27,0.58l1.52,1.02l1.38,4.33l1.05,1.28l2.81,2.18l0.52,2.18l-1.42,3.21l-0.46,0.6l-2.42,1.45l-1.42,1.43l-1.36,0.14l-0.46,0.42l0.1,2.67l0.95,2.06l-0.78,1.4l0.13,1.67l-0.42,0.96l-4.41,2.06l-4.17,0.46l-1.07,0.84l-0.36,1.76l0.56,1.49l2.33,0.9l2.32,2.0l1.13,2.08l-0.6,1.62l0.07,0.78l2.52,3.57l-3.82,0.47l-2.79,1.57l-0.07,0.91l1.55,1.67l1.57,3.11l1.42,1.89l-0.51,2.82l-0.86,1.93l-2.02,2.99l-0.1,0.83l0.94,1.66l1.73,0.94l3.6,3.47l0.78,3.4l1.43,3.27l1.23,3.95l-0.07,3.7l2.22,2.27l0.43,5.38l-1.31,4.71l1.12,2.83l-0.12,0.92l-2.12,3.69l-0.31,1.64l-3.08,-0.17l-2.72,0.77l-4.06,2.3l-1.68,2.09l-2.02,-0.32l-1.56,1.24l-2.13,-0.62l-0.64,-0.74l-0.84,-0.12l-4.12,3.34l-1.44,0.06l-0.57,0.31l-0.14,1.87l-2.29,0.13l-0.55,1.04l1.04,1.73l-0.51,1.0l0.05,1.2l1.67,2.1l0.3,1.38l-5.07,1.34l-7.99,0.81l-3.73,1.66l-1.58,1.88l-1.55,0.74l-2.19,3.55l-5.83,-0.29l-3.22,0.59l-2.11,-0.72l-3.44,0.0l-2.44,-0.84l-5.56,-0.15l-1.36,0.29l-1.79,1.06l-1.02,-0.37l-1.84,-1.89l-0.73,-0.15l-0.91,0.28l-0.52,0.62l-0.16,2.28l-0.72,0.98l-3.85,-0.24l-2.6,1.5l-1.18,-0.45l-0.12,-1.0l-0.46,-0.52l-0.8,-0.24l-1.55,0.21l-2.31,-0.53l-1.04,0.29l-3.98,3.58l-1.69,0.94l-2.46,-1.47l-0.93,-1.4l-0.84,-0.54l-0.84,-0.04l-0.83,0.37l-0.7,1.07l-1.07,0.49l-3.45,0.3l-2.25,-0.75l-0.71,-0.49l0.93,-3.22l-0.72,-1.01l-1.32,-0.68l-1.11,-1.06l0.45,-2.58l-0.5,-1.16l-0.91,-1.04l-1.23,-0.68l-5.0,-0.37l-0.32,-1.41l-0.46,-0.57l-3.41,-1.35l-2.07,-1.8l-0.45,-0.65l-0.51,-2.09l-0.01,-1.46l0.61,-2.86l-0.92,-2.42l-1.83,-2.14l-2.6,-1.8l-7.16,-9.22l-1.26,-3.31l-1.36,-1.88l-6.25,-3.03l-0.71,0.68l0.16,1.39l0.73,1.37l-0.4,0.35l-5.41,0.31l-1.21,0.29l-1.78,1.09l-2.67,-0.46l-2.71,0.24l-1.01,-0.19l-0.92,-0.81l-0.25,-0.98l0.04,-2.48l0.47,-2.57l-0.35,-1.03l-2.01,-0.4l-0.72,-1.12l-0.61,-0.29l-3.43,0.61l-0.29,-0.38l0.35,-1.68l-0.32,-1.32l-0.99,-0.39l-1.98,0.41l-0.5,-1.99l-0.74,-0.2l-1.7,0.66l-1.69,-2.39l0.88,-5.76l1.43,-5.26l4.43,-6.2l-0.2,-2.84l0.98,-2.98l1.96,-3.88l-0.45,-3.6l1.51,-3.81l7.61,1.68l0.98,-0.08l0.62,-0.83l-0.48,-2.31l0.7,-0.71l2.9,0.89l2.04,-1.63l2.39,-0.48l3.32,-1.45l2.28,-0.47l0.53,-0.73l-0.22,-1.26Z",
+            "regionName": "Centre",
+            "post_id": "497"
+        }, 
+       "fr-e": {
+            "path": "M25.63,242.25l0.98,-1.98l0.98,0.49l19.62,-3.77l3.65,0.88l0.91,-0.32l0.5,-0.76l0.62,-2.51l-0.36,-1.04l-0.81,-0.89l-0.58,-2.39l-1.01,-0.81l-2.92,-0.69l-0.66,-1.14l-0.5,-0.27l-1.37,0.44l-3.11,-1.71l-2.01,0.46l-2.96,4.7l-0.73,0.21l0.57,-1.39l-1.14,-2.33l0.91,-1.36l-0.39,-1.22l-1.09,-0.38l-3.21,-0.11l-0.03,-1.0l1.84,0.17l0.95,-0.24l0.41,-0.81l-0.22,-0.93l0.98,-2.21l0.53,-0.43l0.46,0.19l-0.71,2.55l0.23,0.48l1.87,0.72l5.36,-0.32l1.36,0.83l1.04,0.18l3.66,-0.78l2.04,-0.12l0.21,0.35l1.46,0.44l5.01,-0.91l0.33,-0.98l-0.42,-0.4l-1.83,0.11l-0.45,-0.19l-0.2,-0.74l-0.68,-0.16l-1.09,0.67l-1.22,-1.03l-2.07,0.18l0.59,-0.25l0.44,-0.73l1.79,-1.5l0.1,-0.44l-0.38,-0.25l-1.24,0.08l-1.29,0.8l0.0,-0.47l-0.85,-0.4l-0.96,1.04l-0.96,-0.2l-1.87,1.11l-0.5,0.08l-0.43,-0.77l-0.56,-0.05l-1.09,0.68l-1.02,0.2l3.24,-3.36l6.46,-3.39l0.19,-0.5l-0.47,-0.25l-4.22,1.6l-4.19,0.6l-5.77,2.77l-2.94,0.62l-1.85,0.8l-1.08,0.12l-4.35,-1.11l-0.58,0.4l-0.15,1.12l-0.27,0.13l-3.57,-0.23l-0.68,-1.74l0.68,-0.06l0.36,-0.44l-0.1,-1.01l-1.05,-2.18l-0.09,-1.34l0.28,-1.34l0.6,-0.89l1.01,-0.27l0.3,-0.88l-1.49,-1.16l0.52,-1.93l2.34,-3.42l1.07,0.45l0.46,-0.14l-0.19,-0.71l0.54,-0.32l2.86,-0.47l3.08,1.22l1.04,-0.16l0.21,-0.65l-1.67,-2.31l0.37,-0.22l2.65,0.59l1.24,-0.03l0.38,-0.34l-0.26,-0.44l-1.23,-0.43l0.07,-0.55l-0.35,-0.44l4.17,-0.0l3.43,-1.04l1.35,-0.03l0.38,-0.31l-0.2,-0.45l-0.86,-0.45l1.38,-0.23l3.24,-1.36l1.36,0.05l0.84,0.86l-0.39,1.52l0.42,0.5l1.58,-0.18l2.35,-1.07l2.95,0.58l0.4,-0.4l0.0,-0.59l-1.04,-0.57l0.11,-0.28l1.91,-1.43l2.45,-0.6l1.27,0.07l1.03,0.52l0.71,-0.39l0.36,0.69l0.75,0.24l1.01,-1.05l-0.02,-1.18l4.45,-1.51l-0.24,1.62l0.55,0.4l-0.25,0.84l1.04,1.07l-0.07,1.9l0.48,-0.03l1.68,-1.43l0.9,-0.29l-0.28,0.38l0.1,0.75l3.35,2.74l0.61,-0.01l0.45,-0.54l-0.24,-0.79l0.28,-0.74l-0.54,-1.41l0.79,0.35l0.21,-0.4l0.01,-2.72l0.24,-0.43l0.93,0.16l0.45,-0.85l1.48,0.59l2.89,-0.11l2.82,1.61l2.57,-0.38l0.28,1.21l1.61,0.42l1.96,-0.05l0.87,-0.41l0.21,-0.49l-0.71,-3.08l2.98,-0.46l0.33,-0.33l-3.03,-3.0l-0.19,-0.98l2.29,-1.26l1.58,-2.51l0.68,0.39l1.86,0.1l2.17,1.06l-0.28,0.54l0.32,0.6l2.25,0.04l1.71,-1.23l5.84,-2.09l1.17,0.0l1.67,-1.78l0.55,0.11l0.26,2.26l-0.4,1.28l-0.83,1.08l0.5,1.21l0.41,0.18l0.97,-1.9l1.78,-1.89l1.89,-1.51l0.81,0.06l1.06,-1.09l0.51,-0.13l0.85,0.83l-0.4,1.97l0.68,0.68l-1.05,2.42l-1.65,2.02l-0.1,0.85l0.4,0.4l0.8,-0.2l3.03,-4.81l0.76,0.15l1.33,-0.56l0.67,0.24l-0.02,0.75l-1.71,1.0l-0.01,1.15l2.48,1.16l4.01,0.41l0.01,1.2l-0.8,0.72l0.21,0.84l1.94,1.27l1.37,1.73l3.87,2.85l0.88,3.1l-0.26,0.69l0.22,0.77l2.78,1.74l3.18,1.32l-1.16,1.99l1.46,0.52l1.88,1.65l0.62,-0.24l0.25,-2.13l2.16,0.1l1.16,-0.4l3.22,-3.61l5.89,-2.95l0.99,-1.12l0.0,-0.53l-0.84,-0.45l1.49,-0.39l1.05,0.13l0.44,0.89l0.49,0.2l3.51,-1.61l2.1,-2.09l0.67,0.82l1.02,0.23l-1.01,1.46l-1.68,1.58l0.05,0.62l1.51,0.76l3.43,-2.2l0.62,2.37l0.78,0.42l0.63,2.14l0.57,0.3l1.25,-1.02l0.75,0.88l1.35,-0.4l0.22,-0.89l-0.64,-0.57l0.93,-0.86l1.16,0.66l0.55,-0.01l0.02,-0.55l-1.01,-1.64l2.26,-0.68l2.61,-0.22l1.31,2.11l0.42,1.64l1.16,0.92l-0.26,1.06l1.54,2.0l0.32,0.9l-0.23,1.64l0.21,0.41l0.46,-0.06l2.43,-1.55l0.01,-0.69l-1.38,-0.83l0.13,-0.69l-0.92,-1.66l0.91,0.63l0.48,-0.04l0.09,-0.48l-1.1,-1.52l-1.85,-0.63l-1.61,-3.1l0.13,-0.41l0.98,-1.09l1.07,-0.34l0.37,-1.34l0.28,-0.13l2.22,0.0l0.28,-0.7l4.99,-0.86l0.54,1.16l-1.35,1.87l-0.06,2.08l1.7,1.73l2.67,0.63l4.54,0.04l4.83,-0.64l3.02,-1.39l2.6,5.45l1.04,3.06l1.91,2.9l3.27,2.38l2.44,0.21l1.93,-0.61l2.78,-1.91l2.08,-0.77l2.22,-2.4l2.39,0.03l6.14,1.5l2.32,1.25l-0.2,5.67l0.77,8.15l-1.95,4.1l0.21,1.05l0.9,1.52l0.8,4.72l-0.73,1.74l0.74,4.88l0.57,1.17l1.18,1.08l0.09,4.44l-1.36,0.63l-4.18,0.61l-2.21,1.9l-0.63,1.08l-2.9,9.1l-1.14,1.77l-0.41,1.91l-6.47,-1.09l-0.75,-0.44l-0.77,-1.22l-1.29,-0.55l-3.34,-0.0l-1.83,1.23l-6.34,2.57l-1.86,1.31l-1.2,1.55l-2.58,1.54l-7.31,2.01l-3.72,-0.8l-4.42,1.41l-1.22,0.67l-2.07,-0.04l-2.38,0.42l-3.35,1.92l-0.46,1.34l0.13,2.04l-0.71,1.59l-0.73,3.38l-0.54,0.87l-2.15,1.35l-1.11,2.03l-0.68,0.15l-0.2,-1.32l-0.56,-0.55l-0.75,-0.02l-2.38,0.9l-1.56,-0.86l-0.9,0.05l-0.9,0.52l-1.08,1.85l-1.37,1.25l-3.37,0.29l-1.9,-0.8l-1.35,0.35l-0.47,0.66l-0.66,-0.06l-0.41,-0.22l0.4,-1.16l-0.67,-1.08l0.25,-0.19l3.7,-0.17l2.26,-0.53l1.21,0.07l0.42,-0.34l-0.3,-0.45l-0.99,-0.24l-2.8,0.23l-5.66,-1.72l-2.91,0.66l-1.93,0.0l1.05,-1.04l0.47,-1.05l-0.12,-0.48l-0.5,0.01l-0.86,0.73l-2.73,0.25l-0.32,0.4l1.11,0.66l-1.57,-0.11l-0.6,-0.37l-0.61,0.32l-0.09,1.63l-0.48,0.24l-1.89,-0.59l-1.16,0.04l-4.35,1.05l-1.51,-0.37l-2.24,-2.86l-1.34,-0.5l-0.54,-0.67l1.53,-0.13l1.13,1.56l1.15,-0.56l0.69,0.46l0.65,-0.25l0.21,-0.93l0.66,0.6l1.69,0.45l1.67,-0.14l1.46,-0.78l-0.13,-0.88l2.17,-2.6l0.37,-1.63l-1.48,-1.88l-0.44,-0.11l-0.26,0.86l0.64,0.9l-1.1,0.64l0.6,0.74l-0.39,0.02l-1.13,-0.82l0.39,-0.14l-0.02,-0.47l-0.84,-1.0l-0.86,-0.45l-1.89,-0.29l-0.44,0.26l0.31,0.55l-3.56,0.47l-0.85,0.64l-0.55,0.91l-2.13,0.65l0.0,-0.48l-0.46,-0.4l-1.32,0.49l-0.19,-1.21l0.7,-1.13l-1.61,-0.61l-0.47,-1.47l-0.85,-0.33l-0.4,0.46l0.45,2.1l0.01,1.94l0.27,0.88l1.3,1.72l-0.77,0.06l-1.84,-1.77l-0.48,-0.01l0.02,1.33l-0.45,-1.98l-0.51,-0.31l-0.67,0.4l-0.04,1.56l-1.22,-0.46l-1.86,0.87l-0.79,0.06l0.11,-0.88l-1.36,-0.9l-0.9,-0.02l-0.6,0.64l-1.75,-2.35l-1.96,-1.13l0.78,-2.82l4.43,-1.77l0.2,-0.57l-0.36,-1.98l-0.6,-0.34l-0.71,0.3l0.01,-1.53l-0.4,-0.43l-0.73,0.2l-0.33,0.57l-1.35,-0.45l-0.97,0.16l-0.33,0.36l1.51,1.12l0.5,1.38l-0.92,0.03l-0.89,0.76l-0.75,0.18l-0.19,0.67l0.52,0.61l-0.59,0.38l-0.66,1.45l-2.06,-1.94l-1.14,-0.34l-0.21,-0.79l-2.13,-0.87l-1.87,-0.17l0.38,-0.4l0.08,-1.06l0.95,0.1l0.65,-0.32l1.28,-2.54l0.88,-0.82l-0.25,-0.95l-0.44,0.09l-2.95,2.66l-1.78,0.9l-1.23,0.25l-0.32,0.34l0.22,0.41l0.92,0.77l-4.61,0.99l-0.63,-0.17l-2.02,-2.33l-2.01,-3.11l-0.6,-0.18l-0.57,0.4l-0.83,-0.02l-2.13,-0.46l-2.06,0.0l-1.4,-1.03l-2.45,0.05l-0.95,-0.29l-0.44,-0.91l-0.74,-0.41l-3.29,1.44l-0.96,-0.68l-3.48,0.2l-1.22,-1.97l-0.89,-0.77l0.11,-1.0l-0.37,-0.51l-1.34,-0.44l-0.26,-0.87l-1.15,-1.13l-1.72,-1.0l-1.75,-0.32l-0.44,0.53l0.51,1.46l-0.36,0.96l-0.24,0.22l-0.49,-0.49l-1.37,0.27l-0.79,0.62l-1.44,-1.0l-2.43,-0.67l-0.69,-0.82l-1.04,-2.67l-0.42,0.16l-0.7,1.27l0.43,1.31l1.4,1.55l-1.0,0.23l-0.97,0.66l-0.91,-1.34l-1.28,0.04l-0.48,1.28l0.73,0.75l-0.22,0.89l0.4,0.4l1.27,0.0l-1.81,1.5l-2.27,0.79l-8.52,-0.35l-0.07,-1.48l1.2,-0.18l0.52,-0.76l-0.21,-1.72l-1.54,-4.18l-0.96,-1.47l-2.99,-3.31l-6.1,-3.99l-1.18,0.45l-1.3,1.04l-1.84,-1.46l-3.15,-0.06l-3.8,-0.92ZM122.84,278.42l0.11,0.08l-0.08,0.32l-0.03,-0.4ZM122.52,282.02l0.23,1.3l1.65,2.47l-0.96,-0.23l-0.59,0.29l-0.71,-2.5l0.37,-1.33ZM133.84,278.57l0.45,0.38l-0.04,0.12l-0.41,-0.51ZM123.36,297.99l1.01,0.42l1.66,-0.07l0.33,0.33l-0.17,0.99l-1.32,0.33l-4.68,-0.38l-3.08,-0.8l-0.79,-0.48l0.14,-1.16l-1.41,-3.37l0.57,-0.67l4.02,1.8l3.72,3.05ZM1.37,208.95l2.5,-0.92l1.47,0.95l-2.48,1.11l-0.61,-1.01l-0.88,-0.14Z",
+            "regionName": "Bretagne",
+            "content": "The region of tradition and folklore. Music and the Feznoz parties. The magical coast of Brittany offer a very spectacular landscape. The charm and gentleness of the people, fine regional cuisine, cider, traditional costumes, language and Celtic influence makes this a very special region.\nThe dramatic coast lines, with cliffs, rock lined beaches and emerald waters are ideal for sailors, wind surfers and divers.\n Old fishing ports are dotted along the coast, from where the boats used to set sail to \"La Terre-Neuve (the Newfoundland) in Canada.\nThe shell fish and other sea food is excellent and abundant. Another very traditional dish from Brittany is the \"Pancake\".",
+            "post_id": "498"
+        }, 
+       "fr-x1": {
+            "path": "M572.78,248.31l2.08,2.76l1.34,0.84l0.91,0.04l2.45,-1.72l13.22,-1.52l1.29,-0.82l0.21,-1.86l1.83,-1.16l3.72,0.47l2.38,-0.98l2.0,1.2l3.68,0.69l0.55,0.46l-0.52,1.12l0.41,0.79l2.84,0.99l0.59,0.52l-1.02,1.96l0.47,1.65l1.15,0.43l0.67,-0.37l0.54,-0.83l0.47,-0.03l3.02,3.37l2.43,4.0l0.05,1.03l-2.6,0.55l-0.58,0.46l-0.24,0.88l1.41,1.97l0.37,2.77l0.83,1.89l1.58,0.62l1.84,-1.46l0.41,0.07l2.15,2.8l2.67,1.55l2.02,-0.25l1.44,-1.65l0.75,-0.28l0.74,1.67l1.78,1.46l2.45,1.22l0.68,2.08l0.94,0.42l0.76,-0.18l2.08,-1.37l1.1,1.03l1.19,-0.18l2.67,-4.97l0.7,-0.81l0.64,-0.2l3.99,-0.6l3.21,1.65l1.53,0.3l6.58,-1.86l0.7,-0.44l0.69,-0.83l0.2,-0.97l-0.19,-2.21l0.55,-2.48l-0.58,-2.14l0.19,-0.51l0.63,-0.82l6.42,-3.94l2.41,-2.91l2.03,-0.75l0.4,-0.92l-0.24,-0.87l1.66,-0.91l1.8,-2.61l0.31,0.88l-0.17,1.53l0.84,0.59l3.53,-2.14l2.66,-2.84l1.54,-0.3l2.78,0.53l1.12,0.68l0.83,1.02l-0.06,1.28l0.31,0.67l3.72,1.77l2.64,-0.19l2.39,-1.21l3.0,-0.19l2.26,0.8l5.28,2.92l1.38,0.35l2.17,-0.03l1.59,-0.57l1.93,-2.36l0.72,-0.14l3.61,3.45l3.4,1.51l6.19,4.28l1.5,0.2l0.14,1.19l0.91,0.99l8.6,4.3l0.93,0.78l0.84,1.51l0.15,2.71l-0.51,1.44l-1.54,2.09l0.01,1.47l0.98,0.9l2.57,0.38l3.76,3.82l0.41,1.01l0.0,1.19l-0.38,1.14l-2.02,-0.53l-3.13,0.45l-2.79,-0.68l-2.25,0.79l-0.29,0.46l0.15,0.87l0.88,1.86l-1.14,1.05l-2.47,0.75l-0.32,0.37l-0.08,1.24l-1.37,0.7l-1.02,1.11l-1.15,2.35l0.42,0.52l7.29,-0.62l1.04,-0.41l2.04,1.73l-0.29,0.52l-1.73,0.73l-0.94,1.05l-0.92,0.22l-1.15,1.02l-0.52,1.79l0.21,1.82l-4.0,2.53l-1.78,1.58l-1.19,1.68l-3.91,3.12l-1.76,0.53l-0.28,0.41l0.06,1.05l-0.9,0.44l-0.31,0.51l-1.37,0.42l-0.72,0.57l-0.9,1.31l0.59,1.61l-1.2,1.49l-3.98,2.62l-6.53,1.77l-3.04,1.51l-1.11,2.94l1.07,2.32l0.08,1.66l-1.81,4.3l0.94,1.51l-0.16,1.55l-1.18,1.03l-2.12,1.0l-2.15,1.96l-4.43,2.12l-8.29,6.58l-0.92,1.27l0.3,1.23l1.2,1.17l-1.94,2.13l-3.09,4.33l0.33,2.88l-3.79,4.35l-2.1,1.94l-1.03,1.64l-4.26,3.58l-2.33,0.56l-7.03,-0.44l-0.45,-0.65l-0.22,-1.3l-0.66,-0.88l-3.08,-2.47l-0.52,-0.06l-2.8,2.33l-0.57,1.15l-1.28,0.24l-1.18,1.22l-1.45,0.59l-0.82,0.73l-1.63,-0.33l-0.55,-0.58l0.17,-3.09l-0.55,-0.51l-1.61,-0.3l-0.9,-1.08l-2.54,-0.97l-1.18,-3.01l-1.25,-0.94l-1.43,-0.41l-0.41,-0.65l-0.02,-2.61l-0.31,-0.39l-4.28,-1.02l-1.53,-0.8l-2.16,-1.97l-1.58,-0.52l-2.05,0.18l-3.7,1.25l-1.28,0.13l-3.18,-1.12l-1.8,-0.3l-1.05,0.23l-0.72,0.64l-1.5,3.9l-0.84,4.18l-1.47,2.56l-0.15,1.93l-3.53,6.7l-1.32,4.86l0.08,0.87l-2.89,-0.32l-0.98,-0.75l-0.98,-2.54l0.04,-1.79l-1.73,-1.29l-0.18,-1.86l-0.76,-0.6l-1.87,-0.55l-1.12,0.62l-0.53,1.93l-1.03,0.26l-2.35,-2.01l-0.72,0.04l-1.62,0.92l-1.03,0.08l-2.29,-0.51l-2.25,-0.92l-0.92,0.11l-0.68,0.9l-1.27,4.46l-1.74,2.06l-1.51,1.09l-1.62,0.57l-1.65,0.02l-4.83,-1.24l-3.08,0.65l-4.17,-0.93l-4.25,1.28l-1.42,-0.08l-2.06,-1.47l-2.77,-1.06l0.11,-2.73l-0.6,-1.7l5.26,-2.58l1.52,-1.33l0.08,-0.97l-0.86,-1.29l0.04,-1.38l-0.52,-1.25l0.64,-3.0l-0.8,-3.17l-2.08,-1.35l-4.18,-0.89l-2.7,-2.24l-1.72,-0.07l-3.83,-1.94l0.37,-3.1l-0.38,-1.88l-1.07,-0.72l-1.57,-2.64l-2.41,-2.14l-0.51,-1.65l-1.52,-2.44l-2.0,-0.46l-0.44,0.26l-0.43,1.96l-1.36,0.87l-0.44,1.79l-3.8,2.0l-1.31,0.28l-0.45,-0.19l-0.06,-1.53l-1.67,-2.57l-1.59,-0.43l-0.82,0.13l-1.33,1.43l-0.97,0.48l-2.64,-1.07l-1.82,-0.29l-1.87,0.11l-3.04,1.06l-3.34,-2.82l-1.29,-0.36l-1.77,0.04l-2.77,-1.63l-1.05,-1.28l-0.19,-0.83l0.34,-2.43l2.35,-4.46l-1.16,-3.32l1.31,-4.66l-0.44,-5.56l-2.26,-2.43l0.11,-3.58l-1.26,-4.05l-1.41,-3.21l-0.84,-3.54l-3.63,-3.57l-1.85,-1.04l-0.71,-1.21l2.92,-5.34l0.56,-3.19l-0.17,-0.62l-1.7,-2.2l-1.25,-2.57l-1.44,-1.56l0.08,-0.29l2.27,-1.1l2.94,-0.21l1.27,-0.38l0.25,-0.54l-0.6,-1.33l-2.08,-2.61l0.57,-2.21l-1.26,-2.45l-2.54,-2.22l-2.26,-0.85l-0.21,-1.48l0.17,-0.7l0.75,-0.56l4.07,-0.42l4.77,-2.29l0.53,-0.86l-0.08,-2.09l0.82,-1.64l-0.97,-2.16l-0.15,-2.18l1.55,-0.25l1.46,-1.47l2.5,-1.52l2.08,-4.18l-0.63,-2.78l-2.95,-2.35l-0.89,-1.09l-1.46,-4.45l-1.91,-1.27l-3.81,-0.73l0.73,-2.78l3.72,-2.26l1.64,-2.66l0.15,-0.86l-0.86,-1.48l-0.18,-1.43l1.15,-3.5l0.41,-0.36l3.03,0.06l2.27,-0.89l4.61,0.48l6.23,-0.91l2.51,0.47l0.72,-0.38l0.87,-1.43l1.29,-1.21l0.68,0.48l0.65,2.62l0.7,0.31l1.89,-0.13l2.82,1.56l5.42,6.18l0.37,0.67l0.39,2.99l-1.82,2.13l0.14,1.13l2.19,0.89l3.06,2.04l1.02,0.12l1.09,-0.29l0.78,-1.18l1.07,0.24l1.04,2.12l1.93,1.93l4.55,6.82l-1.58,0.69l-0.06,1.02l2.02,1.14l2.25,-0.31l0.24,0.47l-0.05,2.31l0.83,1.24l2.41,0.53l2.82,-0.18l1.96,0.66l0.71,-0.08l1.68,-1.15l1.71,0.44l2.04,-0.07l2.04,-1.61l0.63,0.05l1.22,0.92l0.82,0.12l0.66,-0.82l0.03,-1.6Z",
+            "regionName": "Bourgogne – Franche Comt\u00e9",
+            "post_id": "492"
+        }, 
+//       "fr-mq": {
+//            "path": "M29.58,521.59l2.04,4.09l0.61,0.13l1.69,-1.37l2.35,-1.15l2.71,-0.7l1.66,-0.01l-1.1,1.0l0.15,0.92l-1.99,2.03l-1.17,-1.91l-0.57,-0.12l-1.08,0.91l-0.34,2.42l0.25,2.72l0.56,0.33l1.58,-0.37l0.87,0.65l-2.81,1.51l-0.09,0.63l0.51,0.51l-0.97,0.5l-0.21,0.44l0.48,1.35l1.03,0.35l0.45,-0.14l0.84,-1.13l2.53,1.1l-1.26,0.61l-0.22,0.52l0.83,1.98l1.01,1.02l2.32,1.31l0.92,2.1l2.03,0.78l0.32,0.71l-0.03,1.98l0.6,0.39l0.71,-0.41l-0.25,2.4l0.41,1.46l0.77,1.07l-1.35,1.57l0.15,0.59l1.42,0.69l1.69,5.35l-1.43,0.75l-1.43,3.51l-1.14,1.51l-1.19,0.51l-1.52,0.14l-1.15,-0.51l-0.42,-1.43l0.56,-0.96l1.27,-0.41l1.36,-0.96l0.05,-2.11l-1.15,-1.71l-0.48,-0.15l-3.49,1.8l-1.39,-0.1l0.06,-0.84l-0.32,-0.42l-0.79,-0.15l-3.38,0.55l-6.91,-0.91l-2.07,0.3l-2.92,1.18l-1.59,0.24l-0.81,-0.46l-2.5,-3.48l-0.12,-1.4l-1.35,-0.99l2.86,-2.99l3.07,-1.49l0.78,-0.71l1.21,1.62l2.11,0.55l1.94,-0.83l0.87,-2.13l-2.15,-3.7l-0.25,-2.0l-0.53,-0.33l-3.16,0.87l-5.49,-0.02l-1.6,-2.4l-4.32,-2.94l-2.07,-1.98l-1.24,-3.51l-1.31,-1.93l0.78,-2.27l-0.31,-1.75l-1.64,-2.67l-3.41,-3.56l-0.79,-1.4l-0.29,-1.59l0.29,-1.51l0.74,-1.23l0.98,-0.9l4.61,-2.61l4.02,-0.06l3.94,1.27l5.23,3.33l4.71,2.09l1.84,1.19l1.36,2.81l1.45,0.5Z",
+//            "regionName": "Martinique",
+//            "post_id": "500"
+//        }, 
+//       "fr-yt": {
+//            "path": "M678.38,715.39l-0.52,0.0l-2.02,-6.29l2.65,-2.73l0.87,2.15l0.24,2.21l-0.38,2.26l-0.84,2.4ZM647.49,692.27l-1.04,0.75l-0.14,0.46l1.6,0.36l0.6,0.88l2.18,1.87l2.93,3.52l1.63,1.28l2.49,0.62l4.96,-0.04l2.61,0.78l2.6,1.74l1.05,1.73l0.02,2.1l-0.68,2.82l-3.71,5.46l-1.53,1.19l0.14,2.09l1.04,1.92l2.81,1.86l-0.3,1.89l-3.07,6.4l-2.6,3.07l-1.21,3.45l2.82,4.18l-1.15,1.69l-1.53,1.06l-0.76,-1.37l-0.41,-0.2l-1.1,0.17l-1.53,1.03l-1.83,0.51l-1.63,-0.43l-2.25,-1.33l-1.24,0.41l0.12,-1.88l-0.84,-1.8l-1.74,-0.77l-1.92,0.17l0.0,-0.31l2.91,-1.61l0.29,-2.68l-1.49,-2.81l-2.83,-1.57l0.22,-0.43l1.06,-0.67l1.55,-0.14l0.82,0.5l2.83,3.33l2.81,1.68l1.89,-0.73l0.6,-2.42l-0.76,-2.88l-1.37,-2.17l-1.74,-1.96l-4.21,-3.56l2.58,-0.75l0.36,-0.4l-0.07,-1.34l-0.91,-1.33l-0.68,-2.3l-0.55,-4.71l-0.6,-2.37l-1.57,-1.23l-1.87,-0.61l-1.59,-1.03l-1.74,-2.81l-0.41,-4.1l7.31,-7.87l0.59,1.27l-0.82,0.34Z",
+//            "regionName": "Mayotte",
+//            "post_id": "501"
+//        }, 
+       "fr-x4": {
+            "path": "M522.82,186.37l0.16,-1.02l1.68,-1.84l-0.22,-0.68l-0.89,-0.72l3.35,-0.37l0.76,-1.01l0.2,-1.75l1.48,-2.59l4.29,-3.81l1.07,-2.07l1.68,-1.1l0.81,-1.18l2.06,-1.61l0.39,-0.63l-0.02,-1.16l-0.99,-0.78l-3.39,0.04l-0.83,-0.47l0.06,-1.11l1.31,-0.86l1.17,-1.67l0.21,-0.79l-0.25,-2.97l1.17,-0.73l3.12,0.34l1.45,-0.25l1.33,-1.0l0.36,-0.86l-0.5,-1.26l-1.41,-0.81l-0.87,-0.98l-1.6,-0.47l-0.56,-4.86l-0.91,-2.12l2.95,-1.52l5.1,-1.23l4.31,-0.57l0.52,-0.78l-0.12,-1.35l0.85,-0.54l2.04,0.1l3.04,1.4l2.06,-0.68l2.32,0.84l1.14,-0.78l0.49,-1.35l0.08,-2.0l-0.52,-1.32l-0.68,-0.44l0.36,-0.58l1.56,-0.48l0.31,-0.52l-1.82,-3.65l1.76,-1.97l-0.32,-2.31l0.46,-1.54l-1.6,-4.48l0.75,-0.67l1.86,-0.09l1.55,-0.83l1.47,-2.03l1.72,-1.03l3.2,-2.67l0.94,-1.48l0.01,-1.35l-1.51,-2.11l0.44,-2.67l1.83,-3.2l0.19,-1.43l-0.27,-1.06l-1.76,-2.77l-0.03,-2.56l3.32,-0.4l9.73,2.22l1.91,-0.29l8.49,-3.54l2.64,-0.38l0.81,-0.51l1.03,-2.26l0.49,-2.73l-0.42,-1.4l0.42,-1.14l6.43,-5.47l1.16,-0.45l0.43,1.03l0.89,0.26l1.7,-0.3l0.3,0.34l-0.46,3.48l-0.42,-0.16l-0.65,0.28l-1.15,2.13l-0.07,2.33l-2.32,4.87l-0.3,1.37l0.89,1.44l2.96,1.1l0.83,1.27l-0.04,1.46l-1.51,3.13l0.87,1.86l0.09,3.19l0.8,0.73l1.7,0.19l5.18,-1.02l3.3,2.38l3.4,1.12l3.27,3.72l2.07,1.47l1.72,0.4l3.86,-0.67l2.26,2.11l0.31,0.88l-0.71,0.59l-0.19,1.13l0.55,1.39l1.85,0.16l0.84,-1.02l2.66,0.93l1.03,0.78l2.89,4.41l0.2,1.33l-0.26,1.48l0.69,1.13l1.59,0.26l4.1,-2.17l2.36,0.84l1.04,-0.1l1.27,-1.8l1.33,-0.57l4.11,0.97l2.13,-1.42l2.44,0.88l3.06,3.02l1.61,0.63l3.79,0.76l0.99,0.85l0.81,2.18l0.48,0.25l7.2,-0.85l1.6,-1.26l0.33,-1.21l1.94,-0.22l0.21,-0.79l2.88,-0.27l3.24,0.68l4.79,2.7l1.85,0.15l2.29,-0.93l0.53,0.08l5.52,2.34l0.95,0.78l0.43,1.78l3.49,3.43l-1.28,0.51l-0.34,1.05l0.39,0.92l5.12,4.46l-0.0,1.31l1.48,0.85l1.03,2.86l0.65,0.17l0.76,-0.38l0.24,0.78l-0.46,1.9l1.04,1.55l0.86,0.29l2.67,0.02l2.33,0.73l0.97,-0.14l1.37,-1.65l-0.67,-2.53l0.24,-0.75l2.79,0.42l1.85,-0.14l4.34,1.88l1.09,0.08l-0.03,2.41l0.73,2.3l1.51,1.11l2.29,-0.99l0.3,-0.66l-0.21,-0.77l0.26,-0.22l2.39,1.43l1.98,0.72l5.31,0.06l2.06,0.7l0.67,-0.41l0.98,-1.46l2.37,-0.6l0.98,-1.9l2.23,-0.77l0.85,0.06l0.55,0.9l3.47,0.42l0.22,0.64l-0.49,0.46l-0.0,0.71l3.02,3.51l1.57,0.84l2.62,0.39l1.24,0.55l0.93,1.37l0.84,0.6l1.01,0.16l2.14,-0.55l2.64,0.55l2.77,-0.96l5.0,1.23l4.59,-0.2l9.65,4.37l6.29,1.29l-1.02,1.01l-1.91,3.08l-2.79,6.52l-0.7,1.0l-3.2,1.38l-0.7,0.85l-0.46,1.3l-2.12,0.14l-0.95,0.41l-0.65,2.78l-3.8,3.45l-2.72,1.47l-2.58,3.44l-0.59,2.73l-0.01,2.81l0.72,2.0l-2.23,1.72l-0.47,2.28l-1.12,1.98l-0.77,3.01l-0.07,1.2l0.89,2.96l-0.06,0.91l-0.71,0.98l-2.24,1.43l-0.92,4.51l-4.46,5.68l-0.61,2.23l-1.16,1.77l-0.81,2.75l0.18,3.35l2.65,4.1l0.12,2.21l-2.19,2.41l-0.36,2.63l-1.24,1.91l0.21,3.21l-1.19,0.9l-1.06,3.68l0.75,2.84l-0.03,1.09l-1.25,1.28l-0.34,0.8l0.43,2.7l1.23,0.87l2.11,3.24l1.05,1.06l-0.21,1.33l-3.51,1.37l-2.73,1.91l0.1,0.7l1.12,0.69l0.01,0.32l-1.72,0.61l-0.07,0.53l0.6,1.0l-0.84,0.74l-2.31,-0.79l-0.93,0.18l-0.3,0.87l0.9,1.46l-1.22,1.75l-1.53,0.53l-4.27,-0.15l-4.24,1.21l-0.96,-0.82l-3.02,-1.12l-0.26,-0.95l1.04,-2.07l-0.39,-0.58l-1.82,0.11l0.39,-1.2l0.0,-1.45l-1.12,-2.14l-3.45,-3.28l-0.86,-0.37l-1.8,-0.05l-0.57,-0.53l0.01,-0.77l1.5,-2.01l0.61,-1.75l-0.17,-3.01l-1.03,-1.85l-1.11,-0.92l-8.58,-4.29l-0.62,-0.69l-0.07,-1.18l-0.36,-0.37l-1.57,-0.16l-6.14,-4.25l-3.36,-1.49l-2.89,-3.05l-1.0,-0.52l-0.66,-0.08l-0.72,0.37l-1.82,2.29l-1.32,0.48l-1.98,0.03l-1.09,-0.27l-5.28,-2.92l-2.42,-0.87l-3.37,0.19l-1.11,0.31l-1.36,0.92l-2.15,0.18l-3.33,-1.51l-0.16,-1.78l-1.1,-1.33l-1.36,-0.79l-2.91,-0.55l-2.05,0.41l-2.72,2.89l-3.08,1.95l0.04,-2.28l-0.66,-0.67l-0.65,0.03l-0.83,0.72l-1.26,2.11l-1.69,0.8l-0.26,0.52l0.33,0.93l-0.2,0.45l-1.94,0.67l-2.38,2.89l-6.41,3.93l-0.82,1.02l-0.32,1.1l0.57,2.0l-0.54,2.43l0.2,2.14l-0.58,1.27l-6.85,2.14l-1.15,-0.23l-3.43,-1.72l-4.29,0.62l-1.46,0.81l-2.83,5.28l-0.39,0.11l-0.67,-0.88l-0.77,-0.22l-2.89,1.56l-0.53,-0.69l-0.42,-1.51l-3.74,-2.21l-0.5,-0.48l-0.45,-1.41l-0.55,-0.47l-1.19,0.09l-1.76,1.89l-1.49,0.14l-2.23,-1.34l-2.42,-2.98l-1.06,-0.04l-1.62,1.4l-0.89,-0.42l-0.59,-1.48l-0.36,-2.77l-1.38,-1.79l0.33,-0.6l2.33,-0.37l0.83,-0.93l-0.18,-1.31l-1.18,-2.31l-4.52,-5.41l-1.18,-0.18l-1.09,1.24l-0.51,-0.21l-0.23,-0.95l0.85,-1.35l0.11,-1.07l-1.02,-0.91l-2.65,-0.91l0.44,-1.3l-0.31,-0.7l-0.84,-0.49l-3.68,-0.69l-1.99,-1.23l-2.67,0.98l-2.98,-0.51l-1.76,0.38l-1.47,1.25l-0.22,1.84l-0.81,0.45l-13.17,1.5l-2.39,1.7l-0.5,0.01l-1.12,-0.71l-1.95,-2.64l-0.78,-0.38l-0.55,0.41l-0.26,2.11l-1.42,-0.99l-1.02,-0.13l-0.91,0.39l-1.31,1.25l-1.75,0.05l-1.93,-0.43l-1.85,1.2l-2.25,-0.63l-2.87,0.17l-1.97,-0.36l-0.57,-0.86l0.08,-2.22l-0.52,-0.94l-0.98,-0.2l-1.67,0.35l-1.41,-0.73l1.56,-0.67l0.12,-0.94l-4.65,-7.0l-1.91,-1.9l-0.72,-1.79l-0.62,-0.61l-1.22,-0.42l-0.78,0.28l-0.57,1.04l-1.58,0.12l-2.82,-1.93l-2.05,-0.84l1.35,-1.41l0.55,-1.05l-0.39,-3.31l-0.49,-0.96l-5.62,-6.39l-3.0,-1.66l-2.3,-0.01l-0.47,-2.37l-1.12,-0.92l-0.15,-0.51l0.56,-2.27l-0.63,-1.75l1.81,-1.89l-0.93,-1.96l2.55,-0.54l0.75,-0.59l1.02,-2.47l0.98,-1.32l2.66,-1.99l0.06,-0.58l-1.98,-2.34l-2.8,0.05l-0.2,-1.26l0.51,-1.93l-0.76,-3.12l-2.03,-2.25l-1.36,-0.04Z",
+            "regionName": "Grand-Est",
+            "post_id": "502"
+        }, 
+       "fr-x5": {
+            "path": "M296.09,638.61l-0.69,-4.39l0.23,-0.9l1.78,-2.58l-0.28,-3.88l2.39,-2.45l2.79,-0.25l0.84,-0.59l0.32,-0.83l-0.41,-1.39l0.02,-1.75l0.72,-0.92l2.37,-1.37l1.67,-2.92l1.05,0.11l0.6,-0.32l1.2,-3.37l1.88,-1.77l0.55,-1.02l0.07,-0.67l-0.62,-1.7l0.51,-2.21l0.68,-0.76l2.02,-0.75l0.47,-0.89l-1.07,-3.38l0.21,-2.73l-0.21,-0.77l-0.56,-0.5l-0.61,-0.06l-0.78,0.37l-1.02,1.09l-0.38,-0.27l-0.07,-1.71l1.65,-0.19l0.44,-0.8l-0.43,-1.63l-1.92,-3.78l-1.59,-1.2l-0.74,-1.54l-1.23,-0.77l-5.85,-1.11l-1.94,0.13l-0.8,-1.93l-0.88,-0.6l1.33,-2.32l-0.5,-1.87l1.41,-0.23l0.84,-0.72l1.33,-3.17l-0.83,-1.53l0.05,-2.22l1.48,-3.42l-0.0,-0.64l-0.91,-2.1l-1.51,-1.7l0.06,-0.26l3.02,-2.18l2.14,0.33l2.17,-0.22l1.91,-1.79l2.5,-1.32l1.3,0.7l0.06,0.52l-0.83,1.47l0.06,0.63l0.61,0.78l1.48,0.53l2.83,0.04l0.81,-0.49l0.46,-0.83l-0.21,-2.54l0.68,-1.02l1.79,-0.56l0.96,0.87l1.31,-0.01l1.3,-0.95l2.0,-2.61l0.42,-0.08l4.36,1.63l0.81,-0.02l3.09,-1.56l1.3,-0.2l4.46,-1.96l1.1,-0.75l2.5,0.3l5.09,-1.52l1.7,0.75l2.19,1.82l1.56,-0.16l3.92,-2.03l1.14,-2.97l2.17,-1.22l0.77,-1.7l1.0,-0.23l2.2,0.69l1.76,-0.35l0.51,-0.77l-0.02,-0.8l-0.33,-0.62l-1.03,-0.71l2.05,-1.55l2.29,-4.41l0.28,-1.14l-0.68,-1.14l-2.14,-0.75l-0.89,-1.21l0.8,-1.93l0.2,-2.29l0.6,-0.27l1.68,0.95l1.42,0.26l5.01,-0.38l1.18,-1.19l0.12,-3.52l-1.84,-1.84l-0.96,-2.38l-0.09,-1.96l-1.19,-1.7l0.07,-0.49l0.56,-0.53l2.99,-1.33l3.6,-2.94l3.41,-5.27l0.78,-0.63l2.29,-0.5l4.57,-2.86l1.44,-2.18l-0.02,-1.02l-0.61,-0.82l0.11,-0.81l0.64,-0.86l2.37,-0.76l1.69,-2.66l2.13,-1.79l0.74,-1.12l-0.14,-1.73l0.68,-1.13l0.08,-1.03l-1.31,-3.89l0.24,-0.96l3.33,-2.09l1.05,-0.26l1.04,-0.9l1.16,1.27l2.28,-0.55l2.62,0.91l4.01,2.82l1.3,1.87l1.92,0.91l1.31,1.01l0.85,0.2l1.52,0.03l3.21,-0.98l3.94,-1.84l2.17,0.72l1.98,-0.89l4.23,-0.19l0.61,1.12l0.9,5.86l3.12,4.71l1.22,2.47l-0.85,4.57l-0.66,1.67l0.13,0.4l1.71,1.0l1.23,3.98l0.91,0.71l0.84,0.16l0.43,-0.29l0.49,-1.7l5.01,-1.51l1.0,0.08l1.12,1.11l0.62,0.08l1.36,-0.63l3.34,0.11l1.98,-0.21l1.25,-0.59l3.91,-4.25l0.61,-2.45l2.43,-3.52l0.63,-2.44l7.94,-7.42l2.16,2.45l0.35,2.78l0.85,0.31l2.55,-0.29l2.18,2.96l0.8,2.12l1.02,0.73l1.85,0.66l-1.03,0.82l-0.2,0.72l0.58,1.36l0.58,3.63l1.38,2.09l2.07,1.57l0.62,-0.19l0.85,-2.42l1.89,-2.92l0.36,-2.65l1.38,-4.58l0.47,-0.79l1.76,-1.22l0.98,-3.72l0.74,-0.4l1.59,1.82l1.21,-0.05l1.38,-0.79l3.42,-3.06l2.41,-0.28l3.68,-2.03l1.93,-0.24l0.36,0.35l0.79,2.6l3.5,5.9l1.31,1.29l1.23,0.42l1.33,-0.63l3.37,-0.36l1.07,-0.91l0.56,-2.31l0.89,-0.32l1.69,0.16l0.84,0.67l-0.48,1.5l0.3,0.89l4.51,0.95l4.08,3.38l2.89,1.45l1.57,0.41l-0.03,2.85l1.28,3.55l0.51,3.07l0.72,2.11l0.66,1.17l1.36,0.88l0.8,1.32l2.21,6.94l1.77,1.52l1.64,2.61l-0.83,2.07l0.49,3.26l0.42,0.65l0.92,0.24l4.17,-0.59l1.08,1.04l4.93,2.42l1.51,0.3l1.25,-0.53l1.13,-1.2l2.93,-1.99l2.23,-0.62l0.91,0.24l-0.18,1.71l0.35,0.84l1.54,0.89l0.98,-0.13l1.05,-0.78l0.46,-2.02l0.63,-0.49l3.18,-0.06l1.68,0.67l2.19,2.02l1.73,0.78l2.57,0.61l0.57,1.69l1.23,1.54l0.1,1.58l1.9,1.83l0.18,2.73l-0.33,2.14l0.45,2.79l0.62,0.47l1.22,-0.4l1.2,0.21l4.51,5.33l-0.09,0.53l-1.09,-0.09l-0.55,0.26l-0.07,2.45l-1.05,1.25l-1.67,1.19l-2.8,1.16l-5.36,3.57l-0.17,0.92l0.54,4.15l-1.95,4.79l0.01,1.9l-0.43,1.1l-4.47,-1.25l-2.03,0.57l-1.49,1.04l-1.68,2.12l-1.37,2.92l0.45,1.06l1.58,0.26l-0.52,1.33l-2.32,0.57l-0.61,1.38l-1.54,0.44l-3.46,2.46l-2.02,0.48l-1.44,1.06l-1.17,0.31l-1.37,3.01l-2.27,-0.34l-2.81,-1.63l-0.8,-1.47l0.85,-1.47l-0.07,-0.6l-1.92,-1.42l-3.63,-0.32l-3.46,0.39l-2.41,0.83l-13.11,9.5l-7.26,2.86l-2.05,1.55l-4.61,5.42l-1.04,0.41l-2.52,-1.04l-4.05,0.36l-4.36,1.63l-4.56,3.3l-1.44,1.8l-2.59,2.25l-1.5,2.23l-2.41,2.09l-2.8,6.09l-1.93,6.26l0.17,0.94l0.79,0.58l0.07,1.22l-0.96,8.67l0.17,4.88l-0.34,3.08l0.26,4.02l0.72,5.72l1.02,1.05l4.27,1.24l0.37,0.52l-0.12,1.76l1.98,2.59l0.3,1.34l-2.29,0.36l-3.05,-0.09l-1.83,-0.7l-1.61,-2.13l-2.87,-0.28l-1.16,0.57l-2.17,-0.57l-1.94,1.35l-3.1,0.24l-3.76,2.65l-4.83,-0.08l-1.22,0.53l-2.65,1.86l-0.57,0.72l0.5,1.8l0.52,0.57l-2.26,-0.17l-2.79,-0.85l-1.31,0.01l-0.83,0.63l-0.48,1.11l-0.67,0.22l-2.94,-1.07l-1.08,-0.76l-1.67,-2.44l-2.78,-0.4l-6.16,-2.91l-1.99,0.2l-3.71,1.04l-3.02,-0.29l-1.14,0.54l-1.01,1.86l-2.45,1.95l-0.62,0.36l-2.45,0.36l-0.71,-0.1l-1.77,-1.24l-1.32,-3.75l-1.07,-1.5l-3.53,-0.74l-4.73,-2.58l-4.65,-0.78l-0.31,-0.6l0.18,-1.54l0.62,-1.4l0.95,-0.83l1.41,-0.12l0.28,-0.64l-0.97,-1.12l-2.03,-0.75l0.42,-1.19l-0.34,-0.53l-6.9,-0.61l-4.12,-2.32l-2.77,0.67l-1.86,-0.09l-0.4,0.28l-0.88,2.73l-0.91,0.33l-0.66,-0.77l-1.07,-2.58l-2.23,-3.15l-1.29,-0.49l0.21,-0.83l-0.29,-0.49l-1.53,-0.36l-7.55,-0.02l-2.58,0.53l-0.9,-0.58l-1.64,-3.14l-1.32,-1.06l-1.36,-0.37l-5.14,-0.31l-1.98,-1.15l-1.93,0.82l-1.92,-1.37l-4.63,-2.09l-2.28,-0.07l-4.25,-1.04l-1.85,0.13l-1.67,0.77l-0.3,1.2l0.12,1.49l-0.82,1.99l0.47,0.91l-0.83,1.28l0.24,0.56l0.76,0.24l0.61,0.69l0.36,0.97l-0.05,1.0l-0.39,0.58l-10.29,0.14l-1.18,-0.37l-3.41,0.59l-1.07,-0.19l-0.39,-1.05l-2.06,-1.35l-1.26,0.44l-2.75,3.06l-0.55,0.07l-2.26,-3.03l-4.31,-1.22l-1.14,0.13l-1.23,0.71l-3.75,0.5l-4.68,1.54l-1.99,0.16l-2.26,-0.8l-1.02,-1.0l-1.36,-0.45l-0.27,-0.97l-1.39,-1.16l-0.66,-0.99l-0.32,-1.14l0.13,-1.21l-0.54,-0.42l-2.76,0.82l-1.36,-0.14l-0.79,-1.35l-3.39,-1.83ZM436.08,668.09l0.96,-0.22l0.2,-0.59l-1.32,-2.33l-0.63,-0.79l-0.47,-0.12l-0.9,0.48l-0.67,1.33l0.07,1.16l0.97,0.84l1.79,0.25ZM309.0,601.52l-0.8,-0.16l-0.41,-0.99l0.4,-2.01l0.84,-0.4l0.79,0.28l0.31,0.77l-0.59,2.03l-0.54,0.47ZM307.75,607.5l-0.9,-0.16l-0.53,-1.24l0.07,-0.86l1.14,-1.14l1.03,0.52l0.48,1.4l-0.86,1.31l-0.43,0.15Z",
+            "regionName": "Languedoc-Roussillon and Midi-Pyr\u00e9n\u00e9es",
+            "post_id": "503"
+        }, 
+       "fr-x6": {
+            "path": "M415.84,70.92l0.57,0.0l0.4,-0.4l0.0,-0.59l-0.39,-0.4l-2.26,-0.33l-0.8,-0.54l-1.15,-2.03l-2.54,-1.04l-0.42,-0.47l0.59,-5.43l1.08,-1.83l2.08,0.36l0.47,-0.39l-0.18,-0.83l-3.2,-2.12l1.12,-3.04l0.33,-6.83l1.74,-1.1l0.1,-0.58l-1.61,-2.08l-0.3,-1.01l-0.26,-3.74l-0.64,-3.46l0.26,-2.94l2.0,-4.41l0.34,-1.54l-1.52,-6.24l1.26,-0.84l3.05,-0.71l2.82,-2.96l1.8,-1.42l11.58,-4.22l1.24,0.13l2.03,-1.0l9.83,-1.04l11.16,-3.16l4.16,0.3l5.0,-1.09l3.16,-1.35l0.71,1.42l0.6,3.51l0.63,1.64l3.14,3.26l0.16,1.34l-1.61,1.47l-0.46,0.87l1.16,3.76l-0.52,1.99l1.22,0.87l1.03,1.61l4.25,0.56l0.92,1.61l2.23,1.78l1.46,2.61l1.24,0.91l5.27,2.03l1.32,0.13l0.92,-0.63l1.82,-2.63l2.37,-1.63l7.93,-2.08l1.41,0.36l0.92,0.73l2.64,4.35l0.72,0.59l1.48,0.27l0.38,0.58l0.61,1.69l-0.8,1.48l0.51,2.38l1.6,4.47l0.09,2.5l0.42,1.17l1.9,1.66l3.82,1.44l1.7,-0.16l2.68,-0.82l2.06,-1.38l0.72,-0.05l0.89,0.38l-0.6,1.19l0.12,0.56l0.76,0.47l4.13,0.08l2.56,0.75l1.12,0.9l0.91,1.39l1.05,10.05l2.3,1.94l1.29,-0.74l1.51,-2.44l1.09,-0.6l2.59,-0.16l2.45,0.25l3.52,1.61l1.52,-0.04l3.85,-1.36l1.15,-0.1l1.03,0.41l1.98,1.84l2.53,1.56l1.84,3.13l1.53,0.38l0.59,-0.74l-0.06,-0.72l0.39,-0.14l1.83,1.02l0.14,0.88l-2.69,2.35l-1.79,5.34l-0.17,1.55l1.11,0.78l1.48,-0.45l0.84,0.08l1.74,4.81l-3.86,2.3l-0.55,0.59l-0.59,1.62l0.62,1.5l0.04,0.67l-0.45,0.3l0.22,0.46l3.43,1.56l1.54,0.17l0.08,2.76l1.79,2.83l0.07,1.8l-1.86,3.26l-0.49,2.91l0.31,0.92l0.9,0.74l0.32,1.65l-0.7,1.08l-3.14,2.62l-1.8,1.1l-1.44,2.0l-1.21,0.65l-2.01,0.15l-1.16,1.07l0.06,0.89l1.48,3.98l-0.45,1.42l0.37,2.06l-1.37,1.28l-0.45,0.95l0.11,0.84l1.61,2.67l-1.45,0.55l-0.75,1.27l0.2,0.5l0.68,0.33l0.4,0.93l-0.07,1.86l-0.63,1.32l-0.79,0.0l-1.69,-0.75l-2.03,0.68l-2.88,-1.37l-2.38,-0.13l-1.45,0.91l-0.06,1.82l-4.11,0.52l-5.16,1.25l-3.39,1.78l-0.06,0.98l0.85,1.81l0.67,5.15l0.51,0.49l1.41,0.26l2.36,2.15l-0.2,0.54l-0.95,0.74l-1.13,0.21l-3.3,-0.33l-1.51,0.77l-0.45,1.51l0.35,1.68l-0.15,1.05l-0.98,1.37l-1.47,1.05l-0.1,1.7l0.34,0.61l1.16,0.44l3.19,-0.1l0.6,0.44l-0.02,0.44l-2.28,1.99l-0.73,1.1l-1.76,1.18l-1.05,2.05l-3.83,3.24l-2.02,3.25l-2.26,0.11l-3.0,-1.67l-0.43,-0.63l-0.47,-2.75l-0.76,-0.9l-0.81,-0.01l-0.99,0.47l-0.51,-0.14l-8.73,-6.6l-0.51,-1.18l0.6,-1.73l-0.09,-0.9l-0.97,-1.91l-1.19,-1.29l-3.91,-1.13l-2.27,1.08l-1.86,0.05l-1.84,1.04l-1.74,-0.79l-5.87,1.07l-4.04,-0.91l-0.77,0.16l-1.31,1.18l-0.79,0.15l-2.03,-1.11l-1.93,0.48l-1.66,-1.34l-1.69,-0.39l-2.67,0.99l-1.08,-0.76l-1.25,-1.57l-0.8,-0.23l-1.37,0.39l-10.67,-5.04l-1.18,-0.26l-1.21,0.29l-2.01,1.11l-1.55,-0.09l-3.94,-1.5l-2.4,-0.25l-1.47,-0.68l-1.66,-1.28l-0.74,-0.17l-1.89,0.7l-3.44,2.04l-4.01,0.26l-2.09,0.47l-5.65,-1.4l-2.68,-0.11l-1.23,-0.58l-0.69,-1.87l-0.93,-0.84l-0.28,-0.86l-0.07,-0.43l0.7,-0.94l0.92,-0.28l0.45,0.19l1.28,1.38l0.8,0.35l0.78,-0.08l0.66,-0.55l-0.41,-1.62l-1.62,-3.45l-1.74,-5.57l-0.28,-3.2l1.24,-3.11l1.48,-1.09l0.51,-1.75l-0.83,-1.22l-2.26,0.41l-0.42,-0.32l-0.42,-3.51l-0.53,-1.76l-0.18,-3.85l-0.71,-1.37l2.2,-1.38l0.74,-1.07l0.26,-1.01l-0.65,-0.89l-2.49,0.44l-0.22,-0.26l2.37,-3.65l2.12,-1.58l0.03,-1.31l-2.65,-4.66l-0.9,-3.09l-1.01,-1.33l-10.08,-8.97l-8.3,-4.93l5.17,-5.05l1.41,-4.28l1.94,-2.2l1.85,-0.21l5.97,2.46l0.78,-0.01l0.75,-0.53l0.14,-0.85l-1.42,-0.64Z",
+            "regionName": "Hauts-de-France",
+            "post_id": "504"
+        }, 
+       "fr-x7": {
+            "path": "M458.84,445.76l1.95,-0.35l3.03,1.58l1.95,0.27l1.37,-0.72l0.73,-1.76l1.22,-4.68l-1.19,-1.15l-0.26,-4.14l-1.44,-1.87l-0.36,-0.94l0.86,-2.7l1.65,-0.68l0.84,-1.03l0.29,-4.28l-0.66,-1.43l-1.92,-2.11l-0.96,-0.86l-1.78,-0.64l-0.67,-1.98l-1.72,-2.4l0.64,-0.91l3.14,-2.29l2.41,-0.16l2.48,-2.58l1.63,-3.33l1.7,-1.93l0.19,-3.74l-0.21,-0.9l-1.86,-3.26l-0.2,-1.44l0.37,-3.62l-2.17,-3.8l-1.06,-3.16l-3.18,-4.2l-1.27,-0.36l-1.13,0.66l-0.76,-1.76l-0.96,-0.91l-3.48,-0.95l-0.4,-0.39l-0.94,-2.84l-1.76,-1.56l-1.91,-2.38l2.1,-3.42l1.46,-0.64l1.48,-1.8l3.52,-1.57l7.94,-0.8l5.53,-1.6l0.14,-1.5l-1.97,-2.78l-0.03,-0.72l0.53,-1.33l-1.03,-1.64l0.3,-0.35l2.27,-0.17l0.41,-0.79l-0.09,-1.21l1.63,-0.12l4.07,-3.3l0.82,0.8l2.29,0.76l0.71,-0.21l1.28,-1.11l2.21,0.26l1.77,-2.17l3.83,-2.18l2.59,-0.73l2.86,0.18l0.27,1.52l1.25,1.52l3.22,1.84l2.72,0.19l2.74,2.56l0.75,0.33l1.03,0.0l2.4,-1.05l1.66,-0.1l1.61,0.25l2.97,1.11l1.41,-0.68l1.06,-1.27l1.82,0.28l1.29,2.19l0.04,1.49l0.5,0.54l0.6,0.12l1.71,-0.33l4.06,-2.15l0.58,-1.97l1.34,-0.87l0.39,-1.8l1.21,0.2l1.4,2.25l0.6,1.79l2.46,2.19l1.56,2.63l0.94,0.54l0.28,1.5l-0.41,3.04l0.32,0.67l4.03,2.05l1.74,0.08l2.67,2.22l3.67,0.71l2.19,1.13l0.73,2.83l-0.64,3.08l0.52,1.3l-0.02,1.46l0.82,1.68l-1.19,1.0l-5.58,2.73l-0.18,0.55l0.71,1.8l-0.19,2.42l0.26,0.72l1.01,0.63l2.01,0.62l2.09,1.49l0.85,0.18l1.12,-0.06l4.06,-1.25l3.56,0.89l3.56,-0.61l4.78,1.24l1.97,-0.03l1.79,-0.63l1.67,-1.19l1.89,-2.21l1.71,-5.14l5.06,1.43l1.25,-0.12l1.94,-0.93l1.54,1.64l0.93,0.37l1.05,-0.11l0.65,-0.45l0.57,-1.97l0.55,-0.28l1.79,0.68l0.27,1.99l1.62,1.08l0.05,2.15l1.07,2.48l1.36,0.98l3.59,0.4l0.43,-0.51l-0.22,-1.1l1.28,-4.71l3.52,-6.66l0.17,-1.98l1.46,-2.52l0.86,-4.24l1.47,-3.8l1.04,-0.4l5.0,1.43l1.47,-0.15l3.7,-1.24l1.74,-0.16l1.25,0.39l2.16,1.97l1.64,0.85l4.11,0.99l0.02,2.41l0.61,1.09l1.69,0.58l0.98,0.74l0.72,2.39l1.08,1.11l2.12,0.65l0.91,1.09l1.74,0.37l-0.08,3.17l0.9,0.94l1.79,0.47l2.93,-1.5l1.13,-1.19l1.49,-0.38l0.56,-1.17l2.38,-2.03l2.83,2.21l0.53,0.68l0.4,1.81l0.7,0.56l7.33,0.5l2.1,-0.36l4.85,-3.81l1.29,-1.9l5.29,-5.36l2.71,1.45l1.49,1.81l0.06,0.64l-2.15,4.4l-0.57,4.01l-1.43,0.34l-1.32,-0.11l-3.71,1.58l-1.69,1.08l-0.18,1.23l1.62,2.13l-1.39,2.81l0.08,0.46l0.46,0.07l1.43,-0.74l2.69,-0.56l2.68,-0.09l2.31,0.77l2.11,-0.97l3.09,-3.14l3.94,-2.28l1.58,-1.45l-0.19,-2.13l-0.68,-0.47l-1.16,0.35l-0.4,-0.18l-0.89,-2.03l4.08,-5.7l3.32,0.16l1.15,1.46l0.93,0.33l0.77,-0.37l0.82,-1.0l4.35,-1.83l1.15,-1.48l11.95,-1.05l5.16,0.78l0.08,0.91l-0.38,1.12l-1.55,1.58l-0.38,1.39l1.23,1.83l2.14,1.97l1.23,1.83l-2.07,3.51l-1.08,2.81l-0.54,2.86l0.83,1.53l4.77,0.91l0.69,0.58l-1.17,1.69l0.25,3.27l1.29,0.49l1.46,-0.85l1.18,0.45l4.32,4.17l1.84,4.74l-1.27,1.06l-1.66,3.08l-1.14,0.85l-2.54,0.9l-1.94,0.05l-0.44,1.16l-1.45,-0.68l-2.83,1.09l-0.84,1.25l-0.34,1.34l0.12,2.79l0.7,3.2l1.31,1.78l1.75,1.17l2.44,0.57l2.19,1.73l2.63,0.83l0.29,0.87l-0.98,2.48l1.03,2.1l0.33,3.09l0.49,1.22l5.55,3.27l1.58,2.67l3.72,1.73l-0.54,1.71l-1.23,1.93l-2.31,2.53l0.24,2.49l0.65,1.55l0.0,0.91l-1.6,1.21l-1.13,1.81l-0.21,0.18l-0.84,-0.84l-0.72,-0.2l-4.4,1.41l-2.78,3.01l-2.44,0.32l-0.53,0.84l0.54,1.12l-1.68,0.71l-4.37,-1.72l-2.37,-0.29l-2.05,1.2l-2.07,0.11l-2.41,1.23l-1.98,0.23l-2.21,1.2l-2.35,0.04l-0.74,0.29l-1.11,2.4l-0.81,0.88l-1.02,0.26l-3.86,-1.22l-0.85,-1.84l-1.43,-1.0l-4.05,-0.41l-1.45,-0.84l-0.51,0.04l-1.75,2.08l-1.05,4.98l0.01,1.51l0.51,1.03l1.24,0.41l3.69,-0.43l0.93,0.46l0.56,3.36l1.75,2.0l0.32,1.03l-0.27,3.17l-0.32,0.52l-3.52,-0.79l-3.8,0.98l-1.71,-0.15l-1.86,0.35l-2.28,-0.4l-3.91,2.12l-0.99,0.14l-1.72,-0.45l-1.28,0.35l-2.59,1.78l-0.33,0.77l0.25,1.63l-0.69,0.66l-2.32,0.66l-3.68,0.21l-1.02,0.38l-2.07,2.9l0.34,1.1l0.66,0.51l0.02,0.62l-1.63,1.7l-4.53,1.21l-3.09,-0.29l-1.24,0.51l-0.43,1.87l-2.53,3.81l-0.14,0.94l0.84,1.52l2.0,1.4l0.28,0.97l-0.33,0.33l-3.19,1.81l-4.16,-1.25l-1.98,-0.25l-1.44,0.11l-0.53,0.46l-0.21,0.76l0.41,1.66l1.65,1.36l0.07,0.45l-0.58,0.32l-2.77,-0.46l-0.85,0.34l-0.32,0.69l0.24,0.71l1.21,1.35l0.6,1.94l2.45,1.8l2.52,0.64l1.16,0.61l4.22,0.12l-0.41,1.18l0.12,0.71l1.56,1.75l2.09,1.43l-0.14,4.66l-0.66,1.16l0.12,1.87l-0.76,-0.17l-0.63,-1.31l-0.81,-0.55l-1.74,-0.29l-0.98,0.29l-3.26,3.17l-1.73,0.96l-2.39,-0.41l-3.82,-2.56l-1.16,-2.83l-0.73,-0.49l-2.0,-0.2l-4.34,-1.4l-2.82,0.21l-2.6,-0.66l-0.67,-0.77l-0.1,-1.5l0.78,-2.2l-0.29,-0.88l-0.62,-0.28l-2.47,1.42l-4.48,-0.52l-4.27,1.08l-3.5,1.47l-2.77,0.41l-2.98,1.5l-1.01,-0.71l-1.77,-4.15l-1.43,-1.32l-1.13,-0.54l-3.59,-0.26l-1.8,0.22l-0.35,0.4l0.02,2.88l-3.85,-1.27l-2.16,-2.01l-1.82,-0.73l-3.57,0.03l-1.2,0.93l-0.35,1.86l-1.3,0.63l-0.49,-0.12l-0.72,-0.87l0.27,-1.36l-0.32,-0.86l-0.67,-0.41l-0.94,-0.05l-2.47,0.7l-4.94,3.64l-1.17,-0.23l-4.88,-2.4l-1.24,-1.11l-4.78,0.52l-0.65,-3.42l0.81,-1.28l-0.0,-0.88l-1.75,-2.86l-1.71,-1.42l-2.22,-6.93l-0.89,-1.48l-1.35,-0.86l-0.56,-0.98l-0.68,-1.98l-0.52,-3.12l-1.27,-3.49l0.08,-2.96l-0.31,-0.43l-1.46,-0.31l-3.14,-1.55l-4.13,-3.41l-4.32,-0.85l0.51,-1.34l-0.08,-0.66l-1.42,-1.21l-1.93,-0.18l-1.33,0.48l-0.47,0.69l-0.31,1.9l-0.69,0.54l-3.23,0.32l-1.34,0.6l-0.62,-0.3l-1.06,-1.05l-3.45,-5.83l-0.79,-2.59l-0.84,-0.77l-2.38,0.25l-3.69,2.03l-1.69,-0.0l-0.85,0.32l-4.65,3.8l-0.58,0.1l-1.2,-1.57l-0.6,-0.32l-1.46,0.59l-0.57,0.8l-0.62,3.19l-1.64,1.03l-0.58,0.99l-1.42,4.71l-0.35,2.6l-1.83,2.78l-0.72,2.01l-1.6,-1.21l-1.15,-1.79l-0.53,-3.47l-0.56,-1.36l1.14,-0.77l-0.12,-1.16l-2.88,-1.38l-0.69,-1.95l-2.44,-3.26l-0.78,-0.22l-2.44,0.35l0.05,-1.49l-0.34,-1.19l-1.91,-2.42l-1.03,-0.42l-8.44,7.7l-0.74,2.6l-2.44,3.55l-0.58,2.41l-3.68,3.99l-0.93,0.45l-1.89,0.2l-3.45,-0.1l-1.45,0.62l-1.19,-1.14l-1.48,-0.11l-5.33,1.64l-0.67,1.8l-0.21,-0.03l-0.95,-1.01l-0.89,-3.39l-1.7,-1.05l1.55,-5.49l-0.1,-0.85l-1.32,-2.73l-3.07,-4.61l-0.85,-5.71l-0.6,-1.16l0.94,-0.4l2.23,-0.24l1.11,-0.74l0.08,-1.24l-1.43,-2.43l-0.11,-0.76l3.2,-2.58l2.85,-5.59l0.22,-1.14l-1.07,-2.31l0.11,-1.37l2.59,-1.98l0.51,-1.87l3.08,-1.33l2.04,-2.9l1.09,-0.69l1.42,-3.08l-0.14,-1.07l-0.95,-0.99ZM619.51,528.65l1.54,-0.89l1.27,-2.18l1.36,-1.26l0.07,-0.97l-0.77,-1.43l-2.49,-2.28l-2.0,-0.54l-1.01,0.36l-0.89,0.76l-3.05,4.55l-0.55,2.1l0.5,1.33l0.7,0.43l5.31,0.04Z",
+            "regionName": "Auvergne and Rh\u00f4ne-Alpes",
+            "post_id": "471"
+        }, 
+       "fr-x3": {
+            "path": "M215.0,114.74l0.19,0.68l0.67,0.4l0.84,-0.17l1.4,-0.93l2.84,0.51l1.15,-0.47l3.33,-3.1l2.74,-0.72l1.03,-0.08l7.56,1.27l2.02,5.19l-1.5,1.01l-0.48,1.56l-1.27,0.04l-1.1,0.67l-0.37,2.34l1.83,2.99l0.97,2.27l4.63,4.95l0.53,1.09l0.2,1.62l-0.78,2.24l0.19,0.81l0.44,0.3l1.7,-0.5l1.69,1.31l1.46,-0.25l0.31,-0.93l-0.57,-0.85l0.33,-0.79l0.91,-0.85l0.91,-0.36l7.94,0.35l7.3,2.35l10.46,0.54l4.16,0.79l2.31,-1.02l4.08,1.27l4.12,0.0l2.91,1.4l3.03,0.6l5.69,2.93l0.43,-0.04l1.48,-1.14l9.72,-1.95l2.93,-1.18l1.7,-1.25l1.45,-0.37l2.06,-2.35l3.94,-2.42l15.26,-2.94l2.9,-1.27l2.26,-2.14l0.01,-0.51l-0.5,-0.1l-4.29,2.28l-4.93,0.6l-4.99,-0.57l-4.35,-1.26l-3.7,-0.45l-1.09,-0.56l-0.79,-1.28l-0.73,-0.42l0.09,-1.68l3.15,-4.92l2.42,-6.93l3.76,-2.82l9.31,-3.67l0.73,-0.8l7.56,-3.82l2.18,-0.58l2.37,-1.37l4.68,-1.45l5.32,0.04l25.22,-6.87l1.56,-1.02l1.59,-0.51l2.41,-2.26l6.63,-4.5l8.53,5.05l10.02,8.92l0.82,1.05l0.92,3.13l2.44,4.07l0.21,1.13l-2.03,1.49l-2.12,2.89l-0.43,1.1l0.07,0.84l0.35,0.34l2.53,-0.43l0.4,0.34l-0.82,1.37l-1.94,1.09l-0.47,0.89l0.74,1.37l0.19,3.89l0.54,1.79l0.44,3.63l0.8,0.82l2.01,-0.46l0.65,0.53l-0.4,1.31l-1.05,0.52l-0.44,0.58l-1.34,3.49l0.3,3.4l1.76,5.64l1.98,4.52l-0.91,-0.06l-0.81,-0.99l-1.21,-0.74l-0.85,0.03l-0.88,0.48l-0.92,1.37l0.38,1.6l-1.77,3.08l-2.9,8.4l-2.17,1.01l-7.75,1.57l-0.75,0.55l-0.17,1.05l0.69,1.52l-0.24,2.26l0.57,0.74l1.67,0.42l0.21,2.28l-2.16,1.15l-0.44,0.6l-0.21,0.94l0.52,1.61l-0.14,1.15l-0.79,0.76l-2.47,1.15l-1.51,1.17l-1.09,1.61l-0.67,1.82l-0.53,0.5l-4.94,2.31l-1.82,-0.62l-3.38,0.04l-2.24,-1.49l-1.25,-0.15l-0.48,0.48l-0.06,1.17l-0.31,0.42l-3.47,0.34l-2.42,2.37l-1.92,0.04l-5.91,1.45l-1.53,0.88l-2.02,1.86l0.26,3.84l0.66,1.39l1.17,1.83l2.61,1.67l3.16,2.99l0.37,0.83l-0.39,1.76l0.17,1.43l1.87,2.7l-1.12,1.47l-0.63,1.57l-1.95,1.77l-5.36,2.18l-2.34,0.41l-0.55,0.48l-0.55,1.79l1.37,1.79l-0.05,2.88l1.83,3.34l-0.85,1.08l-2.22,0.71l-2.49,-1.01l-2.47,-2.98l-1.91,-1.6l-3.5,0.2l-5.14,-1.24l-0.71,-0.36l-0.06,-1.74l-0.56,-0.94l-3.09,-0.02l-2.45,-1.44l-1.01,-1.58l-0.49,-1.75l0.16,-5.51l-0.43,-0.91l-1.29,-0.88l-2.69,-1.04l-1.85,-0.2l-5.49,1.1l-3.21,1.67l-1.67,2.12l-2.54,0.86l-0.71,1.68l-2.54,-0.46l-3.9,0.33l-0.22,-3.58l-0.39,-0.79l-0.77,-0.81l-1.89,-0.44l-3.02,-2.76l-0.65,-1.6l0.49,-1.46l-0.32,-0.81l-0.74,-0.61l-3.82,-1.27l-0.99,0.47l-0.03,1.62l-0.34,0.71l-1.15,0.57l-1.4,-0.02l-1.63,0.51l-1.2,1.45l-0.68,0.11l-4.11,-0.95l-3.98,-0.16l-1.2,0.44l-2.14,1.99l-1.05,0.56l-5.18,1.05l-1.18,-1.31l-0.96,-0.14l-3.52,0.92l-0.5,1.08l-0.81,0.48l-1.68,-1.15l-1.86,0.23l-1.74,-2.89l-1.1,-0.85l-2.45,0.29l-2.37,-0.8l-3.57,1.1l-2.0,0.01l-3.01,-0.43l-2.56,-1.35l-7.85,-1.68l-1.41,0.23l-2.22,2.41l-1.99,0.71l-2.78,1.91l-1.65,0.53l-2.09,-0.17l-2.56,-1.81l-2.2,-3.13l-0.99,-2.96l-2.54,-5.28l4.98,0.51l6.48,-1.24l2.14,0.69l0.44,-0.14l0.0,-0.47l-1.13,-1.5l-1.5,-0.64l-2.34,-0.18l-0.46,0.44l-0.7,-1.34l-2.87,-0.97l-0.88,-2.35l-2.17,-1.65l-0.47,-1.69l-0.34,-4.2l-0.74,-1.24l-1.4,-0.44l1.45,-1.15l0.44,-1.03l0.49,-3.71l0.92,-0.11l0.34,-0.9l0.0,-1.07l-1.2,-0.91l0.97,-5.38l0.51,-0.24l1.33,0.54l0.55,-0.37l-0.25,-0.86l-1.33,-0.51l-1.38,0.0l-1.32,0.6l-0.59,1.22l-0.56,-1.29l0.43,-3.35l-0.31,-0.52l-0.67,-0.12l-0.18,-0.32l0.72,-2.62l1.48,-1.06l0.02,-0.68l-0.75,-0.5l-0.56,0.09l-0.66,-2.09l-0.35,-2.8l0.3,-0.47l0.85,-0.05l2.15,0.54l0.5,-0.39l0.0,-0.49l-0.3,-0.39l-2.96,-0.99l-1.32,-0.03l-0.67,1.15l-0.44,-0.44l-0.98,-2.84l-0.71,-0.78l0.42,-0.24l0.06,-0.7l-2.38,-1.94l-0.24,-0.63l0.68,0.0l0.4,-0.4l-0.83,-2.29l-0.82,-0.22l-0.71,1.2l-3.02,-2.14l0.32,-0.66l-0.42,-0.61l-2.16,0.52l-0.37,-0.34l-0.17,-5.35l-1.15,-1.92l-0.39,-1.49l-2.39,-2.79l0.28,-0.81l1.64,-1.27l0.51,-0.95l0.27,-4.14l-1.3,-2.8l-0.63,-0.67l-4.47,-1.27l0.4,-1.53l-0.1,-1.22l0.13,-0.3l1.34,-0.15l2.46,1.07l1.75,-0.2l0.58,0.33l0.27,1.01l0.5,0.53l6.68,0.92l5.27,1.29Z",
+            "regionName": "Basse-Normandie and Haute-Normandie",
+            "post_id": "505"
+        }, 
+       "fr-r": {
+            "path": "M159.66,300.12l3.14,1.13l1.62,-0.32l1.05,-1.07l0.07,-0.47l-0.56,-1.04l-2.21,-2.2l-0.46,-0.11l-0.82,0.44l-0.77,-1.59l-2.05,-1.2l4.12,-2.13l1.57,0.33l-0.09,0.55l0.45,0.48l0.58,0.01l2.59,-1.53l0.4,-0.74l-0.31,-0.53l-2.95,-0.38l0.35,-0.69l-0.16,-0.53l-0.77,-0.68l0.87,-0.21l2.37,0.81l3.21,-0.37l0.81,-0.45l0.88,-1.05l1.08,-1.85l0.93,-0.29l1.83,0.9l2.88,-0.91l0.01,0.96l0.41,0.72l0.57,0.29l0.85,-0.14l0.92,-1.04l0.66,-1.38l2.05,-1.24l0.71,-1.09l0.79,-3.53l0.74,-1.69l0.12,-1.43l-0.24,-0.62l0.35,-1.02l2.91,-1.59l2.21,-0.38l2.07,0.05l5.67,-2.08l1.82,0.61l1.95,0.17l7.4,-2.04l2.87,-1.7l1.19,-1.55l1.73,-1.21l6.3,-2.55l1.6,-1.15l1.76,-0.13l1.82,0.29l1.17,1.44l1.85,0.86l6.14,0.89l0.45,-0.31l0.47,-2.16l1.14,-1.77l2.89,-9.08l0.53,-0.9l1.85,-1.62l4.09,-0.58l1.25,-0.49l0.67,-0.66l-0.07,-4.84l-1.76,-2.27l-0.71,-4.7l0.64,-0.86l0.08,-0.99l-0.82,-4.82l-1.09,-2.36l1.95,-4.01l-0.03,-2.5l-0.74,-5.78l0.2,-5.45l4.76,0.37l3.56,-1.09l2.14,0.78l2.29,-0.33l0.82,0.61l1.89,3.04l0.78,0.28l1.22,-0.43l1.2,1.0l0.96,0.2l0.9,-0.36l0.74,-1.34l3.16,-0.79l0.67,0.27l0.43,0.85l0.82,0.32l5.49,-1.07l1.32,-0.69l2.1,-1.96l0.92,-0.33l3.75,0.17l4.09,0.95l1.06,-0.14l1.34,-1.53l1.33,-0.41l1.5,0.0l1.45,-0.72l0.62,-1.2l-0.17,-1.13l0.3,-0.28l3.98,1.51l0.19,0.36l-0.49,1.44l0.18,1.02l0.67,1.13l3.2,2.92l2.03,0.53l0.36,0.46l0.28,0.51l0.24,3.91l0.44,0.37l3.61,-0.38l3.37,0.46l0.6,-0.45l0.44,-1.41l2.46,-0.81l2.23,-2.53l2.43,-1.15l5.27,-1.07l1.66,0.18l3.55,1.66l0.35,1.07l-0.32,2.68l0.3,3.32l0.87,2.03l1.63,1.4l1.84,0.94l2.82,-0.07l0.41,2.48l1.13,0.63l5.3,1.27l2.3,0.07l0.97,-0.32l1.62,1.39l1.93,2.55l2.19,1.39l1.53,0.31l1.53,-0.36l2.97,1.92l3.09,0.38l0.63,0.45l-0.41,0.52l-4.24,2.22l-0.26,1.28l1.21,1.18l-2.67,0.5l-0.56,0.47l-0.11,1.1l0.84,1.7l0.5,0.5l1.48,0.31l-0.65,3.22l0.42,1.92l-0.15,0.49l-3.53,3.05l-0.56,1.67l-0.05,3.43l-1.51,4.18l-1.33,1.2l-1.74,0.98l-3.44,1.47l-1.46,1.3l-0.79,1.81l0.64,1.76l-0.14,0.45l-2.17,0.43l-3.23,1.43l-2.52,0.52l-1.04,0.58l-0.9,0.99l-1.95,-0.85l-1.07,0.0l-0.78,0.53l-0.36,0.7l0.4,2.57l-8.48,-1.68l-0.46,0.23l-1.7,4.29l0.46,3.58l-1.91,3.72l-1.03,3.13l0.2,2.82l-4.39,6.08l-1.47,5.38l-0.85,5.56l-2.84,-0.47l-1.46,0.44l-2.01,2.22l-0.96,2.4l-2.38,0.81l-1.53,2.05l-1.11,-0.31l-0.83,-2.02l-0.97,-0.76l-0.79,-0.2l-1.88,0.35l-3.55,-0.08l-6.53,0.7l-5.83,1.67l-2.05,-0.73l-2.08,0.46l-1.21,0.8l-0.31,0.62l0.12,0.77l0.69,0.97l-0.13,0.38l-4.92,2.46l-3.85,0.33l-5.2,-0.68l-4.23,0.56l-4.16,-1.9l-0.94,-0.18l-0.84,0.51l-0.29,1.01l0.17,0.47l2.2,1.37l2.18,3.03l1.67,0.89l0.69,0.84l0.32,2.18l1.04,2.25l0.66,0.7l3.5,1.91l1.73,1.57l0.1,0.48l-0.78,1.59l0.1,0.98l3.83,6.52l0.57,3.11l1.44,2.21l0.79,4.91l-1.22,1.54l-0.25,0.91l0.97,4.27l-0.6,2.86l0.25,1.23l0.83,0.72l1.04,-0.23l1.97,1.38l0.71,1.02l-0.74,0.77l-1.26,-0.1l-1.22,0.34l-2.25,2.0l-2.76,0.16l-3.62,1.68l-4.06,-2.24l-1.7,-0.27l-6.67,1.09l-0.44,-0.27l0.9,-1.15l0.15,-0.7l-0.48,-0.9l-0.77,-0.24l-6.96,1.54l-1.16,0.7l-1.12,1.42l-0.75,-0.72l-2.95,-0.11l-2.27,1.19l-0.16,2.27l-1.02,-0.24l-2.4,-2.73l-1.56,-0.33l-4.08,-2.32l-3.43,0.87l-1.24,-0.06l-0.97,-3.42l-1.1,-1.51l-1.55,-0.91l-6.9,-0.76l0.18,-1.01l-1.0,-0.83l-3.36,-0.58l-1.97,-1.51l-2.47,-0.81l-1.08,-2.24l-0.58,-0.83l-0.45,-0.15l-0.28,0.39l0.27,2.62l-0.46,-0.56l-1.32,-5.47l0.25,-1.25l-0.25,-0.45l-0.84,-0.31l-1.14,-2.75l-2.53,-2.31l-0.74,-2.09l-0.93,-0.62l-1.98,-0.4l-2.24,-3.59l-3.47,-3.13l-4.07,-2.07l-0.39,-1.05l-0.3,-2.69l0.47,-2.19l1.48,-0.93l0.17,-0.46l-0.28,-0.85l3.12,-1.98l2.48,-5.26l1.17,-1.01l-0.16,-1.45l-0.69,-1.37l-1.7,-1.83l-3.77,-1.84l-7.12,-1.1l-1.45,-0.69l1.47,-1.03l1.91,-0.24l0.8,-0.55l0.42,-2.94l-0.66,-1.35l-0.09,-1.84l1.02,-2.31l1.32,-0.5l5.58,-0.5l1.1,-0.5l1.01,0.86l3.14,0.71l1.04,-0.02l0.24,-0.51l0.65,0.2l-0.47,0.4l0.19,0.91l2.51,1.59l2.62,0.48l1.97,1.62l1.54,0.57l3.31,0.09l0.4,-0.29l-0.19,-0.46l-1.37,-0.76l-2.42,-0.42l-2.85,-2.6l-4.32,-2.68l-2.78,-0.52l-1.38,-0.93l-2.33,-0.59l-8.74,0.54l-2.06,1.13l-1.5,1.94l-1.74,0.44l-1.54,1.27l-1.02,0.36l-2.05,-0.36l-2.32,-2.13l-1.22,-0.61l-2.17,0.0l-0.78,0.6l-0.33,0.97l-1.39,-0.03l-4.87,-2.21ZM161.53,297.57l0.02,0.14l-0.01,0.02l-0.01,-0.17ZM179.99,325.41l2.68,1.47l0.24,2.88l-0.47,-0.24l-2.28,-3.55l-1.56,-0.93l-1.75,0.59l-0.73,-0.9l-0.93,-2.89l-0.56,-0.68l2.62,-0.12l2.02,0.71l-0.04,2.78l0.75,0.89ZM174.33,345.92l-4.93,-0.12l-0.49,-0.98l0.24,-0.36l1.99,0.02l3.18,1.44Z",
+            "regionName": "Pays de la Loire",
+            "post_id": "506"
+        }, 
+//       "fr-gp": {
+//            "path": "M44.87,452.95l2.26,-1.9l1.31,-0.53l0.63,0.19l-2.39,1.57l-1.81,0.66ZM16.07,454.56l0.99,-3.24l0.45,-0.54l1.25,-0.4l0.33,-0.98l-0.15,-1.3l-1.63,-0.93l-0.61,-3.02l1.65,-2.23l2.47,-1.44l2.87,2.33l0.67,1.2l0.24,4.01l1.84,2.68l1.77,1.09l0.71,-0.33l2.34,0.36l6.21,4.32l1.16,0.34l-0.55,0.18l-3.31,-0.89l-10.9,2.46l-3.09,1.07l-2.38,-0.65l-1.77,-1.2l-0.78,-1.34l0.24,-1.57ZM29.3,476.81l1.29,-2.59l1.05,-1.18l1.16,-0.64l1.27,0.28l1.08,0.91l0.68,1.72l0.94,0.93l0.13,1.34l-1.12,1.36l-1.47,0.73l-1.99,0.48l-1.58,-0.25l-1.44,-3.1ZM6.63,475.24l-0.25,-0.65l0.35,-0.72l-0.44,-0.85l-1.95,-1.6l-0.87,-1.97l-0.57,-0.45l-0.69,-2.06l-0.05,-4.94l-0.89,-2.29l0.25,-1.07l-1.09,-2.09l0.05,-3.66l1.5,-2.21l0.77,-0.65l0.89,-0.23l1.5,1.13l3.84,1.09l2.02,1.06l0.67,0.81l-0.4,0.18l0.01,0.74l0.87,0.07l0.72,0.74l0.65,-0.12l0.7,-0.95l0.47,-0.08l0.26,0.32l-0.35,1.27l0.32,1.1l-1.34,0.42l-0.48,0.89l0.13,2.94l0.8,2.29l0.41,3.37l-0.49,3.19l-1.83,2.19l-2.76,1.62l-2.74,1.16ZM13.68,480.6l0.09,-0.17l0.15,-0.01l-0.11,0.1l-0.13,0.09ZM10.63,481.22l0.17,0.27l-0.27,0.31l-0.19,-0.11l0.3,-0.46Z",
+//            "regionName": "Guadeloupe",
+//            "post_id": "46"
+//        }, 
+       "fr-u": {
+            "path": "M574.87,589.37l0.92,-0.18l1.37,-1.04l2.17,-0.54l3.45,-2.45l1.63,-0.49l0.58,-1.36l1.97,-0.33l0.5,-0.38l0.72,-1.53l-0.09,-0.84l-1.94,-0.6l1.3,-2.75l1.5,-1.9l1.28,-0.92l2.03,-0.52l3.72,1.32l1.03,-0.3l0.65,-1.54l-0.04,-1.78l1.98,-4.92l-0.49,-4.74l5.08,-3.33l2.76,-1.14l1.8,-1.27l1.33,-1.63l0.03,-2.18l1.18,0.07l0.47,-0.43l0.15,-1.04l-0.37,-0.8l-4.15,-4.77l-1.27,-0.56l-1.83,0.31l-0.37,-2.47l0.33,-2.07l-0.19,-2.88l-0.5,-0.93l-1.47,-1.11l-0.09,-1.56l-1.29,-1.64l-0.54,-1.66l-0.02,-2.97l3.17,-0.14l2.43,0.62l1.57,1.66l1.7,4.01l1.31,0.65l1.08,-0.2l2.24,-1.34l2.77,-0.41l3.47,-1.46l4.07,-1.05l3.48,0.59l1.1,-0.08l2.31,-1.4l0.14,0.38l-0.71,1.56l-0.03,1.7l0.31,1.17l0.77,0.67l2.96,0.79l2.82,-0.21l4.22,1.37l1.95,0.19l0.66,0.8l0.94,2.37l4.51,2.92l2.5,0.22l1.96,-1.1l2.53,-2.56l1.32,-0.74l1.8,0.54l0.64,1.31l0.52,0.4l0.87,0.13l0.61,-0.33l0.31,-0.68l-0.23,-1.68l0.64,-1.04l0.14,-4.96l-0.53,-0.87l-1.46,-0.73l-1.74,-1.84l0.47,-1.33l-0.29,-0.71l-1.33,-0.38l-2.81,0.16l-3.98,-1.31l-2.2,-1.6l-0.54,-1.85l-1.31,-1.69l0.85,-0.19l2.33,0.46l0.67,-0.16l0.58,-0.67l-0.17,-1.21l-1.58,-1.26l-0.32,-1.32l0.2,-0.43l2.95,0.15l4.34,1.28l0.95,-0.24l2.8,-1.78l0.61,-0.81l-0.12,-1.02l-0.85,-1.05l-1.56,-0.99l-0.6,-0.98l0.34,-1.04l1.84,-2.49l0.74,-2.54l1.28,-0.26l2.49,0.32l4.9,-1.34l1.9,-1.99l0.0,-1.34l-0.94,-1.02l1.78,-2.52l4.33,-0.43l2.59,-0.77l1.06,-1.17l-0.23,-1.81l1.51,-1.3l1.93,-0.81l1.61,0.45l1.3,-0.18l3.71,-2.08l2.21,0.4l1.91,-0.35l1.7,0.15l3.74,-0.98l2.72,0.76l1.33,-0.13l0.6,-0.99l0.28,-3.45l-0.47,-1.39l-1.68,-1.88l-0.61,-3.45l-1.52,-0.82l-3.62,0.45l-0.92,-0.3l-0.21,-0.57l1.03,-6.05l1.31,-1.51l1.5,0.78l3.9,0.36l1.08,0.74l1.0,1.99l4.33,1.4l1.59,-0.46l0.96,-1.07l0.85,-2.13l2.87,-0.24l2.8,-1.28l-0.62,0.73l-0.02,0.5l2.03,2.18l0.17,1.69l0.79,1.24l0.95,0.66l2.05,0.17l1.38,0.88l0.35,1.96l-0.12,4.19l1.23,1.91l2.07,1.56l4.22,2.16l1.41,0.3l3.93,-0.45l2.94,1.06l1.2,1.26l-0.4,2.57l1.25,4.13l2.03,3.55l-3.87,-0.56l-1.7,0.81l-1.13,1.22l-0.53,1.69l0.58,1.56l-0.69,0.5l-2.06,3.14l-3.05,2.06l-0.83,1.38l0.25,2.53l1.44,2.18l2.96,2.54l-1.46,0.71l-0.59,0.79l-0.73,3.01l0.24,1.21l1.67,1.86l1.59,2.88l2.27,1.81l0.83,2.02l0.66,0.7l1.16,0.41l2.19,-0.38l0.67,0.17l6.04,2.48l6.53,3.55l3.45,0.91l0.74,1.13l1.35,0.71l2.64,0.05l10.62,-2.7l1.73,-0.12l2.57,-1.44l1.28,0.21l-0.66,2.31l0.83,1.51l1.3,1.15l0.87,1.66l-0.1,1.05l-2.22,2.08l-1.33,3.37l-4.45,3.63l-1.3,1.81l-2.63,2.56l-1.02,1.63l0.26,2.23l1.1,3.29l-1.5,0.69l0.05,1.26l-0.73,0.15l-1.26,1.13l-0.56,-0.67l-1.18,-0.6l-1.65,0.49l-1.0,1.05l-0.43,1.64l-1.32,1.04l-0.71,1.53l-2.86,-0.54l-1.41,0.13l-2.01,1.42l0.04,0.96l-1.09,1.0l-0.54,-0.78l-1.17,-0.24l-2.01,0.57l-0.96,1.09l-0.66,2.71l0.71,3.75l-0.22,0.12l-0.57,-0.92l-0.68,-0.42l-1.15,-0.07l-1.27,0.64l-1.75,1.52l-0.56,-0.6l-2.19,-0.07l-1.21,0.15l-0.99,0.57l-1.1,1.01l-0.38,1.3l0.79,0.89l-1.67,1.9l-0.35,1.79l-1.2,0.73l-0.35,0.74l-0.79,0.06l-0.5,-0.8l-0.56,-0.07l-0.45,0.47l0.04,1.32l-0.33,0.1l-1.7,-0.24l-2.06,0.51l-0.64,-0.66l-0.97,-0.32l-1.96,1.17l-0.06,2.1l-0.82,1.01l-0.09,1.11l-2.6,0.48l-0.8,1.76l-2.13,1.86l-1.64,0.87l-0.58,1.35l0.27,0.52l1.27,0.34l3.83,-0.86l1.01,0.19l-0.51,1.21l-1.15,0.87l-0.18,1.36l0.76,1.4l-2.03,1.21l-1.78,0.59l-1.1,-1.03l-3.19,0.39l-1.04,1.7l-1.07,0.59l-1.62,-0.35l-3.45,0.27l-1.36,0.42l-1.49,0.84l-0.91,1.44l0.37,1.87l-1.34,0.0l-1.03,-0.98l-2.86,-1.09l-1.75,-0.16l-3.76,0.92l-1.97,1.27l-0.72,1.7l-0.05,1.91l0.91,0.63l-3.08,0.19l0.74,-0.26l0.95,-0.93l-0.33,-1.65l-1.19,-0.96l-5.05,0.37l-0.84,-1.54l-3.51,-0.25l-1.12,-0.63l0.3,-1.17l-0.36,-0.56l-2.16,0.24l-1.78,0.81l-0.23,0.38l1.15,0.68l1.01,1.7l1.93,0.76l-3.17,0.02l-0.89,0.28l-1.2,1.7l-1.96,-0.54l-1.85,-1.41l1.88,-1.3l0.07,-0.54l-0.41,-0.57l-1.72,-0.7l-0.74,-1.26l-2.11,-0.09l-2.49,-1.0l-0.47,-1.46l-1.08,-1.07l-2.53,-0.57l-1.03,0.91l-0.53,0.98l-2.05,-0.53l-1.98,-2.66l-0.96,-0.55l-1.48,0.47l-6.6,-0.49l-1.53,0.31l-1.02,-0.43l0.34,-1.68l0.94,-1.98l-0.08,-0.43l-0.62,-0.64l-1.13,-3.95l-2.92,-1.81l-3.73,1.99l-4.48,-0.09l-2.35,0.26l-3.62,-0.16l-1.71,-0.5l-1.11,-1.51l-0.44,-1.53l1.11,-1.82l1.71,-0.86l5.36,0.0l1.8,-0.48l2.62,-2.32l0.89,-2.0l-0.21,-1.77l-0.6,-0.3l-3.34,1.54l-1.34,-0.21l-1.17,-1.2l-0.81,-2.2l-1.53,-0.53l-1.81,-0.01l-1.47,-1.47l-0.5,0.08l-0.49,0.59l-0.81,2.82l0.42,1.59l2.15,1.63l0.63,1.61l-0.57,1.4l-1.25,0.8l-1.63,0.16l-4.46,-1.86l-2.21,1.1l-1.58,0.35l-0.71,0.61l-0.46,1.44l0.98,2.54l0.42,0.33l0.81,-0.05l-1.29,0.81l-1.31,-2.62l-2.66,-1.4l-1.98,-1.65l-0.86,-1.8l-0.02,-5.7l-1.08,-2.53l-0.85,-1.1l-1.19,-0.67l-0.59,0.35l0.0,0.46l2.09,3.43l0.0,5.28l0.86,2.64l4.89,4.15l-0.11,1.02l-9.05,-0.1l-4.41,-0.9l-1.34,-0.7l-0.03,-0.85l1.11,-1.09l0.22,-1.41l-0.65,-1.13l-1.58,-1.03l-2.76,-0.96l-6.31,0.6l-10.72,-0.78l1.08,-2.45ZM708.84,625.18l0.07,-0.56l1.07,-0.35l0.67,-0.95l0.94,-0.47l-1.31,1.7l-1.44,0.64ZM692.6,626.12l1.76,-0.0l0.97,-0.54l0.94,-0.02l0.43,-0.62l0.24,0.26l0.04,0.66l-2.62,1.0l-1.76,-0.73ZM619.44,527.85l-4.96,0.01l-0.37,-0.2l-0.33,-0.9l0.44,-1.6l2.99,-4.46l1.31,-0.8l1.47,0.37l2.37,2.16l0.58,1.0l-0.0,0.54l-1.24,1.1l-1.26,2.17l-1.01,0.62Z",
+            "regionName": "Provence-Alpes-C\u00f4te-d'Azur",
+            "post_id": "508"
+        }, 
+       "fr-j": {
+            "path": "M472.43,160.67l2.91,-0.96l1.28,0.25l1.79,1.42l0.99,0.02l1.16,-0.44l1.27,0.83l1.39,0.28l2.4,-1.49l4.01,0.91l5.72,-1.07l1.57,0.83l2.35,-1.11l1.82,-0.03l2.03,-1.04l3.48,0.96l0.98,1.05l0.87,1.67l-0.52,2.79l0.73,1.41l8.88,6.73l0.87,0.26l1.23,-0.5l0.48,0.14l0.61,2.97l0.7,1.03l3.28,1.81l2.3,-0.04l-0.11,1.1l-0.51,0.67l-2.55,0.08l-0.94,0.42l-0.16,0.75l1.09,1.07l-1.54,1.52l-0.27,1.55l0.54,0.66l1.24,-0.02l1.67,1.83l0.7,2.85l-0.5,1.9l0.28,1.65l0.9,0.56l2.22,-0.3l1.49,1.83l-2.45,1.85l-1.06,1.42l-0.92,2.34l-0.48,0.4l-2.35,0.42l-0.63,0.51l-0.08,0.73l0.94,1.41l-1.79,1.84l-0.05,0.79l0.65,1.23l-0.56,2.16l0.16,0.69l-2.61,2.88l-2.24,-0.49l-6.28,0.91l-4.68,-0.48l-2.32,0.9l-3.26,0.0l-0.8,0.78l-1.14,3.17l0.16,2.32l0.83,1.42l-1.58,2.76l-3.77,2.32l-0.95,3.37l-5.9,1.83l-1.36,-0.07l0.46,-1.24l-0.4,-0.63l-0.91,-0.28l-2.7,0.45l-1.78,1.66l-1.87,0.81l-8.32,-0.58l-3.25,0.65l-1.6,-0.18l-0.78,-0.59l0.23,-0.94l0.72,-0.24l1.65,0.3l0.91,-0.65l0.07,-0.64l-0.51,-1.19l0.65,-0.98l0.11,-1.36l-1.39,-1.54l-3.36,-1.92l-1.3,-3.89l-1.33,-1.28l-2.27,0.3l-2.83,-1.36l-0.86,0.16l-1.36,1.23l-1.4,0.35l-0.76,-0.38l-0.47,-1.03l-0.68,-0.61l-0.85,-0.52l-0.84,-0.03l-0.66,0.4l-1.38,1.92l-1.99,0.8l-8.7,1.71l-0.72,-0.42l-0.0,-0.42l1.65,-1.87l0.02,-0.74l-1.91,-1.77l-0.62,-2.84l-0.52,-0.9l-1.62,-1.5l-0.35,-2.59l-0.81,-0.45l-2.11,0.38l-4.37,-1.8l-0.92,-0.66l-1.17,-1.71l0.01,-2.65l-0.44,-1.51l-0.7,-0.87l-2.25,-1.46l-0.79,-2.45l-3.87,-2.43l-1.32,-1.5l-0.63,-1.5l-1.41,-0.91l0.0,-0.93l1.6,-2.06l0.18,-1.09l-0.28,-0.53l-1.69,-0.85l-0.41,-0.65l-0.06,-1.41l0.53,-2.41l-0.31,-1.9l-1.49,-1.94l-3.28,-5.55l-0.4,-2.82l-2.11,-0.85l0.25,-2.13l-0.72,-1.71l0.41,-0.57l7.7,-1.56l2.46,-1.13l3.15,-8.76l1.58,-2.72l0.43,0.35l0.8,2.03l0.97,0.67l3.39,0.3l5.65,1.41l6.54,-0.78l5.01,-2.69l3.66,2.09l2.47,0.26l3.97,1.5l1.83,0.1l3.18,-1.39l11.5,5.26l0.91,0.03l0.87,-0.37l1.31,1.53l1.38,0.99Z",
+            "regionName": "\u00cele-de-France",
+            "post_id": "509"
+        }, 
+       "fr-x2": {
+            "path": "M204.81,598.27l0.63,0.4l0.52,-0.08l1.38,-0.84l5.64,-0.92l1.36,-1.72l2.57,-1.46l2.17,-3.85l5.18,-6.42l0.5,-2.5l1.48,-4.27l2.51,-12.23l1.46,-4.3l2.15,-9.72l3.95,-21.25l1.68,-10.56l0.42,-4.7l-0.62,-3.76l1.59,-2.05l1.5,-4.83l1.04,-1.14l1.32,-0.04l3.84,0.81l2.32,-0.34l1.43,-1.11l0.02,-1.15l-1.01,-1.12l0.28,-0.48l-0.7,-1.19l-4.63,-3.83l-1.79,-0.89l-0.92,0.36l-3.56,5.22l-0.53,2.34l3.34,-33.36l2.55,-12.04l1.09,-15.98l3.2,-5.75l1.08,-0.08l-0.29,2.7l1.44,2.01l4.22,2.89l3.51,1.53l7.32,7.13l1.65,2.15l1.65,6.53l1.42,7.99l2.13,4.49l2.13,2.43l2.35,2.0l2.44,1.49l0.52,1.41l-0.17,1.23l0.35,3.2l0.54,1.31l0.97,0.73l0.45,-0.0l0.16,-0.42l-0.81,-4.06l0.53,-2.18l-0.8,-1.78l-1.38,-1.23l1.66,0.3l2.68,1.57l0.51,-0.03l0.06,-0.51l-1.72,-2.53l-5.08,-1.82l-2.05,-1.4l-1.05,-1.86l-0.76,-2.33l-2.32,-14.51l-0.81,-2.98l-2.08,-4.88l-2.62,-4.07l-2.95,-2.95l-8.61,-5.47l-0.48,-1.77l-2.47,-1.03l-3.22,-2.81l-4.04,-1.44l-2.76,-2.39l-2.34,0.33l-0.67,-0.24l0.99,-5.73l3.71,-0.99l0.98,0.04l3.79,3.91l1.46,1.04l4.4,1.81l0.48,-0.15l-0.05,-0.5l-1.38,-1.36l-5.52,-3.9l-1.51,-1.58l-1.36,-4.22l2.03,-1.93l0.85,-0.46l1.1,-0.0l0.61,-0.43l0.19,-1.83l-0.98,-1.77l0.89,-0.77l-0.02,-0.68l-0.92,-0.54l-1.09,-2.34l1.55,0.32l1.08,-0.72l0.78,-1.42l-0.03,-0.9l-1.1,-1.07l-1.08,-0.37l-0.71,-3.23l-1.9,-1.16l0.55,-0.47l-0.04,-0.64l-1.96,-1.09l0.07,-0.62l-0.38,-0.5l-2.85,-0.2l-0.39,-0.36l0.27,-0.97l1.24,-1.31l-0.29,-1.3l0.52,-0.79l4.3,-2.4l0.5,-0.98l-0.01,-0.83l-0.87,-2.37l1.16,-1.51l0.86,-0.51l6.69,-1.49l0.44,0.35l-0.06,0.32l-1.0,1.63l0.99,0.9l1.99,-0.09l4.86,-0.96l1.46,0.21l4.42,2.32l3.79,-1.72l2.86,-0.19l2.34,-2.04l2.77,-0.34l0.86,-1.23l-0.25,-0.98l-0.76,-0.79l-2.09,-1.47l-1.48,-0.05l-0.2,-0.92l0.59,-2.98l-0.97,-4.09l1.47,-2.55l-0.66,-4.53l-1.62,-2.86l-0.6,-3.2l-3.78,-6.41l-0.05,-0.67l0.8,-2.07l-0.78,-1.19l-1.4,-1.1l-3.53,-1.93l-0.48,-0.54l-0.88,-1.94l-0.43,-2.43l-0.91,-1.07l-1.53,-0.78l-2.22,-3.06l-2.05,-1.29l0.13,-0.56l1.47,0.22l2.4,1.36l1.33,0.38l4.31,-0.56l5.13,0.68l3.99,-0.34l1.28,-0.41l1.37,-1.03l2.73,-1.24l0.34,-1.13l-0.81,-1.37l1.0,-0.85l1.73,-0.42l2.13,0.74l5.97,-1.69l6.45,-0.7l5.88,-0.12l0.56,0.42l1.0,2.22l1.71,0.55l0.45,-0.18l1.48,-2.08l2.51,-0.92l1.0,-2.45l1.89,-2.08l0.9,-0.26l2.97,0.49l1.47,2.34l0.64,0.37l0.98,-0.07l1.14,-0.55l0.13,1.56l0.57,0.55l2.68,-0.26l0.19,0.85l-0.35,1.75l0.25,0.7l0.48,0.33l1.15,0.07l2.51,-0.61l1.03,1.31l1.83,0.26l-0.34,5.65l0.36,1.29l1.37,1.15l1.25,0.23l2.61,-0.25l2.91,0.46l1.93,-1.14l1.04,-0.24l5.49,-0.33l0.79,-0.44l0.19,-0.71l-0.77,-1.6l-0.1,-0.95l5.63,2.78l1.17,1.63l1.3,3.39l7.23,9.31l2.64,1.85l1.67,1.93l0.84,2.19l-0.61,2.63l0.01,1.65l0.57,2.3l0.55,0.83l2.33,2.03l3.29,1.27l0.85,2.04l0.88,0.33l3.79,0.0l1.03,0.35l0.88,0.74l0.67,1.18l-0.49,1.9l0.16,1.06l0.74,0.86l1.78,1.01l0.54,0.76l-1.01,2.95l0.15,0.46l1.04,0.72l2.54,0.83l3.65,-0.3l1.07,-0.33l1.0,-1.33l1.05,-0.24l1.47,1.8l3.13,1.64l2.0,-1.13l3.93,-3.54l0.68,-0.15l2.17,0.53l2.02,-0.06l0.36,1.35l0.7,0.52l1.01,0.19l1.02,-0.2l1.87,-1.33l3.01,0.41l0.9,-0.2l1.03,-0.98l0.25,-2.59l0.71,-0.54l0.76,0.32l1.92,1.93l0.96,0.16l2.07,-1.12l1.08,-0.24l5.41,0.14l2.45,0.84l3.5,0.01l2.22,0.72l3.19,-0.59l5.83,0.29l2.01,2.5l1.67,1.44l0.91,2.78l0.59,0.64l0.74,0.43l2.88,0.63l0.67,0.63l1.08,2.07l0.77,0.02l0.86,-0.61l1.19,0.76l2.45,3.45l1.01,3.07l2.11,3.67l-0.39,3.35l0.22,1.7l2.06,4.03l-0.15,3.39l-1.62,1.78l-1.56,3.24l-2.36,2.46l-1.64,-0.11l-1.29,0.59l-1.33,1.29l-1.33,0.73l-0.92,1.43l0.25,0.94l1.58,1.96l0.73,2.07l0.5,0.47l1.47,0.35l0.84,0.76l1.85,2.04l0.51,1.09l-0.24,3.82l-0.55,0.67l-1.67,0.69l-0.46,0.57l-0.73,2.83l0.51,1.34l1.35,1.7l0.25,4.1l1.11,1.0l-1.14,4.37l-0.87,1.76l-2.16,-0.09l-3.12,-1.6l-1.18,-0.01l-1.52,0.59l-0.21,0.82l0.95,0.93l0.15,0.84l-1.24,2.6l-1.06,0.64l-1.96,2.84l-3.1,1.35l-0.66,2.04l-2.65,2.08l-0.16,1.81l0.96,1.75l-0.04,1.26l-2.76,5.43l-2.8,2.03l-0.55,0.87l-0.03,0.76l1.6,2.88l-0.03,0.57l-4.22,1.17l-4.52,0.2l-1.94,0.88l-1.38,-0.66l-0.83,-0.05l-4.06,1.88l-3.12,0.95l-1.23,-0.04l-3.73,-1.98l-1.24,-1.82l-2.13,-1.68l-3.07,-1.73l-1.98,-0.53l-2.06,0.56l-0.77,-1.17l-0.7,-0.11l-1.4,1.03l-1.03,0.25l-3.64,2.43l-0.29,1.46l1.3,3.78l-0.03,0.72l-0.72,1.24l-0.01,2.07l-2.54,2.21l-1.66,2.62l-2.23,0.65l-0.87,1.1l-0.29,0.94l0.72,1.44l-0.03,0.57l-1.25,1.78l-4.31,2.66l-2.39,0.56l-0.98,0.82l-3.33,5.17l-3.48,2.85l-2.93,1.29l-0.86,0.82l-0.26,0.78l1.31,2.09l0.06,1.85l0.83,2.15l2.02,2.25l-0.18,3.0l-0.59,0.58l-4.81,0.36l-1.13,-0.2l-1.77,-0.98l-0.77,0.08l-0.72,0.57l-0.27,2.47l-0.74,1.55l-0.06,0.88l0.85,1.37l2.45,0.96l0.36,0.51l-2.45,5.11l-2.16,1.72l0.1,0.72l1.14,0.8l-0.03,0.97l-1.25,0.21l-2.22,-0.7l-1.4,0.32l-0.49,0.48l-0.46,1.35l-2.26,1.33l-1.04,2.84l-3.57,1.87l-1.05,0.18l-2.71,-2.15l-1.51,-0.47l-5.15,1.53l-2.7,-0.26l-1.21,0.8l-4.35,1.91l-1.3,0.2l-3.0,1.53l-4.83,-1.62l-0.8,0.09l-1.07,0.84l-1.29,1.99l-1.07,0.78l-0.59,0.02l-0.58,-0.74l-0.76,-0.21l-2.4,0.81l-0.9,1.56l0.26,2.33l-0.72,0.77l-2.48,-0.06l-1.1,-0.37l-0.37,-0.73l0.78,-1.23l-0.06,-1.08l-0.91,-0.88l-1.22,-0.35l-1.33,0.44l-1.59,1.05l-1.8,1.72l-1.77,0.13l-2.38,-0.3l-2.89,1.82l-0.59,0.71l-0.12,1.04l1.31,1.37l1.05,2.2l-1.49,3.87l-0.05,2.41l0.82,1.36l-1.48,3.09l-1.21,0.16l-0.79,0.5l-0.11,0.65l0.54,1.41l-1.07,1.59l-0.25,1.25l0.98,0.76l0.47,1.52l0.52,0.63l2.33,-0.0l5.59,1.04l1.06,0.66l0.67,1.47l1.56,1.16l2.16,4.89l-0.31,0.26l-1.15,-0.07l-0.56,0.49l0.03,2.28l0.52,0.69l0.76,0.17l1.43,-1.29l0.75,0.02l-0.11,3.16l1.06,3.23l-0.48,0.48l-1.62,0.52l-0.96,1.06l-0.61,2.64l0.6,2.08l-0.4,0.75l-1.97,1.89l-1.1,3.23l-1.55,0.13l-1.74,2.98l-2.28,1.29l-0.98,1.23l0.15,3.83l-0.4,0.28l-2.98,0.33l-2.69,2.77l-0.17,0.81l0.39,1.61l-0.03,1.69l-1.67,2.29l-0.35,1.23l0.55,3.77l-0.88,-0.07l-0.78,1.18l-0.86,-0.35l-4.31,2.79l-1.69,0.12l-3.22,-1.34l-1.7,-0.07l-0.41,0.38l-0.09,1.49l-1.58,0.74l-0.62,-1.55l-1.55,-0.25l-0.08,-0.92l-2.44,-2.91l-3.24,-2.0l-1.85,-0.11l-0.47,-0.41l-0.25,-0.49l0.25,-1.36l-1.4,-2.86l-1.82,-0.51l-4.68,0.75l-4.79,-0.35l-2.24,-0.65l-2.95,-2.22l-3.08,-0.49l-2.02,-1.09l-2.32,0.15l-4.04,-2.44l-3.6,-0.59l-1.04,-0.56l-0.92,-0.94l-0.21,-0.75l0.38,-0.75l1.21,-0.93l-0.15,-0.71l-1.6,-0.32l-1.53,0.56l-1.05,1.06l-0.53,1.66l-0.16,1.94l-0.41,0.78l-0.81,0.24l-3.0,-0.46l-1.26,-0.64l-1.02,-1.03l-0.63,-1.32l3.7,-3.88l0.95,-2.41l0.66,-2.96l-0.35,-3.1l-2.03,-1.72l-2.04,0.3l-2.51,-1.16l-3.21,-0.56l-1.3,0.75l-0.75,1.77l-1.7,0.25l-0.8,-0.46l-0.49,-1.68l0.17,-0.84l-0.85,-0.76l-1.84,-0.58l-3.76,1.0l-0.43,-1.87l-0.91,-1.03l-1.52,-0.66l0.07,-2.41ZM309.11,602.32l1.15,-0.9l0.67,-2.47l-0.61,-1.33l-1.64,-0.44l-1.19,0.8l-0.49,2.49l0.63,1.45l1.49,0.4ZM307.84,608.3l0.94,-0.4l1.08,-1.94l-0.6,-1.74l-1.63,-0.95l-0.46,0.07l-1.45,1.45l-0.2,1.38l0.25,1.08l0.52,0.68l1.55,0.37ZM235.41,400.43l1.09,0.41l1.35,-0.28l0.64,0.57l0.15,2.37l0.68,0.73l-0.16,1.32l2.38,1.46l0.35,0.53l-0.41,3.62l-0.61,1.91l-0.67,0.91l-0.62,-0.25l-0.84,-2.53l-1.25,-2.19l-3.59,-3.54l-1.32,-0.83l-2.14,-2.59l0.33,-1.57l-1.72,-3.8l1.1,0.13l1.99,0.91l3.27,2.7ZM219.58,381.29l3.07,-0.67l0.94,0.18l0.51,0.48l-0.09,0.29l-1.95,-0.5l-0.35,0.62l1.41,1.8l1.75,-0.06l1.83,-0.69l0.25,0.77l1.02,0.43l6.19,0.88l1.32,0.74l1.5,1.94l-0.96,0.35l-3.3,-0.75l-5.87,-3.31l-3.6,0.51l-0.76,-0.27l-2.9,-2.73Z",
+            "regionName": "Aquitaine, Limousin and Poitou-Charentes",
+            "post_id": "469"
+        }
+//       "fr-re": {
+//            "path": "M761.79,701.36l1.08,0.18l1.12,-0.39l1.21,0.39l2.77,-0.03l2.17,1.11l3.51,0.8l0.97,0.55l2.4,2.39l0.54,1.06l0.32,2.77l0.52,1.06l1.9,1.97l0.91,3.81l1.85,0.93l1.43,2.47l3.94,1.89l0.84,0.82l0.32,1.39l-1.08,2.72l-1.31,6.18l-0.27,4.98l-0.6,1.25l-1.42,0.53l-4.24,0.16l-2.56,1.32l-1.76,0.26l-1.74,-0.1l-1.22,-0.48l-1.58,0.46l-1.92,0.08l-3.62,-0.55l-3.79,-2.43l-5.72,-1.87l-1.23,-0.75l-1.75,-2.11l-3.42,-0.26l-3.52,-4.42l-0.9,-1.55l-0.63,-4.75l-3.33,-4.36l-1.6,-3.39l0.0,-1.42l0.43,-1.55l0.75,-1.19l2.55,-1.05l1.15,-1.41l0.43,-1.65l-0.32,-1.19l0.55,-0.82l-0.29,-0.86l0.61,-0.27l2.76,-0.09l5.6,-3.4l4.93,-0.0l2.25,0.81Z",
+//            "regionName": "R\u00e9union",
+//            "post_id": "510"
+//        }
+    }, 
+    "height": 749.2159980728637, 
+    "projection": {
+        "type": "mill", 
+        "centralMeridian": 0.0
+    }, 
+    "width": 900.0
+});
\ No newline at end of file
diff --git a/js/vmap/dist/maps/jquery.vmap.france.js b/js/vmap/dist/maps/jquery.vmap.france.js
new file mode 100644 (file)
index 0000000..d8a185c
--- /dev/null
@@ -0,0 +1 @@
+jQuery.fn.vectorMap('addMap', 'france_fr', {"width": 520, "height": 550, "paths":{"fr-01" : {"path": "M 383.28125,262.59375 L 381.125,262.8125 L 379.75,265.34375 L 376.0625,279.78125 L 375.53125,280.96875 L 375.15625,285.53125 L 374.09375,287 L 374.09375,293.59375 L 373.46875,295.09375 L 377.28125,297.40625 L 378.78125,297.625 L 381.125,299.75 L 381.53125,303.15625 L 384.09375,302.3125 L 388.0625,303.46875 L 388.125,302.71875 L 390.03125,302.71875 L 392.78125,305.28125 L 395.34375,304 L 396.625,300.1875 L 397.90625,298.6875 L 399.59375,298.90625 L 401.28125,300.40625 L 402.15625,303.15625 L 410,312.71875 L 412.34375,311.03125 L 412.75,307.40625 L 415.3125,306.96875 L 415.3125,300.59375 L 416.59375,299.53125 L 417,293.8125 L 417.5,294.21875 L 417.4375,292.125 L 416.375,290.1875 L 416.8125,284.6875 L 418.71875,285.75 L 419.78125,283.8125 L 421.6875,283.1875 L 423.65625,281.625 L 421.53125,281.625 L 421.53125,277.90625 L 423.875,276.53125 L 427.375,276.15625 L 427.59375,274.1875 L 426.40625,273.40625 L 429.34375,269.6875 L 428.9375,268.53125 L 425.59375,266.75 L 417.46875,275.6875 L 411.8125,275.6875 L 411.8125,273.34375 L 408.6875,271.78125 L 404.96875,275.875 L 402.03125,276.28125 L 402.03125,273.53125 L 399.5,272.375 L 395.59375,266.90625 L 392.0625,265.53125 L 390.90625,263 L 388.9375,262.59375 L 387,263.96875 L 385.4375,264.375 L 383.28125,262.59375 z ", "name" : "Ain"}, "fr-02" : {"path": "M 328.40625,62.21875 L 325.28125,64.375 L 323.71875,63 L 322.34375,63 L 319.21875,65.15625 L 316.875,63.78125 L 314.53125,65.15625 L 313.75,65.34375 L 313.15625,64.15625 L 311,64.15625 L 309.4375,65.15625 L 309.375,65.15625 L 309.84375,67.90625 L 307.28125,70.6875 L 307.28125,73.25 L 305.5,75.25 L 305.90625,77.625 L 306.875,81.59375 L 308.0625,88.34375 L 307.6875,94.28125 L 306.875,96.0625 L 309.25,97.84375 L 307.46875,98.65625 L 306.28125,103.40625 L 302.90625,104.1875 L 301.71875,106.1875 L 304.09375,106.59375 L 304.5,109.34375 L 302.71875,109.75 L 302.90625,112.71875 L 303.5,112.53125 L 304.5,110.9375 L 306.875,112.53125 L 308.28125,114.125 L 307.875,116.78125 L 309.65625,118.0625 L 310.25,122.375 L 315.5,127.4375 L 317.25,128.03125 L 318.25,130.375 L 321.53125,131.0625 L 321.9375,130.5625 L 322.9375,128.4375 L 325.875,127.0625 L 327.4375,122.96875 L 329.1875,121.78125 L 328.1875,120.40625 L 325.65625,120.40625 L 325.28125,119.0625 L 327.03125,118.28125 L 327.8125,117.09375 L 326.0625,115.9375 L 326.625,114.15625 L 331.125,113.78125 L 330.34375,112.03125 L 327.625,110.25 L 327.625,105 L 331.3125,102.25 L 335.4375,102.25 L 335.03125,100.3125 L 337.375,99.3125 L 340.6875,101.46875 L 342.0625,101.09375 L 341.875,94.4375 L 342.46875,92.09375 L 343.25,89.375 L 340.6875,88 L 341.28125,86.4375 L 345,85.65625 L 345,83.125 L 347.9375,81.5625 L 348.71875,79.21875 L 347.75,77.65625 L 347.9375,74.71875 L 349.6875,73.15625 L 347.9375,69.84375 L 348.46875,66.375 L 344.5,66.375 L 343.4375,67.09375 L 339.71875,66.125 L 338.9375,63.59375 L 337.78125,63.59375 L 335.625,65.53125 L 335.25,63.78125 L 330.9375,63.375 L 329.75,62.40625 L 328.40625,62.21875 z ", "name" : "Aisne"}, "fr-03" : {"path": "M 301.625,247.96875 L 298.90625,251.46875 L 297.34375,251.65625 L 295.59375,253.4375 L 293.625,251.28125 L 288.375,256.5625 L 288.375,259.6875 L 289.34375,260.46875 L 289.53125,262.03125 L 286.8125,264.15625 L 284.25,263.375 L 279.375,264.375 L 276.84375,267.28125 L 275.90625,269.28125 L 276.0625,269.25 L 278.40625,272.5625 L 278.40625,274.90625 L 279.75,276.65625 L 281.125,274.90625 L 282.6875,277.65625 L 284.84375,278.4375 L 287,283.5 L 287.09375,284.96875 L 290.0625,287.28125 L 291.65625,286.5625 L 292.90625,283.5625 L 294.125,283.21875 L 294.125,281.625 L 296.25,281.4375 L 296.4375,282.5 L 299.09375,279.5 L 302.09375,279.5 L 302.625,280.5625 L 301.21875,282.5 L 303.3125,284.8125 L 303.6875,286.21875 L 308.625,289.0625 L 314.625,289.9375 L 316.40625,289.75 L 319.0625,290.28125 L 321.34375,288.875 L 323.125,289.75 L 323.46875,292.21875 L 325.78125,292.75 L 328.78125,292.59375 L 329.65625,294.71875 L 332.40625,295.8125 L 332.5,294.84375 L 337.1875,294.625 L 336.8125,283.5 L 335.4375,280.78125 L 336,278.625 L 339.25,278.0625 L 339.34375,277.84375 L 343.4375,274.71875 L 343.625,267.09375 L 342.25,265.15625 L 339.125,265.15625 L 337.96875,263.59375 L 334.65625,263.59375 L 333.6875,262.40625 L 333.6875,259.46875 L 329.75,252.0625 L 327.8125,250.6875 L 324.09375,255.78125 L 322.53125,256.15625 L 321.9375,253.625 L 320.1875,252.84375 L 319.40625,254.40625 L 316.5,254.40625 L 316.09375,252.65625 L 314.125,253.8125 L 312,255 L 309.65625,252.4375 L 306.3125,250.875 L 306.125,248.34375 L 301.625,247.96875 z ", "name" : "Allier"}, "fr-04" : {"path": "M 463.84375,364.34375 L 461.71875,367.53125 L 458.71875,369.3125 L 457.65625,371.4375 L 455,371.59375 L 455,373.53125 L 454.28125,374.59375 L 453.21875,377.25 L 446.875,377.09375 L 443.875,375.5 L 441.90625,376.90625 L 438.21875,376.71875 L 437.3125,377.96875 L 438.21875,377.96875 L 438.75,381.3125 L 437.84375,381.6875 L 434.5,379.5625 L 434.5,378.3125 L 432.5625,376.71875 L 431.5,376.71875 L 431.5,378.5 L 429.90625,378.84375 L 426.53125,380.78125 L 424.40625,384.34375 L 423.875,386.09375 L 425.125,386.4375 L 425.3125,389.28125 L 424.0625,389.28125 L 422.125,387.5 L 421.0625,387.6875 L 421.59375,389.28125 L 424.59375,392.625 L 422.65625,393.34375 L 421.25,392.46875 L 417.6875,392.46875 L 414.6875,395.28125 L 414.65625,395.25 L 414.53125,396.40625 L 413.375,395.03125 L 411.8125,393.65625 L 410.8125,396.59375 L 409.0625,398.15625 L 408.3125,398.09375 L 408.34375,398.28125 L 408.5,400.9375 L 410.625,401.3125 L 410.625,403.78125 L 408.6875,404.65625 L 409.03125,407.5 L 412.5625,409.25 L 412.5625,411.1875 L 410.96875,412.96875 L 410.96875,414.5625 L 415.40625,414.5625 L 419.46875,419.15625 L 419.4375,419.25 L 424.59375,417.5625 L 430.96875,421.8125 L 434.5,419.15625 L 435.375,417.375 L 440.34375,415.78125 L 443.5,417.90625 L 448.09375,414.5625 L 453.40625,414.75 L 454.8125,413.3125 L 457.78125,413.1875 L 457.84375,413.15625 L 457.125,411.375 L 458,410.3125 L 457.65625,408.90625 L 460.46875,408.90625 L 461.1875,408.03125 L 463.84375,406.59375 L 465.96875,408.03125 L 467.375,407.125 L 464.03125,404.125 L 460.46875,400.78125 L 459.25,400.40625 L 459.0625,397.75 L 456.9375,394.59375 L 457.65625,390 L 458.71875,387.5 L 460.65625,385.90625 L 460.84375,383.4375 L 463.5,382.03125 L 463.90625,381.875 L 463.90625,378.09375 L 466.65625,377.71875 L 465.09375,376.34375 L 463.125,375.75 L 462.15625,373.21875 L 462.9375,371.46875 L 466.4375,367.75 L 465.875,365 L 466.375,364.46875 L 463.84375,364.34375 z ", "name" : "Alpes de Haute Provence"}, "fr-05" : {"path": "M 447.34375,339.15625 L 445.59375,339.9375 L 445.1875,342.875 L 441.6875,343.28125 L 441.09375,340.53125 L 439.9375,339.375 L 436.40625,339.75 L 435.03125,340.9375 L 434.25,345.03125 L 434.84375,346 L 438.9375,346.40625 L 439.71875,348.9375 L 441.28125,349.71875 L 441.28125,354 L 437.5625,353.8125 L 436,355.5625 L 431.53125,354.78125 L 429,356.9375 L 427.21875,356.15625 L 424.6875,358.125 L 425.65625,359.875 L 424.09375,361.4375 L 419.21875,361.4375 L 419.21875,363.78125 L 420.78125,364.5625 L 420.1875,365.9375 L 416.875,367.28125 L 412.78125,367.6875 L 411.59375,371.40625 L 411.40625,373.75 L 413.5625,375.5 L 411.40625,378.03125 L 408.6875,376.65625 L 405.5625,376.46875 L 405.15625,378.21875 L 407.125,379.59375 L 404.75,381.15625 L 405.5625,384.46875 L 412.1875,386.25 L 413.375,388.78125 L 415.3125,389.15625 L 414.65625,395.25 L 414.6875,395.28125 L 417.6875,392.46875 L 421.25,392.46875 L 422.65625,393.34375 L 424.59375,392.625 L 421.59375,389.28125 L 421.0625,387.6875 L 422.125,387.5 L 424.0625,389.28125 L 425.3125,389.28125 L 425.125,386.4375 L 423.875,386.09375 L 424.40625,384.34375 L 426.53125,380.78125 L 429.90625,378.84375 L 431.5,378.5 L 431.5,376.71875 L 432.5625,376.71875 L 434.5,378.3125 L 434.5,379.5625 L 437.84375,381.6875 L 438.75,381.3125 L 438.21875,377.96875 L 437.3125,377.96875 L 438.21875,376.71875 L 441.90625,376.90625 L 443.875,375.5 L 446.875,377.09375 L 453.21875,377.25 L 454.28125,374.59375 L 455,373.53125 L 455,371.59375 L 457.65625,371.4375 L 458.71875,369.3125 L 461.71875,367.53125 L 463.84375,364.34375 L 466.375,364.46875 L 468.21875,362.46875 L 470.34375,362.65625 L 470.34375,360.90625 L 467.625,359.53125 L 467.03125,353.875 L 464.875,353.09375 L 462.15625,353.5 L 457.0625,350.9375 L 456.28125,345.09375 L 453.375,344.125 L 452.375,342.15625 L 451.09375,339.34375 L 447.34375,339.15625 z ", "name" : "Hautes Alpes"}, "fr-06" : {"path": "M 463.90625,381.875 L 463.5,382.03125 L 460.84375,383.4375 L 460.65625,385.90625 L 458.71875,387.5 L 457.65625,390 L 456.9375,394.59375 L 459.0625,397.75 L 459.25,400.40625 L 460.46875,400.78125 L 464.03125,404.125 L 467.375,407.125 L 465.96875,408.03125 L 463.84375,406.59375 L 461.1875,408.03125 L 460.46875,408.90625 L 457.65625,408.90625 L 458,410.3125 L 457.125,411.375 L 457.84375,413.15625 L 455.53125,414.5625 L 456.40625,416.6875 L 458.71875,416.84375 L 461,417.90625 L 461.375,421.625 L 463.5,423.75 L 464.71875,423.75 L 467.03125,424.625 L 467.375,426.59375 L 465.96875,427.8125 L 467.03125,428.875 L 467.03125,430.125 L 469.21875,432.375 L 469.375,432.1875 L 469.5625,427.71875 L 473.46875,428.5 L 474.84375,426.71875 L 476.8125,427.125 L 477,421.0625 L 481.5,420.6875 L 485.40625,417.15625 L 488.90625,417.15625 L 489.09375,415 L 492.625,412.875 L 490.65625,408.375 L 493.59375,405.84375 L 493,402.90625 L 497.3125,401.53125 L 498.46875,397.25 L 497.90625,394.3125 L 496.90625,392.5625 L 496.125,390 L 493.21875,390.21875 L 484.03125,393.53125 L 481.09375,393.53125 L 476.03125,389.4375 L 470.9375,388.0625 L 468,388.0625 L 468,384.53125 L 463.90625,382 L 463.90625,381.875 z ", "name" : "Alpes Maritimes"}, "fr-07" : {"path": "M 375.25,328.5 L 370.71875,331.1875 L 369.84375,335.03125 L 366.46875,335.65625 L 364.65625,336.15625 L 364.71875,336.25 L 363.5625,340.9375 L 360.8125,342.09375 L 359.65625,344.0625 L 360.4375,346.59375 L 361,347.96875 L 358.09375,347.96875 L 357.875,351.65625 L 354.75,351.875 L 353.1875,356.75 L 348.5,356.75 L 343.4375,360.46875 L 340.625,364.9375 L 341.09375,365.53125 L 342.46875,372.71875 L 345.78125,376.3125 L 345.21875,380.4375 L 349.375,382.9375 L 349.375,388.46875 L 351.59375,387.34375 L 356.28125,390.40625 L 358.5,391.21875 L 359.03125,387.34375 L 361.8125,386.8125 L 362.625,389.84375 L 365.40625,389.5625 L 365.9375,386.53125 L 372.28125,390.09375 L 373.3125,388 L 376,387.59375 L 376.21875,383.46875 L 375.59375,382.59375 L 374.75,382.40625 L 374.75,380.90625 L 375.375,379.40625 L 374.3125,377.71875 L 374.9375,373.90625 L 377.5,370.90625 L 377.5,366.6875 L 376.4375,361.78125 L 378.34375,361.375 L 378.78125,359.25 L 380.6875,355.625 L 381.75,352.875 L 380.0625,348.625 L 379,345.21875 L 377.5,339.28125 L 377.5,331.3125 L 376.4375,330.96875 L 375.25,328.5 z ", "name" : "Ardèche"}, "fr-08" : {"path": "M 367.625,55.84375 L 365.65625,58.75 L 363.90625,60.53125 L 363.90625,62.28125 L 363.90625,64.625 L 361.5625,66.1875 L 357.28125,67.5625 L 354.9375,68.53125 L 352.1875,66.375 L 348.46875,66.375 L 347.9375,69.84375 L 349.6875,73.15625 L 347.9375,74.71875 L 347.75,77.65625 L 348.71875,79.21875 L 347.9375,81.5625 L 345,83.125 L 345,85.65625 L 341.28125,86.4375 L 340.6875,88 L 343.25,89.375 L 342.46875,92.09375 L 341.875,94.4375 L 342,99.3125 L 346.75,99.4375 L 350.90625,102.03125 L 351.6875,103.21875 L 353.875,103.8125 L 357.0625,106.1875 L 359.625,106.375 L 360.21875,105.78125 L 362.8125,105.78125 L 364,108.375 L 365.375,108.375 L 366.1875,107.1875 L 370.9375,107.375 L 371.71875,108.375 L 372.3125,108.375 L 374.3125,106.375 L 376.09375,107.96875 C 376.09375,107.96875 376.33461,107.94351 376.375,107.9375 L 376.25,107.125 L 378.59375,105.96875 L 379.75,104.78125 L 379,102.84375 L 378.78125,101.46875 L 380.9375,99.71875 L 381.71875,95.8125 L 379.375,92.875 L 380.15625,91.5 L 382.125,87.8125 L 382.6875,88.59375 L 385.625,88.59375 L 387,89.9375 L 388.75,88.78125 L 390.125,86.53125 L 388.71875,86.3125 L 387.9375,82.40625 L 386.375,81.21875 L 380.90625,80.625 L 379.9375,78.09375 L 378.15625,76.9375 L 371.90625,76.15625 L 371.53125,71.65625 L 372.3125,70.875 L 372.3125,69.125 L 369.1875,67.15625 L 369.78125,65 L 370.5625,63.0625 L 369.1875,61.875 L 371.34375,59.9375 L 371.34375,56.40625 L 370.5625,55.84375 L 367.625,55.84375 z ", "name" : "Ardennes"}, "fr-09" : {"path": "M 237.21875,446.375 L 235.96875,447.25 L 235.4375,448.3125 L 237.90625,450.09375 L 238.625,451.34375 L 238.09375,452.375 L 233.84375,452.75 L 232.625,454.5 L 232.78125,455.03125 L 234.375,455.5625 L 235.28125,456.8125 L 234.21875,458.5625 L 232.96875,458.40625 L 231.03125,456.625 L 228.71875,455.9375 L 226.4375,456.09375 L 222.375,458.5625 L 222.53125,461.9375 L 223.59375,462.65625 L 222.90625,465.28125 L 218.28125,466.53125 L 216.53125,468.65625 L 216.53125,472.1875 L 217.25,473.25 L 215.59375,474.78125 L 216.65625,475.375 L 222.6875,476.53125 L 225.25,476.53125 L 228.5625,480.84375 L 236.96875,480.4375 L 240.28125,485.71875 L 243.21875,484.53125 L 251.8125,485.71875 L 252.4375,489.3125 L 258.5,487.90625 L 260.71875,485.96875 L 264.03125,485.125 L 264.84375,483.46875 L 272.03125,482.9375 L 267.625,477.6875 L 264.03125,479.625 L 257.6875,474.375 L 259.0625,472.4375 L 264.03125,472.4375 L 263.46875,467.75 L 263.46875,464.15625 L 262.65625,457.5 L 252.96875,452.8125 L 253.53125,451.15625 L 251.6875,449.09375 L 250.125,449.75 L 248,450.09375 L 244.09375,448.3125 L 243.03125,447.96875 L 244.625,449.90625 L 243.9375,451.5 L 240.5625,451.15625 L 240.40625,449.375 L 238.4375,446.71875 L 237.21875,446.375 z ", "name" : "Ariège"}, "fr-10" : {"path": "M 349.3125,138.6875 L 345.34375,140.875 L 341.96875,143.25 L 338.625,143.25 L 333.0625,147.03125 L 328.3125,147.8125 L 324.9375,144.25 L 324.09375,144.4375 L 324.09375,145.03125 L 321.375,146.1875 L 321.1875,148.53125 L 319.8125,150.3125 L 319.03125,154.21875 L 318.59375,157.5 L 319.8125,158.5 L 322.15625,158.5 L 327.21875,163.78125 L 326.625,169.0625 L 330.15625,171.78125 L 332.125,170.40625 L 335.25,174.125 L 335.625,177.65625 L 337.78125,180.5625 L 338.75,182.71875 L 346.5625,183.125 L 350.46875,181.15625 L 351.625,183.3125 L 353,183.5 L 354,181.34375 L 360.4375,181.15625 L 362.96875,179.78125 L 363.375,177.25 L 369.03125,177.25 L 369.8125,177.6875 L 369.15625,175.1875 L 367.5625,174.1875 L 369.75,172.21875 L 373.125,172 L 374.3125,170.21875 L 374.09375,163.09375 L 373.3125,158.9375 L 369.9375,157.75 L 366.375,152.78125 L 366.5625,149.8125 L 367.59375,147.65625 L 365.78125,147.03125 L 360.21875,148.21875 L 356.25,148.21875 L 352.6875,142.875 L 352.28125,138.90625 L 349.3125,138.6875 z ", "name" : "Aube"}, "fr-11" : {"path": "M 274.25,438.46875 L 273.96875,442.0625 L 270.375,440.9375 L 266.5,440.9375 L 266.78125,439.5625 L 264.84375,439.84375 L 260.71875,441.21875 L 259.34375,438.71875 L 256.5625,441.21875 L 257.40625,443.15625 L 254.34375,444.53125 L 253.8125,447.5625 L 251.3125,448.6875 L 253.53125,451.15625 L 252.96875,452.8125 L 262.65625,457.5 L 263.46875,464.15625 L 263.46875,467.75 L 264.03125,472.4375 L 259.0625,472.4375 L 257.6875,474.375 L 264.03125,479.625 L 267.625,477.6875 L 272.03125,482.9375 L 271.375,483 L 272.21875,483.5 L 280.15625,479.625 L 278.21875,476.78125 L 278.0625,473.4375 L 296.59375,473.4375 L 296.25,470.9375 L 300.5,468.65625 L 305.4375,472.53125 L 308,473.71875 L 307.84375,468.125 L 308.0625,461.6875 L 305.71875,461.875 L 303.75,458.96875 L 305.3125,456.40625 L 308.625,459.53125 L 311.5625,457.1875 L 313.53125,455.25 L 313.78125,453.1875 L 311.28125,453.09375 L 310.40625,450.28125 L 307.9375,450.09375 L 305.625,446.71875 L 303.84375,446.90625 L 301.75,445.65625 L 301.375,442.65625 L 300.3125,443.1875 L 300.84375,445.3125 L 298.375,445.3125 L 298.1875,448.84375 L 294.5,450.09375 L 292.71875,446.375 L 290.25,447.96875 L 288.125,446.375 L 287.0625,443.90625 L 288.84375,441.78125 L 288,439.5 L 287.78125,439.5625 L 281.96875,439.5625 L 275.90625,438.46875 L 274.25,438.46875 z ", "name" : "Aude"}, "fr-12" : {"path": "M 294.6875,353.375 L 289.15625,358.09375 L 289.15625,362.78125 L 287.78125,362.78125 L 287.21875,367.1875 L 285.84375,367.75 L 284.75,370.21875 L 278.65625,370.21875 L 278.125,369.40625 L 275.34375,369.40625 L 273.6875,372.15625 L 273.09375,372.09375 L 272.75,373.1875 L 271.5,374.59375 L 267.96875,374.59375 L 267.25,375.5 L 265.5,375.3125 L 262.3125,378.84375 L 261.25,378.5 L 258.96875,380.4375 L 259.65625,383.96875 L 261.4375,386.625 L 260.0625,388.0625 L 260.375,392.09375 L 263.1875,392.28125 L 261.59375,395.46875 L 262.84375,398.65625 L 264.4375,397.75 L 265.15625,399.34375 L 267.4375,397.0625 L 270.8125,396.875 L 274.15625,399.34375 L 280,400.40625 L 282.125,404.125 L 285.125,405.53125 L 286.71875,409.59375 L 286.53125,411.1875 L 288.46875,414.75 L 288.46875,416.6875 L 292,421.28125 L 295.375,423.03125 L 297.5,422.5 L 298.5625,421.09375 L 300.15625,421.46875 L 303.8125,423.8125 L 303.84375,423.8125 L 305.46875,423.8125 L 308.78125,423.8125 L 308.5,418.03125 L 308.5,416.09375 L 310.15625,416.09375 L 313.1875,417.75 L 316.21875,417.75 L 315.6875,414.4375 L 317.34375,413.03125 L 320.65625,412.5 L 320.65625,409.71875 L 324.25,408.0625 L 323.40625,404.21875 L 320.375,404.21875 L 317.625,403.65625 L 317.0625,401.4375 L 319.28125,400.90625 L 319.28125,398.125 L 321.46875,396.1875 L 319.8125,395.375 L 315.125,396.1875 L 315.40625,394 L 312.09375,392.59375 L 311.25,385.96875 L 311.25,381.28125 L 308.5,379.34375 L 308.78125,375.46875 L 302.96875,368.3125 L 302.40625,362.78125 L 300.5,362.78125 L 299.65625,357.25 L 295.78125,357.8125 L 295.25,354.21875 L 294.6875,353.375 z ", "name" : "Aveyron"}, "fr-13" : {"path": "M 379.71875,409.90625 L 374.25,413.03125 L 372.84375,423.53125 L 367.0625,422.71875 L 365.40625,427.125 L 366.78125,429.0625 L 360.4375,432.9375 L 358.6875,437 L 364.875,437.28125 L 373.09375,437.875 L 374.65625,439.4375 L 371.71875,439.4375 L 369.78125,442.75 L 378.15625,444.5 L 384.8125,443.34375 L 381.28125,440 L 383.625,438.0625 L 387.34375,439.625 L 389.09375,443.34375 L 400.25,443.53125 L 403.15625,442.34375 L 403.75,444.125 L 400.625,446.84375 L 404.9375,447.03125 L 404.15625,449 L 402.96875,450.375 L 412.53125,450.375 L 417.21875,451.9375 L 417.6875,452.5625 L 417.875,448.6875 L 419.28125,447.09375 L 421.0625,446.03125 L 420.875,444.96875 L 419.46875,443.5625 L 418.0625,443.5625 L 417.15625,442.5 L 418.75,441.0625 L 418.75,440.53125 L 417,439.65625 L 417,438.25 L 420.875,438.4375 L 421.78125,437.71875 L 418.40625,434.53125 L 418.59375,430.8125 L 416.46875,429.0625 L 418.21875,425.53125 L 422.46875,422.6875 L 419.28125,420.5625 L 417,422.34375 L 411.6875,423.5625 L 407.4375,423.03125 L 399.84375,419.875 L 395.25,420.03125 L 391.375,418.28125 L 389.9375,416.3125 L 386.9375,412.96875 L 379.875,409.96875 L 379.71875,409.90625 z ", "name" : "Bouches du Rhône"}, "fr-14" : {"path": "M 202.65625,97.78125 L 198.09375,98.59375 L 190.65625,102.90625 L 182.28125,106.21875 L 175.625,102.5 L 159.625,100.15625 L 155.90625,98.21875 L 150.125,99.6875 L 150.46875,101.84375 L 149.34375,102.96875 L 149.5,104.5625 L 153.21875,108.28125 L 155.46875,109.5625 L 157.09375,107.46875 L 158.375,109.09375 L 156.75,111.1875 L 158.21875,113.59375 L 157.5625,114.40625 L 158.6875,116.6875 L 158.0625,119.25 L 156.4375,121.84375 L 153.84375,123.4375 L 152.40625,122.3125 L 150.96875,123.59375 L 152.5625,125.0625 L 151.28125,127.46875 L 148.21875,128.59375 L 151.9375,133.28125 L 155.625,133.59375 L 158.46875,135.4375 L 162.40625,134.25 L 165.3125,130.875 L 169.34375,132 L 172.875,129.5625 L 175,128.78125 L 177.25,131.03125 L 180.96875,130.375 L 184.1875,132.15625 L 188.21875,130.875 L 191.90625,128.125 L 194.34375,125.375 L 195.96875,125.0625 L 196.4375,127.15625 L 197.71875,126.84375 L 197.875,125.375 L 201.59375,124.75 L 202.875,125.53125 L 206.84375,124.65625 L 207.5,122.75 L 207.3125,121 L 205.34375,120.21875 L 205.15625,118.84375 L 206.90625,117.6875 L 207.125,115.71875 L 205.9375,111.03125 L 203.59375,107.71875 L 205.5625,106.5625 L 205.5625,105.78125 L 203.59375,105.1875 L 202.65625,97.78125 z ", "name" : "Calvados"}, "fr-15" : {"path": "M 285.84375,323.71875 L 285.25,325.875 L 286.21875,328.21875 L 285.03125,329.59375 L 283.09375,329.59375 L 281.125,327.4375 L 279.375,326.46875 L 279.1875,331.9375 L 275.65625,334.09375 L 273.125,337.59375 L 273.71875,341.125 L 272.9375,342.6875 L 271.9375,345.8125 L 270.375,345.8125 L 268.8125,347.75 L 270,348.9375 L 270.78125,350.875 L 268.25,352.65625 L 269.28125,359.1875 L 272.59375,361.65625 L 270.09375,367.46875 L 272.59375,368.5625 L 271.5,371.875 L 273.6875,372.15625 L 275.34375,369.40625 L 278.125,369.40625 L 278.65625,370.21875 L 284.75,370.21875 L 285.84375,367.75 L 287.21875,367.1875 L 287.78125,362.78125 L 289.15625,362.78125 L 289.15625,358.09375 L 294.6875,353.375 L 295.25,354.21875 L 295.78125,357.8125 L 299.65625,357.25 L 300.5,362.78125 L 302.40625,362.78125 L 302.96875,368.3125 L 304.6875,370.4375 L 307.5,363.96875 L 310.25,355.375 L 313.75,357.71875 L 315.3125,354.21875 L 320.3125,352.40625 L 320.3125,350.75 L 319.25,349.15625 L 317.125,347.90625 L 318.1875,346.3125 L 317.28125,345.4375 L 318.34375,345.09375 L 319.59375,344.03125 L 317.46875,343.84375 L 316.40625,342.4375 L 316.0625,338.71875 L 314.8125,337.46875 L 313.9375,334.3125 L 309.5,334.3125 L 308.625,331.8125 L 307.21875,331.65625 L 306.5,333.0625 L 303.6875,332.875 L 301.03125,328.8125 L 299.96875,328.65625 L 297.84375,327.59375 L 296.59375,328.8125 L 293.4375,328.8125 L 291.84375,325.46875 L 285.84375,323.71875 z ", "name" : "Cantal"}, "fr-16" : {"path": "M 206.28125,284.875 L 204.59375,286.15625 L 204.8125,288.9375 L 203.75,289.78125 L 200.75,288.0625 L 197.78125,289.125 L 194.375,289.34375 L 191.8125,286.21875 L 191,286.375 L 187.59375,288.0625 L 185.03125,288.71875 L 185.03125,290.1875 L 183.5625,291.90625 L 183.96875,292.96875 L 182.0625,294.03125 L 180.375,300.1875 L 179.9375,304.21875 L 178.46875,304.84375 L 176.34375,304.65625 L 175.90625,303.59375 L 173.5625,303.59375 L 172.3125,304.65625 L 169.53125,304.65625 L 167.1875,305.90625 L 168.90625,306.5625 L 169.125,311.03125 L 169.96875,311.21875 L 168.46875,312.9375 L 170.1875,314 L 172.5,316.125 L 173.78125,318.25 L 175.28125,319.71875 L 174.84375,321.84375 L 174,322.6875 L 175.28125,323.96875 L 175.28125,325.46875 L 172.71875,327.59375 L 173.78125,328.4375 L 175.28125,328.875 L 175.28125,329.28125 L 173.15625,330.125 L 173.34375,331.1875 L 174.625,331.84375 L 178.65625,331.1875 L 180.375,333.09375 L 181.65625,334.8125 L 185.8125,337.625 L 186.40625,336.625 L 190.3125,337.03125 L 192.25,335.25 L 195.78125,331.75 L 195.96875,324.90625 L 205.15625,318.65625 L 205.34375,313.96875 L 208.09375,313.59375 L 209.84375,310.46875 L 210.9375,310.5 L 211.59375,307.53125 L 213.15625,307.34375 L 214.125,304.59375 L 216.09375,304 L 218.4375,302.4375 L 218.0625,297.5625 L 219.8125,296.96875 L 223.3125,296.1875 L 223.125,294.4375 L 222.53125,291.71875 L 219.8125,291.5 L 218.25,289.75 L 219.21875,288 L 219.28125,286.40625 L 217.53125,285.53125 L 214.15625,285.53125 L 212.65625,287.21875 L 209.03125,288.71875 L 207.78125,287.4375 L 206.28125,284.875 z ", "name" : "Charente"}, "fr-17" : {"path": "M 149.3125,270.625 L 146.5625,270.8125 L 140.59375,274.4375 L 142.03125,275.75 L 138.90625,278.28125 L 138.53125,280.25 L 135.59375,280.625 L 134.03125,278.875 L 130.125,278.5 L 129.71875,276.53125 L 127.375,274.96875 L 124.0625,276.15625 L 126.21875,279.28125 L 128.9375,279.28125 L 131.6875,281.03125 L 133.84375,282.78125 L 137.9375,282.59375 L 138.71875,284.34375 L 141.4375,284.9375 L 142.4375,287.65625 L 144.1875,288.4375 L 144,290.59375 L 141.65625,290.21875 L 140.875,291.375 L 142.625,293.90625 L 141.65625,298.21875 L 139.3125,298.03125 L 139.5,300.75 L 140.09375,301.71875 L 137.34375,301.71875 L 136.96875,300.15625 L 138.71875,297.8125 L 138.125,296.46875 L 137.15625,295.6875 L 136.75,291 L 133.4375,290.59375 L 130.71875,287.28125 L 130.3125,294.125 L 134.8125,297.4375 L 135.1875,301.15625 L 135.96875,305.4375 L 136.375,309.75 L 138.71875,309.53125 L 142.8125,312.875 L 145.5625,314.4375 L 145.75,316.375 L 147.90625,316.78125 L 154.15625,323.03125 L 155.625,329.78125 L 161.40625,329.78125 L 162.375,328.8125 L 162.5625,331.75 L 167.65625,332.34375 L 168.4375,338.59375 L 171.1875,338.78125 L 175.65625,343.28125 L 178,343.65625 L 180.75,342.28125 L 182.6875,343.65625 L 184.25,340.34375 L 185.8125,337.625 L 181.65625,334.8125 L 180.375,333.09375 L 178.65625,331.1875 L 174.625,331.84375 L 173.34375,331.1875 L 173.15625,330.125 L 175.28125,329.28125 L 175.28125,328.875 L 173.78125,328.4375 L 172.71875,327.59375 L 175.28125,325.46875 L 175.28125,323.96875 L 174,322.6875 L 174.84375,321.84375 L 175.28125,319.71875 L 173.78125,318.25 L 172.5,316.125 L 170.1875,314 L 168.46875,312.9375 L 169.96875,311.21875 L 169.125,311.03125 L 168.90625,306.5625 L 167.1875,305.90625 L 169.53125,304.65625 L 172.3125,304.65625 L 173.5625,303.59375 L 175.90625,303.59375 L 176.34375,304.65625 L 178.46875,304.84375 L 179.9375,304.21875 L 180.375,300.1875 L 182.0625,294.03125 L 182.125,294 L 180.59375,292.53125 L 180.15625,290.40625 L 177.40625,289.125 L 173.78125,286.59375 L 169.3125,287 L 166.5625,283.40625 L 162.53125,283.1875 L 159.34375,280.84375 L 159.34375,279.5625 L 157.21875,277.25 L 157.125,274.375 L 154.1875,272.1875 L 150.46875,273.75 L 149.3125,270.625 z ", "name" : "Charente Maritime"}, "fr-18" : {"path": "M 275.53125,200.84375 L 272.6875,202.25 L 270.15625,204.34375 L 270.28125,205.1875 L 272.8125,205.875 L 273.8125,208 L 275.34375,208.5625 L 274.78125,209.8125 L 274.78125,211.90625 L 272.40625,212.90625 L 270.5625,216.25 L 270.4375,218.09375 L 271.125,218.9375 L 271.40625,219.90625 L 268.90625,221.3125 L 264.96875,221.71875 L 264,220.625 L 262.875,220.75 L 261.75,222 L 261.875,224.53125 L 259.375,224.6875 L 259.21875,226.90625 L 256.96875,228.75 L 257.25,229.59375 L 258.65625,230.71875 L 261.46875,231.125 L 263.5625,230.28125 L 266.21875,230.15625 L 267.5,231.125 L 267.0625,233.78125 L 269.3125,236.75 L 269.3125,238 L 268.34375,239.6875 L 268.34375,240.375 L 269.46875,241.65625 L 271.28125,241.65625 L 271.40625,242.46875 L 269.1875,244.3125 L 269.3125,245.5625 L 267.90625,246.28125 L 268.46875,247.25 L 270.28125,248.78125 L 270.28125,249.90625 L 268.34375,251.03125 L 268.34375,252.71875 L 271,254.125 L 271.5625,256.09375 L 273.25,257.625 L 273.09375,258.1875 L 272.40625,259.03125 L 272.25,261.5625 L 271.84375,262.40625 L 272.96875,264.625 L 273.375,266.3125 L 271.40625,268.28125 L 271.3125,269.84375 L 275.90625,269.28125 L 276.84375,267.28125 L 279.375,264.375 L 284.25,263.375 L 286.8125,264.15625 L 289.53125,262.03125 L 289.34375,260.46875 L 288.375,259.6875 L 288.375,256.5625 L 293.625,251.28125 L 295.59375,253.4375 L 297.34375,251.65625 L 298.90625,251.46875 L 301.625,247.96875 L 306.125,248.34375 L 306.1875,249.40625 L 307.6875,244.625 L 306.71875,242.875 L 306.90625,240.34375 L 307.5,235.25 L 305.34375,233.125 L 305.75,228.4375 L 303.78125,224.3125 L 303.59375,221.59375 L 300.0625,218.84375 L 299.5,216.5 L 301.25,213.96875 L 301.25,210.25 L 299.21875,207.875 L 297.21875,208.6875 L 296.25,208.28125 L 294.84375,206.4375 L 294,206.3125 L 293.4375,206.59375 L 293.28125,209.40625 L 292.03125,209.53125 L 291.0625,208.6875 L 288.8125,205.59375 L 287.96875,204.5 L 284.75,204.34375 L 283.1875,202.375 L 281.9375,202.375 L 281.375,203.09375 L 279.28125,203.375 L 277.59375,201.8125 L 275.625,200.96875 L 275.53125,200.84375 z ", "name" : "Cher"}, "fr-19" : {"path": "M 265.75,307.625 L 264.90625,309.75 L 261.71875,310.375 L 260.46875,312.5 L 258.96875,312.5 L 256.84375,311.875 L 255.34375,314.40625 L 253.03125,314.625 L 251.53125,317.375 L 249.625,317.375 L 248.125,318.875 L 244.3125,318.4375 L 243.03125,320.5625 L 241.5625,320.375 L 239,323.5625 L 236.65625,322.6875 L 235.5625,324.90625 L 236.40625,327.0625 L 238.5625,328.8125 L 234.65625,332.34375 L 234.65625,335.0625 L 236.21875,335.84375 L 234.65625,337.8125 L 236.8125,339.5625 L 235.25,341.5 L 237,342.6875 L 241.28125,342.5 L 241.09375,346.78125 L 242.71875,349.34375 L 243.3125,349.25 L 247.46875,347.3125 L 252.4375,349.53125 L 256.28125,355.03125 L 258.5,354.75 L 261.8125,351.4375 L 262.90625,353.375 L 265.125,351.1875 L 268.15625,352 L 268.25,352.65625 L 270.78125,350.875 L 270,348.9375 L 268.8125,347.75 L 270.375,345.8125 L 271.9375,345.8125 L 272.9375,342.6875 L 273.71875,341.125 L 273.125,337.59375 L 275.65625,334.09375 L 279.1875,331.9375 L 279.375,326.46875 L 281.125,327.4375 L 283.09375,329.59375 L 285.03125,329.59375 L 286.21875,328.21875 L 285.25,325.875 L 286.21875,322.375 L 285.625,319.0625 L 284.4375,317.6875 L 284.4375,314.9375 L 286.21875,312.03125 L 285.8125,309.28125 L 285.375,308.84375 L 283.40625,310.375 L 279.5625,310.375 L 278.3125,312.28125 L 275.96875,312.28125 L 274.0625,310.375 L 273.1875,309.09375 L 268.3125,309.09375 L 267.25,307.625 L 265.75,307.625 z ", "name" : "Corrèze"}, "fr-2a" : {"path": "M 445.33847,488.9562 L 445.33847,491.11245 L 447.30722,492.48745 L 450.61972,494.42495 L 450.83847,495.98745 L 448.86972,496.5812 L 445.74472,497.17495 L 445.74472,498.5187 L 446.90097,499.7062 L 447.11972,503.61245 L 451.40097,504.98745 L 452.96347,505.36245 L 454.33847,507.5187 L 453.36972,508.8937 L 451.80722,509.4562 L 450.61972,511.61245 L 449.46347,512.98745 L 450.02597,516.48745 L 452.96347,516.29995 L 453.74472,516.8937 L 456.49472,515.5187 L 457.27597,516.29995 L 455.90097,519.23745 L 457.27597,520.61245 L 454.93222,522.36245 L 453.36972,525.86245 L 457.65097,526.86245 L 463.71347,527.42495 L 461.18222,530.36245 C 461.18222,530.36245 459.99289,529.90364 459.46347,530.1437 C 459.44782,530.15141 459.41536,530.16589 459.40097,530.17495 C 459.39647,530.17828 459.37406,530.20271 459.36972,530.2062 C 459.36553,530.20986 459.34249,530.23363 459.33847,530.23745 C 459.33478,530.24161 459.31073,530.26437 459.30722,530.2687 C 459.30054,530.27771 459.28192,530.29022 459.27597,530.29995 C 459.27319,530.30499 459.27856,530.32597 459.27597,530.3312 C 459.27118,530.34203 459.24871,530.38211 459.24472,530.3937 C 459.24293,530.39969 459.2463,530.41876 459.24472,530.42495 C 459.24199,530.43772 459.21532,530.47387 459.21347,530.48745 C 459.21207,530.50144 459.21394,530.53512 459.21347,530.54995 C 459.21348,531.52651 457.86972,533.8937 457.86972,533.8937 L 459.80722,536.0187 L 463.33847,538.17495 L 469.96347,539.92495 L 471.90097,540.7062 L 473.68222,541.48745 L 472.49472,543.6437 L 475.61972,543.4562 L 476.21347,544.8312 L 479.33847,544.8312 L 480.11972,541.11245 L 478.15097,540.7062 L 480.90097,537.79995 L 479.93222,536.79995 L 480.11972,535.04995 L 483.65097,533.11245 L 483.83847,530.9562 L 481.49472,530.7687 L 479.93222,532.11245 L 479.93222,530.17495 L 483.05722,529.98745 L 484.02597,527.6437 L 484.80722,520.79995 L 484.21347,517.86245 L 484.15097,515.04995 L 480.74472,517.29995 L 476.68222,517.4562 L 476.33847,514.6437 L 476.86972,513.92495 L 475.61972,513.04995 L 475.27597,508.2687 L 474.74472,507.3937 L 472.61972,507.3937 L 471.55722,506.5187 L 471.55722,503.1437 L 470.15097,502.2687 L 469.08847,501.73745 L 466.96347,499.0812 L 467.11972,497.48745 L 464.49472,497.48745 L 463.58847,494.8312 L 459.86972,494.8312 L 457.93222,492.17495 L 458.46347,491.29995 L 457.24472,490.5812 L 454.40097,491.11245 L 453.33847,490.42495 L 449.46347,490.42495 L 449.08847,489.36245 L 446.90097,488.9562 L 445.33847,488.9562 z ", "name" : "Corse du Sud"}, "fr-2b" : {"path": "M 477.96347,449.8937 L 475.02597,451.86245 L 475.43222,453.79995 L 476.99472,455.7687 L 475.24472,457.11245 L 476.02597,458.67495 L 474.83847,460.04995 L 474.83847,461.79995 L 476.80722,463.5812 L 476.80722,466.29995 L 475.61972,468.8312 L 474.27597,469.42495 L 472.71347,467.2687 L 469.96347,467.48745 L 469.36972,467.0812 L 467.02597,467.0812 L 464.90097,469.04995 L 464.08847,472.36245 L 459.02597,473.3312 L 455.11972,476.6437 L 454.33847,478.79995 L 452.40097,478.61245 L 451.40097,477.42495 L 450.83847,480.7687 L 449.46347,481.3312 L 449.05722,484.4562 L 449.65097,485.8312 L 447.49472,487.3937 L 446.90097,488.9562 L 449.08847,489.36245 L 449.46347,490.42495 L 453.33847,490.42495 L 454.40097,491.11245 L 457.24472,490.5812 L 458.46347,491.29995 L 457.93222,492.17495 L 459.86972,494.8312 L 463.58847,494.8312 L 464.49472,497.48745 L 467.11972,497.48745 L 466.96347,499.0812 L 469.08847,501.73745 L 470.15097,502.2687 L 471.55722,503.1437 L 471.55722,506.5187 L 472.61972,507.3937 L 474.74472,507.3937 L 475.27597,508.2687 L 475.61972,513.04995 L 476.86972,513.92495 L 476.33847,514.6437 L 476.68222,517.4562 L 480.74472,517.29995 L 484.15097,515.04995 L 484.02597,509.2687 L 488.71347,502.6437 L 488.71347,491.7062 L 486.77597,487.98745 L 486.18222,476.2687 L 484.80722,474.11245 L 482.27597,472.17495 L 481.86972,464.92495 L 483.05722,461.61245 L 481.49472,456.3312 L 480.52597,452.04995 L 479.71347,450.86245 L 477.96347,449.8937 z ", "name" : "Haute-Corse"}, "fr-21" : {"path": "M 363.375,177.25 L 362.96875,179.78125 L 360.4375,181.15625 L 354,181.34375 L 354.28125,182.75 L 354.4375,184.15625 L 352.46875,185.5625 L 352.46875,187.9375 L 352.875,188.375 L 354.4375,188.375 L 355.40625,190.03125 L 354.84375,192.84375 L 352.59375,194.53125 L 352.59375,196.21875 L 353.3125,196.78125 L 353.15625,197.1875 L 351.75,197.75 L 351.34375,199.84375 L 349.09375,204.625 L 347.5625,206.875 L 347.5625,209.125 L 348.125,210.09375 L 347.28125,211.21875 L 345.3125,212.1875 L 345.4375,214.15625 L 347.28125,215.28125 L 347.96875,216.8125 L 347.6875,218.9375 L 347.28125,220.46875 L 348.25,222.15625 L 351.0625,222.71875 L 352.3125,224.6875 L 352.3125,225.53125 L 351.46875,225.8125 L 351.46875,227.84375 L 351.625,227.90625 L 355.40625,231.8125 L 359.34375,231.6875 L 362.84375,234.34375 L 365.375,236.1875 L 365.5,238.5625 L 368.15625,239.125 L 370.40625,240.9375 L 376.3125,238.84375 L 380.375,237.5625 L 382.1875,237.28125 L 382.75,236.46875 L 384.71875,236.59375 L 386.25,237.5625 L 388.5,237 L 390.75,235.46875 L 392.4375,235.65625 L 392.46875,235.46875 L 393.8125,234.6875 L 393.625,233.6875 L 393.25,232.53125 L 394.21875,230.96875 L 397.53125,229.40625 L 397.53125,227.84375 L 398.71875,226.28125 L 399.875,224.71875 L 399.5,223.34375 L 400.0625,221.1875 L 400.46875,218.0625 L 401.25,218.0625 L 401.0625,216.90625 L 400.28125,216.125 L 400.0625,212.21875 L 398.3125,212.03125 L 397.9375,208.90625 L 395.78125,207.90625 L 396.5625,206.9375 L 397.75,206.5625 L 400.28125,203.625 L 400.0625,202.0625 L 398.5,198.9375 L 396.1875,198.53125 L 395.375,200.5 L 391.09375,201.46875 L 390.6875,200.5 L 387.5625,196.59375 L 385.8125,197.5625 L 383.46875,197.375 L 382.6875,195.8125 L 379.5625,196 L 379.375,192.6875 L 377.625,191.5 L 380.15625,188.78125 L 375.65625,182.71875 L 372.15625,179 L 369.03125,177.25 L 363.375,177.25 z ", "name" : "Côte d'Or"}, "fr-22" : {"path": "M 69.78125,123.21875 L 68,124.59375 L 63.53125,125.15625 L 62.53125,126.53125 L 59.40625,124.1875 L 55.3125,126.9375 L 56.875,129.0625 L 54.15625,132.78125 L 54.03125,132.71875 L 52.90625,137.96875 L 55.3125,138.125 L 55.15625,140.21875 L 56.9375,141.34375 L 55.3125,142.96875 L 54.1875,143.78125 L 54.34375,145.6875 L 56.78125,146.5 L 54.5,147.15625 L 54.5,149.5625 L 55.96875,151.5 L 56.28125,157.15625 L 55.3125,158.125 L 56.125,161.03125 L 59.1875,161.84375 L 59.5,163.4375 L 61.4375,163.59375 L 63.0625,162.46875 L 64.03125,163.4375 L 67.75,165.0625 L 70.8125,163.4375 L 71.59375,161.84375 L 74.1875,161.65625 L 77.09375,164.25 L 79.84375,163.59375 L 82.25,166.03125 L 83.375,166.03125 L 84.5,167.46875 L 86.78125,167.46875 L 87.5625,166.34375 L 88.53125,168.4375 L 90.96875,169.40625 L 94.03125,167.46875 L 94.03125,165.375 L 96.28125,164.5625 L 97.71875,164.5625 L 99.5,167.8125 L 103.375,168.125 L 105.3125,165.6875 L 107.40625,161.1875 L 110.15625,160.21875 L 111.59375,158.125 L 113.0625,159.5625 L 116.125,158.9375 L 117.09375,150.0625 L 118.0625,146.5 L 117.09375,144.5625 L 115.46875,143.9375 L 114.375,138.03125 L 113.125,139.4375 L 109.40625,139.03125 L 109.03125,141.1875 L 106.6875,141.375 L 106.5,138.65625 L 104.53125,138.0625 L 103.15625,139.625 L 103.15625,135.71875 L 100.8125,137.46875 L 97.3125,136.875 L 96.125,139.21875 L 88.90625,143.125 L 88.90625,145.09375 L 87.34375,145.09375 L 87.34375,141.5625 L 83.25,139.625 L 83.625,136.09375 L 79.9375,133.375 L 79.9375,130.0625 L 77.1875,129.46875 L 77.375,126.34375 L 75.25,126.15625 L 75.4375,124 L 71.53125,124 L 70.9375,125.9375 L 69.78125,123.21875 z ", "name" : "Côtes d'Armor"}, "fr-23" : {"path": "M 256.125,267.875 L 254.96875,271 L 251.4375,270.8125 L 250.65625,270.40625 L 248.3125,270.625 L 246.5625,269.4375 L 243.1875,273.3125 L 243.25,276.1875 L 240.90625,280.84375 L 241.34375,283.1875 L 243.875,283.8125 L 245.59375,288.0625 L 247.28125,289.78125 L 246.65625,297.84375 L 250.25,296.78125 L 251.75,298.6875 L 249.40625,300.59375 L 249.40625,302.53125 L 251.3125,302.71875 L 254.71875,302.53125 L 255.78125,301.03125 L 256.625,301.03125 L 256.21875,303.59375 L 258.96875,304.84375 L 261.53125,306.5625 L 261.53125,307.625 L 260.03125,307.625 L 260.46875,310.15625 L 261.46875,310.78125 L 261.71875,310.375 L 264.90625,309.75 L 265.75,307.625 L 267.25,307.625 L 268.3125,309.09375 L 273.1875,309.09375 L 274.0625,310.375 L 275.96875,312.28125 L 278.3125,312.28125 L 279.5625,310.375 L 283.40625,310.375 L 285.375,308.84375 L 281.3125,304.78125 L 280.9375,303.03125 L 284.65625,300.875 L 286.8125,299.71875 L 287.375,296.96875 L 289.71875,295.21875 L 288.9375,291.5 L 287.375,289.5625 L 287,283.5 L 284.84375,278.4375 L 282.6875,277.65625 L 281.125,274.90625 L 279.75,276.65625 L 278.40625,274.90625 L 278.40625,272.5625 L 276.0625,269.25 L 269.625,270.03125 L 265.90625,269.0625 L 256.125,267.875 z ", "name" : "Creuse"}, "fr-24" : {"path": "M 209.84375,310.46875 L 208.09375,313.59375 L 205.34375,313.96875 L 205.15625,318.65625 L 195.96875,324.90625 L 195.78125,331.75 L 192.25,335.25 L 190.3125,337.03125 L 186.40625,336.625 L 184.25,340.34375 L 183.6875,341.5625 L 184.71875,342.78125 L 186.65625,342.78125 L 187.71875,344.375 L 186.65625,347.21875 L 186.125,350.375 L 184.34375,351.4375 L 184.34375,352.5 L 185.0625,353.5625 L 185.0625,355.5 L 183.65625,357.28125 L 185.40625,358.15625 L 185.9375,359.59375 L 191.96875,359.40625 L 194.4375,356.40625 L 196.90625,358 L 194.96875,359.40625 L 195.125,363.28125 L 197.96875,365.25 L 198.3125,368.9375 L 201.3125,370 L 203.09375,368.40625 L 206.96875,368.40625 L 209.09375,366.65625 L 210.34375,366.84375 L 210.6875,368.25 L 214.59375,368.25 L 215.46875,367.1875 L 216.875,367.375 L 218.46875,369.125 L 218.46875,370.375 L 217.0625,371.25 L 217.59375,372.5 L 219.53125,372.65625 L 222,370.375 L 224.125,370.375 L 225.53125,371.96875 L 228.59375,373.25 L 228.78125,372.75 L 230.5625,371 L 230.75,368.0625 L 235.03125,367.6875 L 237.78125,363.78125 L 236.59375,363.375 L 236.40625,361.25 L 239.71875,360.84375 L 239.9375,358.90625 L 241.5,357.90625 L 243.25,354.78125 L 241.5,352.84375 L 241.5,350.6875 L 242.84375,349.53125 L 241.09375,346.78125 L 241.28125,342.5 L 237,342.6875 L 235.25,341.5 L 236.8125,339.5625 L 234.65625,337.8125 L 236.21875,335.84375 L 234.65625,335.0625 L 234.65625,332.34375 L 238.5625,328.8125 L 236.40625,327.0625 L 235.25,324.125 L 231.125,323.53125 L 229.75,322.5625 L 232.6875,321.1875 L 231.71875,319.84375 L 227.4375,319.25 L 226.4375,315.34375 L 220.1875,314.75 L 218.8125,316.71875 L 217.46875,317.09375 L 215.6875,314.75 L 216.5,312.59375 L 215.5,310.65625 L 209.84375,310.46875 z ", "name" : "Dordogne"}, "fr-25" : {"path": "M 447.40625,199.71875 L 447.21875,199.9375 L 444.96875,199.9375 L 443.8125,201.53125 L 442.34375,202.375 L 442.34375,204.34375 L 438.6875,204.78125 L 436.71875,203.375 L 434.0625,203.78125 L 431.53125,205.75 L 429.71875,208.84375 L 427.90625,209.40625 L 427.0625,211.5 L 424.8125,211.90625 L 421.71875,214.4375 L 417.65625,214.3125 L 416.40625,215.28125 L 415.28125,215.28125 L 411.34375,218.5 L 409.5625,218.4375 L 409.53125,219.625 L 409.8125,221.71875 L 412.34375,223.40625 L 413.75,225.25 L 413.3125,227.1875 L 412.0625,230.15625 L 411.21875,232.09375 L 416.6875,233.9375 L 420.1875,233.65625 L 420.46875,236.59375 L 420.46875,240.53125 L 424.8125,241.9375 L 426.78125,242.46875 L 429.59375,245.15625 L 429.3125,247.40625 L 428.03125,249.21875 L 424.53125,250.34375 L 425.375,252.3125 L 425.78125,253.84375 L 424.25,255.375 L 424.40625,256.78125 L 426.78125,257 L 426.8125,256.8125 L 438.90625,245.46875 L 438.53125,236.09375 L 442.8125,233.96875 L 445.75,232.59375 L 448.46875,230.0625 L 448.6875,226.34375 L 451.40625,224.96875 L 457.65625,217.75 L 456.6875,215.40625 L 458.84375,214.4375 L 461.375,211.3125 L 460,209.9375 L 455.3125,210.90625 L 455.125,210.125 L 459.4375,205.15625 L 447.40625,199.71875 z ", "name" : "Doubs"}, "fr-26" : {"path": "M 384.9375,329.28125 L 382.1875,331.1875 L 379.84375,332.03125 L 377.5,331.3125 L 377.5,339.28125 L 379,345.21875 L 380.0625,348.625 L 381.75,352.875 L 380.6875,355.625 L 378.78125,359.25 L 378.34375,361.375 L 376.4375,361.78125 L 377.5,366.6875 L 377.5,370.90625 L 374.9375,373.90625 L 374.3125,377.71875 L 375.375,379.40625 L 374.75,380.90625 L 374.75,382.40625 L 375.59375,382.59375 L 376.21875,383.46875 L 376,387.59375 L 378.59375,387.21875 L 379.75,388.59375 L 379.1875,392.5 L 379.96875,393.46875 L 382.875,390.53125 L 385.4375,390.34375 L 386,388.78125 L 382.6875,388.375 L 382.125,384.875 L 384.25,381.5625 L 387,381.34375 L 389.71875,383.90625 L 387,387.59375 L 387.78125,388.96875 L 391.6875,389.375 L 394.21875,387.21875 L 392.84375,390.15625 L 393.25,392.5 L 397.34375,392.875 L 402.8125,393.28125 L 403.59375,395.8125 L 406.53125,397.96875 L 409.0625,398.15625 L 410.8125,396.59375 L 411.8125,393.65625 L 413.375,395.03125 L 414.53125,396.40625 L 415.3125,389.15625 L 413.375,388.78125 L 412.1875,386.25 L 405.5625,384.46875 L 404.75,381.15625 L 407.125,379.59375 L 405.15625,378.21875 L 405.5625,376.46875 L 408.6875,376.65625 L 411.40625,378.03125 L 413.5625,375.5 L 411.40625,373.75 L 411.59375,371.40625 L 412.78125,367.6875 L 416.875,367.28125 L 420.1875,365.9375 L 420.53125,365.15625 L 417,364.75 L 415.75,363.6875 L 413.8125,363.5 L 411.90625,362 L 409.375,360.5 L 406.59375,360.5 L 405.53125,359.4375 L 405.34375,343.53125 L 404.6875,343.53125 L 403.84375,345 L 401.9375,346.28125 L 397.46875,345 L 394.0625,343.9375 L 392.59375,344.375 L 392.15625,343.3125 L 393.21875,340.34375 L 392.78125,337.34375 L 393.65625,335.21875 L 391.53125,332.25 L 388.5625,332.25 L 384.9375,329.28125 z ", "name" : "Drôme"}, "fr-27" : {"path": "M 211,94.5625 L 209.3125,94.96875 L 207.0625,97.375 L 202.6875,97.9375 L 203.59375,105.1875 L 205.5625,105.78125 L 205.5625,106.5625 L 203.59375,107.71875 L 205.9375,111.03125 L 207.125,115.71875 L 206.90625,117.6875 L 205.15625,118.84375 L 205.34375,120.21875 L 207.3125,121 L 207.5,122.75 L 205.9375,127.25 L 207.5,129.21875 L 212.96875,129.40625 L 214.125,132.125 L 216.09375,134.09375 L 218.8125,135.0625 L 219.625,138 L 218.25,139.9375 L 221.09375,141.84375 L 223.90625,139.15625 L 226.625,139.15625 L 233.6875,135.46875 L 236,136.4375 L 240.90625,136.4375 L 242.0625,135.0625 L 242.0625,132.125 L 245.96875,130.1875 L 245.96875,127.0625 L 247.03125,126.1875 L 246.9375,125.3125 L 247.9375,124.3125 L 246.1875,123.9375 L 246.1875,122.375 L 245.1875,120.8125 L 245.96875,119.84375 L 251.4375,118.28125 L 252.8125,115.9375 L 254,111.625 L 255.4375,109.84375 L 255.75,107.53125 L 257.5,108.5 L 258.875,108.125 L 257.875,106.5625 L 257.3125,102.0625 L 255.5625,100.5 L 255.59375,100.375 L 252.5,100.03125 L 247.3125,97.375 L 242.8125,97.5 L 240.4375,99.59375 L 239.15625,103.25 L 234.125,103.8125 L 229.34375,105.21875 L 231.03125,106.34375 L 230.34375,108.03125 L 228.09375,108.03125 L 226.84375,105.34375 L 225.4375,105.34375 L 223.1875,103.65625 L 226.28125,102.6875 L 221.5,99.3125 L 216.75,99.59375 L 215.625,97.65625 L 212.9375,97.9375 L 211,94.5625 z ", "name" : "Eure"}, "fr-28" : {"path": "M 247.15625,126.09375 L 245.96875,127.0625 L 245.96875,130.1875 L 242.0625,132.125 L 242.0625,135.0625 L 240.90625,136.4375 L 236,136.4375 L 233.6875,135.46875 L 226.625,139.15625 L 223.90625,139.15625 L 221.09375,141.84375 L 221.75,142.28125 L 221.9375,145.625 L 226.0625,149.125 L 226.4375,156.34375 L 224.5,158.6875 L 221.5625,159.28125 L 218.625,161.03125 L 219.03125,162.59375 L 220.375,164.375 L 220.375,169 L 220.78125,169.0625 L 223.5,171 L 222.5,172.25 L 224.4375,173.21875 L 227.53125,172.65625 L 229.34375,172.65625 L 229.21875,173.5 L 227.53125,174.46875 L 228.65625,175.3125 L 231.46875,175.3125 L 232.4375,177.5625 L 234.125,178.53125 L 235.375,181.34375 L 239.71875,182.46875 L 242.40625,182.1875 L 244.78125,179.9375 L 246.90625,180.53125 L 247.4375,179.375 L 247.3125,178.125 L 248.4375,177.28125 L 250.25,178.40625 L 251.375,177.5625 L 251.375,176.03125 L 252.90625,175.03125 L 254.3125,175.59375 L 255.5625,177 L 257.8125,175.75 L 260.1875,175.75 L 261.875,173.90625 L 262.875,170.28125 L 264.40625,170 L 264,166.34375 L 265.8125,164.8125 L 265.25,163.6875 L 265.46875,163.3125 L 264.9375,163.375 L 264.53125,158.125 L 264.125,157.53125 L 263.75,155 L 259.65625,154.21875 L 257.875,152.0625 L 257.3125,147.75 L 254.96875,147.375 L 254.5625,145.21875 L 251.84375,143.28125 L 250.46875,139.9375 L 251.84375,137.59375 L 250.46875,136.03125 L 250.46875,134.09375 L 251.25,131.9375 L 249.6875,130.375 L 249.09375,128.03125 L 247.15625,126.09375 z ", "name" : "Eure et Loir"}, "fr-29" : {"path": "M 40.65625,129.0625 L 38.53125,131.40625 L 36.1875,130.4375 L 31.875,130.84375 L 31.09375,132.78125 L 28.5625,133.375 L 28.15625,131.21875 L 23.6875,131.8125 L 23.6875,133.1875 L 20.5625,133.375 L 19.1875,132.40625 L 17.625,133.1875 L 17.21875,135.53125 L 11.96875,135.71875 L 9.21875,139.03125 L 11.5625,140.78125 L 8.4375,143.34375 L 9.40625,145.09375 L 8.625,149.375 L 11.75,149.78125 L 12.9375,148.59375 L 13.53125,149.375 L 20.9375,148.40625 L 25.8125,144.90625 L 21.53125,149 L 21.90625,150.9375 L 25.8125,149.1875 L 25.03125,151.9375 L 29.34375,152.125 L 29.15625,153.28125 L 24.46875,153.09375 L 20.75,152.125 L 16.25,149.96875 L 13.53125,153.09375 L 17.03125,154.28125 L 16.84375,159.53125 L 17.8125,158.75 L 19.96875,155.4375 L 24.0625,157.78125 L 26.03125,158.1875 L 26.8125,161.3125 L 25.625,163.4375 L 23.09375,163.25 L 20.75,163.25 L 16.84375,163.84375 L 10.1875,164.21875 L 8.84375,166 L 10.78125,167.15625 L 12.9375,166.96875 L 14.6875,168.53125 L 17.21875,168.34375 L 21.34375,173.03125 L 22.3125,178.09375 L 20.9375,180.84375 L 25.03125,181.625 L 29.53125,181.40625 L 30.5,179.65625 L 28.75,177.3125 L 30.5,178.09375 L 32.28125,177.90625 L 35.40625,179.65625 L 37.34375,179.28125 L 37.34375,175.9375 L 38.125,179.28125 L 40.65625,183.375 L 46.125,183.75 L 46.34375,182.59375 L 47.6875,184.53125 L 51.03125,185.125 L 53.5625,185.125 L 53.71875,185.34375 L 54.65625,181.5 L 56.9375,181.5 L 58.0625,179.71875 L 59.5,179.71875 L 59.65625,176.84375 L 60.46875,175.875 L 58.875,173.75 L 57.90625,174.90625 L 55.46875,172.96875 L 50.46875,172.15625 L 49.65625,169.25 L 48.21875,165.53125 L 48.0625,164.09375 L 50.46875,162.15625 L 52.75,162.15625 L 56,160.59375 L 55.3125,158.125 L 56.28125,157.15625 L 55.96875,151.5 L 54.5,149.5625 L 54.5,147.15625 L 56.78125,146.5 L 54.34375,145.6875 L 54.1875,143.78125 L 55.3125,142.96875 L 56.9375,141.34375 L 55.15625,140.21875 L 55.3125,138.125 L 52.90625,137.96875 L 54.03125,132.71875 L 50.8125,130.84375 L 45.34375,131.03125 L 45.34375,134.9375 L 43.78125,134.9375 L 43.40625,133.1875 L 41.0625,133.5625 L 40.65625,129.0625 z ", "name" : "Finistère"}, "fr-30" : {"path": "M 346.1875,381.03125 L 345.21875,382.90625 L 344,383.96875 L 341.6875,384.34375 L 344.5,387.34375 L 344.5,391.40625 L 345.75,391.75 L 344.34375,393.34375 L 344.34375,396.34375 L 342.03125,399.875 L 336.90625,399.34375 L 333.90625,396.53125 L 331.78125,397.0625 L 332.5,398.8125 L 331.625,400.0625 L 326.46875,401.125 L 320.4375,397.09375 L 319.28125,398.125 L 319.28125,400.90625 L 317.0625,401.4375 L 317.625,403.65625 L 320.375,404.21875 L 323.40625,404.21875 L 324.25,408.0625 L 320.65625,409.71875 L 320.65625,411.46875 L 323.46875,412.4375 L 323.46875,414.03125 L 324.71875,414.75 L 325.78125,413.84375 L 327.1875,413.84375 L 327.90625,415.4375 L 330.03125,415.4375 L 331.09375,411.71875 L 332.84375,411.71875 L 335.5,408.375 L 338.6875,408.71875 L 339.21875,413.3125 L 340.4375,414.75 L 342.40625,413.6875 L 345.75,415.4375 L 347,417.5625 L 352.8125,421.09375 L 354.9375,426.0625 L 354.9375,428.6875 L 351.21875,430.8125 L 348.8125,432.96875 L 351.8125,433.1875 L 351.8125,437.09375 L 356.28125,436.875 L 358.6875,437 L 360.4375,432.9375 L 366.78125,429.0625 L 365.40625,427.125 L 367.0625,422.71875 L 372.84375,423.53125 L 374.25,413.03125 L 381.96875,408.625 L 381.96875,406.125 L 376.15625,400.34375 L 376.15625,395.90625 L 372.84375,390.40625 L 365.9375,386.53125 L 365.40625,389.5625 L 362.625,389.84375 L 361.8125,386.8125 L 359.03125,387.34375 L 358.5,391.21875 L 356.28125,390.40625 L 351.59375,387.34375 L 349.375,388.46875 L 349.375,382.9375 L 346.1875,381.03125 z ", "name" : "Gard"}, "fr-31" : {"path": "M 245,412.4375 L 242.15625,413.5 L 241.28125,414.90625 L 240.21875,413.6875 L 238.28125,413.5 L 237.90625,415.28125 L 236.6875,415.78125 L 238.4375,416.6875 L 237.21875,418.625 L 232.78125,419.875 L 230.84375,417.5625 L 229.09375,417.5625 L 227.65625,418.4375 L 222.53125,418.4375 L 222,418.65625 L 222.53125,420.5625 L 225.53125,423.5625 L 225.375,425.15625 L 227.65625,427.46875 L 229.09375,427.46875 L 229.78125,429.21875 L 231.5625,429.40625 L 232.09375,431 L 230.3125,431.71875 L 226.59375,433.3125 L 224.84375,437.375 L 223.4375,441.59375 L 222.53125,442.84375 L 219.71875,440.90625 L 213.15625,440.375 L 209.625,444.96875 L 207.6875,446.03125 L 206.4375,447.78125 L 205.03125,449.90625 L 205.03125,451.15625 L 202.75,452.03125 L 200.96875,455.03125 L 200.78125,456.625 L 203.96875,458.9375 L 204.5,461.21875 L 203.4375,463 L 205.5625,462.28125 L 206.625,463.1875 L 207.5,466.875 L 205.03125,468.3125 L 205.21875,470.25 L 203.96875,471.46875 L 202.21875,470.59375 L 200.25,470.59375 L 200.5,481.09375 L 208.4375,481.625 L 208.84375,472.03125 L 211.5625,472.4375 L 215.59375,474.78125 L 217.25,473.25 L 216.53125,472.1875 L 216.53125,468.65625 L 218.28125,466.53125 L 222.90625,465.28125 L 223.59375,462.65625 L 222.53125,461.9375 L 222.375,458.5625 L 226.4375,456.09375 L 228.71875,455.9375 L 231.03125,456.625 L 232.96875,458.40625 L 234.21875,458.5625 L 235.28125,456.8125 L 234.375,455.5625 L 232.78125,455.03125 L 232.625,454.5 L 233.84375,452.75 L 238.09375,452.375 L 238.625,451.34375 L 237.90625,450.09375 L 235.4375,448.3125 L 235.96875,447.25 L 237.21875,446.375 L 238.4375,446.71875 L 240.40625,449.375 L 240.5625,451.15625 L 243.9375,451.5 L 244.625,449.90625 L 243.03125,447.96875 L 244.09375,448.3125 L 248,450.09375 L 250.125,449.75 L 251.6875,449.09375 L 251.3125,448.6875 L 253.8125,447.5625 L 254.34375,444.53125 L 257.40625,443.15625 L 256.5625,441.21875 L 259.34375,438.71875 L 260.71875,441.21875 L 264.84375,439.84375 L 265.625,439.71875 L 265.6875,438.4375 L 265.6875,435.9375 L 263.5625,436.3125 L 260.90625,435.59375 L 258.59375,432.78125 L 257.71875,431.53125 L 253.125,429.59375 L 252.0625,428 L 253.46875,427.46875 L 253.46875,425.53125 L 252.0625,423.9375 L 250.28125,421.09375 L 250.125,418.625 L 249.59375,418.28125 L 247.46875,415.78125 L 246.59375,413.15625 L 245,412.4375 z ", "name" : "Haute Garonne"}, "fr-32" : {"path": "M 207.875,401.875 L 202.03125,402.4375 L 200.46875,405.1875 L 196.9375,405.5625 L 193.625,406.15625 L 192.25,404.21875 L 189.125,407.34375 L 186.8125,405.375 L 185.4375,408.3125 L 185.625,410.84375 L 183.46875,411.4375 L 182.5,410.0625 L 181.53125,407.125 L 178.78125,409.46875 L 176.84375,408.6875 L 174.6875,409.09375 L 172.75,411.4375 L 175.0625,415.34375 L 173.5,416.90625 L 174.09375,420.21875 L 172.15625,422.75 L 170.78125,426.46875 L 172.34375,429.21875 L 177.28125,429.5625 L 179.21875,428.53125 L 182.21875,428.53125 L 182.0625,431.875 L 184.34375,433.125 L 186.65625,433.46875 L 187.71875,436.3125 L 188.25,436.84375 L 187.90625,438.59375 L 187.1875,439.3125 L 189.3125,440.71875 L 189.46875,442.3125 L 192.125,442.3125 L 192.84375,441.59375 L 195.125,441.59375 L 195.84375,443.1875 L 198.3125,443.1875 L 199.03125,444.625 L 203.8125,444.625 L 207.375,446.46875 L 207.6875,446.03125 L 209.625,444.96875 L 213.15625,440.375 L 219.71875,440.90625 L 222.53125,442.84375 L 223.4375,441.59375 L 224.84375,437.375 L 226.59375,433.3125 L 230.3125,431.71875 L 232.09375,431 L 231.5625,429.40625 L 229.78125,429.21875 L 229.09375,427.46875 L 227.65625,427.46875 L 225.375,425.15625 L 225.53125,423.5625 L 222.53125,420.5625 L 222,418.65625 L 220.0625,419.5 L 219.53125,418.4375 L 220.78125,416.5 L 219.34375,415.09375 L 219.34375,412.625 L 218.125,411.375 L 214.21875,411.1875 L 214.21875,408.90625 L 216.34375,407.3125 L 216.34375,405.53125 L 218.65625,404.46875 L 217.40625,403.78125 L 216,404.46875 L 213.15625,404.46875 L 212.28125,403.65625 L 211.8125,403.8125 L 210.8125,404.78125 L 207.875,401.875 z ", "name" : "Gers"}, "fr-33" : {"path": "M 141.25,315.21875 L 138.125,319.90625 L 137.15625,336.3125 L 134.625,352.90625 L 132.84375,365.78125 L 132.65625,369.125 L 134.03125,364.625 L 136.75,361.09375 L 140.65625,364.625 L 141.0625,365.78125 L 142.21875,367.34375 L 137.34375,367.5625 L 136.5625,366.375 L 134.625,367.15625 L 134.21875,370.09375 L 132.0625,373.03125 L 132.0625,377.5 L 132.03125,377.6875 L 133.625,377.625 L 139.8125,374.4375 L 143.15625,375.65625 L 143,377.96875 L 141.5625,379.71875 L 143.15625,380.78125 L 146.53125,379.375 L 148.8125,380.96875 L 150.25,380.78125 L 152.34375,379.03125 L 155.90625,378.5 L 157.125,379.5625 L 158.1875,380.4375 L 158.1875,381.5 L 157.3125,382.5625 L 160.5,383.4375 L 162.4375,384.6875 L 162.625,386.28125 L 164.375,386.4375 L 166.84375,389.09375 L 167.5625,393.53125 L 171.09375,394.75 L 174.46875,394.59375 L 174.46875,393.53125 L 174.09375,390 L 175.15625,390.34375 L 177.15625,392.78125 L 180.28125,392.28125 L 181.71875,390.875 L 181.53125,388.9375 L 180.28125,387.875 L 180.65625,385.90625 L 182.59375,385.90625 L 184.53125,384.6875 L 183.65625,382.90625 L 183.125,380.25 L 184.53125,377.78125 L 187.53125,373.1875 L 189.3125,371.0625 L 190.90625,370.53125 L 191.25,368.78125 L 189.125,368.59375 L 188.25,366.65625 L 188.9375,364.71875 L 191.4375,364.1875 L 193.1875,363.65625 L 195.25,363.375 L 195.125,363.28125 L 194.96875,359.40625 L 196.90625,358 L 194.4375,356.40625 L 191.96875,359.40625 L 185.9375,359.59375 L 185.40625,358.15625 L 183.65625,357.28125 L 185.0625,355.5 L 185.0625,353.5625 L 184.34375,352.5 L 184.34375,351.4375 L 186.125,350.375 L 186.65625,347.21875 L 187.71875,344.375 L 186.65625,342.78125 L 184.71875,342.78125 L 183.6875,341.5625 L 182.6875,343.65625 L 180.75,342.28125 L 178,343.65625 L 175.65625,343.28125 L 171.1875,338.78125 L 168.4375,338.59375 L 167.65625,332.34375 L 162.5625,331.75 L 162.375,328.8125 L 161.40625,329.78125 L 155.625,329.78125 L 155.90625,331.03125 L 157.28125,336.6875 L 157.65625,342.34375 L 156.6875,343.90625 L 155.71875,339.21875 L 152.96875,328.5 L 143,319.5 L 143.21875,315.40625 L 141.25,315.21875 z ", "name" : "Gironde"}, "fr-34" : {"path": "M 335.5,408.375 L 332.84375,411.71875 L 331.09375,411.71875 L 330.03125,415.4375 L 327.90625,415.4375 L 327.1875,413.84375 L 325.78125,413.84375 L 324.71875,414.75 L 323.46875,414.03125 L 323.46875,412.4375 L 320.65625,411.46875 L 320.65625,412.5 L 317.34375,413.03125 L 315.6875,414.4375 L 316.21875,417.75 L 313.1875,417.75 L 310.15625,416.09375 L 308.5,416.09375 L 308.5,418.03125 L 308.78125,423.8125 L 305.46875,423.8125 L 303.8125,423.8125 L 302.6875,426.03125 L 295.5,428.5 L 292.75,426.59375 L 291.09375,429.0625 L 290.28125,431.8125 L 293.3125,434.59375 L 292.1875,438.1875 L 288,439.5 L 288.84375,441.78125 L 287.0625,443.90625 L 288.125,446.375 L 290.25,447.96875 L 292.71875,446.375 L 294.5,450.09375 L 298.1875,448.84375 L 298.375,445.3125 L 300.84375,445.3125 L 300.3125,443.1875 L 301.375,442.65625 L 301.75,445.65625 L 303.84375,446.90625 L 305.625,446.71875 L 307.9375,450.09375 L 310.40625,450.28125 L 311.28125,453.09375 L 313.78125,453.1875 L 313.90625,452.125 L 320.9375,449.96875 L 321.71875,448.21875 L 327.1875,448.03125 L 328.9375,445.875 L 339.5,437.46875 L 346.125,432.78125 L 348.8125,432.96875 L 351.21875,430.8125 L 354.9375,428.6875 L 354.9375,426.0625 L 352.8125,421.09375 L 347,417.5625 L 345.75,415.4375 L 342.40625,413.6875 L 340.4375,414.75 L 339.21875,413.3125 L 338.6875,408.71875 L 335.5,408.375 z ", "name" : "Hérault"}, "fr-35" : {"path": "M 116.25,135.90625 L 114.375,138.03125 L 115.46875,143.9375 L 117.09375,144.5625 L 118.0625,146.5 L 117.09375,150.0625 L 116.125,158.9375 L 113.0625,159.5625 L 111.59375,158.125 L 110.15625,160.21875 L 107.40625,161.1875 L 105.3125,165.6875 L 104.03125,167.3125 L 104.5,169.40625 L 103.6875,172.625 L 102.25,173.9375 L 102.25,175.21875 L 103.21875,175.53125 L 105.96875,175.53125 L 108.375,177 L 110,179.90625 L 108.53125,181.84375 L 109.03125,183.75 L 111.125,183.75 L 111.28125,185.6875 L 109.65625,187.625 L 107.90625,188.4375 L 109.03125,189.09375 L 109.34375,190.0625 L 107.5625,191.5 L 109.625,195.375 L 113.5625,193.28125 L 125.65625,192.6875 L 126.4375,190.53125 L 128.40625,188.59375 L 132.6875,188 L 132.875,185.84375 L 135.8125,186.25 L 137.5625,188.59375 L 141.5,189.5625 L 142.25,188 L 143.25,184.46875 L 145.78125,178.21875 L 147.15625,177.4375 L 150.46875,177.84375 L 150.46875,172.5625 L 149.09375,171.1875 L 149.09375,165.53125 L 148.5,163.59375 L 148.5,160.46875 L 150.46875,158.5 L 150.46875,154.59375 L 149.5,153.8125 L 149.6875,148.34375 L 148.125,147.5625 L 145.78125,147.5625 L 143.8125,146 L 141.6875,148.53125 L 139.9375,148.75 L 138.375,150.875 L 136.8125,150.5 L 133.46875,147.5625 L 132.3125,143.84375 L 131.71875,141.375 L 122.125,141.375 L 118.59375,139.21875 L 120.9375,136.09375 L 116.25,135.90625 z ", "name" : "Ille et Vilaine"}, "fr-36" : {"path": "M 254.71875,221.4375 L 253.46875,221.875 L 250.9375,221.71875 L 248,222.71875 L 247.3125,224.25 L 247.03125,223.6875 L 243.65625,223.84375 L 241.96875,225.25 L 240,225.53125 L 239.71875,226.5 L 241.28125,228.59375 L 240.84375,230.4375 L 239.03125,230.5625 L 239.03125,232.09375 L 237.625,233.375 L 236.09375,235.90625 L 234.6875,234.625 L 232.59375,234.21875 L 229.5,235.34375 L 228.78125,238.84375 L 227.8125,241.65625 L 226.28125,249.625 L 224.15625,251.59375 L 222.4375,251.75 L 222.9375,252.25 L 222.9375,255.96875 L 222.15625,258.3125 L 225.875,261.25 L 227.8125,263.1875 L 230.9375,263.59375 L 232.125,267.6875 L 234.25,268.84375 L 233.875,271.78125 L 232.3125,272.0625 L 232.875,272.1875 L 237.78125,272.5625 L 239.53125,270.8125 L 242.65625,273.9375 L 246.5625,269.4375 L 248.3125,270.625 L 250.65625,270.40625 L 251.4375,270.8125 L 254.96875,271 L 256.125,267.875 L 265.90625,269.0625 L 269.625,270.03125 L 271.3125,269.84375 L 271.40625,268.28125 L 273.375,266.3125 L 272.96875,264.625 L 271.84375,262.40625 L 272.25,261.5625 L 272.40625,259.03125 L 273.09375,258.1875 L 273.25,257.625 L 271.5625,256.09375 L 271,254.125 L 268.34375,252.71875 L 268.34375,251.03125 L 270.28125,249.90625 L 270.28125,248.78125 L 268.46875,247.25 L 267.90625,246.28125 L 269.3125,245.5625 L 269.1875,244.3125 L 271.40625,242.46875 L 271.28125,241.65625 L 269.46875,241.65625 L 268.34375,240.375 L 268.34375,239.6875 L 269.3125,238 L 269.3125,236.75 L 267.0625,233.78125 L 267.5,231.125 L 266.21875,230.15625 L 263.5625,230.28125 L 261.46875,231.125 L 258.65625,230.71875 L 257.25,229.59375 L 256.96875,228.75 L 259.21875,226.90625 L 259.375,224.6875 L 256.40625,223 L 254.71875,221.4375 z ", "name" : "Indre"}, "fr-37" : {"path": "M 212.1875,196.875 L 212.5625,197.75 L 206.90625,199.3125 L 205.5625,201.28125 L 203.1875,199.71875 L 204.375,203.625 L 202.21875,203.625 L 198.3125,200.875 L 196.375,204.78125 L 197.34375,205.96875 L 197.34375,207.125 L 195.375,209.6875 L 195.59375,213.96875 L 192.46875,217.6875 L 190.25,225.6875 L 190.5,225.6875 L 191.28125,228.8125 L 195,229.59375 L 195,231.9375 L 199.6875,233.3125 L 199.6875,237.03125 L 199.5,239.375 L 205.34375,239.375 L 210.4375,238.1875 L 210.03125,236.03125 L 211.59375,235.0625 L 213.15625,237.21875 L 214.53125,237.8125 L 215.6875,242.5 L 219.03125,246 L 219.40625,248.75 L 222.4375,251.75 L 224.15625,251.59375 L 226.28125,249.625 L 227.8125,241.65625 L 228.78125,238.84375 L 229.5,235.34375 L 232.59375,234.21875 L 234.6875,234.625 L 236.09375,235.90625 L 237.625,233.375 L 239.03125,232.09375 L 239.03125,230.5625 L 240.84375,230.4375 L 241.28125,228.59375 L 239.71875,226.5 L 239.96875,225.625 L 238.875,224.6875 L 235.9375,220.34375 L 232.15625,220.34375 L 231.03125,218.65625 L 231.03125,211.625 L 229.5,207.5625 L 229.21875,202.53125 L 227.25,202.375 L 225,200.6875 L 224.4375,200.6875 L 222.46875,202.09375 L 221.21875,201.25 L 220.9375,199.3125 L 222.34375,198.59375 L 222.46875,197.90625 L 221.65625,197.1875 L 212.1875,196.875 z ", "name" : "Indre et Loire"}, "fr-38" : {"path": "M 397.90625,298.6875 L 396.625,300.1875 L 395.34375,304 L 392.78125,305.28125 L 390.03125,302.71875 L 388.125,302.71875 L 387.90625,305.5 L 390.6875,307.84375 L 386.4375,313.34375 L 380.90625,314.625 L 376.65625,316.125 L 379.40625,318.875 L 380.0625,320.15625 L 375.8125,322.28125 L 375.375,328.4375 L 375.25,328.5 L 376.4375,330.96875 L 379.84375,332.03125 L 382.1875,331.1875 L 384.9375,329.28125 L 388.5625,332.25 L 391.53125,332.25 L 393.65625,335.21875 L 392.78125,337.34375 L 393.21875,340.34375 L 392.15625,343.3125 L 392.59375,344.375 L 394.0625,343.9375 L 397.46875,345 L 401.9375,346.28125 L 403.84375,345 L 404.6875,343.53125 L 405.34375,343.53125 L 405.53125,359.4375 L 406.59375,360.5 L 409.375,360.5 L 411.90625,362 L 413.8125,363.5 L 415.75,363.6875 L 417,364.75 L 420.53125,365.15625 L 420.78125,364.5625 L 419.21875,363.78125 L 419.21875,361.4375 L 424.09375,361.4375 L 425.65625,359.875 L 424.6875,358.125 L 427.21875,356.15625 L 429,356.9375 L 431.53125,354.78125 L 436,355.5625 L 437.5625,353.8125 L 441.28125,354 L 441.28125,349.71875 L 439.71875,348.9375 L 438.9375,346.40625 L 434.84375,346 L 434.25,345.03125 L 435.03125,340.9375 L 436.40625,339.75 L 435.28125,338.21875 L 433.15625,336.9375 L 431.875,338.21875 L 432.3125,336.5 L 432.3125,334.8125 L 430.59375,333.09375 L 431.46875,329.0625 L 433.375,328 L 433.15625,325.25 L 429.125,321.21875 L 427.625,321.21875 L 426.5625,322.6875 L 424.03125,319.3125 L 422.53125,319.5 L 421.25,322.28125 L 422.125,323.96875 L 421.46875,324.625 L 419.78125,323.34375 L 414.875,322.28125 L 412.5625,318.03125 L 412.5625,316.3125 L 410.21875,313.78125 L 409.96875,312.6875 L 402.15625,303.15625 L 401.28125,300.40625 L 399.59375,298.90625 L 397.90625,298.6875 z ", "name" : "Isère"}, "fr-39" : {"path": "M 401.15625,217.53125 L 401.25,218.0625 L 400.46875,218.0625 L 400.0625,221.1875 L 399.5,223.34375 L 399.875,224.71875 L 398.71875,226.28125 L 397.53125,227.84375 L 397.53125,229.40625 L 394.21875,230.96875 L 393.25,232.53125 L 393.625,233.6875 L 393.8125,234.6875 L 392.46875,235.46875 L 392.25,238 L 393.8125,238.1875 L 395.59375,241.125 L 397.75,241.125 L 398.90625,242.5 L 400.28125,242.5 L 399.875,244.0625 L 395.375,244.625 L 395.78125,246.1875 L 397.34375,247.1875 L 397.34375,249.125 L 396.75,249.71875 L 397.9375,251.28125 L 399.6875,254.40625 L 398.90625,257.71875 L 396.9375,259.09375 L 397.15625,261.8125 L 399.5,262.59375 L 400.28125,263.78125 L 398.3125,265.34375 L 393.1875,265.96875 L 395.59375,266.90625 L 399.5,272.375 L 402.03125,273.53125 L 402.03125,276.28125 L 404.96875,275.875 L 408.6875,271.78125 L 411.8125,273.34375 L 411.8125,275.6875 L 417.46875,275.6875 L 425.59375,266.75 L 425.25,266.5625 L 425.625,262.46875 L 428.5625,258.96875 L 426.59375,258.1875 L 426.78125,257 L 424.40625,256.78125 L 424.25,255.375 L 425.78125,253.84375 L 425.375,252.3125 L 424.53125,250.34375 L 428.03125,249.21875 L 429.3125,247.40625 L 429.59375,245.15625 L 426.78125,242.46875 L 424.8125,241.9375 L 420.46875,240.53125 L 420.46875,236.59375 L 420.1875,233.65625 L 416.6875,233.9375 L 411.21875,232.09375 L 412.0625,230.15625 L 413.3125,227.1875 L 413.75,225.25 L 412.34375,223.40625 L 409.8125,221.71875 L 409.53125,219.625 L 409.5625,218.4375 L 407.84375,218.375 L 406.875,219.34375 L 404.34375,219.34375 L 402.65625,217.9375 L 401.15625,217.53125 z ", "name" : "Jura"}, "fr-40" : {"path": "M 139.8125,374.4375 L 133.625,377.625 L 132.03125,377.6875 L 128.5625,396.25 L 124.0625,413.4375 L 122.6875,420.09375 L 121.53125,424.78125 L 118.625,429.78125 L 124.25,432.59375 L 129.375,432.25 L 132.375,429.59375 L 134.84375,431.53125 L 133.4375,432.9375 L 134.5,433.3125 L 135.375,432.0625 L 139.8125,432.40625 L 142.28125,430.46875 L 146.875,430.65625 L 148.65625,429.75 L 151.46875,429.75 L 152.1875,430.65625 L 154.46875,429.9375 L 156.59375,431.53125 L 159.4375,430.65625 L 163.15625,429.40625 L 163.6875,430.28125 L 169.34375,430.46875 L 172.15625,428.875 L 170.78125,426.46875 L 172.15625,422.75 L 174.09375,420.21875 L 173.5,416.90625 L 175.0625,415.34375 L 172.75,411.4375 L 174.6875,409.09375 L 176.84375,408.6875 L 178.78125,409.46875 L 181.53125,407.125 L 182.5,410.0625 L 183.46875,411.4375 L 185.625,410.84375 L 185.4375,408.3125 L 186.0625,406.9375 L 185.59375,405.71875 L 186.125,401.84375 L 188.25,399.71875 L 187.1875,398.46875 L 184.875,398.28125 L 182.21875,397.25 L 178.34375,397.59375 L 177.625,393.34375 L 175.15625,390.34375 L 174.09375,390 L 174.46875,393.53125 L 174.46875,394.59375 L 171.09375,394.75 L 167.5625,393.53125 L 166.84375,389.09375 L 164.375,386.4375 L 162.625,386.28125 L 162.4375,384.6875 L 160.5,383.4375 L 157.3125,382.5625 L 158.1875,381.5 L 158.1875,380.4375 L 157.125,379.5625 L 155.90625,378.5 L 152.34375,379.03125 L 150.25,380.78125 L 148.8125,380.96875 L 146.53125,379.375 L 143.15625,380.78125 L 141.5625,379.71875 L 143,377.96875 L 143.15625,375.65625 L 139.8125,374.4375 z ", "name" : "Landes"}, "fr-41" : {"path": "M 222.5,172.25 L 221.1875,173.9375 L 219.625,176.65625 L 221.5625,178.4375 L 221.375,182.53125 L 220.59375,185.25 L 218.625,185.25 L 218.625,188.96875 L 215.90625,192.5 L 212.96875,193.65625 L 211.59375,195.40625 L 212.1875,196.875 L 221.65625,197.1875 L 222.46875,197.90625 L 222.34375,198.59375 L 220.9375,199.3125 L 221.21875,201.25 L 222.46875,202.09375 L 224.4375,200.6875 L 225,200.6875 L 227.25,202.375 L 229.21875,202.53125 L 229.5,207.5625 L 231.03125,211.625 L 231.03125,218.65625 L 232.15625,220.34375 L 235.9375,220.34375 L 238.875,224.6875 L 239.96875,225.625 L 240,225.53125 L 241.96875,225.25 L 243.65625,223.84375 L 247.03125,223.6875 L 247.3125,224.25 L 248,222.71875 L 250.9375,221.71875 L 253.46875,221.875 L 254.71875,221.4375 L 256.40625,223 L 259.375,224.6875 L 261.875,224.53125 L 261.75,222 L 262.875,220.75 L 264,220.625 L 264.96875,221.71875 L 268.90625,221.3125 L 271.40625,219.90625 L 271.125,218.9375 L 270.4375,218.09375 L 270.5625,216.25 L 272.40625,212.90625 L 274.78125,211.90625 L 274.78125,209.8125 L 275.34375,208.5625 L 273.8125,208 L 272.8125,205.875 L 270.28125,205.1875 L 270.15625,204.34375 L 272.6875,202.25 L 275.53125,200.84375 L 273.9375,198.46875 L 266.78125,198.1875 L 265.8125,199.3125 L 263.84375,199.3125 L 263.15625,198.59375 L 260.0625,198.1875 L 259.21875,200 L 257.25,200.5625 L 255.4375,198.46875 L 255,196.0625 L 253.34375,194.65625 L 250.8125,194.375 L 248.96875,193.125 L 248.96875,191.875 L 247.875,189.1875 L 250.09375,186.96875 L 249.8125,185.84375 L 248.84375,184.71875 L 247.71875,184.71875 L 247.71875,183.71875 L 248.84375,181.78125 L 248.96875,180.65625 L 247.3125,180.65625 L 244.78125,179.9375 L 242.40625,182.1875 L 239.71875,182.46875 L 235.375,181.34375 L 234.125,178.53125 L 232.4375,177.5625 L 231.46875,175.3125 L 228.65625,175.3125 L 227.53125,174.46875 L 229.21875,173.5 L 229.34375,172.65625 L 227.53125,172.65625 L 224.4375,173.21875 L 222.5,172.25 z ", "name" : "Loir et Cher"}, "fr-42" : {"path": "M 339.53125,278.03125 L 336,278.625 L 335.4375,280.78125 L 336.8125,283.5 L 337.1875,294.625 L 332.5,294.84375 L 332.3125,296.59375 L 335.4375,299.125 L 333.6875,300.875 L 333.09375,305.1875 L 335.4375,308.3125 L 337.5625,313.375 L 342.65625,316.71875 L 344.40625,323.15625 L 340.6875,326.65625 L 341.28125,329 L 346.75,330.78125 L 351.0625,327.25 L 353.1875,327.0625 L 359.4375,329.78125 L 359.0625,333.5 L 362.1875,333.3125 L 364.65625,336.15625 L 366.46875,335.65625 L 369.84375,335.03125 L 370.71875,331.1875 L 375.375,328.4375 L 375.8125,322.28125 L 375.96875,322.1875 L 373.6875,321.84375 L 371.5625,322.6875 L 369.84375,321.625 L 371.96875,319.09375 L 371.34375,317.1875 L 364.75,316.125 L 359.21875,311.03125 L 359.21875,309.3125 L 360.5,308.25 L 360.5,306.78125 L 359.03125,305.90625 L 360.28125,304 L 360.28125,301.25 L 357.75,298.90625 L 357.75,296.5625 L 356.03125,294.875 L 356.03125,292.96875 L 355.1875,289.78125 L 356.46875,288.5 L 356.6875,284.6875 L 360.71875,284.6875 L 361.78125,283.40625 L 360.5,281.28125 L 360.5,279.375 L 359.4375,278.53125 L 358.6875,282.53125 L 356.53125,282.53125 L 354.96875,284.09375 L 353.78125,282.90625 L 347.53125,281.9375 L 345.1875,283.3125 L 343.625,283.3125 L 343.25,281.9375 L 340.3125,281.34375 L 340.125,278.21875 L 339.53125,278.03125 z ", "name" : "Loire"}, "fr-43" : {"path": "M 317.8125,326.34375 L 316.40625,327.0625 L 316.40625,328.28125 L 314.28125,328.46875 L 312.34375,330.0625 L 308.8125,330.59375 L 308,331.75 L 308.625,331.8125 L 309.5,334.3125 L 313.9375,334.3125 L 314.8125,337.46875 L 316.0625,338.71875 L 316.40625,342.4375 L 317.46875,343.84375 L 319.59375,344.03125 L 318.34375,345.09375 L 317.28125,345.4375 L 318.1875,346.3125 L 317.125,347.90625 L 319.25,349.15625 L 320.3125,350.75 L 320.3125,352.40625 L 320.78125,352.25 L 324.3125,361.25 L 329.375,359.6875 L 329.75,357.34375 L 331.71875,357.34375 L 332.5,360.0625 L 336.125,359.1875 L 340.625,364.9375 L 343.4375,360.46875 L 348.5,356.75 L 353.1875,356.75 L 354.75,351.875 L 357.875,351.65625 L 358.09375,347.96875 L 361,347.96875 L 360.4375,346.59375 L 359.65625,344.0625 L 360.8125,342.09375 L 363.5625,340.9375 L 364.71875,336.25 L 362.1875,333.3125 L 359.0625,333.5 L 359.4375,329.78125 L 353.1875,327.0625 L 351.0625,327.25 L 346.75,330.78125 L 342.8125,329.5 L 342.03125,330.25 L 339.5625,329.53125 L 337.8125,327.75 L 336.75,329.875 L 333.71875,329.71875 L 332.3125,328.46875 L 331.25,330.9375 L 329.3125,330.0625 L 328.0625,327.75 L 326.46875,327.75 L 325.0625,326.53125 L 322.9375,327.40625 L 320.46875,327.59375 L 319.0625,326.6875 L 318.1875,327.21875 L 317.8125,326.34375 z ", "name" : "Haute Loire"}, "fr-44" : {"path": "M 132.875,185.84375 L 132.6875,188 L 128.40625,188.59375 L 126.4375,190.53125 L 125.65625,192.6875 L 113.5625,193.28125 L 108.46875,196 L 108.28125,201.46875 L 102.8125,203.625 L 99.09375,205.5625 L 95.96875,205.5625 L 94.8125,204.21875 L 93.0625,205.96875 L 92.21875,206.125 L 93.21875,206.8125 L 89.5,210.125 L 90.28125,210.90625 L 91.0625,212.46875 L 89.09375,215.21875 L 91.25,216.375 L 94.96875,217.15625 L 95.34375,215.59375 L 97.5,218.34375 L 101.03125,218.34375 L 103.5625,215.59375 L 106.875,215.59375 L 103.375,217.34375 L 103.5625,219.3125 L 104.34375,221.0625 L 102.1875,223.21875 L 99.84375,223.21875 L 100.25,226.15625 L 104.53125,225.375 L 109.625,230.0625 L 109.375,230.375 L 113.0625,232.78125 L 113.875,234.71875 L 117.25,236.1875 L 119.84375,236.5 L 120.96875,239.5625 L 125,240.53125 L 127.71875,241.03125 L 129.1875,239.40625 L 127.71875,237.3125 L 127.09375,232.78125 L 128.375,231.34375 L 130.15625,231.34375 L 130.96875,233.125 L 130.46875,236.34375 L 131.59375,237.15625 L 134.5,236.1875 L 135.46875,232.96875 L 134.1875,231.65625 L 137.40625,231.65625 L 138.53125,229.5625 L 139.65625,229.71875 L 142.25,232.15625 L 144.125,232.40625 L 144.1875,230.375 L 142.5625,228.28125 L 141.125,228.28125 L 140.625,228.4375 L 139.65625,227.96875 L 140.46875,227.15625 L 140.46875,225.6875 L 142.09375,225.21875 L 143.0625,222.96875 L 142.25,222.15625 L 142.09375,219.40625 L 140,219.40625 L 137.90625,216.8125 L 137.90625,214.90625 L 140.15625,213.75 L 144.1875,212.96875 L 150.46875,213.125 L 152.40625,211.8125 L 151.75,207.78125 L 148.84375,205.0625 L 145.3125,205.53125 L 144.34375,204.71875 L 144.1875,201.84375 L 146.75,199.5625 L 144.8125,197.15625 L 143.53125,193.75 L 141.4375,192.46875 L 141.4375,190.21875 L 141.21875,189.5 L 137.5625,188.59375 L 135.8125,186.25 L 132.875,185.84375 z ", "name" : "Loire Atlantique"}, "fr-45" : {"path": "M 273.71875,160.46875 L 271.1875,162.8125 L 265.46875,163.3125 L 265.25,163.6875 L 265.8125,164.8125 L 264,166.34375 L 264.40625,170 L 262.875,170.28125 L 261.875,173.90625 L 260.1875,175.75 L 257.8125,175.75 L 255.5625,177 L 254.3125,175.59375 L 252.90625,175.03125 L 251.375,176.03125 L 251.375,177.5625 L 250.25,178.40625 L 248.4375,177.28125 L 247.3125,178.125 L 247.4375,179.375 L 246.90625,180.53125 L 247.3125,180.65625 L 248.96875,180.65625 L 248.84375,181.78125 L 247.71875,183.71875 L 247.71875,184.71875 L 248.84375,184.71875 L 249.8125,185.84375 L 250.09375,186.96875 L 247.875,189.1875 L 248.96875,191.875 L 248.96875,193.125 L 250.8125,194.375 L 253.34375,194.65625 L 255,196.0625 L 255.4375,198.46875 L 257.25,200.5625 L 259.21875,200 L 260.0625,198.1875 L 263.15625,198.59375 L 263.84375,199.3125 L 265.8125,199.3125 L 266.78125,198.1875 L 273.9375,198.46875 L 275.625,200.96875 L 277.59375,201.8125 L 279.28125,203.375 L 281.375,203.09375 L 281.9375,202.375 L 283.1875,202.375 L 284.75,204.34375 L 287.96875,204.5 L 288.8125,205.59375 L 291.0625,208.6875 L 292.03125,209.53125 L 293.28125,209.40625 L 293.4375,206.59375 L 294,206.3125 L 294.84375,206.4375 L 296.25,208.28125 L 297.21875,208.6875 L 299.21875,207.875 L 298.90625,207.53125 L 298.71875,205.5625 L 302.625,204.40625 L 302.03125,202.25 L 301.4375,199.125 L 298.90625,195.625 L 298.3125,193.46875 L 302.21875,193.46875 L 304.96875,191.5 L 305.34375,188.59375 L 303.59375,186.625 L 308.6875,182.34375 L 308.6875,178.8125 L 306.125,176.09375 L 305.15625,172.96875 L 301.625,169.625 L 296.75,172.375 L 296.375,170.8125 L 294.21875,170.625 L 293.625,172.1875 L 291.6875,172.5625 L 286.40625,172.375 L 284.25,173.75 L 282.5,172.1875 L 285.625,170.03125 L 285.4375,166.71875 L 283.09375,165.53125 L 281.125,162.59375 L 275.875,162.21875 L 273.71875,160.46875 z ", "name" : "Loiret"}, "fr-46" : {"path": "M 247.46875,347.3125 L 243.3125,349.25 L 242.71875,349.34375 L 242.84375,349.53125 L 241.5,350.6875 L 241.5,352.84375 L 243.25,354.78125 L 241.5,357.90625 L 239.9375,358.90625 L 239.71875,360.84375 L 236.40625,361.25 L 236.59375,363.375 L 237.78125,363.78125 L 235.03125,367.6875 L 230.75,368.0625 L 230.5625,371 L 228.78125,372.75 L 227.8125,375.3125 L 223.90625,375.5 L 225.46875,381.34375 L 227.125,384.96875 L 229.625,384.875 L 229.78125,385.90625 L 228.375,387.5 L 229.4375,389.625 L 231.03125,389.625 L 232.78125,391.5625 L 234.375,391.5625 L 235.625,390.15625 L 235.96875,390.53125 L 235.96875,392.28125 L 236.5,394.59375 L 240.21875,394.75 L 243.21875,391.5625 L 244.8125,391.40625 L 245.34375,392.28125 L 246.21875,394.21875 L 247.65625,394.21875 L 248.1875,390.6875 L 251.1875,391.0625 L 252.9375,388.9375 L 255.78125,389.625 L 260.03125,387.6875 L 260.0625,388.0625 L 261.4375,386.625 L 259.65625,383.96875 L 258.96875,380.4375 L 261.25,378.5 L 262.3125,378.84375 L 265.5,375.3125 L 267.25,375.5 L 267.96875,374.59375 L 271.5,374.59375 L 272.75,373.1875 L 273.09375,372.09375 L 271.5,371.875 L 272.59375,368.5625 L 270.09375,367.46875 L 272.59375,361.65625 L 269.28125,359.1875 L 268.15625,352 L 265.125,351.1875 L 262.90625,353.375 L 261.8125,351.4375 L 258.5,354.75 L 256.28125,355.03125 L 252.4375,349.53125 L 247.46875,347.3125 z ", "name" : "Lot"}, "fr-47" : {"path": "M 195.25,363.375 L 193.1875,363.65625 L 191.4375,364.1875 L 188.9375,364.71875 L 188.25,366.65625 L 189.125,368.59375 L 191.25,368.78125 L 190.90625,370.53125 L 189.3125,371.0625 L 187.53125,373.1875 L 184.53125,377.78125 L 183.125,380.25 L 183.65625,382.90625 L 184.53125,384.6875 L 182.59375,385.90625 L 180.65625,385.90625 L 180.28125,387.875 L 181.53125,388.9375 L 181.71875,390.875 L 180.28125,392.28125 L 177.15625,392.78125 L 177.625,393.34375 L 178.34375,397.59375 L 182.21875,397.25 L 184.875,398.28125 L 187.1875,398.46875 L 188.25,399.71875 L 186.125,401.84375 L 185.59375,405.71875 L 186.0625,406.9375 L 186.8125,405.375 L 189.125,407.34375 L 192.25,404.21875 L 193.625,406.15625 L 196.9375,405.5625 L 200.46875,405.1875 L 202.03125,402.4375 L 207.875,401.875 L 210.8125,404.78125 L 211.8125,403.8125 L 213.75,403.21875 L 212.96875,400.5 L 215.90625,399.71875 L 219.625,398.9375 L 218.8125,396.59375 L 220,395.21875 L 220.96875,391.5 L 218.8125,389.15625 L 220.1875,384.6875 L 223.125,386.4375 L 227.4375,385.65625 L 225.46875,381.34375 L 223.90625,375.5 L 227.8125,375.3125 L 228.59375,373.25 L 225.53125,371.96875 L 224.125,370.375 L 222,370.375 L 219.53125,372.65625 L 217.59375,372.5 L 217.0625,371.25 L 218.46875,370.375 L 218.46875,369.125 L 216.875,367.375 L 215.46875,367.1875 L 214.59375,368.25 L 210.6875,368.25 L 210.34375,366.84375 L 209.09375,366.65625 L 206.96875,368.40625 L 203.09375,368.40625 L 201.3125,370 L 198.3125,368.9375 L 197.96875,365.25 L 195.25,363.375 z ", "name" : "Lot et Garonne"}, "fr-48" : {"path": "M 320.78125,352.25 L 315.3125,354.21875 L 313.75,357.71875 L 310.25,355.375 L 307.5,363.96875 L 304.6875,370.4375 L 308.78125,375.46875 L 308.5,379.34375 L 311.25,381.28125 L 311.25,385.96875 L 312.09375,392.59375 L 315.40625,394 L 315.125,396.1875 L 319.8125,395.375 L 321.46875,396.1875 L 320.4375,397.09375 L 326.46875,401.125 L 331.625,400.0625 L 332.5,398.8125 L 331.78125,397.0625 L 333.90625,396.53125 L 336.90625,399.34375 L 342.03125,399.875 L 344.34375,396.34375 L 344.34375,393.34375 L 345.75,391.75 L 344.5,391.40625 L 344.5,387.34375 L 341.6875,384.34375 L 344,383.96875 L 345.21875,382.90625 L 346.1875,381.03125 L 345.21875,380.4375 L 345.78125,376.3125 L 342.46875,372.71875 L 341.09375,365.53125 L 336.125,359.1875 L 332.5,360.0625 L 331.71875,357.34375 L 329.75,357.34375 L 329.375,359.6875 L 324.3125,361.25 L 320.78125,352.25 z ", "name" : "Lozère"}, "fr-49" : {"path": "M 141.9375,188.6875 L 141.5,189.5625 L 141.21875,189.5 L 141.4375,190.21875 L 141.4375,192.46875 L 143.53125,193.75 L 144.8125,197.15625 L 146.75,199.5625 L 144.1875,201.84375 L 144.34375,204.71875 L 145.3125,205.53125 L 148.84375,205.0625 L 151.75,207.78125 L 152.40625,211.8125 L 150.46875,213.125 L 144.1875,212.96875 L 140.15625,213.75 L 137.90625,214.90625 L 137.90625,216.8125 L 140,219.40625 L 142.09375,219.40625 L 142.25,222.15625 L 143.0625,222.96875 L 142.09375,225.21875 L 140.46875,225.6875 L 140.46875,227.15625 L 139.65625,227.96875 L 140.625,228.4375 L 141.125,228.28125 L 142.5625,228.28125 L 144.1875,230.375 L 144.125,232.40625 L 144.5,232.46875 L 146.125,233.4375 L 151.125,233.4375 L 153.78125,235.6875 L 157.5,234.09375 L 163.5625,235.46875 L 166.28125,233.6875 L 166.28125,230.96875 L 171.5625,230.5625 L 176.4375,229.59375 L 181.71875,229.40625 L 182.3125,230.78125 L 183.6875,231.9375 L 185.03125,229.59375 L 188.75,225.6875 L 190.25,225.6875 L 192.46875,217.6875 L 195.59375,213.96875 L 195.375,209.6875 L 197.34375,207.125 L 197.34375,205.96875 L 196.375,204.78125 L 197,203.5 L 194.34375,202.46875 L 186.125,197.46875 L 178.53125,195.21875 L 175.625,195.0625 L 175.625,193.125 L 173.84375,191.65625 L 171.9375,191.65625 L 168.375,190.53125 L 166.125,192.78125 L 160.96875,192.96875 L 158.6875,191.65625 L 152.90625,189.90625 L 151.59375,191.5 L 148.375,189.40625 L 145.46875,189.40625 L 141.9375,188.6875 z ", "name" : "Maine et Loire"}, "fr-50" : {"path": "M 119.5625,77.5 L 118.78125,79.46875 L 122.90625,82.78125 L 122.90625,87.09375 L 121.34375,89.03125 L 122.3125,90 L 122.90625,90.40625 L 122.5,94.125 L 123.875,97.25 L 128.375,102.3125 L 129.34375,106.8125 L 130.3125,108.1875 L 130.3125,115.21875 L 132.65625,119.90625 L 132.65625,125.375 L 130.125,130.4375 L 132.84375,137.46875 L 137.15625,138.4375 L 137.53125,140.40625 L 135.40625,141.375 L 131.71875,141.375 L 132.3125,143.84375 L 133.46875,147.5625 L 136.8125,150.5 L 138.375,150.875 L 139.9375,148.75 L 141.6875,148.53125 L 143.8125,146 L 145.78125,147.5625 L 148.125,147.5625 L 149.6875,148.34375 L 149.6875,148.71875 L 153,149.125 L 154.96875,147.5625 L 157.875,148.75 L 157.9375,148.875 L 161.28125,146.03125 L 162.40625,142.3125 L 162.09375,140.6875 L 162.5625,138.78125 L 160.625,136.84375 L 155.625,133.59375 L 151.9375,133.28125 L 148.21875,128.59375 L 151.28125,127.46875 L 152.5625,125.0625 L 150.96875,123.59375 L 152.40625,122.3125 L 153.84375,123.4375 L 156.4375,121.84375 L 158.0625,119.25 L 158.6875,116.6875 L 157.5625,114.40625 L 158.21875,113.59375 L 156.75,111.1875 L 158.375,109.09375 L 157.09375,107.46875 L 155.46875,109.5625 L 153.21875,108.28125 L 149.5,104.5625 L 149.34375,102.96875 L 150.46875,101.84375 L 150.125,99.6875 L 148.28125,100.15625 L 148.09375,95.46875 L 143,89.4375 L 144.5625,85.53125 L 146.71875,85.53125 L 144.78125,80.25 L 136.375,79.84375 L 131.875,82.96875 L 126.8125,79.65625 L 119.5625,77.5 z ", "name" : "Manche"}, "fr-51" : {"path": "M 337.375,99.3125 L 335.03125,100.3125 L 335.4375,102.25 L 331.3125,102.25 L 327.625,105 L 327.625,110.25 L 330.34375,112.03125 L 331.125,113.78125 L 326.625,114.15625 L 326.0625,115.9375 L 327.8125,117.09375 L 327.03125,118.28125 L 325.28125,119.0625 L 325.65625,120.40625 L 328.1875,120.40625 L 329.1875,121.78125 L 327.4375,122.96875 L 325.875,127.0625 L 322.9375,128.4375 L 321.9375,130.5625 L 320.96875,131.75 L 321.1875,132.90625 L 319.625,133.90625 L 319.21875,136.625 L 320.78125,137.59375 L 321.5625,140.53125 L 320.59375,142.28125 L 321.1875,143.65625 L 324.09375,143.46875 L 324.09375,144.4375 L 324.9375,144.25 L 328.3125,147.8125 L 333.0625,147.03125 L 338.625,143.25 L 341.96875,143.25 L 345.34375,140.875 L 349.3125,138.6875 L 352.28125,138.90625 L 352.6875,142.875 L 356.25,148.21875 L 360.21875,148.21875 L 365.78125,147.03125 L 369.75,148.40625 L 373.90625,145.4375 L 374.5,140.5 L 379.09375,139.71875 L 379,136.625 L 375.28125,133.6875 L 374.875,132.125 L 376.25,129.78125 L 375.0625,128.8125 L 376.25,125.875 L 378.40625,124.90625 L 379.96875,120.03125 L 376.84375,120.21875 L 378.59375,118.28125 L 377.21875,113.96875 L 375.875,111.03125 L 377.625,109.46875 L 376.625,109.28125 L 376.375,107.9375 C 376.33461,107.94351 376.09375,107.96875 376.09375,107.96875 L 374.3125,106.375 L 372.3125,108.375 L 371.71875,108.375 L 370.9375,107.375 L 366.1875,107.1875 L 365.375,108.375 L 364,108.375 L 362.8125,105.78125 L 360.21875,105.78125 L 359.625,106.375 L 357.0625,106.1875 L 353.875,103.8125 L 351.6875,103.21875 L 350.90625,102.03125 L 346.75,99.4375 L 342,99.3125 L 342.0625,101.09375 L 340.6875,101.46875 L 337.375,99.3125 z ", "name" : "Marne"}, "fr-52" : {"path": "M 379.09375,139.71875 L 374.5,140.5 L 373.90625,145.4375 L 369.75,148.40625 L 367.59375,147.65625 L 366.5625,149.8125 L 366.375,152.78125 L 369.9375,157.75 L 373.3125,158.9375 L 374.09375,163.09375 L 374.3125,170.21875 L 373.125,172 L 369.75,172.21875 L 367.5625,174.1875 L 369.15625,175.1875 L 369.8125,177.6875 L 372.15625,179 L 375.65625,182.71875 L 380.15625,188.78125 L 377.625,191.5 L 379.375,192.6875 L 379.5625,196 L 382.6875,195.8125 L 383.46875,197.375 L 385.8125,197.5625 L 387.5625,196.59375 L 390.6875,200.5 L 391.09375,201.46875 L 395.375,200.5 L 396.1875,198.53125 L 396.375,198.5625 L 396.375,196.59375 L 399.09375,195.40625 L 402.21875,196.59375 L 405.15625,195.40625 L 406.90625,195.40625 L 407.5,191.5 L 408.46875,190.34375 L 406.71875,190.15625 L 406.53125,187.8125 L 409.25,187.21875 L 409.4375,185.65625 L 412.1875,185.65625 L 412.1875,183.125 L 414.34375,182.34375 L 413.75,180.78125 L 414.34375,180.40625 L 412.5625,179 L 410.4375,179.78125 L 410.4375,175.6875 L 404.96875,172.96875 L 406.125,167.6875 L 407.875,166.5 L 407.3125,164.75 L 404.75,164.375 L 404.1875,161.8125 L 401.84375,161.8125 L 399.09375,158.125 L 395.96875,157.90625 L 394.625,155.96875 L 396.375,154.21875 L 392.25,149.71875 L 390.5,149.125 L 385.8125,146.78125 L 383.28125,144.0625 L 379.1875,143.46875 L 379.09375,139.71875 z ", "name" : "Haute Marne"}, "fr-53" : {"path": "M 182.5,146.40625 L 180.5625,146.59375 L 179.75,148.53125 L 176.84375,149.71875 L 171.5625,148.9375 L 166.28125,152.0625 L 164.34375,150.6875 L 161.40625,152.65625 L 159.25,151.09375 L 157.875,148.75 L 154.96875,147.5625 L 153,149.125 L 149.6875,148.71875 L 149.5,153.8125 L 150.46875,154.59375 L 150.46875,158.5 L 148.5,160.46875 L 148.5,163.59375 L 149.09375,165.53125 L 149.09375,171.1875 L 150.46875,172.5625 L 150.46875,177.84375 L 147.15625,177.4375 L 145.78125,178.21875 L 143.25,184.46875 L 142.25,188 L 141.9375,188.6875 L 145.46875,189.40625 L 148.375,189.40625 L 151.59375,191.5 L 152.90625,189.90625 L 158.6875,191.65625 L 160.96875,192.96875 L 166.125,192.78125 L 168.375,190.53125 L 171.9375,191.65625 L 173.84375,191.65625 L 173.875,191.6875 L 174.5,190.21875 L 174.5,184.40625 L 173.84375,183.4375 L 174.1875,182.46875 L 176.9375,182.3125 L 178.21875,181.1875 L 178.375,180.21875 L 176.9375,176.65625 L 177.40625,175.21875 L 180.625,174.90625 L 180.3125,174.09375 L 181.125,172.15625 L 180.46875,170.6875 L 181.28125,169.09375 L 184.1875,166.65625 L 183.84375,164.09375 L 184.34375,159.90625 L 185.46875,157.96875 L 189.125,156.78125 L 188.5625,156.75 L 187.5625,153.21875 L 185.03125,152.25 L 184.25,147.96875 L 182.5,146.40625 z ", "name" : "Mayenne"}, "fr-54" : {"path": "M 401.59375,88.4375 L 399.25,90.59375 L 395.9375,90.78125 L 394.78125,91.96875 L 394.53125,91.96875 L 394.40625,94.3125 L 395.5625,96.21875 L 395.15625,97.375 L 394.78125,98.71875 L 394.96875,99.46875 L 395.9375,98.71875 L 396.875,97 L 398.8125,96.8125 L 402.0625,95.84375 L 403.78125,97.1875 L 404.53125,98.71875 L 405.125,100.4375 L 405.125,102.15625 L 406.0625,102.9375 L 406.0625,104.25 L 405.125,105.40625 L 404.9375,107.90625 L 405.6875,109.0625 L 405.875,110.59375 L 406.0625,113.0625 L 407.21875,114.03125 L 408.9375,114.78125 L 408.1875,116.3125 L 410.28125,118.25 L 408.375,120.34375 L 408.75,121.6875 L 410.65625,122.625 L 410.65625,123.59375 L 408.375,123.59375 L 407.40625,124.9375 L 407.59375,125.90625 L 409.125,127.4375 L 407.8125,131.0625 L 406.28125,134.5 L 407.03125,136.625 L 407.03125,140.0625 L 407.8125,141.78125 L 408.9375,141.78125 L 409.53125,142.75 L 407.8125,142.75 L 406.28125,143.5 L 406.28125,144.65625 L 408.1875,146.375 L 408.1875,149.0625 L 410.09375,148.46875 L 412.96875,148.65625 L 413.15625,151.71875 L 414.3125,152.125 L 412.96875,153.0625 L 412.78125,154.03125 L 414.875,154.40625 L 416.21875,156.125 L 422.53125,155.75 L 423.875,153.25 L 426.75,153.25 L 427.90625,152.3125 L 429.8125,153.46875 L 431.53125,152.875 L 434.03125,153.0625 L 436.125,152.3125 L 438.21875,150.78125 L 439.375,151.9375 L 439.5625,149.25 L 441.09375,148.65625 L 441.875,151.15625 L 444.15625,151.34375 L 446.46875,151.9375 L 447.40625,152.125 L 450.6875,150.59375 L 452.40625,149.4375 L 453.9375,147.53125 L 457,146.375 L 459,145.9375 L 457.875,144.84375 L 460.03125,145.03125 L 460.4375,144.625 L 458.125,143.875 L 454.875,141.59375 L 452,139.46875 L 448.5625,139.46875 L 444.9375,137.375 L 442.0625,137.1875 L 442.0625,136.40625 L 437.65625,133.75 L 432.6875,131.625 L 430.1875,131.625 L 429.25,128.96875 L 425.40625,124.15625 L 421.59375,124.15625 L 420.0625,122.0625 L 417,122.0625 L 417.1875,119 L 413.15625,116.5 L 413.34375,114.03125 L 415.46875,114.03125 L 415.46875,111.90625 L 416.21875,110.375 L 414.5,108.65625 L 416.03125,106 L 414.875,102.9375 L 413.9375,102.15625 L 411.4375,96.8125 L 412.40625,95.28125 C 412.40625,95.28125 412.32712,94.02401 412.25,92.34375 L 409.625,92.34375 L 406.09375,88.4375 L 401.59375,88.4375 z ", "name" : "Meurthe et Moselle"}, "fr-55" : {"path": "M 390.125,86.53125 L 388.75,88.78125 L 387,89.9375 L 385.625,88.59375 L 382.6875,88.59375 L 382.125,87.8125 L 380.15625,91.5 L 379.375,92.875 L 381.71875,95.8125 L 380.9375,99.71875 L 378.78125,101.46875 L 379,102.84375 L 379.75,104.78125 L 378.59375,105.96875 L 376.25,107.125 L 376.625,109.28125 L 377.625,109.46875 L 375.875,111.03125 L 377.21875,113.96875 L 378.59375,118.28125 L 376.84375,120.21875 L 379.96875,120.03125 L 378.40625,124.90625 L 376.25,125.875 L 375.0625,128.8125 L 376.25,129.78125 L 374.875,132.125 L 375.28125,133.6875 L 379,136.625 L 379.1875,143.46875 L 383.28125,144.0625 L 385.8125,146.78125 L 390.5,149.125 L 392.25,149.71875 L 396.375,154.21875 L 395.9375,154.65625 L 399.375,154.21875 L 399.375,152.5 L 403.21875,151.71875 L 403.21875,150.40625 L 404.15625,150.40625 L 404.15625,151.53125 L 407.21875,150.59375 L 408.40625,149 L 408.1875,149.0625 L 408.1875,146.375 L 406.28125,144.65625 L 406.28125,143.5 L 407.8125,142.75 L 409.53125,142.75 L 408.9375,141.78125 L 407.8125,141.78125 L 407.03125,140.0625 L 407.03125,136.625 L 406.28125,134.5 L 407.8125,131.0625 L 409.125,127.4375 L 407.59375,125.90625 L 407.40625,124.9375 L 408.375,123.59375 L 410.65625,123.59375 L 410.65625,122.625 L 408.75,121.6875 L 408.375,120.34375 L 410.28125,118.25 L 408.1875,116.3125 L 408.9375,114.78125 L 407.21875,114.03125 L 406.0625,113.0625 L 405.875,110.59375 L 405.6875,109.0625 L 404.9375,107.90625 L 405.125,105.40625 L 406.0625,104.25 L 406.0625,102.9375 L 405.125,102.15625 L 405.125,100.4375 L 404.53125,98.71875 L 403.78125,97.1875 L 402.0625,95.84375 L 398.8125,96.8125 L 396.875,97 L 395.9375,98.71875 L 394.96875,99.46875 L 394.78125,98.71875 L 395.15625,97.375 L 395.5625,96.21875 L 394.40625,94.3125 L 394.53125,91.96875 L 393.59375,91.96875 L 392.8125,88.25 L 391.25,86.6875 L 390.125,86.53125 z ", "name" : "Meuse"}, "fr-56" : {"path": "M 56,160.59375 L 52.75,162.15625 L 50.46875,162.15625 L 48.0625,164.09375 L 48.21875,165.53125 L 49.65625,169.25 L 50.46875,172.15625 L 55.46875,172.96875 L 57.90625,174.90625 L 58.875,173.75 L 60.46875,175.875 L 59.65625,176.84375 L 59.5,179.71875 L 58.0625,179.71875 L 56.9375,181.5 L 54.65625,181.5 L 53.71875,185.34375 L 55.90625,188.84375 L 59.03125,189.625 L 60.1875,187.875 L 59.625,190 L 62.34375,191.1875 L 65.875,194.6875 L 67.03125,196.84375 L 66.65625,199.375 L 66.25,201.9375 L 68.59375,203.6875 L 69.78125,202.3125 L 68.59375,200.75 L 68.59375,197.25 L 70.9375,197.8125 L 71.71875,195.46875 L 72.3125,196.84375 L 74.84375,199 L 76.03125,197.03125 L 74.84375,194.3125 L 77,197.25 L 79.71875,196.84375 L 79.15625,195.46875 L 81.6875,196.0625 L 83.625,198.40625 L 82.65625,199.96875 L 80.125,199.1875 L 77.1875,197.8125 L 75.625,199.78125 L 77.96875,200.5625 L 79.71875,203.28125 L 90.28125,202.3125 L 93,202.90625 L 91.65625,204.0625 L 91.84375,205.84375 L 92.21875,206.125 L 93.0625,205.96875 L 94.8125,204.21875 L 95.96875,205.5625 L 99.09375,205.5625 L 102.8125,203.625 L 108.28125,201.46875 L 108.46875,196 L 109.625,195.375 L 107.5625,191.5 L 109.34375,190.0625 L 109.03125,189.09375 L 107.90625,188.4375 L 109.65625,187.625 L 111.28125,185.6875 L 111.125,183.75 L 109.03125,183.75 L 108.53125,181.84375 L 110,179.90625 L 108.375,177 L 105.96875,175.53125 L 103.21875,175.53125 L 102.25,175.21875 L 102.25,173.9375 L 103.6875,172.625 L 104.5,169.40625 L 104.03125,167.3125 L 103.375,168.125 L 99.5,167.8125 L 97.71875,164.5625 L 96.28125,164.5625 L 94.03125,165.375 L 94.03125,167.46875 L 90.96875,169.40625 L 88.53125,168.4375 L 87.5625,166.34375 L 86.78125,167.46875 L 84.5,167.46875 L 83.375,166.03125 L 82.25,166.03125 L 79.84375,163.59375 L 77.09375,164.25 L 74.1875,161.65625 L 71.59375,161.84375 L 70.8125,163.4375 L 67.75,165.0625 L 64.03125,163.4375 L 63.0625,162.46875 L 61.4375,163.59375 L 59.5,163.4375 L 59.1875,161.84375 L 56.125,161.03125 L 56,160.59375 z ", "name" : "Morbihan"}, "fr-57" : {"path": "M 423.09375,90.40625 L 420.15625,90.59375 L 417.8125,92.5625 L 417.21875,93.53125 L 413.90625,93.53125 L 412.75,92.34375 L 412.25,92.34375 C 412.32712,94.02401 412.40625,95.28125 412.40625,95.28125 L 411.4375,96.8125 L 413.9375,102.15625 L 414.875,102.9375 L 416.03125,106 L 414.5,108.65625 L 416.21875,110.375 L 415.46875,111.90625 L 415.46875,114.03125 L 413.34375,114.03125 L 413.15625,116.5 L 417.1875,119 L 417,122.0625 L 420.0625,122.0625 L 421.59375,124.15625 L 425.40625,124.15625 L 429.25,128.96875 L 430.1875,131.625 L 432.6875,131.625 L 437.65625,133.75 L 442.0625,136.40625 L 442.0625,137.1875 L 444.9375,137.375 L 448.5625,139.46875 L 452,139.46875 L 454.875,141.59375 L 458.125,143.875 L 460.4375,144.625 L 463.9375,141.125 L 465.125,137.03125 L 463.5625,135.46875 L 463.375,134.09375 L 465.6875,129.78125 L 460.25,126.65625 L 457.125,129 L 455.34375,127.84375 L 456.125,126.09375 L 454.1875,124.71875 L 451.625,123.53125 L 451.625,121 L 454.1875,120.21875 L 455.15625,115.71875 L 456.90625,113.78125 L 457.6875,116.71875 L 459.84375,117.6875 L 463.5625,118.28125 L 465.5,120.21875 L 467.84375,120.21875 L 469.8125,118.84375 L 472.34375,120.625 L 473.71875,120.625 L 475.28125,119.25 L 475.28125,116.3125 L 477,113.3125 L 476.59375,113.4375 L 475.25,111.5 L 471.34375,109.15625 L 469.96875,107 L 465.28125,107.40625 L 462.53125,109.9375 L 455.90625,110.125 L 453.9375,108.75 C 453.80551,108.51057 452.84437,106.81438 452,106.34375 C 451.96729,106.32639 451.91355,106.29802 451.875,106.28125 C 451.84646,106.26959 451.80512,106.25698 451.78125,106.25 C 451.77058,106.24458 451.73002,106.22452 451.71875,106.21875 C 451.71591,106.21876 451.69093,106.21861 451.6875,106.21875 C 451.66248,106.21745 451.61378,106.21875 451.59375,106.21875 C 450.67823,106.21876 448.90565,105.19125 448.6875,105.0625 L 445.9375,106.21875 L 445.75,108.5625 L 442.4375,108.96875 L 440.46875,105.25 L 439.3125,104.84375 L 439.3125,102.125 L 436.5625,100.9375 L 436.375,96.25 L 434.40625,94.3125 L 430.3125,92.34375 L 428.375,92.34375 L 427.78125,92.75 L 425.8125,92.75 L 423.09375,90.40625 z ", "name" : "Moselle"}, "fr-58" : {"path": "M 306.75,203.78125 L 305.78125,205.3125 L 303.9375,205.3125 L 301.46875,204.75 L 298.71875,205.5625 L 298.90625,207.53125 L 301.25,210.25 L 301.25,213.96875 L 299.5,216.5 L 300.0625,218.84375 L 303.59375,221.59375 L 303.78125,224.3125 L 305.75,228.4375 L 305.34375,233.125 L 307.5,235.25 L 306.90625,240.34375 L 306.71875,242.875 L 307.6875,244.625 L 306.1875,249.40625 L 306.3125,250.875 L 309.65625,252.4375 L 312,255 L 314.125,253.8125 L 316.09375,252.65625 L 316.5,254.40625 L 319.40625,254.40625 L 320.1875,252.84375 L 321.9375,253.625 L 322.53125,256.15625 L 324.09375,255.78125 L 327.8125,250.6875 L 329.75,252.0625 L 330.0625,252.65625 L 333.125,250.75 L 334.375,250.90625 L 335.34375,253.28125 L 337.1875,253 L 338.59375,251.59375 L 340.40625,251.59375 L 341.8125,249.78125 L 343.21875,249.5 L 343.5,248.5 L 346.5625,248.65625 L 346.71875,247.9375 L 345.3125,246.6875 L 345.3125,245.4375 L 347.28125,244.3125 L 347.28125,243.46875 L 345.4375,242.34375 L 345.15625,240.25 L 345.3125,238.28125 L 344.0625,237.4375 L 345.15625,235.90625 L 346.15625,235.34375 L 346.84375,233.65625 L 345.875,233.09375 L 344.75,231.40625 L 346.15625,229.4375 L 348.53125,228.03125 L 351.46875,228.03125 L 351.46875,225.8125 L 352.3125,225.53125 L 352.3125,224.6875 L 351.0625,222.71875 L 348.25,222.15625 L 347.28125,220.46875 L 347.6875,218.9375 L 347.96875,216.8125 L 347.46875,215.6875 L 344.34375,217.8125 L 343.0625,218.375 L 341.375,217.25 L 341.53125,214.4375 L 339.6875,214.4375 L 338.15625,215.4375 L 337.75,214.15625 L 338.59375,212.75 L 337.59375,211.5 L 336.46875,213.1875 L 336.625,214.4375 L 333.96875,214.3125 L 329.75,210.375 L 326.53125,210.25 L 326.53125,208.125 L 324.28125,206.71875 L 323.84375,204.90625 L 323.15625,204.78125 L 323.15625,208.28125 L 321.90625,208.5625 L 320.0625,208 L 318.125,209.25 L 317,209.53125 L 315.875,208.5625 L 314.75,209.125 L 312.21875,207.4375 L 310.40625,207.4375 L 309.125,206.59375 L 309.40625,205.03125 L 308,203.78125 L 306.75,203.78125 z ", "name" : "Nièvre"}, "fr-59" : {"path": "M 285.78125,4.0625 L 279.53125,7 L 269.78125,8.5625 L 269.25,8.65625 L 272.96875,14.5625 L 275.5625,21.125 L 279.90625,21.3125 L 281.6875,22.6875 L 279.53125,23.6875 L 279.53125,26.0625 L 282.28125,29.03125 L 287.25,30.25 L 293.40625,30.625 L 294.78125,28.4375 L 296.78125,28.4375 L 297.75,30.4375 L 295.1875,32.03125 L 295.59375,36 L 299.15625,36.96875 L 302.71875,37.375 L 303.71875,39.9375 L 305.5,40.75 L 305.09375,42.125 L 302.53125,43.3125 L 302.3125,44.5 L 304.3125,46.90625 L 305.6875,47.875 L 305.3125,49.0625 L 303.71875,50.25 L 304.3125,50.65625 L 306.875,50.84375 L 309.0625,52.25 L 308.875,54.03125 L 307.6875,54.8125 L 307.46875,58 L 305.6875,58.1875 L 303.90625,58 L 301.9375,59.1875 L 303.125,59.59375 L 305.09375,59.59375 L 306.875,59.96875 L 307.46875,60.96875 L 306.3125,63.1875 L 307.875,64.75 L 309.4375,65.15625 L 311,64.15625 L 313.15625,64.15625 L 313.75,65.34375 L 314.53125,65.15625 L 316.875,63.78125 L 319.21875,65.15625 L 322.34375,63 L 323.71875,63 L 325.28125,64.375 L 328.40625,62.21875 L 329.75,62.40625 L 330.9375,63.375 L 335.25,63.78125 L 335.625,65.53125 L 337.78125,63.59375 L 338.9375,63.59375 L 339.71875,66.125 L 343.4375,67.09375 L 344.5,66.375 L 344.1875,66.375 L 344,64.4375 L 347.90625,62.09375 L 347.3125,58.375 L 343.59375,57.40625 L 344.5625,56.40625 L 344.5625,53.6875 L 347.5,51.53125 L 346.71875,49.96875 L 340.46875,45.09375 L 329.53125,45.6875 L 328.375,47.625 L 327,47.625 L 327.1875,40.78125 L 324.0625,37.09375 L 321.71875,37.46875 L 320.34375,35.90625 L 316.4375,37.65625 L 315.09375,36.3125 L 312.34375,35.90625 L 311.5625,33.375 L 311.375,25.5625 L 309.625,24.78125 L 309.40625,23.59375 L 308.25,23.59375 L 307.84375,21.25 L 305.3125,21.46875 L 300.4375,23.03125 L 298.09375,25.9375 L 295.75,25.9375 L 294.1875,24 L 293.59375,21.84375 L 291.65625,19.6875 L 288.90625,19.6875 L 287.75,17.5625 L 287.75,14.21875 L 289.09375,12.09375 L 288.3125,9.15625 L 285.78125,4.0625 z ", "name" : "Nord"}, "fr-60" : {"path": "M 257.21875,80.21875 L 255.9375,81.75 L 255.15625,83.6875 L 256.71875,83.6875 L 255.9375,85.65625 L 255.15625,89.5625 L 256.3125,91.5 L 256.3125,94.84375 L 258.28125,94.84375 L 257.5,96.1875 L 256.125,98.75 L 255.5625,100.5 L 257.3125,102.0625 L 257.875,106.5625 L 258.875,108.125 L 257.5,108.5 L 255.75,107.53125 L 255.4375,109.84375 L 255.5625,109.6875 L 256.3125,111.4375 L 257.5,113.375 L 262.78125,113.78125 L 266.5,113.375 L 269.03125,111.4375 L 272.15625,113.375 L 273.71875,114.5625 L 276.0625,113.96875 L 278.1875,113 L 282.3125,115.15625 L 286.59375,117.6875 L 287.96875,119.0625 L 290.3125,117.5 L 292.25,118.65625 L 293.4375,119.625 L 295.1875,119.4375 L 296.375,117.875 L 299.09375,119.4375 L 302.4375,118.0625 L 304.375,118.65625 L 306.3125,117.09375 L 307.5,116.5 L 307.875,116.78125 L 308.28125,114.125 L 306.875,112.53125 L 304.5,110.9375 L 303.5,112.53125 L 302.90625,112.71875 L 302.71875,109.75 L 304.5,109.34375 L 304.09375,106.59375 L 301.71875,106.1875 L 302.90625,104.1875 L 306.28125,103.40625 L 307.46875,98.65625 L 309.25,97.84375 L 306.875,96.0625 L 307.6875,94.28125 L 308.0625,88.34375 L 307.25,83.75 L 303.125,84.15625 L 300.34375,83.78125 L 295.1875,85.15625 L 290.8125,89.3125 L 287.25,88.125 L 283.6875,87.75 L 280.90625,84.96875 L 275.9375,83.5625 L 269.21875,84.15625 L 267.4375,82.78125 L 263.84375,82.78125 L 261.28125,83.78125 L 260.09375,82.96875 L 260.09375,80.8125 L 259.6875,80.21875 L 257.21875,80.21875 z ", "name" : "Oise"}, "fr-61" : {"path": "M 206.84375,124.65625 L 202.875,125.53125 L 201.59375,124.75 L 197.875,125.375 L 197.71875,126.84375 L 196.4375,127.15625 L 195.96875,125.0625 L 194.34375,125.375 L 191.90625,128.125 L 188.21875,130.875 L 184.1875,132.15625 L 180.96875,130.375 L 177.25,131.03125 L 175,128.78125 L 172.875,129.5625 L 169.34375,132 L 165.3125,130.875 L 162.40625,134.25 L 158.46875,135.4375 L 160.625,136.84375 L 162.5625,138.78125 L 162.09375,140.6875 L 162.40625,142.3125 L 161.28125,146.03125 L 157.9375,148.875 L 159.25,151.09375 L 161.40625,152.65625 L 164.34375,150.6875 L 166.28125,152.0625 L 171.5625,148.9375 L 176.84375,149.71875 L 179.75,148.53125 L 180.5625,146.59375 L 182.5,146.40625 L 184.25,147.96875 L 185.03125,152.25 L 187.5625,153.21875 L 188.5625,156.75 L 191.875,156.9375 L 197.15625,152.0625 L 202.4375,151.875 L 204,154 L 204.96875,161.03125 L 208.28125,162.21875 L 210.25,165.15625 L 214.34375,165.15625 L 214.53125,166.5 L 214.71875,164.5625 L 215.5,164.5625 L 218.25,168.65625 L 220.375,169 L 220.375,164.375 L 219.03125,162.59375 L 218.625,161.03125 L 221.5625,159.28125 L 224.5,158.6875 L 226.4375,156.34375 L 226.0625,149.125 L 221.9375,145.625 L 221.75,142.28125 L 218.25,139.9375 L 219.625,138 L 218.8125,135.0625 L 216.09375,134.09375 L 214.125,132.125 L 212.96875,129.40625 L 207.5,129.21875 L 205.9375,127.25 L 206.84375,124.65625 z ", "name" : "Orne"}, "fr-62" : {"path": "M 269.25,8.65625 L 258.4375,10.71875 L 249.84375,17.34375 L 249.84375,43.71875 L 249.78125,44.5 L 252.8125,45.21875 L 253.78125,47.375 L 256.125,46.78125 L 257.5,45.03125 L 259.25,45.625 L 262.96875,48.53125 L 264.34375,47.96875 L 265.3125,50.3125 L 268.8125,51.875 L 268.8125,53.8125 L 271.375,54.78125 L 273.90625,53.8125 L 278.78125,53.21875 L 279.96875,54.21875 L 282.3125,53.21875 L 283.46875,55.1875 L 280.5625,57.125 L 280.5625,59.875 L 281.53125,60.84375 L 282.3125,60.65625 L 282.875,59.09375 L 284.65625,57.90625 L 286.40625,59.28125 L 290.5,60.65625 L 292.25,60.65625 L 292.25,58.6875 L 294.8125,60.46875 L 295,62.03125 L 293.8125,63.78125 L 295.96875,62.59375 L 297.75,61.8125 L 298.5,63.1875 L 298.5,64.5625 L 301.4375,63 L 306.125,63 L 306.3125,63.1875 L 307.46875,60.96875 L 306.875,59.96875 L 305.09375,59.59375 L 303.125,59.59375 L 301.9375,59.1875 L 303.90625,58 L 305.6875,58.1875 L 307.46875,58 L 307.6875,54.8125 L 308.875,54.03125 L 309.0625,52.25 L 306.875,50.84375 L 304.3125,50.65625 L 303.71875,50.25 L 305.3125,49.0625 L 305.6875,47.875 L 304.3125,46.90625 L 302.3125,44.5 L 302.53125,43.3125 L 305.09375,42.125 L 305.5,40.75 L 303.71875,39.9375 L 302.71875,37.375 L 299.15625,36.96875 L 295.59375,36 L 295.1875,32.03125 L 297.75,30.4375 L 296.78125,28.4375 L 294.78125,28.4375 L 293.40625,30.625 L 287.25,30.25 L 282.28125,29.03125 L 279.53125,26.0625 L 279.53125,23.6875 L 281.6875,22.6875 L 279.90625,21.3125 L 275.5625,21.125 L 272.96875,14.5625 L 269.25,8.65625 z ", "name" : "Pas de Calais"}, "fr-63" : {"path": "M 299.09375,279.5 L 296.4375,282.5 L 296.25,281.4375 L 294.125,281.625 L 294.125,283.21875 L 292.90625,283.5625 L 291.65625,286.5625 L 290.0625,287.28125 L 287.09375,284.96875 L 287.375,289.5625 L 288.9375,291.5 L 289.71875,295.21875 L 287.375,296.96875 L 286.8125,299.71875 L 284.65625,300.875 L 280.9375,303.03125 L 281.3125,304.78125 L 285.8125,309.28125 L 286.21875,312.03125 L 284.4375,314.9375 L 284.4375,317.6875 L 285.625,319.0625 L 286.21875,322.375 L 285.84375,323.71875 L 291.84375,325.46875 L 293.4375,328.8125 L 296.59375,328.8125 L 297.84375,327.59375 L 299.96875,328.65625 L 301.03125,328.8125 L 303.6875,332.875 L 306.5,333.0625 L 307.21875,331.65625 L 308,331.75 L 308.8125,330.59375 L 312.34375,330.0625 L 314.28125,328.46875 L 316.40625,328.28125 L 316.40625,327.0625 L 317.8125,326.34375 L 318.1875,327.21875 L 319.0625,326.6875 L 320.46875,327.59375 L 322.9375,327.40625 L 325.0625,326.53125 L 326.46875,327.75 L 328.0625,327.75 L 329.3125,330.0625 L 331.25,330.9375 L 332.3125,328.46875 L 333.71875,329.71875 L 336.75,329.875 L 337.8125,327.75 L 339.5625,329.53125 L 342.03125,330.25 L 342.8125,329.5 L 341.28125,329 L 340.6875,326.65625 L 344.40625,323.15625 L 342.65625,316.71875 L 337.5625,313.375 L 335.4375,308.3125 L 333.09375,305.1875 L 333.6875,300.875 L 335.4375,299.125 L 332.3125,296.59375 L 332.40625,295.8125 L 329.65625,294.71875 L 328.78125,292.59375 L 325.78125,292.75 L 323.46875,292.21875 L 323.125,289.75 L 321.34375,288.875 L 319.0625,290.28125 L 316.40625,289.75 L 314.625,289.9375 L 308.625,289.0625 L 303.6875,286.21875 L 303.3125,284.8125 L 301.21875,282.5 L 302.625,280.5625 L 302.09375,279.5 L 299.09375,279.5 z ", "name" : "Puy de Dôme"}, "fr-64" : {"path": "M 172.15625,428.875 L 169.34375,430.46875 L 163.6875,430.28125 L 163.15625,429.40625 L 159.4375,430.65625 L 156.59375,431.53125 L 154.46875,429.9375 L 152.1875,430.65625 L 151.46875,429.75 L 148.65625,429.75 L 146.875,430.65625 L 142.28125,430.46875 L 139.8125,432.40625 L 135.375,432.0625 L 134.5,433.3125 L 133.4375,432.9375 L 134.84375,431.53125 L 132.375,429.59375 L 129.375,432.25 L 124.25,432.59375 L 118.625,429.78125 L 117.8125,431.21875 L 113.3125,436.6875 L 109.8125,438.0625 L 107.28125,438.4375 L 107.28125,440.59375 L 109.625,442.75 L 113.125,442.9375 L 113.3125,445.46875 L 116.0625,445.6875 L 116.84375,443.90625 L 120.5625,445.46875 L 122.90625,446.0625 L 123.46875,448.40625 L 122.125,449.59375 L 122.125,453.28125 L 119.375,454.65625 L 119.1875,456.40625 L 120.9375,458.375 L 124.0625,459.34375 L 124.65625,456.40625 L 126.40625,454.46875 L 126.21875,457 L 127.59375,458.96875 L 131.09375,458.96875 L 132.65625,461.09375 L 137.34375,461.875 L 141.84375,464.625 L 149.25,464.625 L 149.65625,468.71875 L 154.71875,472.625 L 156.6875,474.96875 L 158.84375,473.8125 L 160.78125,473.40625 L 161.75,474.375 L 163.53125,473.40625 L 166.9375,471.53125 L 167.25,467.5 L 168.8125,466.3125 L 169.625,459.875 L 172.53125,460.46875 L 173.71875,459.6875 L 172.34375,456.9375 L 177.625,452.4375 L 180.75,445.40625 L 182.6875,442.875 L 180.34375,439.375 L 178.78125,437.03125 L 180.9375,435.0625 L 177.625,429.59375 L 172.34375,429.21875 L 172.15625,428.875 z ", "name" : "Pyrénées Atlantiques"}, "fr-65" : {"path": "M 179.21875,428.53125 L 177.28125,429.5625 L 177.625,429.59375 L 180.9375,435.0625 L 178.78125,437.03125 L 180.34375,439.375 L 182.6875,442.875 L 180.75,445.40625 L 177.625,452.4375 L 172.34375,456.9375 L 173.71875,459.6875 L 172.53125,460.46875 L 169.625,459.875 L 168.8125,466.3125 L 167.25,467.5 L 166.9375,471.53125 L 167.4375,471.25 L 170.75,473.21875 L 174.65625,476.15625 L 175.03125,478.5 L 178.15625,481.03125 L 180.71875,481.03125 L 187.15625,478.28125 L 189.875,481.40625 L 193.59375,482.40625 L 194.96875,480.0625 L 196.71875,480.84375 L 200.5,481.09375 L 200.25,470.59375 L 202.21875,470.59375 L 203.96875,471.46875 L 205.21875,470.25 L 205.03125,468.3125 L 207.5,466.875 L 206.625,463.1875 L 205.5625,462.28125 L 203.4375,463 L 204.5,461.21875 L 203.96875,458.9375 L 200.78125,456.625 L 200.96875,455.03125 L 202.75,452.03125 L 205.03125,451.15625 L 205.03125,449.90625 L 206.4375,447.78125 L 207.375,446.46875 L 203.8125,444.625 L 199.03125,444.625 L 198.3125,443.1875 L 195.84375,443.1875 L 195.125,441.59375 L 192.84375,441.59375 L 192.125,442.3125 L 189.46875,442.3125 L 189.3125,440.71875 L 187.1875,439.3125 L 187.90625,438.59375 L 188.25,436.84375 L 187.71875,436.3125 L 186.65625,433.46875 L 184.34375,433.125 L 182.0625,431.875 L 182.21875,428.53125 L 179.21875,428.53125 z ", "name" : "Hautes Pyrénées"}, "fr-66" : {"path": "M 300.5,468.65625 L 296.25,470.9375 L 296.59375,473.4375 L 278.0625,473.4375 L 278.21875,476.78125 L 280.15625,479.625 L 272.21875,483.5 L 271.375,483 L 264.84375,483.46875 L 264.03125,485.125 L 260.71875,485.96875 L 258.5,487.90625 L 252.4375,489.3125 L 252.78125,491.375 L 255.71875,494.125 L 261.5625,495.6875 L 261.75,499.1875 L 264.875,501.9375 L 267.21875,501.53125 L 270.5625,497.4375 L 274.65625,496.65625 L 281.09375,498.8125 L 286.5625,503.5 L 288.125,501.53125 L 289.5,501.53125 L 290.875,502.5 L 292.03125,501.9375 L 292.21875,499.1875 L 298.09375,497.8125 L 300.03125,495.28125 L 302.96875,494.3125 L 307.0625,494.3125 L 309.625,497.03125 L 312.75,497.25 L 312.75,494.125 L 311.1875,491.96875 L 308.4375,490.78125 L 308,473.71875 L 305.4375,472.53125 L 300.5,468.65625 z ", "name" : "Pyrénées Orientales"}, "fr-67" : {"path": "M 480.71875,112.28125 L 477,113.3125 L 475.28125,116.3125 L 475.28125,119.25 L 473.71875,120.625 L 472.34375,120.625 L 469.8125,118.84375 L 467.84375,120.21875 L 465.5,120.21875 L 463.5625,118.28125 L 459.84375,117.6875 L 457.6875,116.71875 L 456.90625,113.78125 L 455.15625,115.71875 L 454.1875,120.21875 L 451.625,121 L 451.625,123.53125 L 454.1875,124.71875 L 456.125,126.09375 L 455.34375,127.84375 L 457.125,129 L 460.25,126.65625 L 465.6875,129.78125 L 463.375,134.09375 L 463.5625,135.46875 L 465.125,137.03125 L 463.9375,141.125 L 460.03125,145.03125 L 457.875,144.84375 L 459.25,146.1875 L 458.46875,149.71875 L 459.25,155 L 462.96875,155.96875 L 462.65625,156.6875 L 465.59375,156.53125 L 467.3125,158.625 L 468.84375,160.53125 L 472.6875,160.34375 L 474.40625,165.3125 L 477.40625,166.625 L 477.375,166 L 482.46875,156.03125 L 481.875,150.375 L 484.21875,142.75 L 484.8125,136.09375 L 489.875,132.40625 L 489.875,130.0625 L 491.84375,127.5 L 493.40625,127.5 L 495.15625,125.75 L 494.78125,122.4375 L 496.53125,117.75 L 499.25,117.15625 L 496.53125,115 L 491.65625,114.4375 L 487.34375,112.28125 L 484.40625,114.03125 L 482.84375,112.28125 L 480.71875,112.28125 z ", "name" : "Bas-Rhin"}, "fr-68" : {"path": "M 465.59375,156.53125 L 462.65625,156.6875 L 460.8125,160.84375 L 458.46875,165.53125 L 459.0625,168.46875 L 457.125,172.96875 L 453.78125,175.875 L 453.59375,183.5 L 451.15625,185.59375 L 451.25,185.65625 L 452.03125,187.21875 L 455.15625,187.40625 L 458.6875,190.15625 L 459.25,191.5 L 459.0625,193.84375 L 458.09375,195.625 L 458.46875,197.96875 L 461.21875,197.5625 L 461.8125,199.71875 L 462.78125,203.875 L 465.09375,203.5 L 464.6875,205.625 L 466.0625,206.8125 L 473.28125,206.625 L 477,203.6875 L 477.1875,199.375 L 479.15625,196.84375 L 476.59375,193.90625 L 475.25,190.78125 L 476.8125,188.65625 L 476.8125,183.75 L 477.78125,181.40625 L 477.78125,177.5 L 479.53125,174.96875 L 477.59375,172.25 L 477.40625,166.625 L 474.40625,165.3125 L 472.6875,160.34375 L 468.84375,160.53125 L 467.3125,158.625 L 465.59375,156.53125 z ", "name" : "Haut Rhin"}, "fr-69" : {"path": "M 371.75,275.3125 L 369.625,275.5 L 367.84375,277.25 L 366.6875,275.6875 L 364.9375,277.25 L 362.5625,275.6875 L 360.625,275.6875 L 359.84375,276.28125 L 359.4375,278.53125 L 360.5,279.375 L 360.5,281.28125 L 361.78125,283.40625 L 360.71875,284.6875 L 356.6875,284.6875 L 356.46875,288.5 L 355.1875,289.78125 L 356.03125,292.96875 L 356.03125,294.875 L 357.75,296.5625 L 357.75,298.90625 L 360.28125,301.25 L 360.28125,304 L 359.03125,305.90625 L 360.5,306.78125 L 360.5,308.25 L 359.21875,309.3125 L 359.21875,311.03125 L 364.75,316.125 L 371.34375,317.1875 L 371.96875,319.09375 L 369.84375,321.625 L 371.5625,322.6875 L 373.6875,321.84375 L 375.96875,322.1875 L 380.0625,320.15625 L 379.40625,318.875 L 376.65625,316.125 L 380.90625,314.625 L 386.4375,313.34375 L 390.6875,307.84375 L 387.90625,305.5 L 388.0625,303.46875 L 384.09375,302.3125 L 381.53125,303.15625 L 381.125,299.75 L 378.78125,297.625 L 377.28125,297.40625 L 373.46875,295.09375 L 374.09375,293.59375 L 374.09375,287 L 375.15625,285.53125 L 375.53125,280.96875 L 374.875,282.53125 L 373.5,282.34375 L 372.75,278.4375 L 371.75,275.3125 z ", "name" : "Rhône"}, "fr-70" : {"path": "M 423.5,175.5 L 419.8125,176.09375 L 419.21875,178.03125 L 417.25,179.40625 L 415.90625,177.84375 L 414.9375,178.4375 L 415.6875,179.59375 L 413.75,180.78125 L 414.34375,182.34375 L 412.1875,183.125 L 412.1875,185.65625 L 409.4375,185.65625 L 409.25,187.21875 L 406.53125,187.8125 L 406.71875,190.15625 L 408.46875,190.34375 L 407.5,191.5 L 406.90625,195.40625 L 405.15625,195.40625 L 402.21875,196.59375 L 399.09375,195.40625 L 396.375,196.59375 L 396.375,198.5625 L 398.5,198.9375 L 400.0625,202.0625 L 400.28125,203.625 L 397.75,206.5625 L 396.5625,206.9375 L 395.78125,207.90625 L 397.9375,208.90625 L 398.3125,212.03125 L 400.0625,212.21875 L 400.28125,216.125 L 401.0625,216.90625 L 401.15625,217.53125 L 402.65625,217.9375 L 404.34375,219.34375 L 406.875,219.34375 L 407.84375,218.375 L 409.5625,218.4375 L 411.34375,218.5 L 415.28125,215.28125 L 416.40625,215.28125 L 417.65625,214.3125 L 421.71875,214.4375 L 424.8125,211.90625 L 427.0625,211.5 L 427.90625,209.40625 L 429.71875,208.84375 L 431.53125,205.75 L 434.0625,203.78125 L 436.71875,203.375 L 438.6875,204.78125 L 442.34375,204.34375 L 442.34375,202.375 L 443.8125,201.53125 L 444.96875,199.9375 L 447.21875,199.9375 L 448.46875,198.625 L 448.9375,195.5 L 448.9375,193.5625 L 448.09375,190.59375 L 448.09375,188.09375 L 449.625,186.96875 L 451.4375,186.03125 L 451.25,185.65625 L 445,182.34375 L 443.25,180.375 L 441.5,179.21875 L 439.9375,180 L 439.71875,181.15625 L 438.15625,182.125 L 437.1875,182.125 L 434.25,178.8125 L 430.15625,178.8125 L 428.40625,180.1875 L 426.84375,180.375 L 424.3125,178.4375 L 424.5,176.28125 L 423.5,175.5 z ", "name" : "Haute Saône"}, "fr-71" : {"path": "M 351.46875,227.84375 L 351.46875,228.03125 L 348.53125,228.03125 L 346.15625,229.4375 L 344.75,231.40625 L 345.875,233.09375 L 346.84375,233.65625 L 346.15625,235.34375 L 345.15625,235.90625 L 344.0625,237.4375 L 345.3125,238.28125 L 345.15625,240.25 L 345.4375,242.34375 L 347.28125,243.46875 L 347.28125,244.3125 L 345.3125,245.4375 L 345.3125,246.6875 L 346.71875,247.9375 L 346.5625,248.65625 L 343.5,248.5 L 343.21875,249.5 L 341.8125,249.78125 L 340.40625,251.59375 L 338.59375,251.59375 L 337.1875,253 L 335.34375,253.28125 L 334.375,250.90625 L 333.125,250.75 L 330.0625,252.65625 L 333.6875,259.46875 L 333.6875,262.40625 L 334.65625,263.59375 L 337.96875,263.59375 L 339.125,265.15625 L 342.25,265.15625 L 343.625,267.09375 L 343.4375,274.71875 L 339.34375,277.84375 L 339.25,278.0625 L 339.53125,278.03125 L 340.125,278.21875 L 340.3125,281.34375 L 343.25,281.9375 L 343.625,283.3125 L 345.1875,283.3125 L 347.53125,281.9375 L 353.78125,282.90625 L 354.96875,284.09375 L 356.53125,282.53125 L 358.6875,282.53125 L 359.84375,276.28125 L 360.625,275.6875 L 362.5625,275.6875 L 364.9375,277.25 L 366.6875,275.6875 L 367.84375,277.25 L 369.625,275.5 L 371.75,275.3125 L 372.75,278.4375 L 373.5,282.34375 L 374.875,282.53125 L 376.0625,279.78125 L 379.75,265.34375 L 381.125,262.8125 L 383.28125,262.59375 L 385.4375,264.375 L 387,263.96875 L 388.9375,262.59375 L 390.90625,263 L 392.0625,265.53125 L 393.1875,265.96875 L 398.3125,265.34375 L 400.28125,263.78125 L 399.5,262.59375 L 397.15625,261.8125 L 396.9375,259.09375 L 398.90625,257.71875 L 399.6875,254.40625 L 397.9375,251.28125 L 396.75,249.71875 L 397.34375,249.125 L 397.34375,247.1875 L 395.78125,246.1875 L 395.375,244.625 L 399.875,244.0625 L 400.28125,242.5 L 398.90625,242.5 L 397.75,241.125 L 395.59375,241.125 L 393.8125,238.1875 L 392.25,238 L 392.4375,235.65625 L 390.75,235.46875 L 388.5,237 L 386.25,237.5625 L 384.71875,236.59375 L 382.75,236.46875 L 382.1875,237.28125 L 380.375,237.5625 L 376.3125,238.84375 L 370.40625,240.9375 L 368.15625,239.125 L 365.5,238.5625 L 365.375,236.1875 L 362.84375,234.34375 L 359.34375,231.6875 L 355.40625,231.8125 L 351.625,227.90625 L 351.46875,227.84375 z ", "name" : "Saône et Loire"}, "fr-72" : {"path": "M 202.4375,151.875 L 197.15625,152.0625 L 191.875,156.9375 L 189.125,156.78125 L 185.46875,157.96875 L 184.34375,159.90625 L 183.84375,164.09375 L 184.1875,166.65625 L 181.28125,169.09375 L 180.46875,170.6875 L 181.125,172.15625 L 180.3125,174.09375 L 180.625,174.90625 L 177.40625,175.21875 L 176.9375,176.65625 L 178.375,180.21875 L 178.21875,181.1875 L 176.9375,182.3125 L 174.1875,182.46875 L 173.84375,183.4375 L 174.5,184.40625 L 174.5,190.21875 L 173.875,191.6875 L 175.625,193.125 L 175.625,195.0625 L 178.53125,195.21875 L 186.125,197.46875 L 194.34375,202.46875 L 197,203.5 L 198.3125,200.875 L 202.21875,203.625 L 204.375,203.625 L 203.1875,199.71875 L 205.5625,201.28125 L 206.90625,199.3125 L 212.5625,197.75 L 211.59375,195.40625 L 212.96875,193.65625 L 215.90625,192.5 L 218.625,188.96875 L 218.625,185.25 L 220.59375,185.25 L 221.375,182.53125 L 221.5625,178.4375 L 219.625,176.65625 L 221.1875,173.9375 L 223.5,171 L 220.78125,169.0625 L 218.25,168.65625 L 215.5,164.5625 L 214.71875,164.5625 L 214.53125,166.5 L 214.34375,165.15625 L 210.25,165.15625 L 208.28125,162.21875 L 204.96875,161.03125 L 204,154 L 202.4375,151.875 z ", "name" : "Sarthe"}, "fr-73" : {"path": "M 417,293.8125 L 416.59375,299.53125 L 415.3125,300.59375 L 415.3125,306.96875 L 412.75,307.40625 L 412.34375,311.03125 L 410,312.71875 L 409.96875,312.6875 L 410.21875,313.78125 L 412.5625,316.3125 L 412.5625,318.03125 L 414.875,322.28125 L 419.78125,323.34375 L 421.46875,324.625 L 422.125,323.96875 L 421.25,322.28125 L 422.53125,319.5 L 424.03125,319.3125 L 426.5625,322.6875 L 427.625,321.21875 L 429.125,321.21875 L 433.15625,325.25 L 433.375,328 L 431.46875,329.0625 L 430.59375,333.09375 L 432.3125,334.8125 L 432.3125,336.5 L 431.875,338.21875 L 433.15625,336.9375 L 435.28125,338.21875 L 436.40625,339.75 L 439.9375,339.375 L 441.09375,340.53125 L 441.6875,343.28125 L 445.1875,342.875 L 445.59375,339.9375 L 447.34375,339.15625 L 451.09375,339.34375 L 451.03125,339.21875 L 456.875,336.875 L 459.03125,338.25 L 461.1875,338.25 L 461.375,335.90625 L 463.90625,334.53125 L 464.875,333.375 L 469.96875,331.40625 L 470.5625,328.09375 L 469.5625,326.53125 L 472.3125,321.84375 L 469.78125,320.875 L 469,318.125 L 463.71875,315 C 463.71875,315 464.03377,309.01275 463.53125,307.9375 C 463.51544,307.91055 463.48155,307.86019 463.46875,307.84375 C 463.46374,307.8383 463.44264,307.81713 463.4375,307.8125 C 463.43393,307.81272 463.4091,307.81243 463.40625,307.8125 C 463.4062,307.80552 463.40608,307.78312 463.40625,307.78125 C 463.40269,307.78137 463.37784,307.78121 463.375,307.78125 C 463.37209,307.7811 463.3467,307.78118 463.34375,307.78125 C 463.34022,307.78117 463.31534,307.78126 463.3125,307.78125 C 462.53125,307.97657 459.625,308.1875 459.625,308.1875 L 456.6875,304.84375 L 456.78125,301.625 L 455.46875,301.46875 L 453.96875,303.15625 L 452.0625,304.4375 L 452.5,303.375 L 450.5625,300.1875 L 447.375,300.1875 L 445.46875,297.84375 L 446.53125,296.5625 L 446.125,295.28125 L 444.625,294.875 L 442.71875,296.15625 L 441.21875,300.59375 L 439.3125,302.09375 L 438.46875,305.5 L 437.625,307.1875 L 434.21875,307.84375 L 433.15625,306.78125 L 430.1875,303.59375 L 428.46875,303.59375 L 427.84375,304.84375 L 424.4375,304.4375 L 422.96875,301.65625 L 419.125,301.03125 L 419.125,295.5 L 417,293.8125 z ", "name" : "Savoie"}, "fr-74" : {"path": "M 446.125,266.1875 L 441.65625,266.96875 L 437.34375,270.46875 L 436.1875,268.71875 L 434.03125,268.90625 L 432.0625,273.21875 L 432.28125,274.96875 L 434.40625,276.71875 L 430.5,279.28125 L 427.96875,281.625 L 423.65625,281.625 L 421.6875,283.1875 L 419.78125,283.8125 L 418.71875,285.75 L 416.8125,284.6875 L 416.375,290.1875 L 417.4375,292.125 L 417.5,294.21875 L 419.125,295.5 L 419.125,301.03125 L 422.96875,301.65625 L 424.4375,304.4375 L 427.84375,304.84375 L 428.46875,303.59375 L 430.1875,303.59375 L 433.15625,306.78125 L 434.21875,307.84375 L 437.625,307.1875 L 438.46875,305.5 L 439.3125,302.09375 L 441.21875,300.59375 L 442.71875,296.15625 L 444.625,294.875 L 446.125,295.28125 L 446.53125,296.5625 L 445.46875,297.84375 L 447.375,300.1875 L 450.5625,300.1875 L 452.5,303.375 L 452.0625,304.4375 L 453.96875,303.15625 L 455.46875,301.46875 L 456.78125,301.625 L 456.875,298.21875 L 463.53125,295.46875 L 464.3125,293.53125 L 463.90625,289.21875 L 459.625,284.75 L 458.25,285.53125 L 458.25,283.75 L 458.25,280.84375 L 454.53125,279.0625 L 454.34375,277.5 L 456.5,275.15625 L 456.5,272.4375 L 452.96875,268.71875 L 452.78125,266.1875 L 446.125,266.1875 z ", "name" : "Haute Savoie"}, "fr-75" : {"path": "M 280.28125,129.0625 L 277.75,129.09375 L 276.625,129.59375 L 276.15625,130.21875 L 275.125,130.28125 L 274.1875,131.34375 L 274.21875,131.9375 L 274.4375,132.625 L 276,133.0625 L 277.90625,134.03125 L 279.125,134.09375 L 279.9375,133.875 L 280.78125,133.28125 L 281.0625,133.53125 L 282.875,133.78125 L 283.1875,133.125 L 283.1875,132.46875 L 282.875,132.34375 L 281.625,132.40625 L 281.71875,132.71875 L 281.5,132.90625 L 281.09375,132.90625 L 281.25,132.5 L 281.3125,132.0625 L 281.25,132.0625 L 281.09375,130.3125 L 280.28125,129.0625 z ", "name" : "Paris"}, "fr-76" : {"path": "M 241.9375,61.5 L 240.65625,63.0625 L 232.28125,69.5 L 217.4375,73.21875 L 207.65625,76.71875 L 199.65625,81.03125 L 194.96875,88.0625 L 194,93.53125 L 197.90625,96.46875 L 203.5625,97.625 L 202.65625,97.78125 L 202.6875,97.9375 L 207.0625,97.375 L 209.3125,94.96875 L 211,94.5625 L 212.9375,97.9375 L 215.625,97.65625 L 216.75,99.59375 L 221.5,99.3125 L 226.28125,102.6875 L 223.1875,103.65625 L 225.4375,105.34375 L 226.84375,105.34375 L 228.09375,108.03125 L 230.34375,108.03125 L 231.03125,106.34375 L 229.34375,105.21875 L 234.125,103.8125 L 239.15625,103.25 L 240.4375,99.59375 L 242.8125,97.5 L 247.3125,97.375 L 252.5,100.03125 L 255.59375,100.375 L 256.125,98.75 L 257.5,96.1875 L 258.28125,94.84375 L 256.3125,94.84375 L 256.3125,91.5 L 255.15625,89.5625 L 255.9375,85.65625 L 256.71875,83.6875 L 255.15625,83.6875 L 255.9375,81.75 L 257.875,79.40625 L 255.9375,75.875 L 255.34375,72.375 L 246.75,63.96875 L 245.78125,62.03125 L 243.625,62.21875 L 241.9375,61.5 z ", "name" : "Seine Maritime"}, "fr-77" : {"path": "M 307.5,116.5 L 306.3125,117.09375 L 304.375,118.65625 L 302.4375,118.0625 L 299.09375,119.4375 L 296.375,117.875 L 295.1875,119.4375 L 293.4375,119.625 L 292.25,118.65625 L 290.3125,117.5 L 287.96875,119.0625 L 287.875,118.96875 L 287.03125,124.375 L 288.1875,131.25 L 288.1875,135.84375 L 286.65625,139.6875 L 287.03125,142.34375 L 285.3125,143.6875 L 286.25,148.875 L 285.5,150 L 284.9375,155.1875 L 286.25,156.90625 L 281.875,159.78125 L 281.875,163.71875 L 283.09375,165.53125 L 285.4375,166.71875 L 285.625,170.03125 L 282.5,172.1875 L 284.25,173.75 L 286.40625,172.375 L 291.6875,172.5625 L 293.625,172.1875 L 294.21875,170.625 L 296.375,170.8125 L 296.75,172.375 L 301.625,169.625 L 303.40625,167.5 L 305.75,164.75 L 304.1875,163 L 305.5625,160.0625 L 309.0625,158.3125 L 316.6875,158.6875 L 318.4375,157.34375 L 318.59375,157.5 L 319.03125,154.21875 L 319.8125,150.3125 L 321.1875,148.53125 L 321.375,146.1875 L 324.09375,145.03125 L 324.09375,143.46875 L 321.1875,143.65625 L 320.59375,142.28125 L 321.5625,140.53125 L 320.78125,137.59375 L 319.21875,136.625 L 319.625,133.90625 L 321.1875,132.90625 L 320.96875,131.75 L 321.53125,131.0625 L 318.25,130.375 L 317.25,128.03125 L 315.5,127.4375 L 310.25,122.375 L 309.65625,118.0625 L 307.5,116.5 z ", "name" : "Seine et Marne"}, "fr-78" : {"path": "M 251.5,118.15625 L 251.4375,118.28125 L 245.96875,119.84375 L 245.1875,120.8125 L 246.1875,122.375 L 246.1875,123.9375 L 247.9375,124.3125 L 246.9375,125.3125 L 247.03125,126.1875 L 247.15625,126.09375 L 249.09375,128.03125 L 249.6875,130.375 L 251.25,131.9375 L 250.46875,134.09375 L 250.46875,136.03125 L 251.84375,137.59375 L 250.46875,139.9375 L 251.84375,143.28125 L 254.5625,145.21875 L 254.96875,147.375 L 257.3125,147.75 L 257.875,152.0625 L 259.65625,154.21875 L 262.8125,154.8125 L 263.28125,151.71875 L 264.625,150.1875 L 263.5,148.46875 L 266.34375,148.46875 L 268.28125,145.8125 L 266.9375,143.5 L 267.3125,141.40625 L 270.1875,140.0625 L 270.5625,137.9375 L 272.46875,137.1875 L 274.21875,136.40625 L 274.5625,136.625 L 274.5625,136.40625 L 272.8125,134.4375 L 271.71875,131.46875 L 273.46875,127.65625 L 272.59375,124.78125 L 269.1875,122.71875 L 264.375,122.5 L 259.875,119.625 L 256.25,120.28125 L 251.5,118.15625 z ", "name" : "Yvelines"}, "fr-79" : {"path": "M 181.71875,229.40625 L 176.4375,229.59375 L 171.5625,230.5625 L 166.28125,230.96875 L 166.28125,233.6875 L 163.5625,235.46875 L 157.5,234.09375 L 153.40625,235.84375 L 155.34375,238.59375 L 155.34375,240.9375 L 160.03125,244.84375 L 158.875,247.375 L 162,250.875 L 160.625,252.65625 L 162.5625,255.5625 L 163.15625,261.03125 L 162,262.59375 L 163.375,264.9375 L 162,267.5 L 162.1875,269.0625 L 163.75,267.875 L 165.6875,269.84375 L 162.96875,271.59375 L 162,272.75 L 159.84375,273.34375 L 157.3125,274.53125 L 157.125,274.375 L 157.21875,277.25 L 159.34375,279.5625 L 159.34375,280.84375 L 162.53125,283.1875 L 166.5625,283.40625 L 169.3125,287 L 173.78125,286.59375 L 177.40625,289.125 L 180.15625,290.40625 L 180.59375,292.53125 L 182.125,294 L 183.96875,292.96875 L 183.5625,291.90625 L 185.03125,290.1875 L 185.03125,288.71875 L 187.59375,288.0625 L 191,286.375 L 194.59375,285.75 L 195.25,283.8125 L 192.25,282.96875 L 190.78125,280.625 L 191.84375,278.09375 L 193.125,276.59375 L 193.125,273.40625 L 191.84375,272.5625 L 190.15625,273.40625 L 190.15625,274.46875 L 189.28125,275.75 L 187.59375,273.84375 L 187.375,272.5625 L 188.03125,271.09375 L 186.53125,270.03125 L 186.53125,265.5625 L 185.6875,265.34375 L 185.6875,263.84375 L 186.96875,261.71875 L 187.15625,260.65625 L 188.03125,258.34375 L 187.375,256.84375 L 185.25,256 L 187.375,252.8125 L 188.03125,251.125 L 188.03125,250.0625 L 186.53125,248.34375 L 186.53125,247.71875 L 187.375,246.21875 L 186.75,245.15625 L 188.03125,243.6875 L 186.96875,241.34375 L 186.3125,237.9375 L 186.09375,235.8125 L 184.40625,236.03125 L 184.09375,231.21875 L 183.6875,231.9375 L 182.3125,230.78125 L 181.71875,229.40625 z ", "name" : "Deux Sèvres"}, "fr-80" : {"path": "M 249.78125,44.5 L 249.25,50.9375 L 253.5625,54.84375 L 253.5625,56.8125 L 248.28125,53.6875 L 241.9375,61.5 L 243.625,62.21875 L 245.78125,62.03125 L 246.75,63.96875 L 255.34375,72.375 L 255.9375,75.875 L 257.875,79.40625 L 257.21875,80.21875 L 259.6875,80.21875 L 260.09375,80.8125 L 260.09375,82.96875 L 261.28125,83.78125 L 263.84375,82.78125 L 267.4375,82.78125 L 269.21875,84.15625 L 275.9375,83.5625 L 280.90625,84.96875 L 283.6875,87.75 L 287.25,88.125 L 290.8125,89.3125 L 295.1875,85.15625 L 300.34375,83.78125 L 303.125,84.15625 L 307.25,83.75 L 306.875,81.59375 L 305.90625,77.625 L 305.5,75.25 L 307.28125,73.25 L 307.28125,70.6875 L 309.84375,67.90625 L 309.375,65.15625 L 307.875,64.75 L 306.125,63 L 301.4375,63 L 298.5,64.5625 L 298.5,63.1875 L 297.75,61.8125 L 295.96875,62.59375 L 293.8125,63.78125 L 295,62.03125 L 294.8125,60.46875 L 292.25,58.6875 L 292.25,60.65625 L 290.5,60.65625 L 286.40625,59.28125 L 284.65625,57.90625 L 282.875,59.09375 L 282.3125,60.65625 L 281.53125,60.84375 L 280.5625,59.875 L 280.5625,57.125 L 283.46875,55.1875 L 282.3125,53.21875 L 279.96875,54.21875 L 278.78125,53.21875 L 273.90625,53.8125 L 271.375,54.78125 L 268.8125,53.8125 L 268.8125,51.875 L 265.3125,50.3125 L 264.34375,47.96875 L 262.96875,48.53125 L 259.25,45.625 L 257.5,45.03125 L 256.125,46.78125 L 253.78125,47.375 L 252.8125,45.21875 L 249.78125,44.5 z ", "name" : "Somme"}, "fr-81" : {"path": "M 270.8125,396.875 L 267.4375,397.0625 L 265.15625,399.34375 L 264.4375,397.75 L 262.84375,398.65625 L 262.6875,398.28125 L 261.78125,399.1875 L 258.96875,400.25 L 256.65625,401.65625 L 250.65625,402.375 L 249.9375,405.375 L 252.25,405.375 L 249.9375,407.5 L 248.875,409.4375 L 245.53125,409.4375 L 247.28125,411.375 L 246.28125,413.03125 L 246.59375,413.15625 L 247.46875,415.78125 L 249.59375,418.28125 L 250.125,418.625 L 250.28125,421.09375 L 252.0625,423.9375 L 253.46875,425.53125 L 253.46875,427.46875 L 252.0625,428 L 253.125,429.59375 L 257.71875,431.53125 L 258.59375,432.78125 L 260.90625,435.59375 L 263.5625,436.3125 L 265.6875,435.9375 L 265.6875,438.4375 L 265.625,439.71875 L 266.78125,439.5625 L 266.5,440.9375 L 270.375,440.9375 L 273.96875,442.0625 L 274.25,438.46875 L 275.90625,438.46875 L 281.96875,439.5625 L 287.78125,439.5625 L 292.1875,438.1875 L 293.3125,434.59375 L 290.28125,431.8125 L 291.09375,429.0625 L 292.75,426.59375 L 295.5,428.5 L 302.6875,426.03125 L 303.8125,423.8125 L 300.15625,421.46875 L 298.5625,421.09375 L 297.5,422.5 L 295.375,423.03125 L 292,421.28125 L 288.46875,416.6875 L 288.46875,414.75 L 286.53125,411.1875 L 286.71875,409.59375 L 285.125,405.53125 L 282.125,404.125 L 280,400.40625 L 274.15625,399.34375 L 270.8125,396.875 z ", "name" : "Tarn"}, "fr-82" : {"path": "M 220.1875,384.6875 L 218.8125,389.15625 L 220.96875,391.5 L 220,395.21875 L 218.8125,396.59375 L 219.625,398.9375 L 215.90625,399.71875 L 212.96875,400.5 L 213.75,403.21875 L 212.28125,403.65625 L 213.15625,404.46875 L 216,404.46875 L 217.40625,403.78125 L 218.65625,404.46875 L 216.34375,405.53125 L 216.34375,407.3125 L 214.21875,408.90625 L 214.21875,411.1875 L 218.125,411.375 L 219.34375,412.625 L 219.34375,415.09375 L 220.78125,416.5 L 219.53125,418.4375 L 220.0625,419.5 L 222.53125,418.4375 L 227.65625,418.4375 L 229.09375,417.5625 L 230.84375,417.5625 L 232.78125,419.875 L 237.21875,418.625 L 238.4375,416.6875 L 236.6875,415.78125 L 237.90625,415.28125 L 238.28125,413.5 L 240.21875,413.6875 L 241.28125,414.90625 L 242.15625,413.5 L 245,412.4375 L 246.28125,413.03125 L 247.28125,411.375 L 245.53125,409.4375 L 248.875,409.4375 L 249.9375,407.5 L 252.25,405.375 L 249.9375,405.375 L 250.65625,402.375 L 256.65625,401.65625 L 258.96875,400.25 L 261.78125,399.1875 L 262.6875,398.28125 L 261.59375,395.46875 L 263.1875,392.28125 L 260.375,392.09375 L 260.03125,387.6875 L 255.78125,389.625 L 252.9375,388.9375 L 251.1875,391.0625 L 248.1875,390.6875 L 247.65625,394.21875 L 246.21875,394.21875 L 245.34375,392.28125 L 244.8125,391.40625 L 243.21875,391.5625 L 240.21875,394.75 L 236.5,394.59375 L 235.96875,392.28125 L 235.96875,390.53125 L 235.625,390.15625 L 234.375,391.5625 L 232.78125,391.5625 L 231.03125,389.625 L 229.4375,389.625 L 228.375,387.5 L 229.78125,385.90625 L 229.625,384.875 L 227.125,384.96875 L 227.4375,385.65625 L 223.125,386.4375 L 220.1875,384.6875 z ", "name" : "Tarn et Garonne"}, "fr-83" : {"path": "M 457.78125,413.1875 L 454.8125,413.3125 L 453.40625,414.75 L 448.09375,414.5625 L 443.5,417.90625 L 440.34375,415.78125 L 435.375,417.375 L 434.5,419.15625 L 430.96875,421.8125 L 424.59375,417.5625 L 419.4375,419.25 L 419.1875,420.625 L 419.28125,420.5625 L 422.46875,422.6875 L 418.21875,425.53125 L 416.46875,429.0625 L 418.59375,430.8125 L 418.40625,434.53125 L 421.78125,437.71875 L 420.875,438.4375 L 417,438.25 L 417,439.65625 L 418.75,440.53125 L 418.75,441.0625 L 417.15625,442.5 L 418.0625,443.5625 L 419.46875,443.5625 L 420.875,444.96875 L 421.0625,446.03125 L 419.28125,447.09375 L 417.875,448.6875 L 417.6875,452.5625 L 418.21875,453.28125 L 421.71875,454.84375 L 422.6875,458.75 L 424.84375,459.15625 L 426.8125,457.78125 L 430.3125,455.625 L 436.375,456.21875 L 436.1875,457.78125 L 434.21875,458.75 L 438.90625,458.96875 L 437.75,457.78125 L 437.34375,455.25 L 439.875,453.5 L 442.8125,454.46875 L 444,454.84375 L 444.96875,456.03125 L 446.34375,455.0625 L 446.71875,452.5 L 448.28125,451.15625 L 452.375,451.15625 L 453.5625,449.375 L 456.28125,450.15625 L 459.40625,448.8125 L 459.40625,443.71875 L 455.3125,443.90625 L 458.4375,441.96875 L 460,439.8125 L 460.40625,436.6875 L 466.0625,435.90625 L 469.21875,432.375 L 467.03125,430.125 L 467.03125,428.875 L 465.96875,427.8125 L 467.375,426.59375 L 467.03125,424.625 L 464.71875,423.75 L 463.5,423.75 L 461.375,421.625 L 461,417.90625 L 458.71875,416.84375 L 456.40625,416.6875 L 455.53125,414.5625 L 457.78125,413.1875 z ", "name" : "Var"}, "fr-84" : {"path": "M 387,381.34375 L 384.25,381.5625 L 382.125,384.875 L 382.6875,388.375 L 386,388.78125 L 385.4375,390.34375 L 382.875,390.53125 L 379.96875,393.46875 L 379.1875,392.5 L 379.75,388.59375 L 378.59375,387.21875 L 373.3125,388 L 372.28125,390.09375 L 372.84375,390.40625 L 376.15625,395.90625 L 376.15625,400.34375 L 381.96875,406.125 L 381.96875,408.625 L 379.71875,409.90625 L 379.875,409.96875 L 386.9375,412.96875 L 389.9375,416.3125 L 391.375,418.28125 L 395.25,420.03125 L 399.84375,419.875 L 407.4375,423.03125 L 411.6875,423.5625 L 417,422.34375 L 419.1875,420.625 L 419.46875,419.15625 L 415.40625,414.5625 L 410.96875,414.5625 L 410.96875,412.96875 L 412.5625,411.1875 L 412.5625,409.25 L 409.03125,407.5 L 408.6875,404.65625 L 410.625,403.78125 L 410.625,401.3125 L 408.5,400.9375 L 408.34375,398.28125 L 408.3125,398.09375 L 406.53125,397.96875 L 403.59375,395.8125 L 402.8125,393.28125 L 397.34375,392.875 L 393.25,392.5 L 392.84375,390.15625 L 394.21875,387.21875 L 391.6875,389.375 L 387.78125,388.96875 L 387,387.59375 L 389.71875,383.90625 L 387,381.34375 z ", "name" : "Vaucluse"}, "fr-85" : {"path": "M 138.53125,229.5625 L 137.40625,231.65625 L 134.1875,231.65625 L 135.46875,232.96875 L 134.5,236.1875 L 131.59375,237.15625 L 130.46875,236.34375 L 130.96875,233.125 L 130.15625,231.34375 L 128.375,231.34375 L 127.09375,232.78125 L 127.71875,237.3125 L 129.1875,239.40625 L 127.71875,241.03125 L 125,240.53125 L 120.96875,239.5625 L 119.84375,236.5 L 117.25,236.1875 L 113.875,234.71875 L 113.0625,232.78125 L 109.375,230.375 L 103.5625,237.875 L 103.375,242.5625 L 109.40625,248.40625 L 109.21875,250.15625 L 110.96875,250.15625 L 114.6875,261.3125 L 118.59375,263.25 L 122.5,267.15625 L 127,267.15625 L 128.75,271.0625 L 133.0625,271.0625 L 135,274 L 139.3125,276.15625 L 139.5,273.40625 L 140.59375,274.4375 L 146.5625,270.8125 L 149.3125,270.625 L 150.46875,273.75 L 154.1875,272.1875 L 157.3125,274.53125 L 159.84375,273.34375 L 162,272.75 L 162.96875,271.59375 L 165.6875,269.84375 L 163.75,267.875 L 162.1875,269.0625 L 162,267.5 L 163.375,264.9375 L 162,262.59375 L 163.15625,261.03125 L 162.5625,255.5625 L 160.625,252.65625 L 162,250.875 L 158.875,247.375 L 160.03125,244.84375 L 155.34375,240.9375 L 155.34375,238.59375 L 153.40625,235.84375 L 153.78125,235.6875 L 151.125,233.4375 L 146.125,233.4375 L 144.5,232.46875 L 142.25,232.15625 L 139.65625,229.71875 L 138.53125,229.5625 z ", "name" : "Vendée"}, "fr-86" : {"path": "M 188.75,225.6875 L 185.03125,229.59375 L 184.09375,231.21875 L 184.40625,236.03125 L 186.09375,235.8125 L 186.3125,237.9375 L 186.96875,241.34375 L 188.03125,243.6875 L 186.75,245.15625 L 187.375,246.21875 L 186.53125,247.71875 L 186.53125,248.34375 L 188.03125,250.0625 L 188.03125,251.125 L 187.375,252.8125 L 185.25,256 L 187.375,256.84375 L 188.03125,258.34375 L 187.15625,260.65625 L 186.96875,261.71875 L 185.6875,263.84375 L 185.6875,265.34375 L 186.53125,265.5625 L 186.53125,270.03125 L 188.03125,271.09375 L 187.375,272.5625 L 187.59375,273.84375 L 189.28125,275.75 L 190.15625,274.46875 L 190.15625,273.40625 L 191.84375,272.5625 L 193.125,273.40625 L 193.125,276.59375 L 191.84375,278.09375 L 190.78125,280.625 L 192.25,282.96875 L 195.25,283.8125 L 194.59375,285.75 L 191.8125,286.21875 L 194.375,289.34375 L 197.78125,289.125 L 200.75,288.0625 L 203.75,289.78125 L 204.8125,288.9375 L 204.59375,286.15625 L 206.28125,284.875 L 207.78125,287.4375 L 209.03125,288.71875 L 212.65625,287.21875 L 214.15625,285.53125 L 217.53125,285.53125 L 219.28125,286.40625 L 219.40625,282.71875 L 218.0625,281.15625 L 219.625,280 L 222.15625,277.0625 L 226.4375,276.875 L 226.4375,274.53125 L 228.59375,272.75 L 233.875,271.78125 L 234.25,268.84375 L 232.125,267.6875 L 230.9375,263.59375 L 227.8125,263.1875 L 225.875,261.25 L 222.15625,258.3125 L 222.9375,255.96875 L 222.9375,252.25 L 219.40625,248.75 L 219.03125,246 L 215.6875,242.5 L 214.53125,237.8125 L 213.15625,237.21875 L 211.59375,235.0625 L 210.03125,236.03125 L 210.4375,238.1875 L 205.34375,239.375 L 199.5,239.375 L 199.6875,237.03125 L 199.6875,233.3125 L 195,231.9375 L 195,229.59375 L 191.28125,228.8125 L 190.5,225.6875 L 188.75,225.6875 z ", "name" : "Vienne"}, "fr-87" : {"path": "M 239.53125,270.8125 L 237.78125,272.5625 L 232.875,272.1875 L 232.3125,272.0625 L 228.59375,272.75 L 226.4375,274.53125 L 226.4375,276.875 L 222.15625,277.0625 L 219.625,280 L 218.0625,281.15625 L 219.40625,282.71875 L 219.21875,288 L 218.25,289.75 L 219.8125,291.5 L 222.53125,291.71875 L 223.125,294.4375 L 223.3125,296.1875 L 219.8125,296.96875 L 218.0625,297.5625 L 218.4375,302.4375 L 216.09375,304 L 214.125,304.59375 L 213.15625,307.34375 L 211.59375,307.53125 L 210.9375,310.5 L 215.5,310.65625 L 216.5,312.59375 L 215.6875,314.75 L 217.46875,317.09375 L 218.8125,316.71875 L 220.1875,314.75 L 226.4375,315.34375 L 227.4375,319.25 L 231.71875,319.84375 L 232.6875,321.1875 L 229.75,322.5625 L 231.125,323.53125 L 235.25,324.125 L 235.5625,324.90625 L 236.65625,322.6875 L 239,323.5625 L 241.5625,320.375 L 243.03125,320.5625 L 244.3125,318.4375 L 248.125,318.875 L 249.625,317.375 L 251.53125,317.375 L 253.03125,314.625 L 255.34375,314.40625 L 256.84375,311.875 L 258.96875,312.5 L 260.46875,312.5 L 261.46875,310.78125 L 260.46875,310.15625 L 260.03125,307.625 L 261.53125,307.625 L 261.53125,306.5625 L 258.96875,304.84375 L 256.21875,303.59375 L 256.625,301.03125 L 255.78125,301.03125 L 254.71875,302.53125 L 251.3125,302.71875 L 249.40625,302.53125 L 249.40625,300.59375 L 251.75,298.6875 L 250.25,296.78125 L 246.65625,297.84375 L 247.28125,289.78125 L 245.59375,288.0625 L 243.875,283.8125 L 241.34375,283.1875 L 240.90625,280.84375 L 243.25,276.1875 L 243.1875,273.3125 L 242.65625,273.9375 L 239.53125,270.8125 z ", "name" : "Haute Vienne"}, "fr-88" : {"path": "M 459,145.9375 L 457,146.375 L 453.9375,147.53125 L 452.40625,149.4375 L 450.6875,150.59375 L 447.40625,152.125 L 446.46875,151.9375 L 444.15625,151.34375 L 441.875,151.15625 L 441.09375,148.65625 L 439.5625,149.25 L 439.375,151.9375 L 438.21875,150.78125 L 436.125,152.3125 L 434.03125,153.0625 L 431.53125,152.875 L 429.8125,153.46875 L 427.90625,152.3125 L 426.75,153.25 L 423.875,153.25 L 422.53125,155.75 L 416.21875,156.125 L 414.875,154.40625 L 412.78125,154.03125 L 412.96875,153.0625 L 414.3125,152.125 L 413.15625,151.71875 L 412.96875,148.65625 L 410.09375,148.46875 L 408.40625,149 L 407.21875,150.59375 L 404.15625,151.53125 L 404.15625,150.40625 L 403.21875,150.40625 L 403.21875,151.71875 L 399.375,152.5 L 399.375,154.21875 L 395.9375,154.65625 L 394.625,155.96875 L 395.96875,157.90625 L 399.09375,158.125 L 401.84375,161.8125 L 404.1875,161.8125 L 404.75,164.375 L 407.3125,164.75 L 407.875,166.5 L 406.125,167.6875 L 404.96875,172.96875 L 410.4375,175.6875 L 410.4375,179.78125 L 412.5625,179 L 414.34375,180.40625 L 415.6875,179.59375 L 414.9375,178.4375 L 415.90625,177.84375 L 417.25,179.40625 L 419.21875,178.03125 L 419.8125,176.09375 L 423.5,175.5 L 424.5,176.28125 L 424.3125,178.4375 L 426.84375,180.375 L 428.40625,180.1875 L 430.15625,178.8125 L 434.25,178.8125 L 437.1875,182.125 L 438.15625,182.125 L 439.71875,181.15625 L 439.9375,180 L 441.5,179.21875 L 443.25,180.375 L 445,182.34375 L 451.15625,185.59375 L 453.59375,183.5 L 453.78125,175.875 L 457.125,172.96875 L 459.0625,168.46875 L 458.46875,165.53125 L 460.8125,160.84375 L 462.96875,155.96875 L 459.25,155 L 458.46875,149.71875 L 459.25,146.1875 L 459,145.9375 z ", "name" : "Vosges"}, "fr-89" : {"path": "M 318.4375,157.34375 L 316.6875,158.6875 L 309.0625,158.3125 L 305.5625,160.0625 L 304.1875,163 L 305.75,164.75 L 303.40625,167.5 L 301.625,169.625 L 305.15625,172.96875 L 306.125,176.09375 L 308.6875,178.8125 L 308.6875,182.34375 L 303.59375,186.625 L 305.34375,188.59375 L 304.96875,191.5 L 302.21875,193.46875 L 298.3125,193.46875 L 298.90625,195.625 L 301.4375,199.125 L 302.03125,202.25 L 302.625,204.40625 L 301.46875,204.75 L 303.9375,205.3125 L 305.78125,205.3125 L 306.75,203.78125 L 308,203.78125 L 309.40625,205.03125 L 309.125,206.59375 L 310.40625,207.4375 L 312.21875,207.4375 L 314.75,209.125 L 315.875,208.5625 L 317,209.53125 L 318.125,209.25 L 320.0625,208 L 321.90625,208.5625 L 323.15625,208.28125 L 323.15625,204.78125 L 323.84375,204.90625 L 324.28125,206.71875 L 326.53125,208.125 L 326.53125,210.25 L 329.75,210.375 L 333.96875,214.3125 L 336.625,214.4375 L 336.46875,213.1875 L 337.59375,211.5 L 338.59375,212.75 L 337.75,214.15625 L 338.15625,215.4375 L 339.6875,214.4375 L 341.53125,214.4375 L 341.375,217.25 L 343.0625,218.375 L 344.34375,217.8125 L 347.46875,215.6875 L 347.28125,215.28125 L 345.4375,214.15625 L 345.3125,212.1875 L 347.28125,211.21875 L 348.125,210.09375 L 347.5625,209.125 L 347.5625,206.875 L 349.09375,204.625 L 351.34375,199.84375 L 351.75,197.75 L 353.15625,197.1875 L 353.3125,196.78125 L 352.59375,196.21875 L 352.59375,194.53125 L 354.84375,192.84375 L 355.40625,190.03125 L 354.4375,188.375 L 352.875,188.375 L 352.46875,187.9375 L 352.46875,185.5625 L 354.4375,184.15625 L 354.28125,182.75 L 354,181.34375 L 353,183.5 L 351.625,183.3125 L 350.46875,181.15625 L 346.5625,183.125 L 338.75,182.71875 L 337.78125,180.5625 L 335.625,177.65625 L 335.25,174.125 L 332.125,170.40625 L 330.15625,171.78125 L 326.625,169.0625 L 327.21875,163.78125 L 322.15625,158.5 L 319.8125,158.5 L 318.4375,157.34375 z ", "name" : "Yonne"}, "fr-90" : {"path": "M 451.4375,186.03125 L 449.625,186.96875 L 448.09375,188.09375 L 448.09375,190.59375 L 448.9375,193.5625 L 448.9375,195.5 L 448.46875,198.625 L 447.40625,199.71875 L 459.4375,205.15625 L 460.1875,204.28125 L 462.78125,203.875 L 461.8125,199.71875 L 461.21875,197.5625 L 458.46875,197.96875 L 458.09375,195.625 L 459.0625,193.84375 L 459.25,191.5 L 458.6875,190.15625 L 455.15625,187.40625 L 452.03125,187.21875 L 451.4375,186.03125 z ", "name" : "Territoire de Belfort"}, "fr-91" : {"path": "M 274.21875,136.40625 L 272.46875,137.1875 L 270.5625,137.9375 L 270.1875,140.0625 L 267.3125,141.40625 L 266.9375,143.5 L 268.28125,145.8125 L 266.34375,148.46875 L 263.5,148.46875 L 264.625,150.1875 L 263.28125,151.71875 L 262.8125,154.8125 L 263.75,155 L 264.125,157.53125 L 264.53125,158.125 L 264.9375,163.375 L 271.1875,162.8125 L 273.71875,160.46875 L 275.875,162.21875 L 281.125,162.59375 L 281.875,163.71875 L 281.875,159.78125 L 286.25,156.90625 L 284.9375,155.1875 L 285.5,150 L 286.25,148.875 L 285.3125,143.6875 L 287.03125,142.34375 L 286.6875,139.90625 L 284.53125,138.90625 L 280.90625,138.90625 L 278.8125,137.75 L 277.28125,138.53125 L 274.21875,136.40625 z ", "name" : "Essonne"}, "fr-92" : {"path": "M 277.3125,125.78125 L 273.8125,127.65625 L 273.4375,127.71875 L 271.71875,131.46875 L 272.8125,134.4375 L 274.5625,136.40625 L 274.5625,136.625 L 277.28125,138.53125 L 277.9375,138.1875 L 277.4375,137.25 L 277.9375,135.78125 L 277.625,135.25 L 277.96875,134.03125 L 277.90625,134.03125 L 276,133.0625 L 274.4375,132.625 L 274.21875,131.9375 L 274.1875,131.34375 L 275.125,130.28125 L 276.15625,130.21875 L 276.625,129.59375 L 277.75,129.09375 L 277.375,128.1875 L 277.90625,128.09375 L 278.3125,127.21875 L 277.90625,126.59375 L 277.46875,126.5 L 277.3125,125.78125 z ", "name" : "Hauts de Seine"}, "fr-93" : {"path": "M 287.28125,122.8125 L 285.4375,124.125 L 282.5625,125.4375 L 277.3125,125.78125 L 277.46875,126.5 L 277.90625,126.59375 L 278.3125,127.21875 L 277.90625,128.09375 L 277.375,128.1875 L 277.75,129.09375 L 280.28125,129.0625 L 281.09375,130.3125 L 281.25,132.0625 L 282.125,131.9375 L 282.9375,131.28125 L 284.15625,131.34375 L 285.6875,132.21875 L 286.5625,133.1875 L 286.96875,133.375 L 287.21875,133.84375 L 288.1875,134.09375 L 288.1875,131.25 L 287.03125,124.375 L 287.28125,122.8125 z ", "name" : "Seine Saint-Denis"}, "fr-94" : {"path": "M 282.9375,131.28125 L 282.125,131.9375 L 281.3125,132.0625 L 281.25,132.5 L 281.09375,132.90625 L 281.5,132.90625 L 281.71875,132.71875 L 281.625,132.40625 L 282.875,132.34375 L 283.1875,132.46875 L 283.1875,133.125 L 282.875,133.78125 L 281.0625,133.53125 L 280.78125,133.28125 L 279.9375,133.875 L 279.125,134.09375 L 277.96875,134.03125 L 277.625,135.25 L 277.9375,135.78125 L 277.4375,137.25 L 277.9375,138.1875 L 278.8125,137.75 L 280.90625,138.90625 L 284.53125,138.90625 L 286.6875,139.90625 L 286.65625,139.6875 L 288.1875,135.84375 L 288.1875,134.09375 L 287.21875,133.84375 L 286.96875,133.375 L 286.5625,133.1875 L 285.6875,132.21875 L 284.15625,131.34375 L 282.9375,131.28125 z ", "name" : "Val de Marne"}, "fr-95" : {"path": "M 255.5625,109.6875 L 254,111.625 L 252.8125,115.9375 L 251.5,118.15625 L 256.25,120.28125 L 259.875,119.625 L 264.375,122.5 L 269.1875,122.71875 L 272.59375,124.78125 L 273.46875,127.65625 L 273.4375,127.71875 L 273.8125,127.65625 L 277.3125,125.78125 L 282.5625,125.4375 L 285.4375,124.125 L 287.28125,122.8125 L 287.875,118.96875 L 286.59375,117.6875 L 282.3125,115.15625 L 278.1875,113 L 276.0625,113.96875 L 273.71875,114.5625 L 272.15625,113.375 L 269.03125,111.4375 L 266.5,113.375 L 262.78125,113.78125 L 257.5,113.375 L 256.3125,111.4375 L 255.5625,109.6875 z ", "name" : "Val d'Oise"}}});
\ No newline at end of file
diff --git a/js/vmap/dist/maps/jquery.vmap.germany.js b/js/vmap/dist/maps/jquery.vmap.germany.js
new file mode 100644 (file)
index 0000000..6e60125
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add Germany Map Data Points */
+jQuery.fn.vectorMap('addMap', 'germany_en', {"width":592,"height":801,"paths":{"th":{"path":"m312.19,352.19c-2.73,0.22 -2.22,4.11 -3.64,5.97 -1.01,2.7 -4.71,2.26 -7.13,2.91 -2.52,0.84 -2.65,-2.93 -5,-3.11 -2.02,-1.67 -5.36,0.2 -4.98,2.55 -0.62,4.82 -6.22,6.91 -9.72,9.65 -2.98,3.28 -7.8,2.07 -11.1,4.73 -2.55,1.59 -5.81,3.14 -7.87,5.03 0.64,3.74 1.96,8.43 6.44,8.84 3.41,0.33 2.07,4.91 5.71,5.17 2.12,1.11 4.61,1.57 6.04,3.67 2.61,-0.18 1.95,2.83 0.13,3.41 -0.75,1.55 1.21,2.98 -0.06,4.88 -2.65,1.33 -1.59,-4.91 -4.58,-2.96 -2.15,1.14 2.24,4.28 1.18,6.62 -0.73,2.87 3.35,2.38 3.93,4.97 0.22,2.4 -1.82,4.2 -4.4,4.04 -1.89,0.05 -3.04,-2.14 -5.19,-1.69 -2.29,-1.13 -3.6,1.4 -2.29,3.19 0.92,3.27 2.06,6.86 1.64,10.24 -1.04,2.07 -1.35,6.09 -4.56,5.07 -2.5,-0.54 -3.05,2.78 -2.17,4.43 0.33,2.11 -1.94,1.58 -0.64,3.71 0.2,3.37 -2.96,5.74 -4.05,8.57 -1.46,3 3.1,3.73 4.61,2.61 -1.8,-1.67 -0.95,-4.04 1.83,-4.18 2.21,-0.46 5.52,-0.43 5.9,2.47 2.29,2.61 -2.68,2.96 -1.96,5.59 0.5,1.86 -0.79,8.31 0.95,7 1.72,-3.38 5.8,-2.18 8.88,-2.88 2.69,0.85 3.11,5.24 6.43,5.5 3.89,0.66 4.77,4.88 6.09,7.93 -0.55,3.14 2.45,3.82 4.54,1.98 0.31,5.02 5.89,6.45 10.06,7.19 -0.2,3.63 -1.27,7.43 0.53,10.84 2.35,0.1 5.18,2.71 7.07,1.85 0.03,-1.3 -1.32,-4.82 1.27,-4.26 2.07,-0.06 5.3,2.5 6.66,0.25 0.29,-2.71 -3.43,-1.58 -4.54,-3.52 -1.94,-1.64 -5.47,-2.54 -4.67,-5.79 -0.91,-3.55 3.89,-3.37 6.02,-4.77 2.87,-1.54 6.27,-0.65 9.38,-0.79 1.61,1.84 2.4,4.9 5.49,4.49 2.33,1.02 3.21,-1.38 4.71,-2.1 2.52,-0.39 4.79,2.85 4.64,5.17 -2.32,0.34 -2,2.87 -0.04,3.79 1.25,1.09 4.62,-1.62 5.78,-2.97 1.07,-2.95 1.98,-5.92 0.84,-9.01 0.33,-2.69 -1.49,-4.1 -2.06,-6.05 -0.35,-1.26 0.15,-3.52 1.89,-2.72 2.51,-0.54 3.16,-3.11 5.03,-4.31 2.41,-0.31 6.41,-0.25 6.75,2.81 -1.09,1.47 -1.71,2.75 -1.31,4.94 2.04,1.91 4.67,0.65 4.88,4.5 0.54,1.96 3.79,3.19 4.05,0.56 1.06,-1.74 3.34,-0.66 4.25,0.63 6.13,-1.07 12.67,-0.94 18.25,-3.97 -1.68,-0.65 -2.19,-2.46 -0.38,-3.31 1.4,-0.73 5.24,-2.7 2.32,-4.13 -1.1,-2.24 -4.24,-0.26 -4.55,-3.08 -1.3,-2.44 2.29,-4.28 3.11,-6.33 2.98,-0.71 2.97,-4.68 5.91,-5.31 1.95,1.54 1.58,4.54 1.16,6.72 1.66,-0.64 6.6,0.71 6.33,-0.74 -3.05,-0.17 -0.61,-3 1.2,-3.1 2.57,-1.22 5.33,-2.23 7.87,-3.14 1.72,-1.51 4.46,-4.54 0.25,-4.48 -1.74,-1.64 -3.31,-4.12 -3.69,-6.5 0.38,-2.82 0.28,-5.87 1.72,-8.41 0.89,2.58 5.82,0.77 5.81,-1.09 0.71,-1.83 4.18,-2.99 5.41,-0.97 2.56,-0.68 0.59,-4.69 3.44,-5.44 3.25,-1.87 7.85,-0.32 10.53,-2.97 -2.57,-1.55 -0.79,-6.34 -4.47,-6.16 -2.74,-0.84 -6.28,-2.6 -5.42,-6.03 0.8,-2.88 -3.5,-2.46 -5.15,-3.47 -2.87,-0.81 -6.3,-2.89 -8.61,0.02 -2.54,2.1 0.01,3.58 1.21,5.21 -0.17,3.21 -2.39,6.03 -3.68,8.9 -1.08,1.71 -2.42,1.35 -2.66,-0.64 -2.24,-4.02 -1.09,1.94 -3.66,-0.66 -2.71,-1.39 -5.95,-1.32 -8.59,0.19 -0.02,-4.6 -5.04,-6.77 -8.31,-9 -2.72,-0.06 -5.6,1.79 -8.33,0.1 -2.65,-0.52 -5.05,-1.27 -4.7,-4.45 -2.02,-1.11 -5.86,-2.21 -7.53,-1.16 -1.29,1.98 -3.84,1.06 -5.84,1.31 -1.81,-1.01 -2.04,-3.39 -2.5,-5.41 3.14,0.3 2.23,-3.59 0.51,-4.83 -1.37,-2.03 -4.15,0.89 -5.53,-1.6 -1.69,-0.96 1.02,-5.32 2.36,-2.94 1.62,-1.63 2.76,-3.73 4,-5.66 -0.78,-1.58 -4.12,-2.02 -3.47,-4.09 -2.15,-0.17 -2.01,-2.77 -1.75,-4.31 -4.91,-2.77 -10.54,-0.91 -15.84,-1.69 -2.69,-0.42 -5.41,-2.8 -8.03,-1.28 -1.99,0.45 -4.28,-1.52 -3.68,-3.5 0.86,-2.86 -0.76,-4.88 -2.35,-7.1 -1.55,-2.64 -4.98,-6.28 -2.16,-9.19 -2.47,-3.43 -7.17,-3.03 -10.89,-3.21 -0.41,0.09 -0.82,0.18 -1.23,0.27z m95.09,106.63c0.36,0.47 0.77,-0.65 0,0z","name":"Thüringen"},"sh":{"path":"m173.41,0.78c-1.96,2.02 -2.32,5.26 -3.72,7.72 0.61,-2.46 2.87,-3.44 4.94,-4.31 1.37,-2.31 1.87,-2.9 -1.22,-3.41z m-4.63,9.69c-1.37,3.14 -2.78,7.11 -2.63,10.16 1.42,-1.81 3.12,-2.33 4.66,-0.67 1.41,1.35 2.9,1.87 4.52,0.27 2.61,-1.53 -0.74,-0.41 -1.92,-1.16 -2.06,-1.81 -4.59,-3.55 -3.89,-6.71 -0.29,-0.68 0.25,-4.89 -0.73,-1.88z m16.78,8.5c-1.27,2.96 0.71,4.89 2.59,6.89 3.39,3 2.55,7.98 4.79,11.67 0.62,3.55 5.38,3.23 6.46,6.57 3.09,5.18 8.01,9.55 9.53,15.49 -0.32,3.65 -4.55,4.93 -6.72,7.41 -1.75,1.07 -3.73,2 -5.62,0.78 -2.44,0.59 -7.26,-0.45 -7.37,2.95 0.9,2.44 -1.97,3.88 -3.95,4.18 -1.94,-2.13 -2.52,-1.01 -2.77,1.45 -0.87,2.9 3.21,3.7 4.93,4.64 1.92,-3.3 6.38,-1.94 9.56,-2.06 2.21,2.21 1.18,5.9 0.57,8.61 -1.14,2.05 -2.44,4.23 -0.74,6.43 0.5,2.36 2.45,2.12 4.01,1.08 3.24,-0.45 3.19,4.26 4.78,6.16 2.07,2.16 -0.11,6.53 -3.11,5.16 -1.14,-1.75 -5.79,-1.46 -5.26,0.73 2.63,2.93 2.85,7.1 5.04,10.2 1.56,1.12 3.1,3.53 5.09,1.5 1.43,0.34 0.36,3.67 3.4,2.47 5.03,0.4 10.67,-0.76 14.8,2.92 4.21,3.5 4.64,9.55 8.23,13.45 3.79,1.81 5.25,6.01 5.59,9.84 1.82,3.22 5.7,4.78 8.7,6.74 2.98,1.76 2.45,-2.04 3.3,-3.87 0.32,-3.07 2.7,-3.68 2.95,-0.51 1.97,4.21 4.12,0.09 5.74,-1.98 1.13,-1.81 1.09,-3.61 3.84,-2.85 2.75,1.63 4.73,-1.94 6.94,-3.16 -0.04,-2.48 1.02,-3.47 3.73,-4.47 1.51,-1.18 4,-1.93 4.95,0.16 -0.92,3.02 -1.41,6.74 1.26,9.04 1.1,1.47 -0.59,3.76 -1.58,5.02 -3.72,1.55 -2.94,7.3 0.6,8.57 3.05,0.71 1.81,2.28 4.18,4.34 1.9,2.3 3.7,4.33 6.71,5.17 4.24,1.47 7.8,5.01 12.4,5.13 1.57,-2.96 0.71,-7.47 3.24,-9.94 1.76,-0.99 3.85,1.15 5.23,-1.34 4.78,-3.66 7.65,-9.11 11.5,-13.72 0.07,-2.89 2.79,-4.69 1.09,-7.69 -1.21,-2.36 -3.12,-1.39 -5.13,-1.38 -2.37,-1.11 -4.33,-3.37 -5.88,-5.25 0.57,-2.78 0.94,-5.55 -0.72,-8.01 -1.68,-4.33 3.4,-6.71 6.26,-8.75 2.76,0.39 4.62,-1.55 2.8,-4.28 -2.57,0.04 -0.18,-3.45 -2.47,-3.84 -2.6,1.03 -5.44,-0.16 -6.16,-2.94 -1.95,-2.52 -0.1,-5.31 2.05,-6.91 1.09,-2.74 3.32,0.44 5.2,-0.9 2.94,-4.13 6.93,-7.19 11.06,-10.05 2.63,-1.56 0.21,-5.06 0.5,-7.57 -0.21,-3.63 -1.2,-7.39 -0.01,-10.84 0.18,-2.96 -5.24,-0.47 -7.49,-1.07 -5.13,1.62 -7.3,9.04 -13.4,8.34 -3.13,0.69 -4.64,-2.86 -6.1,-4.84 -4.97,-2.87 -10.19,-5.54 -15.47,-7.76 -2.99,-1.52 -6.08,0.55 -8.5,2.13 -0.97,2.39 -2.38,4.59 -2.88,7.13 -1.56,-1.44 -3.01,-3.67 -0.84,-5.3 1.62,-1.77 -1.68,-4.84 0.9,-6.58 0.02,-1.27 -2.39,-3.21 -3.97,-2.94 -4.31,0.8 -8.65,1.68 -12.59,3.47 -2.43,1.23 -4.15,-0.86 -4.81,-2.94 1.24,-1.68 2.97,0.32 4.34,-1.22 3.92,-1.6 8.22,-4.79 7.48,-9.56 -0.08,-4.17 0.91,-8.43 -1.14,-12.32 -1.21,-3.12 -1.73,-8.59 -5.28,-9.18 -0.59,1.71 -1.3,5.52 -3.94,3.91 -3.94,-2.44 -5.62,-7.87 -10.62,-8.75 -2.4,-0.95 -5.92,-1.49 -2.94,-4.34 -2.83,-1.32 -4.46,2.91 -6.75,4.06 -1.81,0.77 -3.7,1.77 -5.55,1.1 -2.17,-0.1 -2.78,3.34 -5.32,2.53 -2.44,-0.17 -5.39,0.15 -5.47,-3.04 1.26,-2.25 -1.79,-2.35 -3.37,-3.29 -2.69,-1.82 -6.3,0.87 -8.88,-1.52 -3,-2.97 -8.01,-2.63 -12.09,-2.77 -2.73,-0.05 -5.94,1.35 -8.19,-0.63 -2.53,-0.79 -2.34,1.14 -3.28,2.91z M165.38,30.69c0.26,2.81 0.4,-8.09 0.17,-2.47 -0.06,0.82 -0.12,1.65 -0.17,2.47z m13.5,1.44c-2.38,0.11 -5.93,-0.19 -6.48,2.95 -0.84,2.31 2.84,2.19 4.01,3.33 2.08,0.12 5.59,1.6 6.02,-1.46 1.83,-2.49 -0.07,-5.86 -3.55,-4.82z m-11.97,6.41c-1.92,2.44 0.88,5.14 2.25,6.97 3.61,0.13 0.82,-1.45 -0.03,-3.16 -0.91,-0.75 -0.95,-5.89 -2.22,-3.81z M181.53,44c-3.16,2.07 3.2,-1.05 4.68,-0.94 3.57,-2.86 -4.04,0.86 -4.68,0.94z m-1.31,6.22c-3.19,-0.54 3.33,2.8 0.63,-0.13 -0.17,-0.12 -0.42,0.08 -0.63,0.13z m8.44,2.63c-1.5,0.95 -5.02,0.69 -5.3,2.69 0.04,2.05 2.12,3.65 4.01,2.44 0.45,-0.74 3.48,-5.42 1.28,-5.13z m142.28,2.25c-2.22,2.09 -3.42,5.93 -2.84,8.5 1.81,-1.93 6.45,-1.17 5.53,2.13 0.75,2.01 5.23,1.5 7.53,1.68 3.9,0.79 4.95,-0.34 2.64,-3.56 -1.78,-3.59 -4.09,-7.7 -8.61,-7.85 -1.38,-0.32 -3.03,-0.37 -4.25,-0.9z m-134.34,2.94c-1.42,2.56 1.08,4.09 3.5,3.69 1.95,-0.37 3.87,-2.9 3.63,-4.91 -2.37,-0.51 -4.91,-1.04 -6.76,0.98l-0.36,0.24z M140.06,88.88c-0.28,2.81 2.92,0.39 0,0z m48.13,13.38c-1.61,1.32 0.69,2.85 0.06,-0.03l-0.06,0.03z","name":"Schleswig-Holstein"},"st":{"path":"m367.5,207.72c-2.53,0.49 -2.68,6.11 -5.69,3.88 -1.54,-0.27 -2,4.74 -0.62,6.28 -1.83,0.03 -4.69,1.23 -5.84,3.45 -2.16,1.75 -5.06,2.95 -7.73,3.81 -1.55,-0.32 -3.98,0.25 -4.38,-1.66 -3.96,-2.32 -9.18,-1.22 -13.69,-1.78 -0.82,1.11 0.07,3.08 -1.73,3.89 -1.82,3.69 -6.1,1.61 -9.28,2.54 -2.64,-0.11 -4.45,1.7 -3.62,4.38 -0.45,3.07 1.59,5.83 2.38,8.76 4.58,2.95 6.91,8.32 9.22,13.03 -1.02,4.14 2.73,7.03 5,9.88 -2.35,-0.75 -6.67,0.93 -4.41,3.78 2.13,2.7 4,5.66 7.03,7.25 2.19,1.61 0.12,4.97 -2.22,4.59 -1.88,2.15 -0.66,5.73 1.52,7.3 1.12,1.37 4.12,3.9 1.64,5.39 -1.82,-0.07 -4.08,1.44 -3.31,3.44 0.85,1.22 3.42,-0.32 2.88,2 0.05,3.3 -3.89,4.53 -5.42,6.71 -0.9,2.3 0.67,6.76 -2.83,4.48 -2.5,-0.5 -4.36,0.86 -6.64,1.31 -3.5,0.14 -7.17,-0.75 -10.56,0.56 0.56,2.46 -2.44,4.29 -4.71,3.94 -2.29,1.2 4.79,4.03 4.2,5.21 -3.3,0.45 -2.03,3.05 0.01,3.98 1.13,2.32 -0.87,4.55 -2.86,5.36 -2.94,1.53 -1.17,5.3 -1.3,7.86 2.06,2.6 4.65,5.37 5.72,8.78 -0.64,2.04 0.85,6.26 3.56,4.75 3.65,0.5 8.21,-0.2 10.69,3.16 4.64,-2.48 0.38,1.08 -0.35,3.49 0.67,3.87 3.9,7.06 5.79,10.42 0.02,2.22 -1.14,5.56 1.78,6.09 2.2,-1.04 4.22,-0.48 6.44,0.45 5.84,2.46 12.54,-0.89 18.17,2.38 2.32,0.62 -0.45,4.34 2.28,4.54 1.79,0.31 -0.33,2.19 2.35,3 1.69,0.92 2.02,2.61 0.5,3.94 -1.45,1.35 -2.21,4.99 -4.56,4.59 -2.63,-0.91 0.09,3.99 2.28,1.66 2.83,0.66 5.62,4.8 3.25,7.41 -2.57,1.08 1.05,5.18 3.56,3.71 1.96,-0.79 2.91,-2.94 5.65,-1.43 2.6,0.08 6.05,0.91 5.78,4.15 1.33,1.52 4.58,2.03 6.72,2.37 2.49,-0.44 5.14,-1.91 7.2,0.43 2.77,1.74 6.17,3.82 6.94,7.21 2.79,-1.13 5.73,-0.73 8.41,0.53 1.23,-2 2.73,-1.49 3.69,0.66 0.59,3.07 2,-0.72 2.48,-1.83 0.83,-2.27 3.92,-5.75 0.2,-7.01 -1.99,-2.12 2.54,-4.35 -0.47,-5.52 -3.54,-1.32 0.06,-3.71 -3.77,-3.68 -1.13,-1.82 -0.14,-5.31 -0.45,-7.77 0.09,-3.62 -2.36,-6.17 -3.27,-9.5 -2.24,-2.8 3.78,-1.95 2.18,-4.77 -0.27,-3.83 -1.97,-7.24 -2.66,-10.91 1.12,-2.57 2.7,-5.07 2.75,-7.88 2.68,-2.78 6.09,-4.94 9.75,-6.06 4.81,0.08 9.58,-1.34 13.94,-3.25 0.29,-3.17 3.92,1.99 5.64,-1.8 0.58,-1.59 1.27,-4.54 3.8,-3.39 2.22,1.16 4.46,1.71 7.03,1.3 4.79,-0.31 9.85,0.27 14.45,-1.01 2.63,-2.16 7.03,-3.34 7.55,-7.13 -2.51,-3.21 -2.57,-7.84 -4.05,-11.66 -1.56,-2.32 0.46,-2.56 1.11,-3.49 -1.21,-1.69 -2.84,1.88 -4.93,0.87 -3.35,0.33 -4.21,-4.14 -7.34,-4.73 -1.95,-1.81 -4.21,-0.39 -6.46,-1.61 -1.95,-1.37 -5.09,-1.98 -5.86,-4.32 -2.25,-0.71 -4.5,-3.34 -6.75,-2.88 0.04,3.1 -4.02,3.62 -6.31,2.65 -6.29,-1.76 -13.04,-4.4 -16.59,-10.25 -1.82,-2.88 -4.27,-5.73 -5.88,-8.53 1.69,-2.65 1.92,-5.52 1.61,-8.56 0.08,-3.49 1.94,-6.54 3.57,-9.44 -0.44,-3.76 -2.35,-8 0.31,-11.34 1.69,-3.42 -2.77,-5.17 -4.84,-4.84 -0.77,1.84 -4.03,2.12 -4.73,-0.07 -3.16,-2.02 -0.66,-5.45 -0.28,-8.33 0.25,-2.72 1.68,-3.75 3.82,-4.6 0.52,-2.45 0.69,-5 -1.29,-6.86 -2,-2.13 -0.72,-5.29 -0.24,-7.76 2.19,-2.1 2.75,-4.3 1.28,-7.4 -0.37,-2.87 -3.52,-1.27 -5.2,-0.49 -2.2,0.23 -1.98,-4.35 -5.66,-2.08 -3.04,0.71 -6,0.64 -8.83,-0.79 -2.04,-1.1 -6.47,-1.05 -6.16,-4.18 0.48,-0.96 2.72,-2.17 0.45,-2.84 -2.36,-0.92 -4.97,-4.41 -7.35,-1.78 -2.26,0.12 -3.78,-2.34 -5.44,-3.56 -1.33,-1.14 2.25,-2.99 -0.03,-2.78z m-35.72,88.19c-0.1,0.03 0.04,0.06 0,0z","name":"Sachsen-Anhalt"},"sn":{"path":"m438.91,347.22c-0.71,1.7 -1.23,3.74 -3.22,4.5 -2.58,1.63 -3.52,-1.1 -5.94,1.53 -4.3,1.22 -8.55,2.77 -13.09,2.53 -3.01,1.74 -7.34,3.17 -8.45,6.62 0.03,3.26 -3.77,5.91 -1.75,9.19 1.33,3.2 1.78,6.8 2.19,10.31 -4.06,0.29 -2.18,3.87 -0.74,6.17 2.24,3.72 1.36,8.42 1.53,12.58 2.6,-0.28 2.73,2.06 3.18,3.2 1.51,2.44 3.44,1.13 5.41,0.39 3.7,1.5 8.18,1.88 11.41,4.16 0.74,1.94 -0.81,4.85 2,5.77 1.72,1.99 6.37,0.62 6.03,4.01 -0.35,2.66 3.75,3.98 1.22,5.97 -3.58,1.98 -8.34,0.37 -11.41,3.34 -0.07,2.05 -0.66,4.73 -3.19,4.69 -0.84,-2.38 -4.84,-0.74 -3.91,1.56 -2.16,0.55 -4.73,2.38 -6.75,1.41 -0.26,3.26 -1.99,6.93 0.66,9.67 0.13,3.51 6.2,1.64 4.46,5.11 -1.54,2.13 -3.26,4.42 -6.11,4.51 -2.19,1.15 -4.93,1.82 -6.85,3.17 1.14,0.4 3.92,-0.58 2.97,1.81 -1.3,0.56 -2.71,1.18 -4.15,1.04 -1.87,-0.95 -6.83,1.68 -5.71,-1.56 0.5,-1.28 0.39,-7.08 -1.74,-3.97 -0.56,2.99 -4.53,3.58 -5.56,6.44 -1.97,1.1 -1.24,4.78 1.19,3.64 1.33,1.03 5.21,3.22 2.79,5.13 -0.59,1.68 -5.69,2.39 -2.69,4 2.14,0.67 3.79,2.61 5.05,4.37 -0.72,2.68 -0.54,4.28 2.54,4.44 2.89,0.5 5.02,2.48 7.96,1.72 3.8,-1.14 4.85,3.42 6.85,5.61 1.23,2.16 4.76,5.08 2.59,7.58 -0.49,1.72 3.93,3.14 3.09,0.38 -2.48,-2.46 -0.08,-6.44 1.28,-8.97 2.86,-4.57 6.53,-8.74 9.94,-12.84 4.56,-2.02 9.99,-0.84 14.06,-4.03 2.14,-0.66 4.2,-3.73 6.38,-3.05 2.63,1.52 5.07,3.45 7.78,4.83 2.07,-1.12 5.11,-3.24 4.13,-5.91 0.2,-2.04 -0.2,-5.69 2.84,-5.24 2.59,-0.29 5.2,-0.72 7.63,0.55 2.91,-0.54 1.72,-4.96 3.88,-6.45 2.35,-2.97 5.63,-5.26 8.68,-7.26 2.67,-0.81 5.51,3.8 7.01,0.39 1.65,-1.64 3.72,-4.3 2.58,-6.74 3.93,-2.17 7.47,-5.47 12.25,-5.22 2.33,-0.49 4.94,-0.78 7,0.62 2.41,-0.15 5.15,-2.09 4.01,-4.81 -1.95,-3.53 3.27,-1.43 5.18,-3.05 2.77,-1.08 6.09,-1.25 7.96,-3.69 5.86,-2.9 11.49,-6.39 17.78,-8.32 1.88,-3.11 -0.76,-3.48 -3.2,-3.83 -2.51,-0.45 -4.28,-2.72 -5.9,-4.48 1.17,-2.33 1.01,-5.72 3,-7.44 2.01,-0.54 2.32,2.64 4.53,2.3 2.11,1.26 6.52,1.34 7.5,-0.58 -0.17,-3.74 3.64,0.67 5,1.7 3.7,2.16 4.3,6.67 5.45,10.42 1.49,2.62 -2.09,6.06 2.42,6.33 2.67,0.89 5.37,2.57 8.28,1.87 0.47,-3.78 1.26,-7.7 4.06,-10.39 2.84,-3.18 3.04,-7.91 3.71,-11.62 2.05,-4.17 1.85,-9.14 2.71,-13.74 0.26,-3.07 0.84,-6.1 1.99,-8.91 0.22,-5.15 -3.62,-9.39 -5.25,-14.09 -0.63,-2.47 0.48,-5.37 -1.69,-7.4 -2.96,-2 -6.81,-2.81 -10.16,-4.16 -2.63,0.45 -5.28,-0.92 -5.64,-3.77 -0.41,-2.32 0.72,-4.39 -0.77,-0.54 -0.78,2.23 -4.07,1.99 -5.91,1.44 -0.89,-2.72 -3.76,-2.22 -5.89,-1.05 -2.43,0.03 -4.2,1.93 -3.78,3.04 -2.98,-1.35 -5.85,1.55 -8.48,2.42 -3.55,-1.67 -7.51,-1.35 -11.28,-1.56 -3.58,3.73 -3.22,9.41 -5.54,13.67 -1.24,3.16 -4.34,3.42 -7.26,3.89 -3.26,1.02 -6.88,-0.1 -9.67,2.35 -1.59,0.79 -4,-0.13 -5.49,-0.56 -4.01,0.9 -8.8,0.36 -12.18,-2.44 -2.57,-1.34 -4.55,-3.47 -6.76,-5.28 -2.23,1.37 -5.63,2.37 -6.56,4.87 -0.02,1.86 -4.09,1.87 -5.44,1.29 -1.42,-2.13 -2.64,-3.94 -1.26,-6.61 0.56,-3.54 0.3,-7.09 -1.63,-10.2 -0.72,-1.89 -2.32,-5.98 -4.72,-4.31 -2.79,1.33 -2.48,-5.48 -5.68,-3.53 -5.59,0.15 -11.31,0.77 -16.84,0.31 -1.25,-0.57 -2.44,-1.63 -3.94,-1.22z","name":"Sachsen"},"sl":{"path":"m63.72,553.88c-2.9,2.18 -6.1,2.82 -9.5,4.44 -3.47,4.51 -10,4.1 -15.06,5.38 -4.6,0.18 -8.97,-1.26 -13.22,-2.78 -2.47,1.73 -0.51,5.04 -0.84,7.5 1.8,0.96 4.08,-1.32 5.97,0.4 2.44,1.62 5.28,3.2 6.78,5.81 -3.49,0.44 0.05,4.79 -0.09,6.94 1.05,3.41 4.13,4.95 6.56,7.16 1.79,1.94 0.3,5.34 3.04,6.13 2.43,1.92 -2.53,4.66 1.39,5.86 2.37,0.12 6.25,2.27 7.13,-1.09 -0.35,-2.25 -3.03,-3.71 0.38,-4.78 4.42,0.26 10.1,1.27 11.81,5.94 0.51,1.58 -0.22,5.5 1.56,5.84 2.33,-0.7 1.95,-7.32 3.65,-3.1 1.02,1.94 2.67,2.87 4.44,1.6 2.61,-0.08 5.35,0.47 7.44,1.84 0.63,-1.3 5.37,-2.76 3.56,-3.91 -1.62,-2.52 -4.36,-5.17 -3.81,-8.41 1.42,-2.72 5.03,-3.05 6.69,-5.31 0.32,-2.19 -0.19,-4.41 0.63,-6.91 -2.49,1.08 -4.55,-2.01 -6.84,-2.72 1.25,-2.57 -1.08,-3.33 -2.41,-4.88 -1.38,-2.57 3.05,-1.81 2.04,-4.46 0.15,-3.03 0.9,-7.08 -0.66,-9.48C81.13,563.37 78.01,559.23 75,558.25c-1.82,-1.1 -4.05,-5.12 -6.16,-3.76 -1.8,1.27 -2.93,1.15 -3.06,-0.42 -0.68,-0.01 -1.4,-0.33 -2.06,-0.19z","name":"Saarland"},"rp":{"path":"m124.22,422c-3.08,1.37 -2.76,4.11 -2.15,6.91 -0.74,2.27 -2.92,4.57 -5.35,5.28 1.82,2.98 -1.68,6.02 -4.55,6.28 -3.87,1.42 -8.15,2.76 -11.74,4.31 -2.53,-1.67 -5.28,-0.25 -4.24,2.84 0.38,2.78 -1.77,4.53 -4.33,4.8 -2.21,0.9 -4.57,1.03 -6.93,0.89 0.24,-3.01 0.16,-2.77 -0.66,-0.16 -2.61,2.5 -6.78,2.21 -10.16,3.14 -1.7,1.36 -3.59,4.13 -6.33,3.09 -1.84,0.93 -1.47,5.36 -2.5,7.61 -0.31,2 -3.88,3.46 -5.32,1.71 -2.49,-2.13 -5.07,1.92 -3.92,4.39 -1.32,2.14 3.87,6.32 1.33,6.03 -2.57,-0.38 -4.98,1.47 -7.53,-0.25 -1.87,-0.86 -4.14,-1.17 -5.28,-3.06 -3.07,1.11 -6.64,2.41 -9.75,2.06 -1.18,-2.88 -5.27,-3.74 -3.13,0.21 0.06,1.85 3.77,4.69 0.04,3.72 -2.34,1.34 -4.33,-0.2 -6.47,-0.11 -0.71,2.72 -2.48,4.43 -4.99,5.59 -1.73,1.37 -5.12,2.04 -4.14,4.93 1.73,3.46 -1.97,4.26 -2.68,6.98 -1.38,4.14 -2.64,8.53 -0.77,12.73 1.47,5.09 3.95,10.18 7.71,13.93 3.19,1.73 6.27,3.8 8.6,6.49 1.94,2.68 4.29,-1.39 6.06,0.93 1.74,1.25 1.47,4.34 1.36,6.37 -1,5.55 -4.71,9.97 -7.61,14.63 -1.1,1.62 -3.21,1.58 -3.81,3.7 1.32,3.4 5.62,2.86 8.44,4.25 6.02,0.99 12.25,-0.27 17.78,-2.55 1.84,-1.13 2.94,-3.18 5.35,-3.48 2.7,-0.62 4.85,-2.4 7.33,-3.4 2.47,-0.56 3.3,1.96 4.66,0.63 1.69,-1.87 4.4,2.01 6.06,3.12 2.19,1.85 4.96,3.22 7.6,4.23 2.08,-1.3 3.07,-1.77 3.74,1 0.63,3.7 0.2,7.6 -0.21,11.34 -3.62,0.15 -1.02,2.73 0.84,3.34 -0.88,3.1 1.79,3.86 4.18,5.17 2.7,-0.99 3.7,-0.04 2.19,2.5 -0.63,2.28 0.81,4.56 -1.1,6.61 -1.8,1.77 -5.4,2.25 -6.16,5.03 0.5,2.47 2.45,5.22 3.88,6.72 0.53,-2.07 4.25,-1.3 6.09,-2.06 2.18,0.88 4.73,2.02 3.59,4.81 0.57,4.16 4.15,6.47 7.58,8.3 4.06,2.82 9.28,1.81 13.75,1.03 5.57,0.87 11.49,1.89 16.04,5.46 1.5,1.92 4.34,2.91 6.75,3.03 1.44,0.1 3.88,-0.46 4.75,1.03 2.73,-1.42 4.25,-4.04 4.38,-7.03 0.97,-3.35 4.62,-5.13 4.47,-8.92 0.59,-3.28 2.22,-6.72 1.35,-9.86 0.74,-2.94 4.48,-3.42 5.84,-6.03 2.45,-0.61 0.47,-2.16 -0.81,-2.44 -2.02,-2.71 2.93,-3.58 2.9,-6.17 0.3,-2.2 -0.42,-4.5 0.69,-6.55 -1.31,-0.77 -4.55,0.38 -4.34,-2.22 1.3,-2.38 -0.67,-5.57 -0.94,-8.16 -1.05,-1.55 -0.56,-3.22 -0.06,-4.81 -2.06,-3.14 -3.58,-6.56 -4.31,-10.28 -0,-3.21 3.88,-3.16 5.84,-4.38 1.83,-1.95 0.9,-4.67 -1.26,-6.04 -2.48,-3.08 -4.3,-6.94 -4.99,-10.83 0.78,-1.71 1.4,-3.41 0.25,-5.25 -0.12,-3.38 -3.6,-5.04 -5.13,-7.75 -2.86,-3.27 -7.52,-1.08 -10.66,0.56 -4.69,1.79 -9.52,4.51 -14.68,3.47 -2.44,-2.49 -4.42,-5.7 -6.29,-8.66 -2.19,-2.94 2.65,-2.19 3.79,-4.33 1.44,-3.52 5.56,-1 5.95,-3.31 1.05,-2.62 -4.12,-2.88 -2.51,-5.79 1.38,-2.83 4.79,-3.85 7.44,-4.63 1.92,2.63 5.73,-0.22 2.09,-1.81 -1.3,-2.26 2.57,-3.89 4.23,-2.24 3.08,0.46 1.96,-3.71 0.96,-5.33 -1.37,-3.08 -3.17,-5.78 -6.33,-7.23 -3.79,-0.63 -1.12,-3.37 -0.49,-6.08 0.24,-1.88 -1.87,-3.91 -0.43,-6.13 1.19,-2.18 3.39,-6.07 6.28,-3.97 1.67,3.39 3.78,0.05 4.16,-2.21 1.81,-2.05 -0.69,-2.3 -1.07,-3.97 -0.17,-2.37 -1.93,-5.43 0.13,-7.42 -0.88,-3.78 -6.22,1.19 -5.36,-1.83 1.28,-4.22 -5.99,-5.38 -4.53,-9.85 1.32,-2 0.84,-5.3 -1.94,-5.86 -1.78,-2.03 -5.71,-1.54 -6.82,-3.48 -0.21,-1.96 2.71,-4.06 -0.25,-4.94C125.29,422.08 124.64,421.87 124.22,422z","name":"Rheinland-Pfalz"},"nw":{"path":"m177.25,263.34c-2.1,-1.63 -5.7,-1.31 -6.06,1.91 0.19,3.63 -4.48,4.11 -7,3.66 -1.11,-1.64 -4.06,-2.21 -2.35,0.66 0.52,3.14 4.56,4.05 6.57,6.26 1.92,1.46 2.52,4.49 2.62,6.8 0.18,2.64 0.19,5.1 -0.9,7.58 -1.32,1.99 0.48,3.83 2.46,3.92 3.25,0.58 0.3,2.71 -0.78,3.97 -1.55,0.88 -3.89,0.86 -4.75,2.84 1.66,2.95 -2.56,1.58 -4.29,1.1 -2.41,-0.95 -5.38,-1.98 -7.02,0.74 -2.16,1.92 -4.56,3.57 -7.26,4.5 -1.87,2.2 -2.96,-0.94 -5.46,-0.31 -2.18,0.39 -2.63,4.37 -4.84,2.75 -2.6,-0.41 -3.41,-2.28 -4.46,-4.35 -2.31,-1 2.21,-2.81 3.55,-2.98 3.51,0.2 5.07,-3.48 2.41,-5.69 -1.71,-1 -4.92,-1.05 -5.1,-3.81 -0.4,-2.56 2.07,-4.87 2.81,-7.19 0.91,-0.72 -1.83,-2.26 -0.5,-3.69 3.14,-1.64 1.45,-5.72 -1.26,-6.8 -2.05,-1.15 -4.05,1.71 -6.33,0.21 -2.51,-1.72 -6.07,-2.59 -6.27,-6.18 -0.22,-2.85 -2.57,-3.65 -4.96,-4.34 -1.35,-0.64 -3.78,3.65 -1.27,3.96 1.72,1.12 -0.74,4.19 -1.92,5.19 -4.58,2.06 -9.39,4.71 -12.83,8.28 -0.91,2.09 -3.91,0.71 -4.63,3.16 -3.68,0.16 -7.44,-1.07 -11.03,-0.19 -1.13,2.36 -3.53,1.5 -5.41,2.92 -3.3,2.56 -8.23,3.82 -10.15,7.67 -0.16,4.41 -5.85,3.29 -8.27,5.42 -1.07,1.95 -3.97,5.3 -0.36,6.02 2.12,2 6.43,3.97 4.59,7.5 -2.07,2.76 -4.18,5.76 -7.59,6.94 -1.43,-2.65 -3.58,-2.35 -5.97,-1.09 -2.93,0.68 -5.59,2.43 -8.37,3.24 -1.83,0.92 -6.4,-1.52 -6.2,0.14 1.25,2.44 1.32,5.11 -1.64,2.71 -2.84,-2.65 -6.23,-5.14 -10.34,-4.5 -2.26,1.13 -4.86,1.79 -7.57,1.91 -2.94,-0.3 -6.47,1.11 -7.66,3.97 0.91,4.49 1.78,9.09 3.5,13.31 3.65,0.48 3.87,3.28 3.59,6.38 -0.03,2.95 4.03,4.36 4.95,7.23 3.16,3.93 2.85,9.32 1.32,13.83 -1.07,2.64 2.37,5.59 -1.15,7.3 -2.71,3.53 -6.04,6.82 -8.16,10.71 -0.6,1.66 -1.81,5.57 0.42,6.15 1.79,-1.07 4.45,-3.48 6.03,-0.89 -1.83,0.74 -3.77,2.52 -4.63,4.79 -4.06,2.72 -7.88,5.86 -12.82,6.75 -2.54,0.57 -4.87,1.7 -3.17,4.63 0.65,3.73 2.86,3.68 5.9,3.34 1.73,-0.12 4.7,0.11 2.92,2.43 -1.62,2.73 0.97,3.7 3.18,4.3 2.89,0.68 -1.54,3.27 0.66,4.81 0.17,1.78 -1.03,5.56 -2.97,3.06 -2.7,0.41 -2.86,4.47 -3.11,6.49 1.25,3.17 3.86,4.98 6.86,6.32 1.73,2.64 2.03,6.34 4.88,8.31 -3.91,1.75 5.55,0.78 2.22,4.39 0.29,3.25 -5.37,3.94 -3.38,7.37 0.76,1.42 1.86,4.52 3.66,2.67 3.25,-0.44 6.22,1.26 7.36,4.35 2.36,2.77 -0.08,6.31 -0.45,9.15 2.56,4.82 -0.8,-1.03 2.06,-1.07 2.71,-1.06 3.44,4.11 6.19,2.53 2.75,0.37 5.82,-2.69 8.02,-1.5 1.92,2.23 5.39,3.01 8.14,3.37 3.72,-0.21 2.3,-1.41 1.51,-3.82 0.04,-2.95 -1.16,-6.55 2.63,-7.5 2,-1.69 3.89,3.12 6.16,0.31 1.15,-2.86 1.77,-6.3 2.41,-9.46 2.7,1.12 5.4,-0.08 6.75,-2.56 3.27,-1.13 7.52,-0.86 10.35,-2.91 0.37,-1.12 0.98,-4.32 2.62,-2.66 -0.82,3.1 2.33,2.44 4.39,1.84 2.3,-0.53 5.31,-1.22 4.81,-4.28 -0.51,-2.22 0.4,-5.33 3.3,-4.47 2.78,1.45 5.46,-1.31 8.27,-1.76 3.1,-1.68 7.91,-1.4 9.45,-5.05 -0.47,-2.98 -4.28,-3.7 0.44,-3.18 2.74,-1.08 5.31,-3.89 4.08,-6.99 -1.04,-2.52 1.87,-4.26 3.71,-5.24 2.21,0.36 5.37,2.16 3.03,4.28 -1.84,2.46 1.06,2.47 2.69,2.94 2.57,1.6 7.18,2.77 6.12,6.74 -0.22,1.83 -1.49,3.93 0.54,5.35 1.58,1.78 4.44,3.29 3.47,6.09 1.92,-1.91 4.28,0.75 5.25,0.78 1.15,-1.97 2.94,-4.17 0.84,-6.13 -1.97,-2.33 -1.27,-4.35 1.26,-5.9 2.67,-2.21 4.81,-5.42 7.75,-7.15 2.53,-0.53 5,4.12 6.81,1 1.81,-2.99 4.43,-5.63 4.94,-9.19 1.73,-1.11 2.77,-3.4 4.66,-4.63 0.39,-1.91 -1.57,-4.12 -1.75,-6.25 0.73,-3.23 4.88,-3.7 7.64,-2.9 1.98,0.85 4.51,0.77 5.94,-0.93 1.31,-3.2 3.81,-6.24 2.52,-9.88 -0.64,-1.84 0.53,-6.24 -2.48,-5.85 -2.48,0.46 -4.55,3.29 -7.13,2.53 -1.37,-1.68 -3.72,-3.65 -1.3,-5.48 2.34,-4.53 6.76,-7.46 11.73,-8.41 3.83,-1.47 7.94,-1.54 11.98,-1.11 1.92,-2.78 -0.9,-3.85 -1.9,-6.19 -1.82,-1.61 -1.41,-4.36 1.19,-4.68 3.14,-1.44 7.01,-2.83 10,-0.32 2.4,1.63 -0.27,3.86 1.25,5.59 1.92,0.62 4.04,0.65 4.63,-1.66 3.98,-3.61 9.19,-6.08 11.4,-11.26 1.23,-2.28 4.7,-5.14 4.82,-6.65 -1.68,0.55 -4.34,-0.05 -3.2,-2.36 0.05,-5.23 2.13,-10.09 3.74,-14.92 1,-2.69 -2.16,-5.66 -4.66,-4.72 -3.16,2.83 -0.64,-2.27 -0.81,-4.06 -0.05,-2.72 -2.54,-1.8 -3.99,-2.62 -2.61,-2.3 -7.4,-3.71 -6.62,-8.03 0.39,-2.34 -1.28,-5.79 0.83,-7.47 -2.23,-1.73 -1.62,-3.85 -2.5,-6.03 -2.65,-0.77 -5.5,-0.87 -7.39,-3.23 -1.18,-0.94 -5.31,-5.84 -2.07,-3.89 2.92,3.3 5.04,-1.41 4.58,-3.56 -1.6,-1.73 -4.39,-1.61 -6.02,-2.94 -1.48,-2.41 1.21,-4.72 1.94,-6.91 1.84,-2.01 5.4,-1.29 6.16,-4.38 1.42,-2.09 2.16,-4.3 0.81,-6.53 1.2,-2.26 2.95,-5.17 -0.91,-5.56 -3.17,-1.51 -3.6,3.21 -5.58,4.74 -1.93,2.12 -2.98,5.59 -6.39,5.38 -3.28,0.88 -6.88,0.85 -10.18,0.44 -3.79,-0.66 -2.03,-5.2 -2.58,-7.89 -0.63,-2.02 1.28,-4.76 -1.4,-5.81 -1.68,-1.96 -4.73,1.64 -6.71,2.05z m32.09,14.69c-0.04,0.06 0.1,0.03 0,0z","name":"Nordrhein-Westfalen"},"ni":{"path":"m186.44,120.91c-5.6,0.51 -6.88,7.11 -8.44,11.54 -1.55,4.84 -4.41,10.19 -1.33,15.08 0.62,2.76 4.51,0.93 6.62,1.66 3.74,-0.55 1.44,3.37 1.28,5.34 -0.09,2.27 2.07,5.17 -0.81,6.68 -0.57,2.01 -4.6,1.89 -4.47,0.01 0.2,-1.62 -2.19,-2.79 -1,-4.38 -2.39,-2.05 -5.8,-0.88 -8.29,-2.92 -3.19,-0.55 -3.1,-6.58 -7,-4.9 -3.25,1.5 -2.87,5.42 -3.31,8.39 1.73,1.09 4.31,-1.81 5,0.84 0.65,4.51 -0.3,10.35 -4.66,12.69 -2.05,0.33 -4.01,-0.7 -4.44,-2.75 -1.01,-1.99 -2.84,-4.1 -4.91,-2.06 -2.51,-1.99 -2.84,-5.26 -2.69,-8.25 1.7,2.41 4.86,0.82 6.63,-0.53 1,-2.85 -1.94,-5.58 -2.55,-8.38 -0.35,-2.68 -2.75,-3.1 -4.67,-3.53 -0.88,-2.07 -1.59,-4.78 -0.56,-6.72 -5.56,-1.98 -11.61,-0.89 -17.16,0.47 -4.67,-1.16 -9.01,2.41 -13.75,2.56 -2.64,-2.27 -6.36,-1.45 -9.63,-2 -6.44,-0.16 -11.29,4.48 -15.23,9 -2.96,1.82 0.86,2.65 1.75,4.06 2.29,2.26 -1.66,3.67 -2.74,5.44 -1.44,-2.96 -5.14,-3.8 -4.27,0.54 -0.65,3.9 -0.71,8.05 -1.52,11.83 -1.87,1.87 0.95,4.14 2.97,3.58 5.28,0.29 10.96,-0.24 15.72,2.42 -2.08,0.69 -5.45,-0.97 -5.28,2.53 -1.3,3.55 -0.88,7.6 -1.89,11.2 -1.02,2.31 -3.53,5.58 -0.77,7.39 -1.04,4.96 1.43,10.17 -1.09,14.86 -1.44,6.42 -8.35,10.37 -8.34,17.29 -0.73,5.37 -0.65,11.06 -2.02,16.22 -1.54,2.43 -4.12,-1.19 -6.18,-0.78 -4.31,-0.59 -8.85,-1.62 -13.15,-0.5 -3.28,1.5 -0.59,5.19 -1.65,7.89 0.05,2.71 -1.96,5.6 -1.13,7.99 3.96,3.35 9.48,3.72 14.25,5.18 1.32,-0.55 1.98,-4.64 3.66,-2.59 1.6,4.04 5.43,7.78 4.44,12.38 -1.84,2.71 -4.41,6.49 -1.89,9.57 1.86,2.89 3.08,-1.11 5.12,-1.16 3.32,-0.74 7.21,1.07 10.28,0.08 0.77,-2.08 3.82,-0.65 4.33,-3.02 3.95,-3.24 8.34,-6.11 13.06,-8 3.49,-2.99 -0.93,-3.55 0.23,-6.31 0.69,-1.71 1.95,-4.41 4.07,-2.55 2.19,0.59 4.44,1.49 4.69,4.05 0.24,3.46 3.25,4.66 5.87,6.2 2.49,1.33 5.1,-2.32 7.3,0.36 2.1,0.86 2.8,3.79 2.88,5.66 -2.14,1.36 -2.99,3.7 -0.25,5 -2.47,1.24 -2.71,4.41 -4.06,6.59 -0.13,3.3 3.86,2.19 5.28,4.24 1.61,1.34 2.29,6.23 -0.56,6.24 -2.12,1.03 -7.72,1.03 -4.44,4.18 0.32,1.52 3.77,3.35 4.41,1.19 1.64,-2.26 4.29,-2.15 6.63,-1.31 1.36,-0.07 3.99,-1.2 5.52,-2.37 2.72,-1.18 4.39,-5.59 7.79,-3.97 1.75,0 5.6,2.6 5.94,0.72 0.62,-2.2 3.26,-3.09 5.19,-3.63 2.15,-1.43 1.31,-2.65 -0.91,-2.81 -3.46,-2.11 -0.12,-6.05 -0.14,-8.9 -0.15,-3.52 0.05,-8 -3.58,-9.88 -2.14,-2.11 -6.14,-3.08 -5.9,-6.7 -1.51,-2.43 0.6,-3.29 2.77,-2.04 1.45,1.42 4.2,1.38 5.98,0.03 1.26,-1.81 0.54,-4.61 3.46,-5.43 2.32,-1.11 5.18,2.05 7.68,-1.07 2.13,-2.24 4.04,-0.2 5.66,1.43 0.57,2.57 -0.21,5.4 0.22,8.09 -0.93,3.21 1.85,4.85 4.75,4.17 3.21,-0.08 7.22,0.09 9.7,-1.99 2.54,-2.97 4.51,-6.31 6.89,-9.36 2.02,0.69 5.86,0.77 5.97,3.44 -1.73,2.35 -1.52,4.54 -0.97,7.06 -1.39,2.86 -2.39,6.91 -6.2,7.13 -2.4,1.05 -3.91,4.28 -3.71,6.63 1.97,1.04 4.71,1.6 6.53,3.33 0.07,1.63 -1.12,5.59 -2.84,6.05 -3.41,-0.73 1.6,2.55 2.84,3.1 2.26,0.15 6.09,0.95 5.15,4.09 -0.68,1.53 3.99,3.73 1.27,4.76 -0.76,2.74 -0.13,6 0.12,8.84 1.43,2.32 4.36,3.6 6.57,5.25 3.31,-0.99 4.48,3.42 3.35,5.85 0.3,0.17 2.48,-0.22 3.34,0.68 2.41,1.16 3.09,3.45 2.56,5.97 -2.13,4.96 -3.82,10.38 -3.75,15.72 2.51,0.18 4.77,-1.21 7.34,-1.06 0.61,1.51 -0.65,3.85 2.25,3.24 3.59,-0.55 6.83,1.47 9.03,4.14 1.86,0.23 1.58,3.6 -0.22,2.84 -1.35,2.17 -4.02,2.06 -5.22,4.59 1.78,2.73 3.46,5.34 3.51,8.74 1.02,2.35 -1.28,3.79 -3.38,3.42 -2.32,0.54 -3.56,5.32 -0.53,5.96 3.22,1.18 6.33,2.54 9.36,4.13 4.29,-2.82 0.47,-2.05 -1.06,-3.89 -2.77,-2.53 1.66,-4.59 3.28,-6.24 2.15,-2.54 5.98,-1.9 8.84,-2.34 2.08,1.35 1.61,5.72 4.21,2.64 3.91,-2.4 7.72,-5.21 12.48,-5.45 3.97,-2.72 8.84,-4.93 11.78,-8.85 1.12,-1.78 0.33,-3.88 2.39,-5.63 3.16,-1.67 6.79,0.6 8.47,3.25 2.88,-0.58 7.14,-0.26 7.76,-3.87 -0.05,-2.88 3.65,-4.47 1.75,-6.24 -1.57,-2.46 -0.32,-5.67 -2.8,-7.78 -1.09,-2.4 -4.13,-3.43 -3.79,-6.44 -0.16,-2.66 -0.99,-6.17 2.11,-7.49 1.53,-0.76 3.52,-2.56 1.95,-4.3 -2.69,0.07 -2.43,-3.84 -0.41,-4.53 -1.85,-1.14 -5.14,-4 -4.75,-5.49 2.09,-0.39 4.95,0.22 5.97,-2.13 -0.9,-2.87 3.5,-2.65 5.41,-2.71 2.87,-0.48 6.16,1.13 8.63,-0.98 1.86,-0.84 5.77,1.14 5.58,-1.56 -0.39,-2.88 1.81,-4.27 3.9,-5.7 0.91,-0.47 3.07,-3.7 1.17,-3.53 -3.44,0 -2.76,-5.19 0.13,-5.66 3.82,-0.08 0.19,-3.6 -1.09,-4.81 -2.24,-1.37 -1.88,-4.21 -1.94,-6.38 0.35,-2.73 4.31,-1.12 3.91,-4.03 -1.37,-1.84 -4.07,-2.33 -5.04,-4.76 -1.41,-2.15 -5.08,-4.85 -2.74,-7.55 3.42,-1.12 3.06,-1.7 0.77,-4.08 -1.69,-1.79 -1.55,-4.29 -1.69,-6.46 -2.28,-4.45 -4.68,-9.22 -8.86,-12.09 -1.05,-3.33 -3.02,-6.48 -2.57,-9.99 -0.32,-2.09 0.44,-4.42 2.92,-4.26 2.85,-1.12 6.27,-0.08 8.93,-1.09 1.55,-1.38 2.76,-2.68 2.6,-4.79 1.69,-2.11 5.13,-0.16 7.46,-0.64 2.96,0.35 7.54,-0.38 8.88,2.86 3.56,1.21 6.67,-1.39 9.63,-2.75 1.37,-1.79 3.07,-3.85 5.5,-3.97 -1.07,-2.07 -0.03,-4.66 0.75,-6.72 2.37,0.04 3.51,1.16 4.74,-2.15 -3.03,-0.57 -6.18,-1.13 -7.93,-4.01 -2.99,-1.28 -5.04,3.32 -7.81,2.09 -1.68,-2.2 -4.97,-3.78 -4.59,-6.94 -1.58,-2.26 -4.54,-2.52 -6.84,-3.72 3.01,-0.21 2.65,-3.1 -0.2,-2.77 -6.07,-2.31 -7.72,-9.29 -10.33,-14.6 -2.42,-1.1 -4.9,-1.16 -5.92,1.34 -1.84,1.96 -4.18,1.97 -6.29,0.43 -2.67,-1.78 -3.79,-6.4 -7.79,-5.36 -2.51,-0.77 -4.24,2.4 -6.66,0.76 -4.42,-0.95 -7.78,-4.07 -12.05,-5.47 -1.87,-1.32 -3.8,-1.77 -5.52,0.17 -0.27,2.44 -2.51,2.71 -4.5,2.22 -3.65,-0.29 -5.04,-4.84 -7.84,-6.5 -1.55,0.25 -1.89,4.05 -4.47,4.49 -2.08,0.15 -3.58,-2.52 -5.1,-3.8 -1.02,-1.09 -2.8,3.74 -4.07,0.89 -2.45,-1.59 -2.98,-4.24 -4.53,-6.41 -0.49,-1.9 1.56,-6.03 -2.15,-5.31 -4.45,-0.29 -7.84,-3.81 -11.28,-6.28 -1.97,-2.7 -0.94,-6.7 -3.64,-9.09 -3.37,-1.87 -5.18,-5.18 -6.46,-8.69 -1.64,-4.08 -4.33,-8.01 -8.9,-9 -3.99,-0.41 -8.13,-0.36 -12.15,-0.37 -3.37,0.14 1.11,4.61 0.44,4.78 -2.24,-0.97 -4.59,-0.85 -6.63,0.19 -3.12,0.32 -6.61,0.16 -9.54,-0.98 -2.08,-1.54 -4.86,-2.91 -5.69,-5.53l-0.44,0.03z m-49.34,8.94c-0.03,1.09 0.83,-0.73 0,0z m-9.69,0.88c-1.79,0.64 -2,2.84 -0.28,0.69 1.15,0.39 7.48,0.12 5.09,-0.5 -1.6,-0.1 -3.21,-0.36 -4.81,-0.19z m18.53,1.06c0.45,3.21 0.81,1.46 0,0z m-31.41,1c-2.03,0.59 -1.28,4.28 0.3,1.19 1.64,-1.6 4.48,-0.97 6.64,-1.09 -2.3,-0.17 -4.65,-0.31 -6.94,-0.09z M108.19,134.75c-2.3,1.14 5.75,0.85 0.38,-0.03 -0.12,0.04 -0.27,-0.05 -0.38,0.03z m-12.13,0.84c-3.52,0.44 -2.54,2.25 0.41,1.38 2.85,-0.48 5.82,-0.48 8.59,-1.28 -2.97,-0.23 -6.02,-0.18 -9,-0.09z m-32.28,11.06c-1.1,1.27 2.99,3.13 2.5,3.16 1.33,-1.35 0.17,-2.16 3.86,-2.62 3.23,0.07 0.14,-2.1 -1.3,-2.1 -1.69,0.52 -3.38,1.04 -5.06,1.56z M174.25,186.75c0.36,2.67 4.51,2.84 6.35,4.51 3.41,1.6 7.66,0.4 10.79,2.95 3.11,1.84 7.08,3.66 10.49,1.79 1.4,0.19 3.63,2.7 2.89,3.67 -2.99,0.4 -0.11,3.94 -0.78,6.22 0.86,2.85 -2.01,3.95 -3.7,5.61 -3.46,-0.92 -6.93,-3.62 -10.57,-2.86 -2.23,0.9 -3.13,-2.21 -2.65,-3.92 -0.64,-2.4 -4,-3.06 -3.74,-5.78 -0.67,-2.42 -1.42,-4.7 -4.2,-4.81 -3.28,-1.01 -7.24,-4.77 -5.34,-8.44 0.16,0.35 0.31,0.71 0.47,1.06z","name":"Niedersachsen"},"mv":{"path":"m468.38,35.5c-3.45,0.91 -7.31,1.41 -8.93,5.06 -0.26,1.49 -3.68,7.61 -2.06,6.34 1.83,-1.19 3.02,-3.21 2.21,-5.18 0.53,-1.31 3.04,-4.63 4,-2.16 0.98,2.93 -2.17,4.94 -1.91,7.78 2.5,-1.15 4.75,-3.34 7.37,-1.07 2.42,1.29 5.16,2.48 7.7,0.7 1.54,0.46 0.47,5.05 0.71,7.19 0.58,3.31 -4.03,1.68 -5.65,1 -1.59,-1.22 -4.83,-1.69 -5.19,-3.75 1.7,-4.11 -3.26,-1.94 -5.53,-2.31 -2.04,0.6 -6.23,0.55 -4.31,3.72 1.26,1.16 4.35,-0.42 5.38,2.04 2.76,1.44 -0.43,4.39 -2.54,4.37 -2.75,-0.56 -4.74,4.2 -0.71,3.48 2.64,0.57 6.65,0.82 2.18,2.56 -1.86,1.21 -4.55,1.66 -6,3.25 -1.1,2.82 0.47,5.48 1.28,8.13 5.01,1.69 10.02,3.38 15.03,5.06 2.12,-0.23 1.09,-3.14 0.16,-2.97 -0.76,1.88 -3.98,1.99 -3.25,-0.63 2.8,-3.12 5.65,-6.81 9.31,-9 3.6,-0.24 7.24,-1.3 10.81,-1.09 1.21,1.32 2.75,4.02 0.25,4.94 -1.68,2.68 3.83,-2.34 2.14,-4.14 -1.15,-2.6 -3.19,-5.78 -6.42,-4.67 -2.75,-1.52 -4.42,-5.28 -3.91,-8.38 1.26,-2.37 3.94,-3.83 5.78,-5.54 1.61,-2.97 -1.68,-6.36 -4.75,-5.02 -3.75,0.66 -8.71,3.63 -11.63,-0.19 -1.83,-1.92 -3.2,-6.71 0.31,-7.56 2.78,-1.63 0.58,-2.73 -1.84,-1.94z m-11.72,12.09c-0.08,-0.04 -0.09,0.18 0,0z m-4.56,2.28c1.4,-3.26 1.29,-4.92 0.11,-0.61l-0.09,0.49 -0.02,0.12z M457,55.72c-1,0.46 -3.54,5.14 -1.38,3.6 1.48,-0.87 6.21,-2.64 2.44,-3.69 -0.36,-0.17 -0.71,0.02 -1.06,0.09z m-41.09,7c-0.25,1.57 -4.9,6.97 -0.87,4.76 3.72,-1.22 7.4,-2.58 10.67,-4.69 2.93,-0.95 5.29,-0.58 1.12,-0.91 -3,-0.7 -6.71,0.09 -8.98,-2.44 -0.65,1.09 -1.29,2.19 -1.94,3.28z m31.25,-1.97c0.11,0.78 4.7,-2.13 0,0z m-5.81,0.66c-3.54,0.47 -7.66,0.41 -10.88,0.66 0.67,2.11 2.68,1.92 4.62,1.67 3.01,-0.17 6.3,-0.07 8.66,-2.29 -0.79,-0.19 -1.6,-0.03 -2.41,-0.03z m1.56,3.03c-2.88,1.13 -1.21,5.18 -4.19,6.34 -3.6,2.14 -6.72,-2.29 -10.47,-2.06 -3.01,-0.89 -5.76,1.74 -8.35,3.01 -2.71,2.18 -6.52,4.43 -7.27,7.96 0.18,1.51 4.13,0.67 2.84,2.66 -2.29,1.22 -5.24,-0.3 -6.59,-2.13 -0.64,-1.13 1.18,-6.54 -0.53,-3.19 -3.22,4.08 -9.79,4.87 -11.29,10.52 -1.07,2.64 -1.85,5.58 -5.3,3.89 -4.59,-1.7 -8.52,1.77 -12.84,2.72 -3.31,0.47 -6.17,-1.62 -9.5,-0.72 -2.97,1.63 -5.73,4.31 -8.33,6.62 -1.96,2.01 -2.68,5.33 -0.14,1.47 1.06,-1.2 2.41,-4.78 4.19,-3.41 2.37,2.62 -1.24,5.31 -2.34,7.63 -1.89,1.4 -5.07,1.98 -4.85,5.06 -0.11,3.13 -0.5,6.25 -2.62,8.72 -1.16,-0.88 -3.68,-1.23 -3.47,-3.09 -1.92,-1.17 -4.21,-1.95 -5.89,0 -2.35,1.65 -4.97,-1.81 -3.77,-4.13 -1.91,-1.96 -3.3,-5.2 -6.59,-3.87 -5.1,-0.35 -9.02,3.11 -13.04,5.78 1.53,2.15 0.81,6.74 -2.56,5.38 -2.64,1.41 -7.07,3.37 -6.72,7.09 1.31,2.5 2.06,5.12 1.15,7.92 0.24,2.24 3.08,3.96 4.95,5.27 1.49,-0.13 2.88,-0.94 4.38,0.28 1.77,1.48 2.91,4.8 1.54,6.72 -1.07,2.51 -1.74,5.18 -3.94,7.19 -3.45,4.41 -6.57,9.53 -11.63,12.13 -2.85,-1.67 -4.12,1.25 -4.21,3.8 -1.04,3.05 -1.35,4.72 2.28,3.81 4.38,-1.22 5.62,3.97 8.63,5.73 2.06,1.71 4.79,0.13 5.56,-2.03 1.66,-2.26 4.66,-0.28 6.53,0.28 2.66,5.4 4.35,13.11 11.13,14.56 1.97,-0.26 2.54,2.31 1.09,3.34 1.98,0.75 4.2,1.46 5.28,3.41 2.92,0.33 5.86,0.78 7.88,-1.84 2.53,-1.04 4.17,0.11 6.2,0.92 3.41,1.17 3.57,-3.72 2.91,-5.91 -1.19,-2.85 2.75,-4.04 4.19,-5.91 2.26,-0.57 6.06,-0.68 6.92,2.18 2.22,-0.82 7.58,-0.29 4.18,-3.52 1.89,-0.52 5.64,-0.7 8.01,-2.08 1.84,-1.16 5.37,-2.23 4.75,-4.82 0.89,-1.93 2.17,-4.64 4.7,-3.27 2.88,0.17 5.85,-1.68 8.79,-1.42 2.69,2.85 6.38,3.54 9.59,5.47 2.1,1.42 2.54,5.89 5.86,4.62 1.42,-1.54 4.52,-1.23 6.97,-0.84 2.64,0.11 5.42,0.12 6.99,2.65 1.76,1.23 2.9,3.74 4.81,4.36 3.51,-2.08 7.9,-1.79 11.85,-1.57 1.87,0.92 -0.02,2.26 -1.2,2.88 2.73,2.02 3.96,-3.02 6.01,-4.14 1.85,-2.5 5.05,-5.4 8.21,-4.51 0.4,1.63 2.6,4.73 2.69,1.53 -0.18,-4.03 4.85,-6.14 8.16,-4.72 0.92,1.02 1.13,4.66 2.78,2.25 1.94,-2.52 5.64,-4.66 5.83,-7.92 -0.98,-3.87 1.53,-7.87 4.55,-10.15 2.94,-2.19 5.03,-6.55 9.2,-6.14 3.13,-1.46 0.88,-2.47 0.94,-4.94 -0.47,-2.01 1.66,-5.18 3.04,-2.12 2.09,2.5 4.8,4.66 5.08,8.15 0.55,3.39 3.31,3.78 6.08,2.65 2.41,-0.3 6.44,1.78 7.55,-1.21 2.62,0.79 6.91,-0.99 8.25,2.06 1.49,6.11 -3.45,10.78 -7.19,14.78 -1.98,3.1 3.33,1.46 5.03,1.98 3.6,0.68 6.06,-2.53 6.41,-5.79 1,-1.79 6.72,-1.16 5.01,-3.95 -1.75,-4.35 -2.83,-9 -3.99,-13.46 -2.18,-2.83 -4,-6.6 -2.87,-10.22 -0.22,-5.43 -3.03,-10.29 -3.44,-15.72 -0.42,-2.28 -2.57,-2.04 -3.28,-0.22 -1.81,2.36 -5.39,1.17 -7.84,0.59 -3.37,-1.38 -7.23,-1.87 -9.74,-4.72 -2.44,-2.52 -7.36,-2.95 -8.1,-6.78 1.68,-2.2 3.24,-5.36 5.94,-6.13 0.44,-2.04 -2.63,-3.55 -3.67,-5.18 -2.27,-2.24 -3.02,-5.61 -4.55,-8.32 0.21,-2.8 0.27,-5.88 -2.37,-7.5 -1.78,-3.54 -4.86,-2.15 -7.78,-0.99 -2.53,1.08 -5.51,1.39 -7.79,2.9 0.14,1.21 2.98,3.43 0.56,3.84 -3.2,0.18 -3.78,-3.49 -4.59,-5.69 -0.99,-1.26 -3.18,1.08 -3.03,-1.66 3.36,-2.44 -2.45,-0.94 -3.09,-2.5 -1.56,-2.33 -1.97,-5.95 -5.39,-6.49 -2.15,-2.65 -4.68,-0.2 -6.44,-0.76 -2.83,-2.27 -3.42,-6.13 -4.17,-9.38 1.49,-2.52 -2.16,-5.5 -3.62,-7.17 -1.75,-0.48 -3.25,0.75 -4.88,1.21z m52.69,22.19c-3.16,0.36 -1.48,4.22 0.37,5.25 1.73,2.04 0.07,5.76 2.48,7.75 1.23,2.84 2.71,4.73 5.49,2.07 1.56,-1.43 -2.24,-3.39 -0.78,-5.26 2.84,0.22 4.58,0.55 1.09,-0.38 -3.78,-1.63 -6.46,-4.91 -7.63,-8.84 -0.21,-0.29 -0.58,-0.78 -1.03,-0.59z M508.81,98.25c2.29,2.13 4.59,4.76 3.68,8.19 1.29,3.82 -2.55,2.56 -4.59,1.72 -1.01,-1.74 -1.1,-5.02 -3.97,-3.22 -1.8,2.49 2.15,3.83 2.07,6.36 1.37,2.89 -1.67,5.12 -4.12,5.88 -2.51,0.31 -1.55,2.32 0.67,2.35 4.16,0.13 7.86,-2 11.53,-3.58 2.18,-0.69 5.82,0.22 7.3,-1.22 1.43,-3.32 1.05,-6.01 -2.4,-7.65 -4.01,-3.08 -7.07,-7.49 -11.49,-9.99 0.44,0.39 0.88,0.77 1.31,1.16z m-153.22,8.91c-2.07,0.65 -6.19,2.56 -3.84,5.09 3.14,1.72 4.9,-0.57 5.38,-3.56 0.63,-1.6 0.03,-1.86 -1.53,-1.53z","name":"Mecklenburg-Vorpommern"},"he":{"path":"m231.91,351.28c-2.52,4.22 -6.22,7.61 -8.38,12.09 -3.47,2.99 -7.81,5.31 -10.28,9.09 -2.28,0.4 -5.74,0.13 -5.5,-3 2,-3.26 -3.47,-5.21 -5.91,-3.76 -1.41,0.82 -5.95,0.93 -4.65,3.28 0.64,2.39 3.13,3.23 3.37,5.4 0.17,2.42 -1.34,4.44 -3.94,3.29 -5.15,-0.39 -10.41,1.05 -14.95,3.35 -3.17,1.4 -4.72,4.59 -6.61,7.28 0.84,1.05 2.01,4.06 3.59,2.09 2.37,-0.9 6.57,-4.19 7.88,-0.28 0.22,4.19 2.13,8.77 -0.72,12.51 -0.71,2.75 -2.31,4.62 -5.22,4.99 -3.14,-0.43 -7.52,-2.41 -9.63,1.09 0.39,2.15 1.85,4.24 2.13,6.19 -1,1.73 -3.4,2.91 -4,4.63 3.11,2.85 -2.97,-1.27 -1.76,3.31 -1.97,2.72 -3.4,6.11 -5.96,8.25 -2.51,0.68 -5.22,-4.25 -7.23,-1.05 -2.7,2.64 -5.41,5.28 -8.11,7.92 0.49,2.48 3.93,4.74 1.63,7.26 -0.76,2.71 -4.3,4.36 -2.78,7.49 -0.8,2.92 2.77,3.49 2.12,5.75 -1.13,1.85 -1.06,5.6 -3.44,5.9 -1.97,0.22 -2.63,-1.53 -4.06,-2.13 -2.8,1.41 -5.48,6.02 -2.56,8.66 -0.49,2.46 -3.67,5.82 0.27,6.82 3.67,1.53 5.25,5.3 6.61,8.75 0.92,2.04 1.08,4.85 -1.7,5.37 -1.07,-0.93 -5.7,-1.33 -3.5,1.11 2.47,0.99 0.89,3.49 -1,3.99 -2.32,-1.08 -4.25,-1.29 -6.55,0.33 -2.11,0.73 -3.8,3.88 -1.08,4.86 2.02,1.08 1.39,4.09 0.28,5.59 -2.84,-2.01 -4.64,0.94 -6.72,2.5 -3.14,0.7 -2.62,2.78 -0.67,4.69 1.7,1.7 2.49,4.75 4.7,5.72 7.32,0.54 13.26,-4.85 20.19,-5.97 3.41,-0.25 5.55,2.38 7.21,4.9 2.7,2.09 3.72,5.69 3.75,8.95 -2.21,2.91 0.93,6.19 1.75,9.06 1.22,3.02 5.3,4.54 4.69,8.16 -0.83,2.19 -2.69,3.5 -5.03,3.69 -3.67,1.29 -0.58,5.33 -0.19,7.78 1.19,1.23 1.73,4.58 3.56,3.47 2.87,-0.09 4.72,3.15 6.02,5.29 0.45,2.46 3.64,2.83 4.61,0.44 0.84,-1.91 -0.18,-4.52 -1.35,-5.64 -0.49,-3.07 3.89,-2.29 5.74,-3.3 2.12,-0.86 2.95,1.54 1.33,2.77 -0.13,1.19 0.36,6.2 2.44,7.44 3.73,1.71 7.96,2.48 12.06,2.41 0.3,2.37 -0.95,4.21 -3.22,5.14 -2.12,0.41 -4.13,4.05 -2.97,5.83 3.16,0.98 4.62,-3.02 6.97,-4.37 2.62,-1.23 -1.27,-2.95 1.23,-4.7 1.83,-3.04 5.68,-3.23 8.67,-4.31 2.07,1.28 4.67,2.3 1.65,-0.28 -2.77,-0.69 1.28,-2 0.17,-4.09 -1.83,-2.61 0.09,-5.95 0,-8.84 0.67,-3.72 4.45,-6.62 2.87,-10.6 0.27,-3.23 -3.17,-2.82 -4.5,-5.35 -1.88,-1.31 -2.94,-3.09 -2.59,-5.43 1.25,-0.49 -0.57,-3.68 -0.1,-5.19 -0.37,-2.39 0.26,-5.26 -1.15,-7.31 2.19,-0.29 2.3,-4.03 0.75,-4.91 -3.55,0.11 -2.06,-3.18 -1.51,-5.43 1.26,-3.72 6.02,-2.87 8.99,-4.29 3.44,-0.94 6.85,-2.48 10.38,-0.98 2.53,1.03 6.93,-0.17 7.36,3.51 0.22,3.77 3.72,2.22 6.1,1.81 3.18,-0.12 0.4,-3.63 0.68,-5.44 -0.84,-3.13 -0.37,-6.51 1.38,-9.24 2.02,0.57 4.63,1.89 6.47,0.94 0.86,-2.28 1.78,-5.61 4.88,-5.28 3,-1.1 4.77,-5.15 2.22,-7.63 2.46,-1.43 0.46,-5.9 4.2,-5.65 2.35,-1.65 4.24,2.19 6.72,0.64 3.67,-2.12 7.61,-4.88 9.17,-8.99 0.87,-4.15 -0.43,-8.59 0.34,-12.69 1.59,-1.67 2.87,-3.11 0.88,-5.25 -1.95,-0.3 -4.67,-0.51 -5.91,1.03 2.68,1.72 0.06,4.83 -2.4,3.41 -3.4,0.47 -3.73,-2.19 -3.1,-4.85 1.64,-2.54 4.97,-5.54 3.53,-8.77 -2.61,-1.88 3.02,-1.21 0.62,-3.76 -0.39,-2.4 1.7,-5.24 4.25,-4.19 2.32,-0.16 2.52,-3.78 3.13,-5.59 -0.42,-3.72 -1.44,-7.39 -2.41,-10.94 0.58,-3.37 4.7,-2.07 6.91,-1.42 1.33,1.43 3.54,1.27 4.93,0.14 1.65,-2.01 -0.8,-4 -2.88,-4.28 -0.73,-2.4 -0.28,-5.7 -2.15,-8.05 -1.81,-2.17 3.2,-3.84 4.13,-1.92 0.85,2.09 2.04,3.15 0.8,0.19 -0.79,-1.77 1.55,-2.57 1.81,-3.75 -2.16,-0.34 -3.1,-3.03 -5.47,-3.13 -2.41,-1.32 -5.66,-1.92 -5.69,-5.28 -2.73,-1.26 -6.43,-1.62 -7.14,-5.14 -0.93,-2.28 -2.35,-5.29 -0.96,-7.39 -0.41,-3.77 -4.2,-2.41 -6.91,-2.04 -2.44,0.91 -4.65,3.07 -6.27,5.16 0.26,3.75 3.81,-0.17 4,2.53 0.6,2.43 -1.31,3.7 -3.35,4.44 -2.57,-2.31 -6.46,-3.25 -9.7,-4.62 -2.11,-0.64 -2.73,-3.33 -1.64,-5.16 0.52,-2.33 2.7,-3.11 4.88,-2.75 1.13,-2.01 -0.13,-5.09 -0.97,-7.03 -0.84,-1.85 -3.71,-4.21 -0.9,-5.87 1.12,-2.04 3.33,-1.71 4.5,-3.66 2.57,-0.35 -1.93,-2.01 -2.09,-3.38 -2.42,-2.04 -5.4,-1.51 -8.28,-1.84 -2.56,-0.15 0.13,-3.78 -1.82,-2.9 -0.65,0.13 -1.3,0.26 -1.96,0.4z m48.47,53.75c-0.2,0.03 0.16,0.35 0,0z","name":"Hessen"},"hh":{"path":"m273.31,139.16c-1.5,1.09 -0.93,4.3 -3.67,5.06 -1.61,1.47 -3.71,3.26 -5.89,1.85 -2.33,-0.78 -1.81,2.21 -3.43,3.24 -1.3,1.52 -3.26,5.5 -5.37,2.78 -1.64,-2.73 -2.78,-2.89 -3.11,0.48 -1.95,3.52 3.88,1.56 2.16,5.63 -0.89,2.25 0.93,3.48 1.47,5.56 1.11,1.96 3.5,5.01 5.03,1.63 1.82,-0.66 3.1,2.78 4.87,3.63 1.74,1.19 3.59,-1.92 4.1,-3.57 1.25,-2.32 3.61,0.86 4.66,2.15 1.9,2.2 3.93,4.76 7.21,3.97 1.13,-0.62 1.01,-2.97 2.91,-3.07 2.93,-1.45 -2.65,-3.59 -2.97,-5.78 -1.42,-2.02 -5.31,-2.65 -5.35,-5.94 -0.83,-2.64 0.75,-4.88 3,-6.12 2.02,-2.17 0.93,-4.31 -0.94,-5.97 0.01,-2.33 -0.49,-4.73 0.53,-6.88 -1.59,-1.66 -3.52,1.07 -5.22,1.34z","name":"Hamburg"},"hb":{"path":"m177.13,149.91c-1.02,1.81 2,3.93 2.44,6 0.78,1.49 -1.36,2.66 0.47,3.7 0.36,2.05 1.77,2.73 3.27,0.5 2.31,-1.97 -1.15,-5.18 0.62,-7.7 1.79,-3.68 -3.69,-1.91 -5.73,-2.54 -0.36,-0.05 -0.71,0.02 -1.07,0.05z m-2.34,39.47c1.3,3.24 5.12,3.63 7.78,4.94 1.52,2.61 1.31,5.93 3.86,7.69 2.1,1.22 1.38,3.71 2.04,5.46 1.64,0.31 3.99,-0.68 5.77,0.73 2.5,0.16 5.45,3.63 7.38,0.87 2.63,-1.56 0.74,-5.04 0.98,-7.51 -2.78,-1.97 1.76,-2.01 0.87,-3.11 -1.26,-2.73 -3.93,0.26 -6.25,-0.86 -4.35,-0.36 -7.69,-4.63 -12.29,-4.36 -3.91,0.3 -6.92,-2.67 -10.15,-3.86z","name":"Bremen"},"bb":{"path":"m499.25,149.81c-0.84,1.88 -0.81,4.34 1.28,5.34 -1.74,2.06 -3.79,3.29 -6.37,3.46 -3.18,2.74 -6.61,5.55 -9.05,8.91 -1.36,2.25 -1.54,4.68 -0.87,7.16 -2.28,3.16 -4.83,6.45 -8.06,8.63 -2.41,-0.12 -1.19,-4.5 -3.97,-3.53 -3,-0.61 -5.44,2.28 -5,5.15 -0.4,2.7 -4.01,1.19 -3.97,-1.02 -0.57,-1.97 -3.52,0.03 -4.56,0.75 -2.74,2.49 -4.73,6.13 -7.88,8 -1.99,-0.23 -3.86,-2.04 -1.25,-3.16 1.45,-1.47 -4.76,-0.14 -6.18,-0.46 -2.13,-0.19 -5.04,3.22 -6.6,0.49 -2.73,-2.51 -5.01,-6.52 -9.27,-5.91 -2.13,0.04 -5.13,-1.3 -6.45,0.69 -2.87,1.21 -4.79,-0.3 -6.25,-2.72 -1.52,-3.98 -6.92,-3.25 -9.48,-6.32 -1.8,-2.15 -4.65,0.11 -6.93,0.1 -2.38,1.26 -5.39,-1.14 -6.32,2.55 0.99,3.09 -2.96,4.01 -4.77,5.61 -2.15,1.15 -6.11,1.77 -7.27,2.46 2,2.09 -1.36,2.73 -2.94,2.85 -3.43,2.16 -3.88,-1.29 -6.73,-1.81 -3.03,-0.86 -4.57,2.1 -6.63,3.69 0.64,2.72 1.23,7.08 -1.72,8.53 -1.68,-0.03 -3.77,-0.05 -4.75,-1.47 -3.21,-0.91 -4.58,3.15 -7.53,2.47 -2.88,-1 -5.03,0.48 -2.09,2.67 1.36,1.69 3.08,4 5.08,1.55 1.94,-1.5 5.34,-2.28 6.7,0.42 1.5,2.04 4.32,1.65 6.53,2.39 1.23,-1.43 4.73,-0.25 2.95,1.62 -1.67,1.72 2.21,2.59 2.91,3.81 1.43,1.12 2.93,-2.01 4.58,-0.33 1.76,1.64 5.48,1.89 6.03,4.47 0.12,1.23 -2.72,2.23 -0.94,3.16 4.27,1.68 8.68,4.08 13.38,2.66 2.5,1.2 6.82,-4.08 4.61,0.18 -0.35,3.68 2.96,0.6 4.61,0.47 3.29,0.55 2.92,4.31 3.72,6.78 0.37,2.84 -3.59,3.22 -2.84,6.46 -1.66,3.81 3.69,5.99 2.3,9.81 0.77,2.86 -2.32,3.27 -3.45,4.66 -0.54,2.65 -2.13,5.71 -1.65,8.26 0.83,2.24 4.39,3.7 4.36,0.28 2.12,1.42 6.84,0.74 6.61,4.02 1.02,3.09 -2.67,5.39 -1.23,8.53 0.24,2.83 1.88,6.06 -0.69,8.26 -2.05,3.4 -2.35,7.41 -1.88,11.28 -2.17,2.79 -1.48,5.22 1.03,7.44 3.11,5.22 7.1,10.36 13.17,12.16 3.29,1.01 7.58,3.94 10.7,1.22 -0.29,-3.23 3.4,-2.12 4.94,-0.75 2.81,1.03 3.99,2.78 6.11,4.39 2.08,1.33 4.66,2.82 7.04,1.98 3.14,1.39 6,3.2 8.16,5.88 3.11,1.39 3.63,-2.03 5.78,-1.38 1.85,0.64 2.36,3.88 -0.16,3.41 1.53,4.44 1.98,9.42 4.53,13.28 -0.28,4.36 -5.19,5.81 -8.13,8.16 1.38,4.17 2.89,2.17 5.54,3.45 2.71,1.73 3.05,5.69 4.55,8.42 0.92,3.28 0.16,6.97 -0.56,10.28 1.12,1.84 2.33,3.34 4.61,2.31 0.97,-1.14 2.38,-3.45 4.49,-4.31 2.22,-1.43 4.58,-3.03 6.29,-0.12 4.07,3.53 9.06,7.27 14.8,6.16 2.09,-1.58 2.79,0.71 5.58,0.52 2.7,-0.23 5.1,-3 8.17,-1.96 3.29,-1.1 7.81,-0.26 9.47,-3.95 2.24,-4.34 2.1,-9.97 5.65,-13.77 1.52,-0.92 3.97,-0 5.84,-0.31 2.67,-0.5 5.34,2.24 7.62,0.72 1.65,-1.85 4.86,-1.52 6.32,-2.54 1.7,-2.16 5.35,-2.05 7.75,-3.38 2.31,-0.33 2.58,2.04 4.09,2.56 2.19,0.22 4.28,-0.47 4.14,-3.06 1.18,-2.26 3.58,-0.39 3.55,-4.22 -0.1,-2.81 -0.47,-5.99 -3.36,-7.26 -3.75,-2.16 -4.56,-6.65 -6.42,-10.21 -2.9,-0.63 -3.35,-5.09 -0.55,-6.35 3.76,-2.93 5.89,-7.61 5.36,-12.4 -0.5,-2.47 -0,-3.76 1.5,-6 1.18,-2.51 -0.13,-5.99 -3.13,-5.94 -2.3,-1.74 -2.72,-5.61 -0.53,-7.63 -0.28,-2.81 1.52,-6.55 -1.09,-8.56 -2.6,-1.24 -6.3,-0.29 -7.81,-3.19 -1.11,-3.05 -1.39,-6.47 -2.42,-9.42 -1.68,-2.31 -0.63,-6.4 2.17,-7.48 1.98,-2.33 3.3,-5.1 2.57,-8.22 0.38,-2.83 -0.31,-5.28 -2.51,-7.19 -3.54,-2.79 -8.55,-3.73 -11.34,-7.59 -2.56,-5.3 -8.11,-8.18 -12.88,-11.28 -2.02,-1.42 -4.87,-0.97 -6.69,-2.38 -2.03,-2.63 3.01,-4.81 1.15,-7.48 -0.64,-2.66 -2.69,-6.39 0.67,-8.11 3.25,-1.9 6.37,-3.89 8.77,-6.91 3.06,-2.56 2.89,-6.96 3.39,-10.59 -1.83,-1.72 -1.71,-4.98 -0.47,-6.84 1.2,-1.67 4.41,-4.79 3.03,-6.69 -2.15,0.19 -2.35,-3.69 -2.22,-5.41 -2.44,1.01 -5.3,1.53 -5.5,4.63 -1.15,2.4 -3.02,3.91 -5.78,3.72 -2.22,-0.47 -6.15,0.62 -7.41,-0.9 0.47,-4.6 5.82,-6.58 7.23,-10.78 0.81,-2.01 1.54,-5.13 -0.2,-6.73 -3.16,-0.57 -5.69,-0.28 -7.87,1.03 -3.28,0.28 -6.64,-0.73 -9.75,0.5 -4.23,-1.06 -2.75,-6.98 -5.95,-9.24 -1.05,-1.15 -2.07,-2.54 -3.15,-3.54z M484.13,240.25c2.62,1.78 3.22,5.59 5.07,8.15 1.73,3.05 5.13,4.94 5.9,8.6 -0.13,3.15 2.96,3.88 5.31,4.97 3.02,1.16 1.5,3.96 0.62,6.15 -2.11,1.18 -0.3,2.41 -1.81,3.94 -3.37,1.44 -6.8,-1.31 -10.22,-1.72 -2.61,0.29 -4.02,-2.66 -5.44,-2.59 -3.39,0.13 0.93,5.86 -3.25,4.2 -2.15,-1.56 -3.93,-2.85 -6.03,-2.56 -2.2,-2.21 -6.14,-1.55 -8.26,0.46 3.07,1.05 -3.31,1.77 -4.27,0.08 -2.48,-1.03 -0.87,-2.57 0.43,-3.73 -0.55,-1.26 -1.2,-3.36 0.31,-4.63 3.03,-2.14 1.73,-3.7 -0.71,-3.56 0.04,-2.5 -0.02,-5.34 0.62,-7.66 1.31,-1.47 2.88,-1.58 4.41,-0.5 1.08,0.35 -1.33,-2.46 0.8,-3.32 1.36,-1.61 4.71,-0.61 6.85,-0.8 2.24,1.02 3.85,-0.76 4.63,-2.66 1.77,2.37 2.44,0.08 3.29,-1.66 0.36,-0.52 1.13,-1.47 1.74,-1.16z","name":"Brandenburg"},"be":{"path":"m483.38,241.69c-1,1.58 -1.61,5.27 -4.03,2.88 -0.91,2.64 -3.81,2.59 -6.06,2.05 -1.91,-0.31 -7.28,0.09 -4.84,2.79 1.38,2.14 -2.25,1.68 -3.34,0.78 -3.18,-0.15 -1.8,4.36 -2.36,6.45 -0.09,0.87 5.17,1.04 2.51,3.18 -1.16,1.75 -4.04,3.69 -1.89,5.83 0.53,1.82 -3.82,2.76 -0.54,3.7 2.29,1.61 3.52,-2 6.07,-2.2 2.07,-0.34 5.08,-0.28 6.25,1.69 2.29,-3.28 5.18,4.71 6.09,1.16 -1.15,-2.62 1.9,-3.14 3.66,-3.85 0.63,3.56 5.17,2.88 7.8,4.18 1.96,0.26 4.94,2.32 6.26,0.28 -2.5,-1.19 2.5,-2.95 2,-5.26 1.05,-2.66 -3.24,-2.9 -4.77,-4.37 -2.69,-0.38 -1.4,-4.38 -3.15,-6.05 -1.61,-3.03 -4.93,-4.88 -5.94,-8.38 -1.14,-0.99 -1.96,-6.07 -3.71,-4.88z","name":"Berlin"},"by":{"path":"m273.66,464.44c-1.31,1.91 -3.76,2.78 -3.5,5.34 -1.83,4.59 -6.12,7.95 -10.5,9.94 -2.67,1.02 -4.62,-2.49 -7.15,-0.61 -1.54,0.74 -0.64,3.49 -2.13,4.58 2.4,3.04 -0.04,7.53 -3.44,8.47 -3.38,-0.45 -3.01,4.07 -4.66,5.5 -2.16,0.47 -4.23,-0.33 -6.28,-0.91 -2.54,3.91 -0.46,8.53 0,12.63 -0.53,2.87 -4.66,1.74 -6.9,2.55 -3.16,0.27 -1.64,-5.68 -4.98,-5.22 -4.19,-0.72 -8.41,-2.46 -12.49,-0.42 -2.97,1.16 -6.84,1.23 -9.32,2.99 -0.59,1.48 -2.41,4.44 -0.69,5.28 3.02,-0.37 2.55,4.03 2.28,5.63 -2.37,0.86 0.17,4.18 -0.45,6.12 0.28,2.66 -0.27,5.78 1.89,7.78 -3.88,-0.85 0.14,3.73 1.52,4.58 0.84,1.94 3.96,0.92 3.59,3.64 1.27,2.88 0.6,5.62 -0.78,8.31 -2.26,2.93 -2.47,7.6 -2.42,11.23 1.24,2.27 4.6,0.89 6.75,1.12 2.16,0.04 4.75,-2.13 4.73,-4.03 -0.34,-2.04 2.18,-5.23 4.72,-3.63 1.87,0.74 5.34,1.32 4.23,-1.45 1.6,-1.24 -0.63,-7.5 -0.96,-4.79 0.79,2.49 -3.31,2.3 -3.52,0.13 -0.83,-1.56 -3.4,-4.82 -1.19,-6.09 3.07,-0.15 6.37,-1.05 9.34,-0.19 0.41,-2.46 4.94,-2.22 3.88,0.41 0.59,1.49 3.45,3.68 4.43,1.04 1.16,-1.1 4.96,-5.66 4.94,-1.88 -0.59,2.44 0.18,5.72 -1.59,7.45 0.33,2.92 3.79,0.57 5.16,-0.39 2.48,-0.32 5.61,-3.48 7.29,-0.3 2.99,3.39 2.07,8.94 5.01,12.52 2.18,0.31 2.43,3.58 2.41,5.6 0.45,1.81 -0.72,3.89 -0.34,5.16 2.77,0.82 6.24,0.65 7.69,-2.25 -0.15,-1.12 -1.91,-2.61 0.74,-3.68 2.83,-1.31 3.76,2.79 4.2,4.84 -1.95,1.56 1.87,3.4 1.31,5.57 0.26,2.1 4.02,5.65 0.6,6.68 -2.91,-0.9 -2.81,3.3 -1.87,5.04 0.96,2.51 3.11,4.68 1.16,7.27 0.44,2.52 -1.72,6.37 1.65,7.44 1.89,1.55 4.82,1.6 5.41,4.43 1.71,2.58 1.5,5.88 2.31,8.79 -2.03,1.94 3.23,2.14 4.31,3.59 2.13,2.06 5.86,2.95 6.29,6.28 3.84,2.87 1.91,8.3 2.08,12.46 0.25,2.64 -0.94,5.5 -2.07,7.44 -0.04,3.1 4.34,2.42 3.61,6.41 2.49,1.05 0.06,3.97 -1.86,4.33 -1.61,1.16 -4.23,0.12 -2.18,-1.56 2.29,-3.25 -3.46,-0.68 -4.81,-0.69 -2.23,0.84 -5.79,-3.18 -5.97,0.9 -0.14,3 3.91,4.63 3.42,7.93 0.53,2.67 0.99,5.81 0.27,8.32 -1.49,1.89 -3.93,-0.58 -5.06,1.19 0.32,2.29 -3.52,3.66 -4.94,5.41 -3.13,1.93 -4.28,-3.47 -7.13,-0.01 -2.35,0.12 -0.74,3.36 -2.58,4.82 -1.74,2.44 -2.43,5.75 -0.16,8.06 1.31,2.7 4.08,4.51 3.75,7.78 0.56,4.38 1.13,8.84 2.71,12.9 2.91,1.82 1.6,5.52 2,8.41 0.45,2.66 -1.86,4.17 -1.66,6.72 0.19,1.55 -3.47,0.81 -1.84,3.13 2.61,1.07 0.38,3.66 0.87,5.81 0.2,2.47 -0.14,5.78 2.07,7.38 0.5,2.56 -3.74,2.92 -1.81,6.18 1.02,3.01 3.86,6.55 1.16,9.46 -1.18,1.16 -3.19,0.63 -3.38,2.95 -1.52,3.81 -0.35,-4.27 -2.92,-3.81 -1.88,-0.93 -3.51,0.34 -4.08,2.09 -3.48,0.28 -7.46,-0.44 -10.66,0.7 -2.62,1.93 -4.17,6.22 -7.96,5.49 -1.72,0.26 -2.84,-2.34 -4.53,-0.51 -3.88,1.61 -1.7,3.37 1.37,4.04 3.22,2.32 4.79,-0.35 6.38,-2.97 2.19,-2.61 6.67,0.35 5.03,3.47 -1.46,1.59 3.12,2.56 4.5,2.46 2.2,0.75 5.22,-2.54 5.71,-2.37 -1.26,2.65 0.2,5.16 1.79,7.23 3.74,-0.93 5.96,3.27 7.63,5.97 -1.64,1.92 -2.48,3.42 -1,5.94 0.03,1.72 5.17,0.51 4.35,-1.56 0.81,-1.86 3.6,-1.1 5.09,-0.53 2.05,2.24 -1.68,3.98 -1.81,6.26 -0.21,1.48 -3.48,5.59 -1.04,5.45 5.9,-0.28 10.64,-4.27 13.65,-9.1 1.68,-2.49 4.2,-4.8 5.23,-7.51 -0.27,-1.73 0.37,-4.61 -1.96,-4.47 -1.78,-2.98 -0.76,-6.77 -1.03,-10.06 0.59,-1.59 4.6,-2.06 3.97,0.09 -1.67,2.23 -0.39,3.45 2.34,3.77 2.31,0.63 4.34,0.47 4.81,-2.09 1.65,-2.51 5.13,-0.08 7.59,-0.22 0.5,2.03 3.14,2.52 5.19,3.38 2.99,1.48 5.86,-2.19 8.72,-1.09 3.48,2.5 -1.05,3.09 -0.97,5.59 2.55,0.29 4.83,1.11 6.25,3.38 2.96,1.58 0.77,3.77 1.16,5.09 4.01,0.78 8.16,-0.05 11.5,-2.41 2.24,-1.08 5.28,-2.46 7.66,-1.16 -0.63,2.06 -2.84,4.65 1.39,2.92 0.99,-2.2 2.51,-4.2 4.63,-5.64 2.78,-1.69 3.97,-4.98 6.66,-6.66 2.2,2.25 6,0.82 8.75,0.25 1.72,-1.5 -0.11,-4.24 1.75,-6 1.27,-3.31 5.21,-1.69 7.87,-2.01 3.14,-0.06 6.26,-0.02 9.34,0.6 1.3,-3.59 5.97,-3.64 9.18,-3.87 2.61,1.43 5.36,-1.54 7.57,0.5 2.56,0.03 5.94,1.12 8.03,-0.19 -0.56,-3.08 -2.75,-5.66 -1.81,-8.97 1.68,-1.6 3.23,-4.06 5.5,-4.97 2.05,1.73 -0.97,3.82 0.9,5.81 0.74,1.55 6.18,-3.23 5.07,-0.41 2.78,1.55 7.13,-0.47 8.4,3.24 1.5,2.9 4.05,3.71 6.55,1.34 2.39,-0.55 1.97,-4.34 4.92,-3.93 3.45,-1.43 7.22,-0.35 10.38,1.04 0.63,2.57 4.26,5.4 1.53,7.59 -1.91,3.64 3.48,5.29 5.61,7.15 2.86,2.07 5.93,3.86 9.26,5.04 1.6,-1.29 3.65,-3.83 2,-5.66 -1.98,-1.39 0.16,-4.42 -0.13,-6.41 0.81,-2.05 3.05,-3.55 3.5,-5.53 -1.37,-2.88 -2.02,-7.29 -5.72,-7.94 -0.69,2.59 -4.42,1.51 -6.31,1.34 -1.86,-0.73 -2.16,-2.62 -0.73,-4.04 1.53,-3.69 4.03,-7.15 5.39,-10.77 -2.14,-3.41 -3.7,-7.7 -6.59,-10.34 -2.88,0.4 -3.64,-2.11 -3.9,-4.41 -1.24,-4.49 -8.32,-5.42 -8.04,-10.73 0.04,-2.8 4.04,-3.87 5.63,-5.89 1.81,-1.22 1.17,-3.89 2.78,-4.97 2.57,-0.91 6.07,0.24 7.47,-2.89 1.29,-1.84 2.29,-3.74 4.7,-4.4 2.08,-2 5.15,-0.22 7.17,-2.39 2.7,-1.73 6.58,0.63 8.88,-2.3 3.06,-1.95 5.85,-4.79 7.85,-7.65 0.43,-2.52 2.26,-5.13 0.38,-7.38 0.45,-3.1 3.3,-6.59 0.44,-9.38 -0.61,-1.41 4.07,-1.2 4.41,-3.5 -0.1,-4.04 4.08,-0.04 6.17,0.11 3.24,1.6 5.97,4.3 9.52,5.26 3.15,-4.15 7.21,-9.07 5.25,-14.64 0.5,-2.8 -3.41,-5.03 -1.06,-7.39 1.18,-2.53 1.51,-5.28 -0.56,-7.48 -1.75,-2.45 -3.35,-5.1 -5.19,-7.42 -2,1.56 -5.42,0.69 -5.99,-1.97 -0.86,-2.58 -2.84,-4.62 -4.76,-6.5 -2.32,-0.51 -5.25,-0.27 -4.06,2.66 -1.49,2 -4.02,-1.61 -5.78,-2.26 -3.51,-1.84 -1.34,-7.26 -4.67,-9.54 -1.77,-2.1 -3.92,-4.14 -6.4,-5.23 -2.11,1.09 -4.33,0.73 -6.1,-0.79 -2.35,-0.65 -1.29,-3.34 -2.28,-4.52 -5.62,-4.34 -8.22,-11.7 -13.85,-16.05 -0.96,-0.66 -5.12,-1.7 -4.56,-0.67 1,2.66 -3.26,0.86 -4.59,0.92 -2.67,0.16 -4.59,-1.69 -5.1,-4.2 0.33,-2.99 -3.95,-3.91 -5.58,-5.98 -1.3,-1.16 -4.06,-3.42 -2.45,-4.96 0.01,-2.41 0.31,-4 -2.29,-4.05 -2.07,-0.53 -1.46,-1.98 -2.8,-3.5 -2.08,-3.55 -3.13,-7.39 -3.48,-11.47 -1,-2.47 -5.61,-0.9 -6.56,-3.96 -1.46,-1.68 -3.4,-4.99 -0.08,-5.91 3.24,-0.92 2.39,-4.05 3.21,-6.53 0.88,-3.28 4.17,-5.56 3.4,-9.15 -1.69,-2.78 -3.02,-7.24 -7.16,-6.34 -2.89,-1.46 -5.43,-3.31 -7.5,-5.81 -4.37,0.47 -3.42,-1.95 -5.22,-4.41 -1.08,-0.95 -3.08,-0.2 -3.19,-2.3 -0.69,-1.94 -0.29,-3.97 0.91,-5.48 -1.13,-3.44 -4.24,-5.4 -7.25,-6.96 -2.59,-1.3 0.21,-3.74 1.9,-4.17 -1.15,-4.86 -6.38,-5.68 -10.5,-6.63 -1.66,-1.44 1.51,-4.7 -1.45,-5.85 -1.47,-2.96 -3.98,-0.6 -6.15,-0.03 -4.99,1.83 -10.54,1.94 -15.74,2.63 -0.77,-0.67 -2.77,-2.61 -3.03,-0.5 -0.96,2.08 -4.29,1.95 -5.15,-0.33 -1.46,-1.7 -1.05,-3.98 -3.62,-3.71 -2.87,-0.72 -2.28,-4.47 -1.51,-6.47 2.3,-1.83 -2.65,-2.89 -4.3,-2.43 -1.7,1.3 -2.92,3.72 -5.37,4.41 -1.61,-1.19 -1.85,2.9 -0.04,2.88 0.66,3.05 1.58,6.38 1.39,9.48 -1.36,2.21 -0.38,7.05 -3.72,7.01 -1.95,0.12 -2.86,4.45 -5,1.12 -2.19,-1.15 -2.98,-4.4 -0.24,-5.3 -0.32,-1.92 -3.58,-5.33 -4.44,-2.09 -2.92,1.68 -7.59,1.16 -8.96,-2.28 -0.97,-2.98 -4.83,-0.87 -7.1,-1.48 -2.57,0.83 -5.91,1.76 -7.83,3.43 -0.82,2.98 1.43,4.47 3.69,5.77 1.52,2.24 6.27,1.22 5.55,4.87 -1.22,3.47 -5.4,0.77 -7.88,0.59 -0.91,0.73 1.13,4.84 -1.63,4.69 -2.37,-0.99 -5.13,-1.74 -7.34,-2.66 -1.81,-3.33 -1.13,-7.07 -0.75,-10.66 -3.86,-0.79 -8.92,-2.08 -9.69,-6.56 -1.65,1.27 -4.99,0.71 -4.64,-1.87 -0.45,-2.76 -1.64,-5.72 -3.61,-7.69 -2.74,-0.99 -5.53,-1.93 -6.83,-4.79 -1.25,-3.09 -5.32,-0.4 -7.74,-0.8z m46.75,26.38c-0.1,0.03 0.04,0.06 0,0z","name":"Bayern"},"bw":{"path":"m233,542.31c-1,3.03 -3.8,0.55 -6.25,1.41 -1.85,0.3 -6.11,-0.67 -4.1,2.56 0.5,1.4 3.45,5.79 2.97,1.91 0.74,-2.88 3.54,0.29 3.5,2.12 -0.05,2.12 0.13,4.28 -0.67,5.91 -2.21,2.88 -6.93,-2.7 -8.36,1.34 0.26,1.89 -0.96,3.78 -2.66,5.38 -2.87,1.47 -6.48,1.36 -9.56,0.91 -0.14,1.71 -1.09,2.75 0.88,3.56 2.16,2.43 -1.84,4.61 -2.82,1.5 -2.24,-0.41 -4.9,0.87 -7.01,1.83 -1.86,1.31 -3.21,3.14 -1.07,4.79 -2.58,2.03 -4.76,4.93 -7.53,6.53 -2.28,0.77 -4.85,-1.67 -3.07,-3.7 0.44,-3.45 3.31,-3.76 5.49,-5.64 2.15,-2.77 -2.95,-1.33 -4.33,-2.33 -3.36,-0.68 -8.66,-1.27 -8.78,-5.66 -0.37,-2.27 -2.39,-6.18 0.16,-6.35 -1.56,0.22 -6.19,0.51 -5.66,2.03 1.02,1.01 1.63,3.91 1.34,5.81 -0.91,2.56 -4.61,4.01 -6.17,1.22 -1.23,-2.27 -2.8,-5.47 -5.58,-5.87 -1.35,0.5 -2.27,2.96 -1.13,4.34 0.64,2.82 1.72,5.99 1.41,8.75 -1.19,1.47 2.13,0.8 2.94,1.09 2.56,1.28 -0.68,4.01 0.44,6.03 0.58,2.78 -1.68,4.86 -3.44,6.5 -0.2,1.61 2.95,0.95 2.5,3.03 -0.5,1.7 -2.89,2.29 -3.8,3.97 -1.51,1 -4.09,2.21 -3,4.19 -0,4.19 -1.63,8.4 -2.57,12.44 -1.88,2.38 -4.07,4.74 -4.06,8 -0.94,3.32 -4.33,5.15 -7.25,6.25 -3.09,4.3 -5.58,9.02 -6.75,14.19 -2.02,2.94 -5.4,5.15 -8.91,5.69 -0.21,2.82 -1.4,5.14 -3.56,6.99 -1.36,2.17 -3.49,3.53 -5.66,4.61 -1.15,2.67 -3.64,5.13 -2.5,8.22 0.36,2.98 -0.28,5.69 -1.97,8.15 -1.95,4.34 -4.99,8.87 -3.01,13.76 0.98,2.33 -1.6,3.46 -3.29,4.06 -1.58,3.35 -1.03,7.85 -3.97,10.71 -3.45,3.81 -5.74,8.63 -5.57,13.85 -1.32,3.83 3.9,5.48 3.32,9.25 -1.3,3.08 -3.94,5.46 -4.57,8.93 -0.87,1.91 1.04,3.96 -0.54,5.81 -1.06,2.51 -2.87,5.19 -1.04,7.86 1.18,2.15 -0.92,4.15 -2.35,5.35 -0.31,3.89 3.1,6.22 5,9.16 2.34,1.03 6.63,0.35 6.5,3.84 -1.16,1.4 -4.38,2.08 -0.94,3.62 2.67,0.19 5.38,-1.24 7.85,-2.15 1.44,-1.71 2.81,-3.83 5.44,-3.09 2.67,-0.79 2.95,2.96 5.54,2.9 3.15,1.3 6.81,1.64 9.99,0.41 0.13,-3.3 4.53,-3.63 6.59,-5.48 2.38,-1.41 5.39,0.37 7.78,0.98 0.79,1.29 -0,3.08 2.19,3.78 3.61,0.25 7.37,1.32 10.72,-0.47 -3.18,-2.2 -0.41,-3.55 1.74,-5.09 1.44,-1.37 5.34,0.59 4.6,2.72 0.03,1.73 2.81,-2.43 2.91,-3.66 0.99,-2.17 -2.08,-3.31 -3.78,-2.38 -2.21,0.79 -3.16,2.58 -5.97,3.13 -1.88,-0.81 -4.32,-2.21 -5.31,-4.16 0.59,-3.61 2.99,-6.72 5.06,-9.63 1.63,-2.24 5.73,-0.38 6.44,-3.38 2.06,-2.35 5.55,0.44 4.49,3.47 2.07,0.67 0.21,-4.19 4.06,-1.25 1.57,1.2 4.32,3.45 2.25,5.23 0.1,2.76 1.41,4.58 4.22,5.01 1.74,-2.24 3.46,-0.92 5.76,1.59 2.1,2.97 5.8,0.78 7.96,-0.93 3.82,-2.7 8.65,-0.24 12.27,1.62 3.55,2.04 4.43,-1.99 2.13,-4.27 -0.59,-2.2 -2.12,-3.67 -4.12,-4.07 -2.4,-1.85 -6.01,-3.5 -6.96,-6.5 0.3,-2.1 3.03,-1.62 3.78,-0.16 3.5,2.46 7.48,4.47 10.66,7.31 -0.21,3.96 4.69,5.62 7.5,7.39 1.67,0.53 3.72,-1.14 5.59,-0.11 2.75,0.87 6.81,1.33 7.03,4.97 0.46,3.2 4.49,4.9 6.69,2.27 1.24,-1.5 4.61,-2.56 5.4,-0.7 4.17,1.33 6.15,-3.91 8.97,-5.72 3.32,-0.45 7.13,0.12 10.19,-0.66 1,-2.57 4.28,-2.37 6.22,-1.28 0.84,2.31 0.58,2.71 2.56,1.13 2.97,-0.39 2.03,-4.58 0.76,-6.39 -1.17,-2.02 -2,-5.8 -0.79,-7.3 3.32,-0.17 0.06,-2.21 -0,-3.93 -0.63,-3.04 -0.86,-6.31 0,-9.32 -2.23,-0.74 -2.32,-4.76 0.44,-4.66 -0.41,-2.68 2.08,-4.21 1.66,-6.88 -0.15,-2.82 0.59,-6.09 -1.94,-7.94 -2.26,-5.15 -1.96,-11.11 -3.49,-16.32 -1.93,-2.69 -4.53,-5.55 -4.67,-9 0.46,-2.92 3.93,-5.48 2.72,-8.47 0.1,-0.35 4.87,-3.47 6.42,-2.05 2,3.2 4.93,-0.95 6.82,-2.36 0.33,-1.38 1,-2.91 3.14,-2.96 3.03,1.76 2.98,-2.24 2.69,-4.25 -0.32,-3.5 -1.14,-6.78 -3.64,-9.37 -0.98,-1.42 0.15,-4.75 1.23,-5.16 3.02,1.48 6.11,1.47 9.25,0.41 2.37,-0.94 3.55,1.55 1.82,3.19 0.08,1.06 5.19,-1.87 2.3,-2.88 -0.25,-2.1 -0.85,-4.44 -3.47,-3.91 -1,-3.13 0.42,-4.65 1.54,-7.33 0.09,-4.38 1.32,-9.19 -0.13,-13.38 -2.03,-1.38 -1.82,-4.46 -4.4,-5.39 -2.47,-2.1 -5.26,-3.59 -8.29,-4.72 -0.45,-2.63 0.5,-4.11 -0.61,-6.97 -0.35,-3.23 -2.39,-5.85 -5.43,-6.81 -1.8,-1.05 -4.02,-2.25 -3.05,-4.75 -0.53,-2.57 0.99,-5.27 0.62,-7.5 -1.67,-2.84 -3.08,-6.33 -1.5,-9.56 2.72,0.17 4.05,-1.19 2,-3.69 -1.12,-2.08 -1.1,-4.65 -2.84,-6.37 -0.05,-1.52 1.05,-2.79 -0.28,-4.24 -1.33,-3.13 -3.46,0.38 -1.36,0.89 -1.36,2.26 -3.18,4.9 -6.23,4.2 -1.84,0.68 -5.99,-0.78 -4,-3.06 0.32,-2.43 0.8,-5.95 -0.91,-7.66 -1.91,-0.49 -2.69,-3.58 -3.13,-5.51 -1.12,-3.07 -1.07,-6.84 -4.03,-8.84 -3.37,0.71 -6.2,2.77 -9.34,3.81 -2.15,-0.26 -3.2,-3.12 -1.25,-4.19 -0.15,-1.71 1.98,-8.34 -1.11,-4.8 -1.56,1.02 -3.09,4.67 -5.17,2.44 -1.38,-0.64 -3.13,-1.84 -2.32,-3.58 -0.34,-0.5 -0.91,-0.09 -1.41,-0.13z m-57.69,212.03c0.26,4.67 5.28,-0.76 0,0z","name":"Baden-Württemberg"}}});
diff --git a/js/vmap/dist/maps/jquery.vmap.greece.js b/js/vmap/dist/maps/jquery.vmap.greece.js
new file mode 100644 (file)
index 0000000..a8e6c00
--- /dev/null
@@ -0,0 +1 @@
+jQuery.fn.vectorMap('addMap','greece',{"width": 700, "height": 637, "paths":{"30":{"path":"M420.84,610.62l0.6,-2.95l2.52,-1.21l1.51,0.78l1.03,-1.03l0.13,-5.12l0.49,-2.19l0.69,-0.69l2.13,3.43l4.4,-0.52l1.93,-6.25l0.03,-3.74l-2.04,-2.19l1.58,-2.32l-1.7,-2.35l0.23,-0.51l1.97,1.18l0.59,-0.23l0.34,-1.21l3.46,0.17l0.95,-1.95l1.37,1.01l1.07,-0.67l0.98,0.21l-0.15,0.88l1.02,0.9l1.19,0.12l-0.76,1.22l0.24,1.97l0.55,1.17l1.5,0.9l2.54,0.2l6.51,-0.8l1.36,1.17l2.4,-0.2l0.93,0.45l11.41,-0.75l0.68,1.54l1.45,1.2l0.91,0.09l0.73,1.11l4.33,-0.05l-0.1,1.51l-2.21,1.89l-2.68,0.03l-1.29,0.98l0.02,1.76l-1.56,3.51l0.34,1.46l1.06,1.18l6.05,2.92l0.88,0.98l-0.27,2.21l2.54,1.09l1.24,2.29l0.05,4.61l-3.61,0.77l-2.45,-0.82l-3.17,0.44l-3.4,-1.09l-3.46,1.49l-3.85,-0.2l-1.15,1.54l-1.66,0.85l-4.03,1.04l-0.59,-0.72l-4.34,0.12l-2.71,1.72l-0.64,-0.51l-3.66,-0.32l-2.35,1.19l-2.49,-0.5l-1.86,0.83l-0.55,-0.7l-2.58,0.65l-6.38,-1.29l-2.17,0.32l-1.42,1.22l-1.83,-0.47l-2.65,0.59l1.84,-2.13l-0.76,-1.24l0.45,-0.4l-0.38,-1.96l0.08,-0.94l1.05,-0.6l-0.02,-1.74l-1.25,-4.67l-1.74,-1.49l-1.46,-0.17ZM459.6,579.71l-0.31,-0.33l1.25,-0.46l0.42,-0.92l1.68,1.17l-0.16,1.03l-0.79,0.27l-0.35,-0.81l-1.75,0.05Z","name":"Heraklio"},"28":{"path":"M275.61,38.56l4.99,0.09l0.68,0.66l3.98,0.4l1.89,-0.26l5.64,1.51l6.68,-0.2l3.51,-1.66l1.13,-3.67l4.09,-2.23l2.08,0.08l1.54,3.26l3.52,-1.75l1.79,-1.66l1.4,0.24l1.45,-0.73l3.6,0.73l3.36,-0.66l1.72,1.77l2.12,-0.35l1.54,1.17l2.45,0.01l-0.2,1.86l1.18,4.08l6.66,3.06l-1.35,4.61l0.6,1.63l3.83,3.09l4.69,5.15l4.14,2.81l4.19,0.99l2.35,2.15l1.9,-1.23l2.58,-0.02l1.37,0.93l1.75,2.91l5.29,3.67l-0.4,1.12l0.82,2.63l-1.09,3.5l-5.39,4.06l-1.72,2.35l-4.08,3.11l-12.05,3.17l-2.08,0.73l-1.58,1.27l-12.88,0.02l-3.68,-2.34l-2.51,-2.52l-1.88,-0.52l-2.98,1.0l-1.01,-0.36l-0.97,-2.77l-4.22,0.31l-0.97,-1.0l-0.6,-3.84l-1.36,-0.94l-0.48,-1.48l-2.98,-0.46l-2.04,-4.12l-2.87,-3.05l-3.59,-2.52l1.03,-2.29l-0.51,-1.9l-12.37,-4.52l-4.06,-4.34l0.16,-1.31l-0.87,-1.43l-0.55,-0.13l-4.51,2.8l-2.52,-0.63l-1.11,-0.86l-0.5,-1.16l1.05,-4.05l-1.2,-3.99l0.4,-5.98Z","name":"Serres"},"29":{"path":"M261.09,114.12l-4.19,-1.83l-2.31,-5.35l-4.42,-4.66l-5.66,-0.79l2.39,-2.42l2.8,-1.76l1.25,0.19l0.43,-0.55l-1.82,-2.64l-0.88,-2.62l-1.62,-1.01l3.07,-0.25l0.34,-1.26l3.87,0.84l1.55,-0.54l-0.31,-1.25l1.26,-1.51l1.37,-0.67l0.9,0.31l-0.17,2.39l0.9,2.71l2.64,2.12l4.45,-2.1l4.6,0.43l5.98,-1.36l1.63,0.13l1.96,-2.29l4.89,-2.55l-0.05,-3.85l0.66,-0.94l4.95,-2.22l5.91,-0.85l2.36,-2.28l4.58,-1.55l1.0,-0.95l1.64,1.32l1.99,4.11l2.92,0.41l0.44,1.38l1.31,0.86l0.59,3.77l1.3,1.44l4.38,-0.17l0.52,2.34l1.6,0.77l3.25,-1.0l1.41,0.45l2.38,2.44l4.04,2.49l10.33,0.14l-2.67,4.56l-0.44,2.83l0.74,0.82l3.21,0.88l1.91,2.27l-6.67,-0.18l-3.58,3.38l-1.44,0.69l-4.12,-0.43l-2.67,2.17l-7.05,-1.43l-3.01,4.83l-1.1,0.85l-1.23,-0.64l-2.84,-0.2l-2.18,3.74l-4.04,-0.84l-4.81,1.68l-2.33,2.65l-0.25,1.41l0.57,2.49l-2.37,2.06l-1.23,2.15l-1.07,0.02l-0.99,-0.77l-0.34,-3.73l-2.04,-0.5l-1.49,1.22l-1.06,2.4l-0.76,5.1l-0.73,-1.84l-2.64,-2.37l-1.79,-0.28l-1.36,-0.99l-2.85,0.18l0.64,-0.61l-2.23,-3.32l-1.36,-0.83l-0.83,-2.98l-1.17,-0.84l-1.99,-0.38l0.24,-2.01l3.24,0.44l3.59,-0.39l3.02,-1.19l2.7,-2.11l0.31,-1.53l-3.55,-2.77l0.9,-1.0l0.37,-2.36l-1.15,-1.6l-1.81,-0.6l-0.81,0.32l-1.58,-1.03l-2.77,1.87l-1.81,-0.6l-0.44,1.13l0.88,1.05l1.26,0.16l-0.15,1.67l-3.95,2.47l-2.1,-0.7l-2.56,1.06l-0.45,0.56l0.56,1.15l-0.98,0.74l0.39,2.02l-1.09,-0.6l-0.49,0.48l0.19,1.0l-1.11,-1.76l-0.5,0.16l-0.42,-0.86l-0.77,-0.17ZM278.81,128.1l-0.0,0.0l-0.05,-0.0l0.01,-0.01l0.05,0.01Z","name":"Thessaloniki"},"34":{"path":"M502.84,458.49l0.72,0.26l1.34,-1.64l0.88,0.18l0.59,-0.6l2.96,0.43l1.56,-0.58l0.62,-0.58l-0.31,-0.68l1.34,-0.35l-2.04,-1.11l0.41,-0.71l4.64,-1.26l4.73,-2.72l1.13,-0.93l-0.51,-0.8l-1.29,-0.08l1.12,-1.04l2.19,0.13l0.42,-0.94l2.71,2.05l2.69,1.14l-0.98,0.1l-0.97,-0.78l-2.04,0.3l-4.1,1.71l-2.02,2.22l-1.13,0.23l-2.09,2.09l-0.42,1.29l-2.97,2.51l-3.02,0.1l-1.95,1.66l-2.14,-0.13l-2.06,-1.47ZM515.0,449.74l0.37,-0.11l0.75,0.15l-0.19,0.14l-0.92,-0.18ZM501.66,496.87l2.8,-3.07l4.2,2.63l0.67,1.13l1.66,0.48l-0.67,0.25l-1.68,-0.93l-4.01,1.0l-2.45,-0.78l-0.52,-0.72ZM506.66,429.4l1.43,-1.27l1.41,1.52l-0.07,0.81l-1.4,0.35l-1.59,-0.92l-0.31,-0.87l0.53,0.36ZM509.09,505.08l0.62,-0.01l0.04,0.15l-0.39,0.22l-0.28,-0.37ZM497.64,473.35l0.11,0.0l-0.04,0.04l-0.07,-0.04ZM496.21,453.59l0.05,-0.03l0.08,0.11l-0.07,-0.03l-0.06,-0.05ZM492.19,449.99l0.1,-0.84l1.17,0.1l1.54,-1.28l1.72,0.73l-0.13,0.73l0.79,0.93l-0.85,-0.37l-1.4,0.4l-1.27,-0.91l-1.67,0.5ZM490.75,445.09l0.44,-1.01l1.07,-0.1l0.47,0.8l-0.9,0.61l-1.07,-0.29ZM472.0,432.79l-0.92,-1.49l1.94,0.6l0.86,-1.33l-0.11,-0.73l2.88,-2.45l2.71,-0.38l1.96,-1.84l1.07,-2.07l3.57,-1.82l0.6,0.35l0.15,1.14l2.39,2.11l1.61,4.04l-0.65,1.4l0.48,1.44l-0.94,0.85l-0.48,4.64l-0.81,0.73l-1.25,4.94l-3.04,0.15l-1.4,0.68l-0.91,1.39l-0.75,-0.46l-1.72,1.76l-1.67,-1.3l0.13,-2.87l-3.04,-1.35l0.61,-1.0l-1.76,-2.95l0.64,-1.16l-2.15,-3.02ZM488.07,448.11l-0.07,-0.03l0.36,0.02l-0.14,0.03l-0.15,-0.03ZM488.65,447.99l0.33,-0.48l0.27,0.03l-0.48,0.56l-0.12,-0.12ZM490.18,447.02l0.13,-0.23l0.38,-0.18l-0.26,0.31l-0.26,0.1ZM484.44,451.14l-0.69,-0.59l1.29,-1.01l0.79,2.34l-1.39,-0.74ZM481.95,398.56l-0.04,-0.05l0.09,-0.09l0.03,0.06l-0.08,0.08ZM472.63,497.63l0.21,-0.54l0.29,0.16l-0.09,0.0l-0.41,0.38ZM473.26,497.25l0.61,-0.28l2.52,0.53l2.09,-3.08l-0.67,-1.24l-0.12,-1.97l-0.76,-0.56l0.69,-1.19l-0.79,-1.1l-0.42,-0.43l-3.06,0.13l0.0,-0.91l1.18,-0.58l2.27,0.63l5.06,5.69l0.09,2.74l-0.61,0.75l0.46,0.67l-2.95,2.39l-1.62,-1.25l-2.86,-0.11l-1.11,-0.81ZM477.9,455.08l-0.61,-0.55l0.62,0.12l0.55,-0.63l-0.24,-0.58l1.44,-0.56l0.4,-0.4l-0.02,-0.14l0.42,-0.42l-0.07,-0.09l0.2,-0.2l0.19,1.15l0.74,0.67l-0.15,1.23l-1.05,-0.01l-0.73,0.76l-1.69,-0.35ZM468.85,401.16l0.0,-0.0l0.0,0.0l-0.0,-0.0ZM468.87,401.08l-0.79,-0.62l0.07,-0.55l0.5,0.22l0.22,0.95ZM470.07,401.46l-0.46,-0.71l0.57,-3.52l-1.16,-0.91l-0.5,-0.9l0.32,-0.52l3.01,-0.49l0.12,1.85l1.47,1.56l1.08,-1.01l-0.15,-2.2l1.12,-0.03l-0.06,0.89l0.88,0.63l1.09,-0.1l0.27,0.9l2.21,-0.1l-0.34,1.61l-2.31,0.32l-0.65,1.12l-0.73,-0.37l-0.68,1.56l-0.83,-0.55l-0.92,0.99l-0.48,-0.28l-0.39,0.81l-2.04,-0.91l-0.43,0.33ZM474.69,493.39l0.11,-0.58l1.08,0.14l-0.81,0.84l-0.38,-0.4ZM464.56,464.18l-0.3,-0.35l0.74,-1.52l-0.27,-1.94l0.88,-1.27l2.4,-0.59l1.51,1.41l0.27,0.62l-0.51,0.99l0.42,0.43l4.42,2.03l1.01,1.22l-1.67,1.68l0.43,0.67l-0.39,0.41l0.68,0.73l-0.55,0.63l0.61,0.93l-1.33,-0.53l-0.98,1.42l-1.86,-2.68l-2.93,-2.47l0.41,-0.54l-0.6,-0.68l-1.67,0.15l0.52,-0.67l-0.55,-0.58l-0.7,0.5ZM469.77,490.79l0.89,-1.87l0.87,0.45l-0.7,1.3l0.26,1.38l-1.28,-0.53l-0.04,-0.74ZM452.02,436.9l0.77,-1.41l-0.09,-1.83l3.88,-2.43l-0.55,-0.8l-1.02,-0.23l1.95,-1.97l4.07,-1.67l0.04,0.69l-0.83,0.75l1.3,0.91l1.45,-0.71l1.75,0.33l0.74,-0.93l0.31,0.66l-1.36,1.88l0.28,0.89l-1.07,1.08l1.76,1.61l-0.99,0.53l0.43,0.75l-1.46,1.82l-0.22,1.31l-5.07,3.1l-2.73,-0.98l-1.09,-1.16l-0.76,0.38l-1.48,-1.73l0.01,-0.84ZM465.42,427.26l-0.28,-0.9l0.82,-0.38l0.4,0.51l-0.94,0.78ZM464.63,426.32l0.0,0.0l-0.0,0.0l0.0,-0.0ZM465.35,404.05l-0.25,-0.32l0.14,-0.52l0.28,0.58l-0.17,0.25ZM443.43,380.46l-1.14,-1.21l-0.18,-0.89l1.64,0.95l0.6,-1.16l0.87,0.56l0.76,-0.65l0.62,0.81l1.04,-0.66l0.42,1.03l-0.72,0.72l1.15,0.96l1.21,-0.19l0.43,0.82l2.8,-1.22l1.71,1.16l0.33,1.0l0.88,-0.18l0.36,-0.71l1.18,0.39l0.86,-0.49l0.41,0.54l1.22,0.05l2.67,2.2l0.92,-0.08l-0.04,2.07l-1.88,2.64l0.32,1.49l-3.09,0.9l-3.51,-2.45l-1.18,-0.25l-0.53,0.55l-0.77,-0.39l0.39,-1.2l-1.23,-1.29l-2.65,-1.47l-0.43,0.3l-1.57,-2.05l-1.68,-0.67l-2.17,-1.91ZM459.99,400.83l1.13,0.29l0.48,-0.48l0.76,0.62l-0.13,0.65l-1.06,0.5l-0.1,-0.76l-1.07,-0.83ZM463.25,404.57l-0.13,-0.51l0.53,-0.46l-0.04,0.99l-0.36,-0.01ZM461.95,402.29l0.02,0.02l0.0,0.0l-0.02,-0.02ZM461.84,405.15l-0.15,-0.1l0.47,-0.56l-0.04,0.58l-0.27,0.08ZM459.81,507.32l-0.06,-0.0l0.15,-0.25l0.13,0.13l-0.22,0.13ZM449.9,472.1l-0.87,-0.13l1.86,-2.41l0.66,-2.14l3.33,-1.94l2.96,-0.13l-0.16,0.96l-2.04,2.14l-5.74,3.64ZM445.84,441.07l0.5,-1.96l-0.4,-0.45l1.56,-0.81l0.9,-1.61l1.79,-0.6l-0.9,3.14l0.04,2.04l-1.11,1.03l0.85,1.88l-2.01,-2.26l-1.22,-0.41ZM450.22,435.48l-0.09,-0.22l0.15,-0.02l0.07,0.06l-0.13,0.18ZM443.16,443.4l-0.67,-0.59l0.57,-0.82l0.8,0.62l1.27,-0.48l0.6,0.56l-1.47,0.57l-0.46,-0.45l-0.63,0.58ZM420.49,356.11l-0.55,-0.92l0.13,-1.6l-0.7,-0.77l0.43,-1.14l2.83,-1.07l1.45,-1.35l2.99,-0.46l-0.55,1.07l0.66,1.19l3.07,0.96l-0.42,2.09l1.41,2.84l1.95,0.03l0.95,0.71l5.12,-0.31l0.42,0.41l0.43,2.15l-1.38,1.49l-0.37,1.37l1.04,1.03l0.88,0.02l0.42,1.09l0.64,-0.48l0.63,0.9l-2.27,3.87l0.71,0.73l3.15,-0.69l-1.53,3.69l-2.28,2.3l0.61,0.96l-0.37,0.4l-2.82,-2.63l0.26,-0.67l-2.06,-3.62l-0.88,-0.58l-0.94,0.27l-0.55,-1.16l-0.65,0.12l-0.64,-1.62l-1.13,-0.25l-0.04,-1.26l-1.06,-0.98l-1.11,-0.16l-1.01,-2.81l-1.87,-2.03l-2.16,-0.38l-0.55,-0.79l-1.37,1.46l0.15,-1.8l-1.29,-0.74l0.24,-0.93ZM432.87,403.09l0.13,-1.03l1.2,-0.54l0.42,-0.42l-0.34,-0.52l2.09,-1.73l-0.46,-1.72l0.57,-0.81l-0.57,-0.64l0.57,-0.86l-1.75,-1.8l3.26,1.01l1.57,2.18l-0.04,2.25l-0.88,1.77l1.14,0.27l1.47,2.34l-1.36,1.02l-0.48,-0.39l-4.8,2.35l0.36,-2.51l-0.53,-0.5l-1.57,0.27ZM440.58,444.18l0.07,-0.33l0.45,-0.35l-0.31,0.65l-0.21,0.04ZM431.75,470.64l1.26,-0.66l3.6,3.02l1.01,0.18l0.55,-0.48l1.35,0.97l-0.18,0.67l0.82,1.04l-0.6,0.42l-2.63,-0.48l-1.45,-2.94l-2.4,0.0l-1.34,-1.73ZM416.32,436.84l0.02,-0.43l0.55,-0.05l1.45,1.16l1.53,-0.16l4.95,6.08l-1.72,1.98l-0.44,-0.34l-0.71,0.58l-1.03,1.92l-0.76,-0.15l-0.64,-1.06l0.5,-0.81l-0.9,-0.31l-0.46,-1.4l0.37,-0.48l-1.21,-0.85l0.33,-0.66l-0.95,-0.75l1.8,-0.96l-1.77,-0.95l0.28,-0.46l-0.76,-0.7l0.3,-0.81l-0.75,-0.38ZM422.13,448.17l0.0,-0.02l0.02,0.0l-0.02,0.02ZM418.49,384.43l-0.19,-0.05l0.42,0.05l-0.23,0.0ZM419.3,384.48l1.78,-2.01l2.05,-0.35l-0.55,1.98l0.33,0.94l-3.61,-0.56ZM413.17,459.53l0.39,-0.78l2.86,0.88l0.61,1.77l-1.01,0.75l-2.0,-0.53l-0.86,-2.09ZM406.38,456.31l-0.02,-0.64l0.43,0.18l2.27,-2.13l1.25,1.45l1.56,-0.44l0.32,0.19l-0.86,1.13l-0.11,1.61l-1.27,1.58l-0.92,-0.3l-1.29,0.7l-0.66,-0.65l0.18,-0.99l-0.88,-0.63l-0.02,-1.08ZM390.6,470.47l-0.11,-0.96l1.03,-1.0l-0.46,-1.49l0.85,-1.1l-0.51,-0.65l1.32,-2.83l1.55,1.67l1.35,-0.3l0.34,0.44l-0.56,1.29l0.8,0.98l1.75,0.15l1.08,1.16l1.18,0.08l1.77,-0.96l0.47,-1.1l-1.78,-2.03l-1.64,0.35l-1.41,-2.23l0.11,-1.3l0.74,-0.27l-0.31,0.68l0.49,0.53l3.35,1.58l2.83,-1.18l0.53,-1.16l1.86,0.73l-0.77,1.31l1.4,3.45l-1.39,2.25l-0.87,-0.16l-3.31,1.43l-0.68,-0.68l-1.55,-0.28l-2.56,1.18l-5.76,0.43l-0.9,0.65l-0.23,-0.65ZM398.01,427.74l0.38,-0.39l1.04,-0.67l-0.83,-1.59l1.18,-0.4l-0.55,-0.81l1.01,-0.62l0.36,-1.13l0.55,0.39l0.45,-0.79l0.78,0.24l0.56,-0.97l2.24,0.08l1.43,0.76l-0.33,0.86l0.38,0.42l-0.8,1.65l0.78,0.44l0.34,1.13l-0.92,-0.76l-0.75,0.53l0.0,2.32l-1.2,0.56l0.2,-0.67l-0.99,-0.78l-1.7,0.4l0.35,-0.94l-0.62,-0.55l-1.07,0.78l-0.53,-0.58l-1.75,1.08ZM394.19,411.77l0.64,-0.69l-0.41,-1.03l0.85,-1.07l-0.03,-1.1l1.65,-1.78l-0.93,-1.64l0.69,-0.71l0.15,-0.78l-0.68,-0.59l0.6,-0.5l-2.63,-0.85l2.54,-3.33l2.51,-1.78l-0.64,3.46l1.0,0.29l0.21,1.12l2.02,0.03l1.23,2.16l-0.38,0.38l-0.8,-0.59l-1.01,0.55l-0.37,0.86l0.4,0.76l-1.19,2.66l-0.56,-0.13l-0.68,1.38l-0.55,-0.14l-1.96,2.55l-1.66,0.51ZM387.38,387.25l-0.33,-0.97l-0.85,0.04l0.99,-1.44l-0.46,-1.51l0.81,-0.66l-0.27,-0.36l1.3,-2.57l1.79,-0.21l0.63,-1.72l1.2,-0.33l0.47,0.84l0.89,-0.94l3.2,1.85l0.36,0.77l-0.91,0.57l0.26,0.51l-0.86,2.17l-2.58,3.62l-3.02,2.11l-1.93,2.45l-0.99,0.06l-0.26,-1.64l0.56,-2.63ZM382.76,458.05l0.87,-0.71l1.0,0.28l-0.35,2.34l-1.37,-1.11l-0.15,-0.8ZM373.3,379.84l1.99,-7.53l0.84,-1.21l0.61,1.1l-0.43,0.43l0.24,0.89l-1.18,1.08l-0.92,2.18l0.3,0.4l-1.45,2.66Z","name":"Cyclades"},"24":{"path":"M288.95,133.67l0.57,-1.39l0.2,-3.74l0.99,-2.24l1.15,-0.9l0.91,0.14l0.48,3.87l1.24,0.96l1.69,0.06l1.63,-2.46l2.49,-2.23l-0.31,-3.95l2.09,-2.31l4.43,-1.5l4.02,0.89l2.26,-3.77l4.14,0.82l1.48,-1.18l2.59,-4.5l6.97,1.43l2.6,-2.15l4.06,0.42l1.82,-0.8l3.28,-3.26l4.05,0.42l2.99,-0.3l0.57,0.58l0.24,2.03l1.82,1.52l1.14,0.0l1.31,2.16l1.75,-0.29l2.02,0.75l0.51,-0.51l0.16,0.81l1.73,1.19l-1.36,0.79l-4.51,0.0l-0.99,0.71l-0.79,2.88l1.31,4.02l1.32,0.75l-0.15,0.6l0.99,1.3l2.61,2.24l3.02,1.22l2.38,-0.07l0.53,0.43l2.63,-0.54l-0.04,4.51l-0.24,0.81l-2.64,-2.77l-3.39,-1.66l-2.35,0.41l-3.13,-0.93l-3.33,1.35l-2.06,1.77l-1.12,-0.84l-2.69,-0.7l-0.99,1.23l0.19,0.69l-1.28,-0.13l-0.47,0.45l-1.05,4.35l1.18,2.67l2.64,3.04l1.53,0.47l0.15,1.61l1.39,1.51l1.25,0.34l1.24,-0.57l1.3,1.21l6.81,2.1l1.93,1.86l2.95,1.04l1.09,1.14l-0.72,0.84l-0.2,1.65l2.11,2.19l-1.63,1.71l0.64,0.94l1.93,-0.03l0.33,1.35l-0.27,0.98l-0.96,0.18l-1.56,1.79l0.85,1.19l-2.38,0.8l1.17,0.99l1.07,-0.04l-0.9,0.45l-1.44,-0.26l-1.49,0.96l-1.47,-0.9l0.5,-1.3l-1.04,-0.86l-0.21,0.9l-0.57,-0.0l0.02,-1.9l-1.34,-1.28l-1.34,-0.1l-0.85,-1.68l-2.06,-0.93l-1.22,0.43l-0.24,-1.76l-2.02,-2.22l0.38,-2.09l-1.42,-0.83l-0.11,-1.83l-3.1,-2.57l-1.85,-3.43l-1.41,-1.36l-0.98,-0.19l-0.24,-0.8l-2.28,-1.98l-2.91,-0.41l-2.47,0.34l-2.59,-1.14l-1.7,0.08l-2.61,-2.1l-2.8,-0.26l-2.61,-1.4l-2.1,-0.23l-1.38,0.72l-2.92,3.12l-1.75,3.48l-0.51,-1.62l-2.0,-1.72l-5.56,-1.81l-2.01,-0.09l-1.69,-1.28l-2.39,-0.21l-2.36,-1.99l-6.25,-2.37ZM315.18,150.84l2.0,0.36l1.61,1.12l1.69,2.3l1.01,2.63l3.62,3.89l7.71,3.46l3.66,1.19l1.97,0.08l0.92,0.87l-0.3,0.69l1.63,2.98l1.16,0.49l2.78,-0.31l0.19,0.74l-2.37,0.7l-2.39,-0.85l-3.24,0.26l-3.9,-0.62l-1.21,-1.03l-1.8,-0.21l-7.19,-3.31l-1.95,0.0l-1.76,0.93l-2.91,-0.31l-1.13,0.47l1.27,-2.05l0.31,-2.01l-3.09,-4.6l-0.22,-1.19l-2.43,-1.83l-0.17,-1.23l1.38,-2.73l-0.5,-0.99l0.79,-3.51l-0.46,-1.85l1.35,1.68l0.53,2.3l1.47,1.51ZM311.83,145.21l0.0,0.05l-0.01,-0.06l0.01,0.01ZM311.77,145.09l0.0,-0.04l0.01,0.05l-0.01,-0.01ZM311.8,145.12l0.01,0.01l-0.0,0.04l-0.01,-0.01l0.0,-0.04ZM347.7,144.3l-0.23,-0.35l-0.04,-0.53l0.59,0.44l-0.32,0.44ZM356.51,133.08l1.6,-0.55l0.63,0.76l-1.11,0.41l-1.13,-0.62ZM359.96,134.69l0.01,-0.01l0.07,0.07l-0.02,0.0l-0.06,-0.06Z","name":"Chalkidiki"},"25":{"path":"M238.06,57.62l3.34,1.83l3.02,0.11l6.61,-1.25l3.21,1.2l1.77,-1.29l2.48,-4.13l1.12,-0.62l2.17,2.47l2.3,1.02l1.53,-1.3l1.16,-2.35l0.79,-11.67l0.59,-1.95l3.0,-1.17l3.7,0.45l-0.43,5.56l1.2,4.1l-1.06,3.85l0.73,1.81l1.41,1.04l2.76,0.69l4.62,-2.72l0.58,0.95l-0.1,1.48l4.33,4.57l12.31,4.52l0.19,1.2l-0.79,1.18l-0.1,1.66l3.73,2.62l0.66,1.09l-0.81,0.82l-4.58,1.55l-2.26,2.23l-5.83,0.84l-5.21,2.32l-1.05,1.57l0.12,3.55l-4.63,2.25l-1.84,2.21l-1.38,-0.19l-5.99,1.36l-4.58,-0.43l-1.5,0.28l-2.57,1.83l-2.21,-1.7l-0.84,-2.52l-0.06,-2.87l-1.66,-0.44l-1.73,0.89l-1.35,1.62l-9.75,-2.22l-6.01,0.56l-1.3,-2.76l-3.99,-1.96l-0.58,-1.63l-2.09,-2.63l-4.66,-1.23l-0.77,-2.62l0.58,-0.84l2.71,-0.08l0.35,-1.51l1.35,-1.37l-0.29,-1.21l1.08,-2.71l-0.11,-5.36l0.91,-3.05l1.46,0.97l4.23,-0.49Z","name":"Kilkis"},"26":{"path":"M211.87,55.91l0.97,-0.03l0.35,0.81l2.96,1.76l1.98,0.3l3.5,-3.04l3.69,-0.67l2.74,0.05l3.56,1.81l-0.95,3.24l0.11,5.34l-1.06,2.59l0.24,1.33l-1.17,0.93l-0.12,1.22l-2.51,0.07l-1.12,1.34l0.82,3.3l1.5,0.95l3.33,0.49l1.97,2.48l0.67,1.75l3.92,1.89l1.8,3.11l6.08,-0.6l9.74,2.23l0.26,0.33l-0.85,0.29l-1.31,-0.68l-2.85,-0.18l-0.4,1.32l-4.38,0.64l2.67,1.78l0.86,2.56l1.52,1.95l-0.96,-0.05l-2.88,1.81l-2.85,0.31l-1.82,2.39l-1.36,0.47l-2.69,0.07l-1.66,-0.85l-3.49,3.29l-2.89,1.63l-2.21,-2.73l-3.86,-2.37l-11.47,-3.0l-1.72,0.17l-1.08,1.13l-0.08,1.24l-4.29,1.33l-7.33,1.22l-9.96,-1.87l1.72,-3.68l-0.01,-1.47l-2.85,-1.22l-1.99,-5.47l-1.13,-1.18l0.3,-0.7l2.67,0.13l4.59,-1.16l1.47,-1.15l0.38,-1.49l-1.33,-1.56l-2.59,-1.15l-0.54,-3.37l2.17,-0.35l1.01,-1.14l0.56,-2.68l2.19,-1.61l1.49,-2.59l1.42,-0.56l0.68,-1.48l1.05,-0.26l0.95,-1.52l0.35,-3.17l4.14,-2.88l5.48,-0.88l1.1,-0.73l0.85,-1.56Z","name":"Pella"},"27":{"path":"M250.07,150.49l1.64,4.32l0.15,3.81l1.34,1.78l0.57,2.41l3.71,2.96l5.34,2.63l0.46,1.07l-4.87,0.76l-1.29,-0.93l-1.54,-0.21l-6.18,1.56l-2.75,-0.9l-2.32,-2.06l-1.83,-2.89l-5.3,-3.33l-2.29,-2.3l-0.85,-2.53l0.21,-3.97l-0.8,-1.74l-2.89,-1.44l-3.34,1.03l-4.56,4.61l-0.97,-0.33l-0.47,-1.09l-0.02,-2.69l0.99,-2.4l-0.31,-0.47l-4.12,-0.86l-2.37,1.52l-0.28,-0.65l-0.21,-1.66l0.46,-1.2l2.95,-1.26l1.2,-1.21l0.35,-2.92l3.0,-5.52l1.79,-1.14l2.84,-0.32l1.8,-1.1l3.35,-3.66l6.04,-4.69l2.9,-7.46l2.63,-0.51l2.63,1.89l4.04,-0.33l0.43,1.25l2.37,1.35l-0.6,1.36l1.62,1.69l-0.07,1.42l1.42,4.56l2.84,1.31l-4.47,7.52l-1.67,5.31l0.7,1.38l-2.74,3.26l-0.68,3.02Z","name":"Pieria"},"20":{"path":"M74.09,165.63l4.23,0.25l1.93,-0.81l0.4,-2.07l1.27,-2.06l-0.33,-1.04l2.88,-1.98l2.93,0.92l1.98,-1.52l2.73,1.55l1.47,-0.11l2.95,-0.61l1.75,-1.67l4.17,-0.51l0.15,-3.19l1.43,-2.34l-1.44,-1.51l0.29,-1.86l2.05,-0.83l1.5,-2.6l-0.3,-2.94l-1.01,-1.1l0.38,-1.32l1.28,-1.16l0.45,-1.26l3.27,0.53l2.81,-1.98l2.6,-0.55l0.98,1.19l1.6,4.35l3.31,3.72l2.09,4.02l0.99,3.83l-0.23,1.33l-1.96,3.23l1.25,1.38l1.06,3.97l2.11,2.57l3.34,-1.16l0.89,0.66l-0.18,2.46l-2.04,3.71l2.46,2.52l1.04,5.09l1.54,2.86l1.83,0.62l7.34,-2.0l2.67,0.12l4.9,2.6l0.02,0.51l-1.64,-0.42l-1.75,0.56l-2.54,2.14l-0.84,1.46l-0.51,1.44l1.38,7.58l-0.88,0.04l-1.35,-0.93l-3.08,-0.17l-2.91,2.05l1.0,5.99l3.27,3.08l-0.4,2.49l0.61,2.41l-1.13,1.93l-2.03,-0.59l-2.69,1.76l-4.4,-1.69l-1.46,1.41l-0.92,3.67l0.12,2.46l-1.18,2.37l-2.98,1.82l-1.37,-0.68l-1.46,0.97l-1.5,-0.1l-2.81,1.86l-7.21,2.45l-2.44,-1.78l-3.07,-0.76l-1.42,1.43l-2.41,4.57l-0.65,0.19l-2.48,-7.54l-1.51,-2.75l-0.18,-3.64l-1.25,-2.83l0.16,-2.8l-0.62,-1.35l-5.57,-1.41l-3.37,-4.07l0.01,-4.71l1.8,-2.57l-2.19,-3.85l-0.71,-4.09l-4.67,-0.88l-1.93,-2.06l-0.2,-1.8l1.34,0.57l1.07,-0.39l1.89,-2.43l0.31,-2.87l-2.25,-2.71l-0.29,-1.74l-3.64,-3.22l0.51,-2.16l-2.39,-3.57Z","name":"Ioannina"},"21":{"path":"M76.32,229.36l-3.08,-2.41l1.54,-1.5l2.83,-1.16l2.53,0.01l1.37,1.27l0.99,2.25l3.52,2.73l-0.18,0.61l-1.73,-1.12l-0.74,0.72l-0.77,-0.05l-1.84,-0.98l-2.0,0.47l-2.37,-0.29l-0.07,-0.55ZM87.58,231.43l1.78,0.52l3.46,-1.56l2.07,1.26l2.77,-0.72l2.45,0.42l1.42,-0.55l2.46,-4.67l1.13,-1.12l2.37,0.76l2.81,1.86l7.46,-2.54l2.82,-1.85l1.5,0.1l1.36,-0.9l0.53,0.39l-0.98,1.11l-0.43,5.67l-1.22,2.46l-1.18,0.98l-4.65,1.36l-0.74,1.43l1.81,5.73l-0.18,1.03l-2.67,3.22l-2.84,-0.25l-1.73,2.21l-1.46,0.76l-1.37,3.85l0.11,1.6l1.18,2.47l2.18,0.81l0.79,-0.21l2.74,2.2l1.07,0.1l0.21,0.66l-1.67,-0.31l-1.45,-1.13l-1.92,0.0l-0.33,-0.95l-0.82,1.14l0.42,2.04l-1.06,0.3l-0.75,-0.44l-1.92,-3.99l0.89,-0.58l0.35,-1.2l-0.26,-1.9l-0.96,-1.72l-3.4,-3.37l-1.01,-0.67l-0.71,0.2l-2.7,-2.05l-5.65,-6.69l-4.35,-2.72l0.42,-1.58l-0.74,-2.3l0.59,-0.73Z","name":"Preveza"},"48":{"path":"M390.39,225.38l-0.42,-0.15l0.75,-2.52l0.2,1.24l-0.52,1.43ZM376.93,222.06l0.9,-1.16l0.04,-1.94l0.88,-0.87l-0.02,1.04l0.66,0.75l-0.29,0.72l-1.57,1.68l-0.62,-0.21ZM379.18,210.53l-0.05,0.0l0.04,-0.13l0.06,0.06l-0.05,0.06ZM375.77,224.78l0.04,-0.03l0.17,0.24l-0.21,-0.21ZM373.95,250.66l0.31,-0.29l0.21,0.21l-0.21,-0.08l-0.3,0.16ZM373.59,249.38l-0.34,-1.34l0.28,-0.49l0.58,0.53l-0.53,1.31ZM368.63,226.67l0.66,-2.56l1.38,-1.36l0.18,0.45l-1.17,1.51l1.52,0.5l0.72,-1.07l0.46,0.73l-0.48,1.53l0.39,1.13l-1.85,1.5l-1.26,-0.8l1.08,-0.25l0.27,-0.79l-1.04,-1.04l-0.87,0.51ZM360.68,240.06l-0.18,-0.35l1.74,-0.61l1.42,0.35l-0.32,1.5l-0.84,-0.65l-0.96,0.62l-0.88,-0.86ZM363.59,238.14l0.0,-0.08l0.03,-0.06l0.05,0.1l-0.09,0.04ZM363.63,237.97l-1.06,-1.49l0.3,-1.2l0.24,1.81l0.7,0.3l-0.19,0.58ZM351.98,242.46l3.62,-1.95l0.24,-0.64l-0.62,-0.58l0.36,-1.01l-0.5,-0.5l3.18,-2.51l0.46,-1.88l1.55,-1.97l2.65,0.2l0.13,1.0l-3.83,4.81l-0.92,2.7l-1.15,0.26l-3.69,3.59l-0.71,-0.87l-0.91,-0.06l0.18,-0.6ZM360.48,231.05l-0.09,-0.14l0.77,-0.95l0.2,0.5l-0.88,0.6ZM363.28,246.21l0.08,-0.06l-0.03,0.19l-0.04,-0.04l-0.0,-0.09ZM333.53,238.83l-0.6,-1.18l1.21,-0.31l0.05,0.84l1.7,0.84l1.57,2.0l5.39,2.35l0.33,0.49l-0.42,0.66l1.12,1.32l1.04,-1.05l2.83,0.05l0.46,0.48l-1.81,2.72l-1.36,0.18l-1.63,1.38l-1.11,-0.21l0.2,-0.63l-1.3,-0.91l-2.49,0.38l-0.62,-1.01l0.66,-1.1l-0.75,-0.37l-0.74,-2.11l-1.4,-0.89l-2.34,-3.93ZM317.34,242.29l-0.3,-0.33l0.76,-0.65l3.3,-1.22l0.36,-1.62l1.07,-0.91l1.52,0.22l2.31,2.24l-0.0,0.78l-0.27,0.29l-0.44,-0.65l-2.42,1.25l-1.38,1.82l0.53,0.81l-0.58,-0.1l-0.55,-1.21l-1.44,0.51l-1.71,-1.21l-0.7,0.42l-0.04,-0.45ZM325.54,245.15l-0.08,-0.08l0.02,-0.1l0.02,0.09l0.04,0.09ZM325.49,244.9l0.01,-0.01l-0.01,0.03l0.0,-0.02ZM271.1,232.62l0.53,4.39l2.23,4.02l0.07,1.24l1.3,0.48l1.79,-1.76l1.18,0.35l0.66,0.67l0.29,3.29l0.86,1.12l0.94,0.31l1.38,-1.1l2.02,1.76l-0.45,1.05l1.42,1.98l-0.57,1.07l0.3,1.33l-2.29,0.61l-0.24,2.33l1.19,0.55l0.49,-0.69l1.81,-0.36l2.79,-1.84l2.18,-0.08l-0.6,1.12l-1.91,0.08l-0.66,0.55l-1.54,3.67l-0.77,0.47l-2.2,-0.76l-3.0,1.26l-4.31,0.28l-2.39,-2.11l-1.49,-0.48l-2.79,0.3l-5.59,-1.13l-6.59,-3.53l-6.14,0.57l-2.92,-0.21l-1.07,-0.59l-0.82,-5.14l0.37,-1.93l2.74,-1.58l0.65,-1.4l0.99,-3.64l-0.38,-5.28l0.88,-0.91l2.97,-0.41l3.46,-3.27l0.63,-1.4l0.22,-1.46l-0.58,-1.36l-2.42,-1.94l0.42,-2.01l1.15,-0.92l1.16,-0.03l1.75,0.97l1.69,-0.65l1.86,-2.25l-0.22,-2.72l2.81,-3.22l-0.16,-1.42l1.01,-0.8l4.44,-0.24l3.21,-3.31l2.12,-3.47l2.62,-1.72l1.53,2.49l2.86,1.23l0.99,0.98l1.16,-0.13l1.65,2.08l2.23,0.03l3.63,2.67l1.64,3.72l2.75,2.51l1.53,2.24l1.5,0.91l1.1,2.75l5.41,4.76l0.55,3.48l2.59,2.62l-0.0,0.98l1.22,1.24l1.54,3.71l-1.23,1.83l-2.35,1.84l-2.26,-0.17l-1.84,1.33l-1.59,-0.03l-0.62,-0.54l-1.47,1.4l0.4,0.76l0.91,0.23l-0.59,0.26l-2.82,0.07l-1.4,1.02l-1.8,-0.38l-1.09,1.02l-2.06,-0.31l3.72,-2.3l1.12,0.18l0.63,-0.8l0.85,0.18l0.62,-0.6l-0.31,-2.15l2.0,1.21l0.74,-0.46l1.02,-2.89l-0.24,-1.13l-2.3,-2.06l-1.01,-2.63l0.39,-1.01l-1.4,-2.21l-3.86,-3.43l-3.68,-0.9l-1.18,0.41l-2.96,-0.44l-0.35,-1.81l-1.82,-1.48l-1.68,0.36l-2.37,-1.31l-1.54,1.25l0.6,0.86l0.69,-0.01l-1.42,1.95l1.38,2.07l-2.63,0.03l-0.58,0.67l-1.59,-0.46l-2.09,0.98l-0.76,-0.23l-1.96,1.17l-0.55,1.67ZM276.76,240.42l-0.41,-0.55l0.77,-0.36l-0.08,1.09l-0.27,-0.18ZM292.32,248.22l-1.8,-1.0l1.32,-1.57l-0.02,-1.77l0.57,-0.57l1.13,0.38l0.86,-0.99l0.08,1.08l0.58,0.4l-1.78,2.4l0.27,1.37l-1.2,0.28ZM291.97,241.94l0.11,-0.25l0.73,-0.28l-0.44,0.53l-0.4,-0.0Z","name":"Magnesia"},"49":{"path":"M198.51,179.02l1.82,1.52l0.54,7.57l1.26,5.61l1.57,0.67l1.63,-1.07l4.06,-0.59l0.96,0.96l0.5,2.72l1.56,1.02l2.55,-0.11l0.99,1.24l0.57,2.79l2.79,1.15l0.72,1.17l-0.15,2.01l-3.17,0.03l-6.6,2.52l-4.08,-1.31l-4.82,1.81l-2.84,0.33l-1.44,1.09l-3.15,0.32l-3.3,1.92l-1.14,1.27l-0.67,2.23l-1.15,0.41l-1.0,-0.54l-0.85,-1.46l-1.37,-0.2l-3.42,2.33l-2.81,0.34l-2.15,1.35l-2.2,-1.92l-1.81,0.21l-2.29,3.66l-3.32,3.5l-1.19,0.18l-2.49,-1.58l-4.21,-0.84l-1.82,0.73l-1.3,2.42l0.01,1.1l-1.06,0.22l-3.95,-0.55l-2.57,-1.77l-1.22,-3.25l-3.63,-2.72l-0.49,-1.38l0.23,-1.58l-1.67,-3.0l1.22,-2.35l-0.65,-2.54l0.36,-2.67l-0.88,-1.39l-1.44,-0.56l-1.0,-1.23l-0.96,-5.21l2.24,-1.62l2.85,0.16l1.41,0.94l1.81,-0.48l-1.38,-8.0l1.18,-2.34l1.45,-0.75l0.85,-1.19l1.28,-0.46l1.95,0.5l1.19,0.93l1.53,-0.07l4.93,-1.89l1.92,-2.34l4.42,-2.04l11.55,1.38l7.93,1.89l2.91,0.14l5.83,-1.17l4.08,0.59l1.07,-0.74Z","name":"Trikala"},"46":{"path":"M219.74,206.48l-0.38,1.99l0.47,1.71l1.55,1.02l2.82,-0.06l0.91,1.15l-1.44,4.86l0.42,1.5l1.81,2.47l-2.43,1.5l-0.78,1.15l0.21,1.46l-1.53,2.39l0.14,1.52l3.87,5.07l-6.83,7.11l-2.42,5.22l-1.49,1.15l-4.48,1.38l-2.16,2.24l-3.26,1.47l-3.83,0.41l-0.19,-4.97l-1.32,-1.56l-2.59,-0.87l-2.93,-1.95l-1.62,0.11l-4.42,2.86l-2.53,0.32l-1.56,-1.93l0.68,-2.28l-0.61,-1.62l-2.55,-1.47l-0.43,-3.76l-0.72,-1.5l-1.23,-0.94l-7.21,1.55l-1.59,1.04l-1.61,2.1l-2.22,-1.68l-1.78,0.23l-3.06,1.97l-3.53,3.34l-2.61,-2.9l-0.24,-1.32l4.03,-7.13l-1.19,-3.05l-1.86,-2.03l-0.04,-1.04l1.12,-2.09l2.6,-0.53l5.02,2.43l1.75,-0.16l3.68,-3.76l2.01,-3.42l1.1,-0.22l2.76,2.02l2.16,-1.4l2.92,-0.38l3.19,-2.26l0.97,0.14l0.68,1.34l1.61,0.72l1.76,-0.8l0.7,-2.34l0.97,-1.03l2.98,-1.72l3.1,-0.3l1.45,-1.09l2.87,-0.35l4.71,-1.77l3.94,1.31l6.83,-2.56l2.84,-0.0Z","name":"Karditsa"},"47":{"path":"M214.61,148.99l0.35,0.79l0.7,0.06l2.09,-1.75l3.6,0.76l-0.95,2.18l0.06,2.88l0.59,1.36l1.58,0.67l2.04,-1.34l2.88,-3.35l3.11,-0.96l2.31,1.26l0.5,1.15l-0.19,4.11l1.0,2.84l2.46,2.45l5.25,3.31l1.76,2.82l2.43,2.16l3.31,1.05l6.21,-1.57l2.65,1.16l4.94,-0.76l-0.27,1.74l1.91,4.05l2.8,1.51l3.17,3.33l3.41,2.12l0.99,6.32l3.8,11.32l-2.8,1.89l-2.09,3.44l-3.08,3.17l-4.01,0.08l-1.65,1.14l0.12,1.52l-2.79,3.2l0.22,2.73l-1.68,2.03l-1.22,0.42l-1.33,-0.88l-1.65,-0.03l-1.7,1.3l-0.52,2.63l2.52,2.14l0.28,2.21l-0.46,1.07l-3.3,3.12l-2.75,0.3l-1.3,1.22l-0.35,1.57l0.59,4.06l-0.96,3.53l-0.46,1.07l-2.6,1.44l-4.94,0.46l-0.97,-0.75l-0.58,-3.98l-1.37,-1.2l-2.89,-1.75l-5.52,-1.84l-3.67,-2.01l-3.95,-5.28l-0.03,-1.0l1.49,-2.19l-0.21,-1.46l0.61,-0.89l2.6,-1.7l-2.19,-4.41l1.39,-5.11l-1.39,-1.59l-3.07,0.01l-0.98,-0.75l0.33,-6.27l-1.08,-1.57l-2.44,-0.83l-0.54,-2.65l-1.22,-1.61l-3.06,-0.09l-0.96,-0.73l-0.34,-2.43l-1.31,-1.42l-4.71,0.52l-1.36,1.02l-0.96,-0.32l-0.5,-1.15l-1.17,-11.78l-2.17,-1.97l-0.25,-5.12l-0.6,-1.36l-2.16,-1.26l4.79,-3.95l3.25,-1.7l1.62,-2.57l0.75,-2.43l3.78,-3.52l2.37,-3.48l0.77,-2.47l1.34,-1.5Z","name":"Larisa"},"44":{"path":"M195.79,313.36l0.64,-2.02l-0.19,-1.83l1.52,-2.59l3.11,-2.43l4.43,-1.37l0.92,-1.28l-0.23,-2.96l1.26,-2.46l-2.31,-2.71l-0.03,-0.94l1.03,-1.3l-0.3,-2.71l0.99,-2.48l-0.34,-2.44l1.25,-3.01l3.8,2.14l3.26,0.48l3.04,-0.58l4.94,-4.64l4.41,-2.23l2.63,0.62l0.44,1.03l-0.69,4.05l1.83,2.65l3.5,-1.66l2.54,0.39l1.14,0.39l1.72,2.76l3.64,2.82l4.27,-0.55l1.26,6.95l1.03,2.53l-5.49,-1.72l-1.69,1.12l-0.07,0.56l1.07,1.37l1.21,3.97l2.74,3.39l-1.21,1.09l-0.21,1.45l0.57,1.34l2.84,1.12l2.72,-0.26l0.39,0.91l-0.72,3.86l0.98,1.46l-0.33,0.85l1.34,0.91l-1.14,0.92l0.13,0.86l-0.86,0.93l-1.3,0.1l-1.21,-2.68l-1.56,-1.39l1.2,-0.14l0.36,-1.19l-2.04,-1.68l-0.66,-1.86l-4.26,-4.58l-1.7,0.14l-1.17,-1.72l-0.65,0.25l-0.46,-0.68l-0.84,0.48l0.02,1.56l0.92,1.64l-0.85,-0.18l-2.13,2.31l2.26,2.12l-1.38,0.32l-0.43,2.56l-0.93,-0.33l-0.22,-1.22l-2.71,0.48l-2.04,-1.12l-0.98,1.63l-2.94,-2.24l-0.82,0.65l-0.72,-0.4l-2.72,1.94l-0.79,1.51l-2.1,-2.48l-0.95,0.51l-1.48,-2.06l-1.86,-0.05l-4.12,-2.6l-3.66,0.51l-0.81,-0.89l-4.36,-0.71l-3.56,3.26l-1.21,0.33l-1.91,-0.84ZM212.48,314.35l0.0,-0.16l0.4,0.13l-0.17,0.26l-0.23,-0.23ZM212.85,314.9l0.0,-0.06l0.03,0.03l-0.03,0.03Z","name":"Fokida"},"45":{"path":"M239.43,245.04l1.66,1.29l4.62,-0.43l0.03,6.01l0.58,1.35l1.44,0.89l3.28,0.26l5.93,-0.58l6.43,3.49l5.77,1.18l2.93,-0.29l1.15,0.4l2.61,2.19l4.55,-0.29l3.04,-1.25l1.95,0.83l-0.16,1.11l-1.29,-0.78l-2.02,1.31l-0.78,-0.6l-0.75,0.91l0.58,0.79l-0.88,0.04l-0.45,0.68l-4.89,-0.73l-1.76,1.86l-0.17,1.61l-2.21,0.14l-1.42,1.03l-0.88,-0.39l-1.6,1.05l-2.29,-0.48l-1.23,-1.23l-1.27,0.85l-1.78,-0.27l-1.82,-2.04l-2.1,-0.74l-1.18,0.15l-2.24,1.82l-2.3,0.82l-0.6,0.76l0.44,0.6l-1.55,1.22l0.92,0.66l1.84,-0.88l-1.21,0.91l0.58,1.96l1.22,-0.37l0.75,1.26l1.33,-0.64l0.88,0.82l1.84,-1.45l0.77,0.63l1.75,-0.15l2.51,-1.35l6.19,6.36l1.49,-0.54l1.45,0.31l1.07,-0.73l3.39,3.13l2.66,-2.05l1.63,0.52l1.19,1.51l2.63,0.95l3.97,-0.41l0.97,-0.64l2.39,3.25l-0.53,1.67l0.35,1.66l1.47,1.89l0.22,1.59l1.8,1.91l2.14,-0.69l0.88,-1.24l1.41,-0.03l0.55,0.54l0.58,-0.74l1.22,0.0l0.62,-1.06l-2.05,-1.46l1.82,-0.36l4.73,3.4l2.25,-0.56l2.32,0.66l1.56,1.6l0.25,1.38l-2.33,1.12l-2.02,2.98l0.68,0.45l0.68,-0.83l1.0,0.15l1.87,3.24l0.85,-0.59l2.22,0.85l-3.9,0.27l-8.99,1.92l-3.18,-3.5l-2.77,-0.51l-0.52,-2.29l-1.56,-0.75l-3.11,0.53l-3.29,3.29l-1.27,0.24l-3.44,-0.3l-2.72,-1.16l-5.4,0.8l-1.01,-2.84l-4.68,-0.73l-5.11,1.02l-9.93,4.9l-2.32,-1.28l-1.03,-1.32l-1.28,-3.12l-1.4,-7.31l-1.66,-0.45l-2.87,0.8l-3.47,-2.69l-1.66,-2.71l-1.52,-0.62l-3.04,-0.38l-2.87,1.64l-1.42,-2.11l0.73,-3.72l-0.87,-1.85l-2.94,-0.69l-1.79,0.57l-3.21,1.85l-4.69,4.49l-2.72,0.54l-3.11,-0.46l-7.1,-3.98l-1.39,-3.49l-3.08,-2.97l-1.39,-0.51l-2.23,-1.96l-0.61,-4.34l-2.9,-4.86l2.77,-6.33l3.85,-2.52l0.76,0.11l-0.32,0.96l0.65,1.61l4.41,-0.38l3.46,-1.55l2.18,-2.25l4.47,-1.37l1.76,-1.42l2.36,-5.14l6.75,-7.03l3.62,1.97l5.51,1.83l2.71,1.65l1.08,0.83l0.58,3.98ZM294.65,289.32l0.05,0.0l0.17,0.13l-0.05,0.05l-0.17,-0.17ZM293.63,286.56l-0.02,-0.26l0.05,-0.06l0.12,0.17l-0.15,0.15ZM293.66,286.09l0.05,0.04l-0.03,0.03l0.0,-0.04l-0.02,-0.02Z","name":"Fthiotida"},"42":{"path":"M399.78,267.63l-0.5,-0.12l1.69,-1.3l-0.02,-1.03l1.31,-0.94l-0.15,-1.36l-0.85,-0.43l-0.47,-1.24l0.81,-1.39l1.82,-1.13l0.61,0.77l0.76,0.03l0.36,0.87l5.26,3.23l-0.8,1.29l0.58,2.36l-0.78,0.71l0.95,1.04l1.26,-0.15l1.43,1.66l0.78,-0.08l2.88,1.94l1.7,1.91l0.31,1.13l-0.72,0.89l0.53,0.6l-2.02,0.77l-1.39,-0.85l-1.08,1.05l-1.98,-2.33l-0.9,-0.1l-1.91,1.04l0.44,1.62l-0.81,-0.61l-0.22,-1.12l-1.44,-0.52l3.05,-1.74l-0.18,-2.84l-1.17,-0.78l-1.13,0.87l-0.56,-1.43l-1.92,0.45l0.37,-0.71l-0.42,-0.43l-1.63,0.56l-0.6,-1.69l-0.53,-0.4l-0.56,0.58l-0.8,-1.17l-1.35,0.54ZM403.11,274.0l1.09,-1.66l0.39,-0.39l-1.01,1.45l0.15,0.74l-0.62,-0.15ZM404.67,271.81l0.0,-0.02l0.01,-0.01l0.0,0.02l-0.01,0.01ZM404.7,271.75l-0.01,0.01l0.01,-0.05l0.01,0.0l0.0,0.04ZM413.17,279.19l-0.89,-0.04l0.51,-0.64l1.27,0.78l-0.89,-0.1ZM273.39,271.59l0.0,-1.02l1.16,-1.72l0.61,0.18l1.6,-0.92l1.71,0.1l1.59,-1.36l1.13,0.1l0.51,-0.67l3.9,-1.25l1.07,0.26l3.33,-3.2l2.49,0.28l0.93,-1.17l0.22,-2.9l2.9,-2.23l5.71,0.38l1.69,-1.51l2.3,-0.23l2.12,-1.44l2.77,-0.05l1.69,2.18l2.75,0.72l-0.57,1.96l1.23,2.04l3.44,0.89l-0.27,4.36l1.21,1.81l-0.18,1.26l1.25,1.84l1.54,1.65l3.36,1.33l0.45,1.25l0.56,-0.15l1.06,1.1l2.05,0.59l0.66,1.18l0.7,-0.78l-0.16,0.81l0.73,1.35l1.13,-0.41l2.09,1.28l1.3,-0.28l1.81,0.59l1.18,-0.15l1.53,-1.29l2.43,3.17l1.09,0.56l-0.32,0.54l1.1,1.32l1.16,0.66l2.87,0.28l4.03,2.17l2.51,-0.63l5.0,1.62l2.5,-1.63l1.9,0.51l0.36,-0.72l1.22,0.33l0.97,-0.82l7.74,2.58l0.53,0.35l-1.15,0.41l-1.41,1.7l0.13,2.96l3.36,3.16l5.06,3.42l-3.33,3.58l0.36,2.78l-0.71,0.66l0.37,0.64l-0.53,0.51l1.87,1.77l-1.24,0.65l-0.59,1.3l2.45,1.5l-0.11,0.82l0.57,0.53l-1.01,2.33l2.02,2.39l0.54,-0.24l-0.33,0.96l1.82,1.75l-0.42,2.7l0.5,0.66l-0.91,0.51l0.13,1.32l2.24,3.1l1.49,0.2l1.98,1.4l0.76,-0.59l-0.15,1.38l2.11,1.57l3.38,-1.02l0.66,0.99l2.5,1.04l3.7,0.23l0.55,-0.51l1.66,-0.02l3.29,0.58l2.87,-1.65l0.04,1.51l-1.34,2.87l0.56,1.5l-0.38,1.07l0.94,1.6l-0.31,2.24l-0.28,1.37l-1.18,1.14l-0.07,1.32l-0.77,0.66l0.33,0.51l-1.33,0.18l-2.2,2.49l-1.32,-0.04l-1.3,-0.66l0.36,-0.86l-1.58,-2.84l-2.67,-1.42l-1.1,-0.03l-2.09,1.01l-0.5,1.63l0.59,1.07l-0.5,1.06l-3.15,-2.38l-0.85,-2.34l-1.59,-0.62l-0.09,-0.78l1.27,-1.44l-1.41,-2.28l-1.33,-0.01l-0.64,-1.44l-1.71,-0.84l-4.09,0.25l0.62,-2.7l-0.86,-0.68l-1.84,0.17l2.15,-1.99l0.44,-1.27l-0.33,-1.32l-1.21,-1.06l-0.42,-2.17l-2.44,-1.62l-1.66,0.25l-0.92,1.19l-0.38,-0.37l3.28,-4.18l-0.35,-1.1l-1.61,-0.63l-1.79,2.71l-0.64,-1.26l0.29,-0.47l-0.83,-0.41l1.51,-0.73l-0.31,-0.45l0.75,-1.01l-0.92,-0.28l-0.31,-1.32l-2.98,-0.92l-1.58,0.51l-2.01,-0.44l1.64,-0.21l1.3,-0.91l-0.79,-2.01l0.68,-1.48l-1.21,-1.8l-1.22,0.6l-1.25,-0.19l-1.63,-1.33l-2.74,1.68l-5.32,0.26l-2.83,-1.45l-2.72,-0.51l-2.59,1.56l-3.22,-1.18l-0.95,0.18l-1.14,-0.97l-2.56,-0.28l-1.47,0.26l-0.77,1.04l-1.14,-0.08l-0.33,-1.2l-1.42,-1.55l0.02,-1.13l-1.19,-1.11l-0.66,0.33l-0.7,-0.59l0.87,-0.83l0.82,0.38l1.03,-0.88l0.96,-3.21l-0.97,-2.09l0.2,-0.77l-2.1,-2.7l-0.95,-0.63l-1.72,0.15l-1.06,-0.94l-2.4,0.47l-1.12,-0.78l-1.27,-4.07l-2.48,-1.65l-0.96,-0.03l-0.61,-1.92l-1.23,-1.32l-3.25,-1.23l-2.88,-2.63l-2.17,-3.3l-1.78,-0.87l-1.27,0.31l-7.06,-6.19l-4.86,-1.64l-4.11,1.28l-2.85,-1.28l-1.17,-2.79l-3.28,0.13l-2.13,-0.84l-1.54,1.71l0.62,0.66l2.29,0.05l0.66,0.77l-0.41,0.83l-3.64,1.25l-3.13,-0.59l-4.73,1.28l0.07,-0.52ZM332.67,307.98l0.56,1.26l-0.59,0.89l2.83,0.84l0.01,2.7l1.95,2.31l-1.91,0.59l-11.47,-4.11l-1.94,-1.7l0.42,-2.49l-1.35,-1.59l-8.44,-0.11l-5.76,3.84l-1.16,-2.61l3.29,-3.53l2.55,-1.82l1.55,0.59l2.17,-1.17l2.6,0.13l0.93,1.05l3.79,-0.1l1.22,1.25l2.67,0.51l2.06,-2.72l0.89,0.25l2.89,2.83l-1.69,1.23l-0.04,1.1l1.96,0.61ZM392.75,271.92l-0.42,-0.44l0.62,-0.8l0.88,0.72l-1.08,0.52ZM387.34,346.2l0.46,-0.55l-0.32,-0.34l0.41,-0.07l-0.1,1.78l-0.45,-0.82ZM383.59,349.84l0.92,-2.75l0.74,-0.4l1.46,0.83l0.35,1.29l-0.49,1.12l-1.63,-0.56l-0.53,0.85l-0.82,-0.4ZM377.77,333.04l-0.54,-0.85l1.26,-0.06l-0.8,0.5l0.08,0.41ZM373.24,328.16l0.04,-0.04l0.01,0.01l-0.0,0.01l-0.04,0.03ZM373.1,327.8l-0.18,-0.24l0.22,-0.29l0.08,0.67l-0.12,-0.14Z","name":"Evia"},"43":{"path":"M157.36,242.82l0.92,0.11l3.69,-3.49l2.77,-1.81l1.21,-0.25l2.82,1.75l3.31,-3.24l6.5,-1.51l1.53,1.95l0.41,3.79l2.64,1.62l0.48,1.09l-0.66,2.56l0.72,1.51l1.23,0.93l1.74,0.25l5.95,-3.41l1.17,-0.04l2.62,1.84l2.63,0.9l1.0,1.25l0.27,1.94l-2.53,0.43l-2.76,2.2l-2.97,7.2l2.92,4.84l0.71,4.55l6.73,5.46l0.98,2.23l-7.19,3.47l-4.02,-0.34l-0.9,1.43l0.05,2.48l-2.64,1.91l-1.07,0.16l0.07,-0.96l-1.26,-1.56l-6.9,0.49l-6.69,-3.66l-1.1,-1.09l-1.13,-2.54l0.43,-2.36l5.71,-3.07l0.18,-1.64l-2.83,-1.48l-4.3,-0.87l-2.6,-1.13l-1.04,-0.78l0.14,-3.66l-0.74,-1.81l-7.74,-4.3l-0.25,-0.98l1.94,-3.36l0.46,-2.82l-2.63,-3.88l-0.02,-2.31Z","name":"Evritania"},"40":{"path":"M173.44,425.1l0.37,-2.05l1.32,-2.41l4.88,-3.8l1.27,-0.43l2.48,-3.91l0.07,-3.41l-1.25,-3.91l0.88,-0.38l5.15,0.99l2.91,-0.56l2.81,0.58l1.63,-0.87l2.79,-3.31l-0.45,-1.59l0.39,-0.95l3.0,-2.95l1.2,0.88l-0.35,1.82l1.59,1.96l-1.27,5.03l4.57,4.06l0.57,5.15l2.32,1.79l1.6,2.81l2.69,0.87l1.59,2.6l2.47,1.68l1.84,2.94l2.86,-1.41l2.5,-0.05l1.52,2.49l1.32,0.55l0.41,0.96l-1.39,2.07l-0.34,1.59l3.72,3.8l3.2,9.65l-0.68,1.34l1.72,2.54l0.81,2.46l0.02,2.6l-1.41,4.75l-1.73,1.29l-2.04,-6.17l-2.94,-2.72l-0.26,-1.31l-2.77,-3.6l-1.0,-0.07l-0.91,-0.89l-2.43,1.36l-3.16,-1.94l1.61,-2.05l-0.42,-2.57l1.14,-2.64l-0.24,-1.89l-2.11,-1.06l-5.19,-0.48l-6.29,1.61l-4.69,3.0l-0.28,1.91l0.66,0.82l0.02,1.88l-0.79,2.31l-0.28,3.78l0.99,4.33l1.86,1.97l-1.8,1.35l-0.04,1.85l-1.86,0.85l-2.27,2.09l-0.64,-1.89l-1.58,-0.98l-1.16,-1.56l-0.39,-2.37l-0.56,-0.53l-2.36,-0.08l-2.55,1.15l-0.65,-0.68l-1.7,0.03l-1.06,-1.64l-0.98,-0.2l-1.6,-5.8l0.77,-2.06l1.45,-1.18l0.29,-1.74l-2.53,-1.71l-1.9,0.55l0.64,-0.88l-1.62,-3.52l-2.27,-1.69l-0.8,-1.57l-2.16,-1.9l0.45,-2.84l-1.21,-5.95ZM181.17,446.97l-0.13,-0.45l0.15,-0.15l0.08,0.8l-0.1,-0.2ZM187.77,464.51l0.68,-2.69l1.64,0.9l-0.77,2.3l-0.5,-0.44l-0.72,0.53l-0.33,-0.6ZM189.11,465.92l-0.26,0.05l0.1,-0.32l0.04,0.15l0.12,0.13ZM189.02,465.45l0.26,-0.26l0.03,-0.06l0.01,0.03l-0.3,0.29ZM183.39,462.12l-0.22,-0.25l0.1,-0.1l0.38,0.49l-0.33,0.33l0.07,-0.46ZM183.31,462.61l0.04,0.16l-0.07,0.07l-0.06,-0.06l0.09,-0.17ZM183.92,460.86l-0.6,-0.99l0.74,-1.33l0.76,0.45l-0.06,1.44l-0.84,0.42ZM171.45,434.55l-0.04,-0.21l0.76,-0.46l-0.25,0.6l-0.48,0.07Z","name":"Messinia"},"41":{"path":"M253.68,316.17l-0.42,-0.18l0.7,-3.81l-0.57,-1.34l-3.16,0.06l-2.35,-0.81l-0.27,-2.02l1.31,-1.45l-0.8,-1.63l-2.09,-2.07l-1.17,-3.9l-0.94,-1.25l0.84,-0.67l5.98,1.87l1.16,1.43l2.78,1.44l1.58,-0.33l8.63,-4.64l4.85,-0.97l4.24,0.65l1.2,2.96l5.63,-0.84l2.58,1.15l3.56,0.31l1.77,-0.39l3.08,-3.18l2.67,-0.5l0.99,0.35l0.54,2.39l3.12,0.73l3.18,3.51l3.2,-0.22l6.23,-1.53l-3.16,2.38l-3.45,3.71l0.14,1.73l1.23,1.97l1.99,-0.32l4.44,-3.42l8.0,0.09l0.86,1.12l-0.3,2.68l2.24,1.93l11.63,4.19l3.26,-0.77l0.99,0.99l2.96,0.41l0.85,-0.45l0.46,0.53l-4.24,1.21l-2.93,2.48l-1.7,2.68l-0.69,8.53l-1.98,2.02l-2.7,1.68l-6.1,-2.21l-3.01,-3.95l-1.36,-0.81l-2.82,0.01l-0.92,-0.73l0.96,-2.35l-0.78,-1.63l-1.41,-0.88l-3.31,0.76l-2.71,1.92l-0.67,4.27l-0.82,0.84l-6.99,-0.46l-0.12,0.78l3.26,1.01l-3.82,-0.72l-2.58,0.48l1.36,-1.48l-2.81,-2.59l-3.53,3.38l-0.7,-0.76l-1.46,0.01l0.75,-0.18l0.53,-0.99l-2.59,-2.1l-5.14,0.17l-0.53,-0.98l-0.46,0.51l-1.64,0.0l-0.88,1.62l0.61,0.85l-0.61,-0.43l-0.43,0.39l-0.61,-3.58l-0.73,-0.63l-1.03,1.25l-0.94,-0.87l-2.55,0.75l-4.3,-0.77l-0.69,-1.11l0.54,-0.49l0.7,0.28l0.3,-1.01l1.06,-0.58l-0.09,-0.61l-8.33,-4.02l-0.93,-1.31l0.74,-1.34l-0.33,-1.5l-2.46,-2.31l-2.81,1.34l0.53,0.91l0.99,0.13l-0.53,0.96l-0.62,-0.05l-0.75,-1.27l-2.35,1.61ZM278.88,330.45l0.0,0.16l-0.05,-0.06l0.05,-0.09ZM280.56,330.51l1.22,-0.87l1.05,0.96l-1.05,0.56l-1.22,-0.65Z","name":"Viotia"},"1":{"path":"M335.82,35.31l0.94,-1.66l1.88,-1.15l1.43,0.49l2.88,-0.32l3.11,0.98l3.01,-3.48l3.75,-0.28l0.81,-0.8l1.74,-0.42l0.82,0.25l1.39,-0.72l0.64,-1.63l0.74,0.34l0.61,1.67l2.33,1.3l3.85,-2.34l0.52,0.68l1.92,0.27l2.31,-1.39l-0.71,-5.08l1.1,-0.79l0.17,-0.81l1.43,-0.71l0.49,0.59l1.62,0.15l0.41,0.64l1.71,-0.4l1.03,1.51l1.05,0.15l0.84,-0.32l0.25,-1.15l1.38,-1.43l1.41,0.04l2.29,-1.99l0.55,1.16l1.79,1.01l-0.16,1.67l0.94,1.37l2.79,-1.24l2.35,0.71l1.41,-1.49l1.44,-0.24l0.48,0.82l3.16,0.68l1.16,-0.83l0.16,-1.07l1.31,-0.79l3.04,-0.45l1.26,-0.85l0.38,0.97l1.22,0.31l-0.55,0.8l1.07,2.17l-0.46,1.41l0.94,2.62l1.67,0.72l-0.51,1.62l0.85,1.64l0.8,0.43l3.26,-0.51l0.07,1.37l2.33,-0.29l0.91,0.64l2.82,0.28l0.76,3.03l4.04,3.03l-1.83,0.69l-2.94,-0.89l-2.02,2.23l-6.08,1.71l-0.84,4.02l-0.7,0.95l-6.04,1.48l-0.77,2.43l-2.79,0.34l-0.55,1.54l1.19,1.01l-0.54,2.03l1.33,1.5l-11.29,7.76l-2.92,0.5l-2.4,2.26l-1.56,0.73l-0.57,4.92l-4.97,-2.06l-5.63,-0.96l-1.77,-0.79l-3.62,-2.88l-1.66,-2.81l-1.64,-1.16l-3.21,-0.04l-1.38,1.16l-2.16,-1.97l-4.27,-1.03l-3.96,-2.68l-4.68,-5.14l-3.71,-2.93l-0.49,-1.18l1.34,-4.92l-6.74,-3.2l-1.09,-3.79l0.45,-1.77Z","name":"Drama"},"3":{"path":"M354.47,90.69l-0.13,-0.13l6.24,-1.28l1.7,-0.79l4.24,-3.21l1.7,-2.33l4.45,-3.12l1.11,-1.1l1.21,-3.89l-0.82,-2.79l0.35,-0.76l5.3,0.89l5.25,2.17l0.52,-0.2l0.59,-1.41l-0.06,-3.56l1.55,-0.75l2.15,-2.11l3.09,-0.58l11.68,-8.05l0.07,-0.59l-1.47,-1.66l0.5,-1.33l0.96,0.3l3.08,-0.99l4.85,0.08l7.08,1.24l0.52,0.9l-2.86,1.32l-0.06,0.69l2.49,1.72l1.81,2.69l3.77,1.91l0.41,1.36l-1.1,3.57l-0.02,2.79l0.84,4.08l2.47,6.84l-0.56,0.45l0.46,1.26l-2.64,-1.14l-4.48,0.75l1.23,-0.67l-0.64,-0.89l-1.18,0.41l-2.12,-0.9l-1.36,0.16l-1.77,1.16l-1.51,-2.48l-2.48,-2.33l-2.2,-3.9l-3.42,-0.63l-3.04,0.7l-0.55,0.83l-1.89,-0.34l-2.15,1.29l-1.49,-0.12l-1.63,2.5l-2.49,0.73l-1.19,1.67l-1.07,0.45l-0.28,1.28l1.6,0.92l-0.34,0.94l-0.84,-0.67l-1.06,0.97l-0.13,1.43l0.54,0.67l-8.4,4.22l-4.42,3.13l-4.4,1.66l-3.42,0.31l-10.32,-3.46l-3.82,-2.26ZM405.76,102.69l1.03,-3.81l2.69,-4.13l0.18,-1.63l1.37,0.29l1.32,-1.77l3.94,-2.16l2.12,1.92l1.67,0.31l1.55,-0.7l1.54,2.6l1.12,0.94l1.47,0.01l0.45,0.39l-1.18,0.28l-0.79,1.44l0.73,1.41l0.98,0.21l0.37,1.38l-1.58,1.23l0.77,4.26l0.66,0.56l-0.29,0.91l-0.85,-0.88l-1.57,1.35l-1.6,-0.15l-0.58,0.96l-1.64,-0.23l-2.26,2.26l-1.28,0.12l-0.7,-1.03l-0.83,0.1l-3.14,-3.71l-1.03,-0.34l-3.35,0.42l-0.23,-0.9l-0.96,-0.58l-0.09,-1.34Z","name":"Kavala"},"2":{"path":"M494.01,82.96l0.7,-2.64l-0.19,-4.91l1.13,-0.35l2.47,1.2l1.46,-2.31l2.85,0.45l4.65,-2.47l3.12,-0.95l1.35,-2.47l2.57,-2.15l0.95,-3.73l2.93,-1.28l-0.44,-6.58l-1.95,-2.8l0.3,-2.3l2.34,-4.8l-0.86,-1.75l-1.47,-1.28l0.78,-0.59l3.15,0.19l1.96,-0.85l0.92,-1.63l1.76,-0.53l3.53,0.4l1.16,-0.14l0.93,-0.87l2.08,0.17l0.72,-2.02l1.74,-1.76l0.4,-3.08l1.1,-1.23l2.02,-0.4l-0.26,-1.32l-2.19,-3.19l1.34,-0.77l1.01,-2.45l-0.77,-3.37l-0.6,-0.46l-1.81,0.15l0.41,-4.43l-1.27,-1.1l-0.24,-1.78l-1.7,0.63l-1.54,-0.12l-0.33,-1.35l-1.52,-0.72l-0.67,-3.51l0.68,-1.66l0.95,-0.6l2.22,0.3l0.86,-1.64l3.64,-1.68l2.42,1.41l1.36,0.09l0.85,-0.74l1.16,1.49l2.95,1.11l2.52,0.17l1.46,-0.67l2.8,0.52l3.21,1.82l2.54,-0.21l3.93,2.31l1.75,2.83l1.46,1.19l4.65,1.08l0.39,1.36l-0.63,1.46l0.84,2.79l-0.56,1.42l0.88,2.27l-0.23,2.41l1.08,1.58l-0.07,3.1l1.2,1.13l0.59,3.37l-0.37,3.15l-3.23,2.3l-1.99,-1.58l-2.84,-0.13l-2.05,1.2l-0.95,1.69l-1.75,1.13l-1.15,1.76l-3.71,2.52l-2.41,0.34l-2.76,-0.79l-1.17,0.99l-0.72,1.96l0.17,1.9l-1.5,3.69l1.83,2.86l-1.52,2.48l1.17,1.0l-0.88,2.06l0.38,2.29l0.98,2.14l2.18,1.36l-0.49,2.01l-1.61,0.44l-0.7,1.36l2.27,2.89l-2.25,0.56l-0.82,0.8l-1.55,0.05l-0.38,0.71l0.95,1.92l-0.71,0.72l-1.39,-1.86l-0.72,-0.06l-0.99,2.65l-1.88,-0.44l-0.42,0.71l0.29,1.08l-1.97,2.47l1.15,1.47l-4.65,2.13l-2.46,5.48l-3.05,1.31l-2.84,-0.24l0.42,-0.73l-0.57,-0.31l-0.37,-2.01l-0.9,-1.48l-1.03,-0.47l0.18,-1.74l-0.99,-0.45l-0.48,0.6l-3.9,-2.79l-3.18,-0.52l-3.22,0.65l-4.15,-0.91l-6.75,0.57l-7.51,-1.63ZM523.68,89.25l-0.03,0.01l-0.03,-0.03l0.03,0.0l0.03,0.03ZM480.17,120.5l-0.17,-0.33l0.87,0.03l2.06,-2.1l2.17,-0.88l3.39,-0.57l4.03,0.67l1.6,0.86l1.42,0.03l3.17,2.47l-0.3,3.53l-7.2,2.67l-2.02,0.0l-1.0,-0.29l-1.53,-1.73l-2.65,-1.01l-3.83,-3.33Z","name":"Evros"},"5":{"path":"M427.13,38.79l1.4,-0.87l0.94,-3.22l-0.21,-1.08l2.19,0.16l1.37,0.76l3.59,-1.63l1.89,1.93l9.09,2.05l2.21,2.45l1.38,0.39l1.65,-0.81l0.73,1.7l3.68,1.26l0.4,1.14l1.96,0.63l0.97,0.92l0.72,2.89l1.46,0.42l-5.09,3.34l-1.8,-2.43l-0.64,-0.0l-0.85,1.14l0.15,1.43l-2.45,2.08l-2.84,4.68l0.25,3.05l4.31,5.19l0.71,2.96l-1.21,0.39l-2.8,-0.29l-2.02,0.73l-4.93,3.97l-0.81,2.54l-2.16,-0.36l-5.59,1.98l-6.06,5.58l-0.02,-1.47l-2.48,-6.88l-0.81,-3.96l0.01,-2.49l1.12,-3.86l-0.7,-1.88l-3.78,-1.92l-0.58,-1.38l-3.18,-2.64l2.62,-1.21l-0.66,-2.01l-7.64,-1.48l-4.94,-0.08l-3.13,0.98l-1.92,-0.96l0.17,-0.74l3.03,-0.48l0.51,-2.25l6.17,-1.61l0.92,-1.33l0.53,-3.54l6.0,-1.69l1.93,-2.18l2.5,0.92l2.76,-0.94Z","name":"Xanthi"},"4":{"path":"M454.4,74.2l0.04,-1.03l1.81,-0.76l1.06,-1.89l-2.25,-1.45l-0.82,-3.18l-4.23,-5.04l-0.24,-2.42l2.74,-4.51l2.5,-2.09l0.33,-2.13l2.19,2.39l3.41,-1.78l2.75,-2.4l2.18,0.88l0.78,-0.86l3.19,0.33l2.54,-1.78l1.43,0.27l3.27,-0.73l0.56,-1.05l3.22,-1.1l4.38,0.84l1.44,-2.92l0.99,-0.57l3.96,1.29l3.33,-0.8l4.13,1.76l0.67,-0.27l0.42,-1.72l4.71,-0.24l0.74,-0.89l1.9,-0.26l0.62,-0.77l1.8,1.48l1.32,-0.09l-0.36,1.12l1.38,0.86l2.79,-0.52l2.38,2.69l-2.26,4.5l-0.38,2.69l1.97,2.91l0.4,6.04l-1.27,0.06l-1.42,1.03l-1.05,3.87l-2.55,2.11l-1.09,2.22l-3.06,0.94l-4.57,2.42l-3.0,-0.4l-1.14,1.08l-0.13,0.95l-2.05,-0.99l-1.87,0.46l-0.09,5.55l-0.71,2.48l-2.9,-0.43l-2.12,1.12l-0.85,-0.18l-7.42,-3.59l-6.08,-1.15l-1.1,-2.02l-2.39,-1.57l-0.49,0.5l-2.84,-0.13l-2.33,1.88l-1.22,-1.2l-5.83,-0.34l-0.91,-0.96l-2.32,-0.48ZM454.97,70.78l-0.51,-0.54l0.08,-0.08l0.79,0.37l-0.35,0.26Z","name":"Rodopi"},"7":{"path":"M365.19,123.75l0.31,-1.46l1.57,4.27l3.14,3.43l1.84,0.08l1.03,0.65l1.81,-0.17l1.56,0.84l1.02,-0.49l2.39,1.25l-0.46,1.17l0.95,1.15l2.65,0.08l1.24,0.62l0.44,1.15l1.12,0.72l-0.22,0.67l1.75,3.34l3.49,2.42l1.12,1.6l2.12,0.88l0.99,1.03l1.0,3.59l-7.02,2.21l-0.87,-0.97l0.15,-1.4l-0.83,-1.76l-2.83,-2.44l-1.77,-0.65l0.02,-2.14l-2.48,-2.32l-2.68,-3.85l-3.16,-0.75l-2.51,0.26l-2.37,-0.75l-1.01,0.26l-2.27,-1.09l-0.95,-0.92l0.81,-6.99l-1.1,-3.53Z","name":"Ayion Oros"},"6":{"path":"M293.08,343.35l6.44,-1.45l1.2,-1.48l2.32,-0.79l0.62,-1.98l-1.34,-1.29l-0.45,0.32l-1.34,-0.55l0.68,-0.65l1.92,0.05l0.99,-0.55l-0.61,-2.24l-0.99,-0.49l4.57,0.33l1.16,-1.31l0.56,-4.04l2.36,-1.64l2.74,-0.72l0.99,0.56l0.62,1.31l-0.72,1.08l-0.11,1.61l1.38,1.03l2.78,-0.02l1.04,0.59l3.13,4.06l6.58,2.37l3.14,-1.84l2.19,-2.22l0.8,-8.82l1.55,-2.36l2.6,-2.22l6.93,-2.14l1.33,1.35l1.66,-0.61l1.94,1.45l2.86,0.38l2.0,1.25l1.13,-0.33l3.58,1.17l7.6,7.15l1.57,0.68l-1.34,1.18l1.21,1.54l-0.95,0.62l-0.28,1.2l-2.84,0.61l-3.25,3.04l0.31,1.88l1.26,1.73l-0.01,3.05l2.42,3.56l-1.65,1.26l-0.22,1.42l0.85,2.06l-1.18,1.52l2.35,0.66l1.09,1.44l-0.86,0.74l-1.48,-0.27l-0.64,0.83l1.5,2.0l2.34,1.05l-0.7,1.65l0.43,0.58l-0.61,0.76l1.42,0.99l0.36,1.01l1.33,0.46l0.04,1.3l-0.99,2.23l0.55,0.74l-0.81,0.0l-1.3,1.29l-0.07,0.74l0.81,0.83l-0.5,0.44l0.7,1.21l-0.38,0.59l0.61,0.67l-0.44,0.5l-0.43,-0.28l-1.95,2.49l-0.53,-0.59l-0.85,0.28l-1.58,-0.74l-0.83,0.4l-0.64,-0.76l-2.18,-0.18l-0.27,-3.1l0.81,-1.27l-1.25,-0.86l-1.75,0.61l-0.59,-4.64l-5.48,-4.38l-0.6,0.8l-1.05,-0.98l-0.75,0.03l-1.12,1.9l-0.94,-1.29l-0.48,0.26l0.07,-1.84l-3.21,-3.77l-1.0,-2.83l-2.59,-2.1l0.4,-0.67l-0.45,-0.5l-1.64,-0.23l-2.6,1.37l-0.26,-0.43l1.16,-0.66l-0.64,-0.56l-1.28,0.23l-0.93,-1.6l-1.29,0.65l-1.56,-0.88l-0.94,0.23l-0.33,-1.36l1.34,-0.91l-0.11,-0.64l0.94,0.25l0.82,-0.73l1.03,-2.03l-2.64,-2.48l-2.61,1.11l-1.71,-0.95l-2.6,1.79l-2.86,0.06l-2.88,2.64l-0.13,0.69l-1.66,0.25l-0.85,1.27l-2.39,-0.69l-2.04,0.05l-1.52,0.74l-2.1,-0.8l-2.89,0.18l-3.49,2.01l-2.89,0.83l-3.63,-6.94l-2.12,-2.62ZM368.17,360.03l0.02,-0.02l0.01,0.0l-0.02,0.04l-0.01,-0.02ZM360.37,380.33l0.19,-0.28l0.81,-0.03l0.36,0.42l-1.35,-0.1ZM358.86,395.97l-0.21,-0.32l0.84,0.38l0.44,1.08l-1.06,-1.14ZM316.48,411.74l0.05,-0.67l9.66,-4.62l1.08,-0.23l1.15,0.66l0.86,-0.86l0.96,0.17l0.36,0.31l-4.83,1.37l-0.72,2.24l-3.64,0.06l-1.32,1.19l-2.36,0.93l-0.46,-0.71l-0.79,0.15ZM330.81,406.67l-0.14,-0.14l0.17,0.12l-0.03,0.02ZM318.76,357.42l-0.4,-1.04l0.61,-0.99l4.17,0.17l2.39,-3.27l0.2,-0.51l-0.62,-0.5l-1.47,0.13l-1.03,0.89l-1.85,-0.25l1.33,-0.89l-0.06,-0.49l2.1,-0.81l-0.33,-0.91l0.42,-0.39l2.3,0.27l1.78,1.13l-0.79,0.64l-0.26,1.22l1.2,0.7l-0.44,1.76l0.41,0.66l-0.6,1.03l-1.25,-0.2l-0.47,0.45l0.38,1.22l-0.66,-0.61l-1.07,0.13l-3.21,2.47l-2.79,-2.0ZM319.76,352.28l-0.06,-0.09l0.28,-0.13l-0.18,0.22l-0.05,-0.0ZM321.54,350.3l-0.96,-0.0l-0.65,-0.23l1.07,-0.01l0.54,0.24ZM321.58,350.33l-0.01,-0.01l0.02,0.01l-0.01,0.0ZM321.65,350.35l-0.01,-0.01l0.02,0.01l-0.01,0.0ZM319.9,370.67l-0.16,-0.73l1.09,0.22l2.24,-0.82l7.24,0.44l-0.77,1.43l-0.85,-0.05l-0.71,0.68l0.47,1.11l-1.61,1.83l0.33,1.4l-3.03,1.5l-1.57,-1.11l0.91,-0.83l-0.42,-1.39l-2.34,-1.53l-0.83,-2.14ZM322.31,376.53l0.06,-0.03l0.05,0.03l-0.09,0.03l-0.02,-0.03ZM301.09,384.93l5.38,2.51l1.0,1.77l2.35,0.73l1.51,1.47l1.8,-0.3l2.19,-1.75l3.17,1.75l0.25,0.48l-2.24,0.64l0.11,0.83l0.55,0.5l3.43,0.34l2.49,1.45l0.8,1.24l1.31,0.16l1.58,1.43l-0.18,1.7l-5.22,1.57l-0.03,-2.1l-1.26,-1.52l-3.02,-0.0l-1.57,0.73l-3.79,-0.86l-1.39,0.22l-2.17,-1.99l-1.45,-0.3l-2.45,-1.64l-3.79,-1.1l-1.49,-2.2l2.12,-5.77ZM320.84,392.25l2.46,-1.18l1.08,0.39l0.48,-0.49l0.9,1.3l0.78,-0.41l0.35,0.35l-2.01,1.26l-1.77,-0.71l-1.49,0.1l-0.79,-0.61ZM323.91,390.44l0.09,-0.09l-0.07,-0.28l0.07,-0.07l0.06,0.38l-0.14,0.21l0.0,-0.15ZM315.17,388.13l-0.28,-1.12l-3.66,-3.64l0.72,-1.02l1.36,-0.51l4.15,-0.1l0.94,1.45l-0.13,1.04l-1.93,2.71l-0.08,1.17l-1.09,0.03ZM322.58,447.3l-0.13,-0.33l-0.04,-0.23l0.22,0.22l-0.04,0.34ZM312.23,377.62l-0.04,-1.35l1.07,-1.35l1.94,0.53l-0.04,0.57l-1.31,0.51l-0.98,1.24l-0.64,-0.15ZM308.8,408.87l2.91,-0.67l0.62,1.16l1.45,-1.19l0.54,0.36l-2.78,1.3l-1.48,0.05l-1.26,-1.0ZM309.59,540.0l1.25,0.63l0.79,3.94l-2.35,-1.77l-0.88,-1.98l-0.55,-1.83l1.16,1.72l0.59,-0.71ZM311.64,544.64l0.02,0.15l-0.03,0.03l-0.04,-0.09l0.06,-0.09ZM306.82,375.39l-0.01,0.0l0.18,-0.16l-0.16,0.16ZM306.62,364.72l-0.15,-0.03l0.29,-0.09l-0.09,0.09l-0.05,0.03ZM298.96,418.68l0.21,-0.03l0.66,0.76l-0.16,0.03l-0.71,-0.76ZM294.79,415.28l-0.78,-0.98l3.44,0.46l1.6,1.21l-0.27,0.98l-0.46,0.6l-1.36,0.08l-2.16,-2.34ZM278.05,500.88l1.1,-2.81l1.21,-1.22l-0.12,-0.82l1.97,-0.44l1.93,3.21l0.48,1.93l1.71,1.53l3.46,1.73l4.0,3.53l0.18,0.85l-0.73,1.2l-1.38,-0.67l-1.91,1.3l-0.64,2.4l0.13,2.95l0.59,0.72l-0.42,1.31l-1.77,-1.08l-1.05,0.6l-0.82,-0.9l-0.68,0.62l-1.16,-1.14l-1.15,0.08l-0.67,-1.0l-0.78,0.29l-0.13,-1.19l-0.66,-0.21l-1.36,-2.13l0.47,-0.94l-1.23,-1.65l1.82,-1.31l-0.79,-1.95l0.66,-2.13l-0.37,-1.08l-1.91,-1.58Z","name":"Attica"},"9":{"path":"M108.16,271.01l0.99,-1.33l3.33,-0.41l0.58,-0.66l-3.7,-3.59l-0.46,-1.52l1.27,-0.45l-0.33,-0.48l0.28,-1.39l1.56,2.69l1.75,0.51l2.28,-0.23l1.44,-1.76l2.09,1.66l1.07,0.08l0.79,-0.15l1.52,-1.77l1.33,0.84l2.73,-1.14l0.75,0.96l-0.2,1.24l0.47,0.48l0.94,0.1l0.22,-0.97l1.19,-0.13l0.33,1.07l-0.9,1.22l3.88,2.14l1.25,1.41l0.71,-0.37l-0.29,-0.91l0.93,-0.4l-0.3,-2.14l0.69,-0.62l2.84,1.72l0.76,-0.2l0.72,1.93l0.86,0.91l0.59,-0.23l0.53,-1.35l-0.79,-2.61l-2.12,-1.62l0.19,-3.36l0.99,-1.67l-0.13,-1.59l-2.89,-4.3l-1.5,-1.35l-1.51,-0.2l-1.04,0.81l0.11,0.86l-0.25,-0.25l-0.27,-0.74l0.73,-2.13l2.54,-1.47l11.3,-0.47l3.12,-1.37l4.23,-3.2l1.2,-0.34l0.11,2.75l2.54,3.66l-0.41,2.35l-1.97,3.4l0.29,1.6l7.95,4.56l0.47,1.35l-0.42,2.35l0.33,1.47l1.38,1.15l9.35,3.06l0.03,0.75l-5.72,3.13l-0.66,1.6l0.06,1.57l1.19,2.68l1.34,1.35l6.9,3.77l7.02,-0.42l0.9,2.57l1.89,-0.33l2.89,-2.09l0.43,-3.61l4.02,0.29l7.19,-3.48l3.11,2.13l-1.26,3.45l0.34,2.46l-0.98,2.46l0.29,2.63l-1.02,1.26l0.16,1.53l2.14,2.15l-1.22,2.54l0.29,2.66l-2.02,1.64l-3.0,0.65l-3.25,2.53l-1.72,2.88l0.16,1.95l-0.51,1.45l-1.22,-0.71l-2.04,1.52l-1.44,0.16l-1.19,1.83l-0.57,2.45l-2.51,-0.66l-1.45,-1.15l-2.92,0.17l-3.02,-1.11l-2.05,1.49l-1.87,-0.27l-1.13,1.45l-3.71,1.38l-1.38,1.57l-1.53,-0.38l-0.04,-1.86l-0.9,-1.37l0.77,-1.18l-0.68,-0.6l-0.83,0.2l-0.25,-1.29l-1.2,0.34l-0.75,-0.52l-1.17,0.77l-0.02,-1.52l-1.17,-1.44l-2.98,-2.14l-0.87,0.66l0.61,-1.38l-0.61,-2.91l-3.69,-3.95l-1.63,1.96l1.15,1.7l1.59,0.91l0.79,1.57l-0.57,0.56l0.45,1.11l-0.61,2.54l-1.53,1.02l-1.66,0.15l-0.23,1.22l-1.48,-0.15l-0.62,2.32l-1.66,0.51l-1.04,1.4l-0.85,-0.38l-0.73,0.93l0.31,0.39l-4.2,0.56l-1.6,-1.78l0.2,-0.95l-0.95,-0.83l-1.16,0.0l-0.48,-2.28l1.87,-1.7l0.39,-1.23l-0.68,-1.05l1.77,0.76l0.84,-1.01l-2.85,-0.96l-0.64,-2.66l-1.03,-0.94l0.5,-1.36l-1.03,-0.5l0.55,-0.65l-0.94,-0.43l-0.09,-0.69l0.9,-2.68l-1.56,-0.61l-3.05,2.86l-1.02,-0.16l-0.31,-1.53l-0.83,-0.75l0.83,-6.83l-2.54,-3.42l-0.07,-2.25l-1.41,-0.73l-2.25,0.56l-1.01,-0.95l-1.12,0.61l-1.7,-3.15l0.04,-2.25l-1.18,-2.75l0.0,-1.9l-1.17,-1.47l-2.61,0.56l-2.05,2.43l-0.69,-0.33l-2.38,1.15l-1.01,-2.51l-0.71,-0.76l-1.18,-0.18l-0.11,-1.57l1.1,-2.01l-0.25,-0.6ZM135.68,304.09l-0.08,0.18l-0.21,-0.27l0.12,-0.01l0.18,0.1ZM134.05,252.92l-0.03,0.03l0.0,-0.06l0.01,0.01l0.02,0.02ZM117.68,261.03l-0.05,0.04l0.0,-0.06l0.05,0.02ZM136.19,321.02l-0.07,-0.07l0.11,-0.03l0.03,0.03l-0.07,0.07ZM137.18,320.56l-0.29,-0.57l0.13,-0.62l0.46,0.84l-0.3,0.36ZM135.25,310.04l-0.24,-1.2l1.19,1.3l0.2,1.4l-1.15,-1.5ZM132.13,305.92l-0.06,0.03l-0.06,0.06l0.16,-0.19l-0.04,0.1ZM129.74,304.37l0.22,-0.5l0.46,0.7l-0.56,-0.23l-0.11,0.03Z","name":"Aitoloakarnania"},"8":{"path":"M155.27,340.92l0.45,-1.66l1.4,-0.86l0.7,-1.75l-0.4,-3.69l0.92,-2.88l-0.32,-1.15l0.85,-0.04l1.83,2.3l3.26,-0.71l6.44,4.04l1.04,-0.38l4.76,1.47l5.68,-2.87l0.3,-1.12l2.98,-2.74l1.91,-5.43l3.02,-3.27l2.57,-0.8l0.83,0.28l2.11,-2.06l1.09,0.18l0.93,1.1l5.52,-0.28l3.07,1.53l1.86,-0.15l1.39,2.65l1.27,0.89l1.5,0.15l1.28,1.81l2.31,-1.16l1.47,1.22l2.15,3.57l1.67,1.2l1.68,-0.05l1.54,1.96l1.81,-0.19l2.27,0.98l5.23,-0.53l1.07,2.05l-0.34,2.71l1.79,2.85l-3.33,7.9l-7.62,3.49l-1.5,7.9l1.7,2.54l-0.42,1.09l-4.25,1.52l-2.15,2.22l-1.25,0.45l-0.95,-0.33l-0.62,-1.38l-2.72,-0.16l-1.79,0.65l-1.94,2.07l-1.13,0.04l-10.4,-4.72l-0.7,-2.57l-2.37,-2.09l-2.64,-0.92l-0.95,-0.95l0.03,-1.4l-1.21,-0.92l-1.53,-0.27l-1.69,1.23l-2.25,3.37l-3.57,3.18l-1.2,2.17l-0.76,-0.11l-0.38,-3.49l-1.46,-0.99l-4.24,-0.88l-1.34,-1.2l-5.27,-0.27l-3.58,-4.76l0.16,-2.32l-0.86,-1.82l-2.81,-0.54l-2.18,-2.72l-1.28,-0.49l-0.45,-3.66Z","name":"Achaea"},"13":{"path":"M108.83,135.41l0.74,-0.8l-0.18,-1.52l2.26,-2.21l-0.24,-3.58l0.4,-1.19l-0.53,-1.12l2.84,-1.25l1.32,-3.33l2.14,0.69l2.76,-0.43l1.76,1.22l2.28,-0.65l1.26,-2.03l-0.08,-2.62l2.57,-1.58l0.4,-1.4l2.7,-0.62l1.02,-2.41l7.1,-2.79l3.02,-1.95l3.36,-7.22l1.15,-0.24l1.09,0.58l1.62,4.11l2.78,-0.34l1.07,0.8l1.43,2.62l0.49,5.11l0.65,1.49l3.24,-0.87l5.23,6.73l1.25,-0.17l-1.63,1.7l-2.11,3.61l0.13,3.96l-0.84,2.09l-2.74,0.34l-1.16,1.1l-1.07,-0.15l-2.39,-2.05l-1.79,-0.26l-1.73,0.71l-1.47,2.2l-1.12,0.23l-1.29,-1.15l-1.82,0.06l-0.55,1.46l0.71,2.4l-3.77,-1.08l-2.88,0.12l-1.69,0.37l-2.9,1.9l-3.32,5.2l-0.19,1.48l1.25,3.72l-1.51,3.87l-0.08,1.89l-1.31,0.67l-1.29,0.27l-1.7,-0.85l0.2,-1.37l-1.05,-4.04l-2.19,-4.19l-3.29,-3.7l-1.52,-4.21l-1.25,-1.55l-3.35,0.49l-2.64,1.94l-1.56,-0.19Z","name":"Kastoria"},"12":{"path":"M130.61,151.11l4.25,1.8l4.49,-2.35l2.6,2.03l1.62,-0.36l2.82,-1.84l2.82,-0.35l2.48,-3.74l3.04,0.16l6.79,-1.59l5.79,0.31l2.2,1.91l0.69,3.82l1.41,1.19l4.77,-1.3l1.42,0.43l2.33,2.02l2.09,4.23l1.6,0.17l2.96,-1.28l0.99,0.33l-0.25,3.74l0.93,2.65l-1.44,4.75l0.25,1.79l1.89,1.56l1.57,-0.08l3.0,-1.3l1.78,0.11l-0.56,1.07l2.46,1.33l0.49,1.12l0.23,4.86l-0.77,0.66l-4.1,-0.57l-5.85,1.18l-2.72,-0.14l-7.89,-1.89l-11.67,-1.39l-3.3,1.16l-1.7,1.13l-1.78,2.22l-1.46,0.74l-4.43,1.08l-0.73,-0.67l-0.26,-1.45l-5.35,-2.79l-2.91,-0.12l-7.37,2.0l-1.06,-0.35l-1.4,-2.55l-1.06,-5.17l-2.35,-2.13l1.92,-3.5l0.09,-3.28l-1.66,-0.98l-2.8,1.24l-1.86,-2.27l-1.0,-3.87l-1.12,-0.94l1.61,-2.67l1.77,0.88l1.74,-0.28l1.66,-0.84l0.26,-1.63Z","name":"Grevena"},"14":{"path":"M197.12,103.47l-1.68,3.69l0.18,2.81l1.95,2.42l-0.93,2.19l0.17,1.76l1.19,0.9l2.95,4.28l5.38,2.78l0.25,1.42l1.55,0.75l4.12,-0.59l0.54,3.59l2.65,2.78l0.34,2.48l0.93,1.56l3.47,1.55l-1.08,1.89l-0.23,2.63l-0.92,0.96l-3.25,1.52l-0.59,1.64l0.2,1.64l-1.69,1.89l-0.81,2.53l-2.31,3.39l-3.77,3.49l-2.37,4.99l-3.13,1.59l-3.61,3.17l-2.93,-0.18l-4.41,1.38l-1.25,-1.04l-0.23,-1.31l1.46,-4.94l-0.11,-1.48l-0.82,-1.3l0.49,-2.71l-0.32,-1.32l-1.89,-0.72l-2.99,1.3l-1.06,-0.15l-1.83,-4.02l-2.46,-2.13l-1.77,-0.57l-4.57,1.34l-0.96,-0.72l-0.77,-3.95l-2.59,-2.23l-6.1,-0.37l-6.9,1.6l-3.05,-0.17l-1.68,1.45l-1.0,2.33l-2.68,0.34l-4.22,2.17l-2.32,-1.99l-4.73,2.32l-2.75,-0.84l-1.49,-1.06l1.47,-3.72l-1.28,-4.03l0.18,-1.04l3.06,-4.79l2.77,-1.81l1.38,-0.28l2.75,-0.11l2.57,1.09l1.61,-0.03l0.6,-1.57l-0.84,-1.52l0.36,-0.97l2.43,1.33l1.48,-0.31l1.74,-2.4l1.31,-0.48l1.18,0.16l2.39,2.05l1.6,0.29l1.31,-1.15l2.78,-0.34l1.13,-1.49l0.53,-6.19l5.12,-6.35l4.21,-3.15l15.16,-3.86l1.86,-2.3l-0.01,-2.78l0.71,-2.5l6.84,1.53Z","name":"Kozani"},"11":{"path":"M125.21,92.59l1.58,-1.74l-0.0,-5.63l0.91,0.02l0.43,-0.9l9.87,-0.21l3.47,-0.62l4.4,-1.87l2.87,1.89l3.04,0.04l4.07,-1.24l6.98,-4.14l2.34,0.89l5.18,0.04l2.72,3.3l1.13,0.59l1.33,-0.24l2.99,-2.16l2.18,-0.22l0.87,-0.97l0.15,-1.61l2.86,-1.49l3.06,0.98l0.6,3.7l3.85,2.43l-0.17,0.9l-1.19,0.95l-4.37,1.1l-2.8,-0.15l-0.9,1.45l1.23,1.57l2.13,5.69l2.66,0.98l-1.83,4.91l0.24,0.55l2.39,0.44l-0.69,2.43l0.08,2.55l-1.68,2.07l-14.96,3.74l-4.42,3.29l-0.81,1.16l-2.07,0.78l-5.17,-6.65l-2.04,-0.14l-1.19,0.85l-0.87,-5.95l-1.56,-2.92l-1.67,-1.15l-2.55,0.32l-0.4,-2.39l-0.9,-1.4l-1.46,-0.83l-2.04,0.49l-3.25,7.13l-2.78,1.81l-4.5,1.41l-2.96,1.61l0.2,-2.45l0.85,-0.56l-0.37,-1.66l0.38,-3.11l-2.68,-4.04l-3.19,-2.65l-0.16,-2.29l-1.41,-0.71Z","name":"Florina"},"10":{"path":"M137.35,362.35l0.25,-4.66l1.2,-3.38l0.51,-0.41l1.68,1.41l1.66,-0.05l1.8,-0.86l2.59,-2.39l1.44,-0.41l4.23,-5.53l1.76,-3.19l0.53,2.11l1.45,0.68l2.18,2.72l2.76,0.54l0.65,1.29l-0.08,2.63l3.78,5.02l5.6,0.43l1.26,1.17l5.2,1.4l0.73,3.94l1.75,-0.01l1.21,-2.25l3.56,-3.17l2.31,-3.44l1.11,-0.91l1.06,0.16l0.93,0.71l-0.07,1.33l1.16,1.17l2.67,0.95l1.7,1.51l-2.32,0.59l-4.61,6.99l-0.4,3.68l1.65,4.59l0.1,9.89l5.55,1.14l7.16,5.23l2.03,2.31l-1.65,1.18l-1.51,-1.12l-1.78,1.06l-2.16,2.34l-0.49,1.17l0.48,1.41l-2.58,3.06l-1.3,0.67l-2.65,-0.6l-2.76,0.56l-5.2,-1.0l-1.19,0.44l-2.08,-5.15l-2.5,-3.97l-4.18,-5.16l-3.88,-3.49l-11.98,-7.75l-3.59,-0.1l-0.99,0.98l-0.14,1.5l-0.26,-0.51l0.55,-1.9l-0.57,-0.53l1.39,-3.07l-1.07,-2.11l-0.18,-2.73l-1.5,-1.82l-5.06,-3.47l-8.87,-2.79Z","name":"Ilia"},"39":{"path":"M233.82,463.25l2.17,-2.97l0.99,-3.8l-0.03,-2.95l-0.86,-2.6l-1.63,-2.32l0.68,-1.29l-3.29,-9.9l-3.63,-3.57l1.72,-3.68l-0.57,-1.32l-1.38,-0.62l-0.54,-0.88l1.4,-1.18l4.87,-1.47l4.12,-2.25l2.15,-3.19l0.73,-7.04l15.38,3.7l-0.25,8.99l3.98,4.45l1.75,2.88l0.65,5.07l3.59,0.0l2.96,0.85l1.64,1.82l4.69,1.8l1.87,-1.47l9.16,-0.2l0.15,0.43l-0.43,-0.12l-0.82,1.28l2.05,2.64l-0.43,0.61l3.02,6.58l-0.92,0.7l1.54,2.21l2.39,1.56l-0.11,2.95l1.89,1.03l-2.08,1.15l0.34,2.39l-2.13,-1.45l-1.14,0.58l0.14,0.78l-0.81,-0.33l-1.04,1.0l-0.07,1.53l0.91,0.64l-0.32,0.87l0.56,0.96l-1.02,1.95l0.44,3.17l3.73,4.52l2.76,1.88l1.31,-0.03l0.11,1.21l1.34,0.7l-0.77,0.68l0.24,1.41l-1.03,1.15l1.67,1.58l1.03,-0.13l0.7,1.86l1.97,0.48l0.31,1.48l-4.07,-0.48l-1.18,1.23l-1.91,-1.25l-0.78,0.24l-2.21,-2.82l0.43,-2.25l-1.34,-1.53l-2.67,-1.51l-3.94,0.7l-1.01,-2.26l-1.26,-1.15l0.52,-0.86l-0.64,-1.01l-4.86,-3.57l0.68,-1.51l-1.07,-2.24l-2.31,-2.28l-1.12,-0.35l-0.68,0.6l-0.09,1.64l-0.95,-0.48l1.16,-3.82l-0.66,-1.99l-1.01,-1.1l-0.46,-2.9l-1.19,-1.88l-3.46,-0.63l-6.97,-0.08l-2.15,0.08l-4.51,2.64l-0.66,1.23l0.93,2.71l-2.77,1.07l-1.39,1.56l0.55,1.15l-0.7,0.48l0.11,0.8l0.66,0.83l0.81,-0.23l0.73,0.5l-0.18,1.03l0.53,0.43l-0.56,0.13l-0.9,-1.53l-1.82,-0.25l-0.97,1.48l2.34,3.31l-1.11,1.09l-1.18,-1.61l-1.85,0.85l-0.35,2.19l0.79,3.29l-0.75,2.46l2.37,2.99l0.09,2.19l-0.66,0.95l0.42,1.61l-2.27,0.55l-0.7,-1.91l-2.95,-1.0l-1.67,-1.66l-0.77,1.05l-1.55,-0.57l-1.38,-2.61l-0.24,-1.14l0.45,0.21l1.25,-1.2l1.93,-0.71l-0.74,-1.2l0.37,-1.81l-1.12,-0.78l1.12,-0.91l-1.86,-1.18l1.03,-0.81l-0.99,-1.76l1.0,0.03l0.53,-1.0l-1.45,-0.78l-0.31,-1.05l0.22,-0.91l0.72,0.0l1.36,-1.56l-0.95,-0.83l-2.36,0.25l-1.25,-3.37ZM245.08,491.08l0.93,0.75l-0.37,0.98l0.35,0.61l-0.77,0.22l-0.71,-0.98l0.57,-1.58ZM280.65,487.53l0.08,-1.06l1.57,-1.59l2.07,-0.76l-0.04,2.6l0.66,0.82l-0.91,-0.99l-1.21,-0.25l-2.22,1.24Z","name":"Laconia"},"38":{"path":"M235.43,335.0l4.58,1.72l1.06,-0.56l1.64,0.61l3.28,-0.56l4.28,2.87l2.03,0.28l3.01,1.65l2.21,0.46l1.89,1.6l4.9,2.24l3.81,3.43l2.0,2.97l5.96,3.07l2.02,0.1l2.24,-1.09l1.9,0.08l2.44,-3.55l-5.44,-3.93l-3.93,-1.0l2.13,-1.51l1.56,-0.19l1.02,-1.14l1.28,0.08l0.4,-0.91l0.81,-0.31l2.51,0.46l1.23,1.25l1.77,0.58l0.53,-0.73l1.86,0.93l1.61,-0.57l2.51,3.09l3.68,7.05l-1.2,1.62l-2.3,0.48l-1.6,-0.28l-2.21,0.63l-0.73,-0.91l-1.75,0.41l-1.16,-0.53l-0.88,1.21l0.63,1.36l-1.92,1.76l0.53,1.93l1.69,1.85l2.45,-0.38l1.49,0.76l3.39,-0.81l0.66,0.76l0.53,-0.2l3.4,3.3l0.64,-0.04l0.01,2.02l-2.17,1.55l-1.72,-0.51l-0.99,1.11l0.77,1.83l-1.62,1.06l-4.06,-0.15l-2.63,1.79l-5.01,-1.04l-1.06,-0.6l-0.79,-1.45l-3.96,-0.88l-4.79,1.25l-2.87,0.02l-2.79,-0.93l-4.94,-3.01l-4.27,0.3l-2.73,-1.4l-3.96,-0.86l-1.6,0.7l-0.68,-0.38l2.18,-3.5l-0.24,-1.59l-1.24,-0.69l-1.78,0.7l-1.08,-0.17l-1.48,-1.18l-1.48,0.52l-1.51,1.21l-2.3,3.56l-1.22,0.78l-2.68,-0.78l-4.11,0.35l-1.12,-0.38l-5.44,-6.39l0.17,-2.18l0.77,-1.19l0.42,-3.93l5.88,-2.32l2.49,-2.32l0.5,-2.5l2.23,-4.57l-1.85,-3.3l0.31,-1.93Z","name":"Corinthia"},"15":{"path":"M66.98,242.34l0.11,-0.42l1.08,1.04l-1.15,-0.43l-0.04,-0.2ZM60.45,236.48l-0.59,-1.22l0.59,-0.44l2.03,1.19l2.61,3.64l-2.3,-0.36l-2.34,-2.81ZM22.0,187.48l-0.54,-0.66l2.42,-3.64l1.77,-0.13l1.54,0.78l2.49,-0.93l0.84,0.49l1.41,-0.44l1.4,0.8l2.57,-1.32l1.67,-1.67l1.88,0.59l1.04,1.69l2.11,0.92l0.77,-0.4l1.26,1.23l0.94,-0.08l-1.98,3.63l-3.64,0.91l-3.24,1.92l-0.19,2.65l0.95,0.99l-0.82,0.73l1.0,1.51l0.51,-0.22l0.89,0.98l3.21,1.15l1.18,-0.15l-0.6,0.8l0.52,0.71l-0.03,0.99l-1.17,-1.36l-0.86,1.15l1.1,1.25l-0.2,3.41l1.94,7.13l3.21,1.51l1.93,0.08l0.73,1.81l0.98,0.53l2.37,-0.63l1.62,-1.22l1.67,2.64l0.52,2.03l1.61,1.82l-0.5,1.33l-1.06,-0.62l-1.07,0.16l-4.26,-2.46l-2.08,-0.5l-2.72,-2.16l-3.09,-1.03l-1.41,0.13l-2.87,-1.98l-1.49,-3.12l-0.18,-2.64l-0.6,-1.07l0.67,-1.4l-1.58,-2.65l-2.09,-2.08l-2.45,-0.74l0.35,-0.65l-0.42,-0.43l-2.52,-1.04l-0.29,-1.62l-0.92,-1.1l0.31,-1.6l-0.4,-0.39l-1.5,-0.13l-0.58,0.48l-1.93,-0.82l0.75,-2.88l-1.26,-1.1l-0.81,0.19l-0.79,-2.02ZM54.97,214.9l0.01,-0.01l0.01,0.01l-0.02,-0.0ZM43.75,211.98l0.0,0.0l-0.01,0.0l0.0,-0.01ZM37.7,194.99l-0.0,0.0l-0.0,-0.0l0.0,0.0ZM37.67,194.96l-0.01,-0.01l0.01,0.01l-0.0,-0.0ZM43.66,188.25l0.0,0.0l-0.0,0.0l-0.0,-0.0ZM31.96,200.19l0.01,-0.0l-0.0,0.0l-0.0,-0.0ZM16.24,174.41l-0.12,-0.76l1.18,0.67l-0.24,0.51l-0.82,-0.42ZM17.08,174.85l0.01,0.0l-0.0,0.0l-0.0,-0.0ZM12.14,186.04l-0.21,-0.19l-0.03,-0.34l-0.45,-0.55l0.03,-0.08l0.86,0.9l-0.2,0.26ZM0.47,177.23l0.25,-0.79l1.52,0.8l1.87,-0.72l-1.17,1.84l-0.8,-0.11l-0.19,0.46l-1.32,-0.52l-0.14,-0.96ZM3.46,177.15l-0.03,-0.01l0.03,0.01l-0.0,0.0Z","name":"Corfu"},"22":{"path":"M51.81,193.2l-0.47,0.0l-0.06,-0.78l1.19,0.05l1.36,0.48l-2.03,0.25ZM54.71,193.37l1.69,0.66l0.97,0.72l-2.43,-0.95l-0.23,-0.42ZM57.39,194.76l0.37,0.31l0.06,0.05l-0.04,0.04l-0.39,-0.4ZM59.7,196.12l4.2,0.56l0.89,-0.56l0.35,-1.31l1.5,0.51l0.87,-1.26l2.62,1.07l0.2,-2.11l1.34,-1.53l1.22,-0.24l1.9,-1.72l-2.36,-3.25l1.14,-1.55l-1.33,-2.1l0.9,-0.67l3.5,1.25l0.32,2.93l1.06,1.66l1.45,0.99l4.13,0.53l0.7,3.95l1.84,2.56l0.27,1.01l-1.67,2.14l-0.29,1.42l0.3,4.14l3.52,4.25l5.46,1.3l0.46,1.01l-0.44,1.27l0.3,1.56l1.22,2.69l0.22,3.84l1.53,2.78l2.38,7.23l-1.88,-0.31l-2.37,0.73l-2.47,-1.3l-3.5,1.58l-1.98,-0.72l-4.11,-3.19l-0.96,-2.21l-1.82,-1.55l-2.92,0.02l-4.93,2.59l0.23,-0.78l-0.61,-1.17l0.53,-0.65l-1.02,-0.85l0.54,-1.21l-1.45,-1.66l-2.14,-0.72l-1.42,-3.16l3.8,-0.1l0.62,-0.53l0.15,-0.62l-0.64,-0.66l-4.04,-2.7l1.09,-0.2l1.71,1.03l0.84,-1.79l-0.15,-0.93l-2.48,-1.33l-1.17,0.77l-4.17,-2.37l-1.87,0.77l0.57,-1.16l1.42,-0.99l0.75,-2.39l-0.74,-0.55l2.1,-2.66l-1.87,-2.07l-2.1,-0.4l-1.21,-0.91ZM61.93,202.47l-0.23,-0.28l0.69,0.05l-0.23,0.15l-0.23,0.07Z","name":"Thesprotia"},"17":{"path":"M118.71,293.28l2.02,-3.91l4.1,-0.56l-0.33,1.01l-2.06,1.7l-1.92,0.32l-1.23,0.92l-0.4,0.48l0.51,0.51l-0.94,1.13l0.25,-1.59ZM120.68,297.09l-0.17,0.04l0.02,-0.18l0.16,0.03l-0.01,0.11ZM121.78,295.3l0.2,-0.2l0.49,-0.83l-0.22,0.64l-0.47,0.39ZM112.77,304.14l-0.13,-0.04l1.43,-1.5l-0.11,1.62l-1.2,-0.08ZM108.26,290.3l-0.44,-0.77l0.38,-2.08l1.41,0.74l0.83,-0.94l1.84,0.68l-1.28,1.15l-1.21,-0.38l-1.09,1.97l-0.44,-0.36ZM92.66,294.72l1.27,-4.24l-0.24,-4.65l1.42,-2.3l2.15,-6.75l1.93,-1.41l1.58,-3.21l1.96,0.13l1.23,-1.84l1.73,0.46l-0.52,1.08l0.82,2.01l-0.19,4.38l1.12,2.93l-1.31,1.36l-1.42,3.19l1.08,0.73l0.96,2.3l-0.02,1.67l-0.78,-0.01l-1.01,-1.26l-0.51,1.58l-1.01,0.17l0.35,1.3l-1.38,0.29l-0.72,-0.69l-1.33,1.44l-0.44,-0.67l-1.09,0.27l-0.7,-1.32l0.11,-1.05l-1.25,-0.68l-2.28,4.32l-1.02,0.82l-0.48,-0.38ZM99.73,293.95l-0.02,0.15l0.46,0.75l-0.44,-0.45l-0.09,-0.7l0.1,-0.1l0.0,0.35ZM106.03,285.14l-0.2,-0.4l0.05,-0.55l0.38,0.48l-0.14,1.62l-0.1,-1.15ZM105.12,298.27l0.09,-1.29l0.38,-0.36l0.44,0.38l-0.3,1.54l-0.61,-0.27Z","name":"Levkada"},"16":{"path":"M76.75,330.07l1.36,-2.41l-0.18,-2.77l1.11,0.01l1.39,-1.65l-0.1,-2.28l0.63,-0.96l0.38,-2.82l0.51,0.65l0.95,-1.43l1.09,-0.48l0.39,2.3l1.25,0.96l0.72,-0.2l1.01,1.4l5.07,-3.74l0.77,-1.43l-0.54,-1.43l0.63,-0.76l-0.66,-1.75l0.38,-1.89l-0.85,-0.81l0.61,-0.92l-0.48,-2.32l1.47,-0.18l1.03,0.68l-0.01,1.04l0.72,0.53l-0.31,0.62l0.59,0.55l-0.28,0.52l0.91,1.16l-0.21,0.98l1.26,0.66l0.47,1.81l-0.35,0.46l1.23,4.61l-2.39,1.91l1.05,1.04l1.14,2.86l0.95,0.99l1.01,0.0l2.36,-2.62l-0.62,1.38l0.47,0.48l1.06,-0.52l0.52,0.36l-0.23,0.5l1.15,1.37l0.17,1.28l3.47,3.94l2.92,4.66l1.71,1.39l-0.02,0.62l-1.79,4.16l-1.62,-0.98l-1.78,0.76l-3.35,-0.74l-4.85,-3.81l-1.95,-0.66l-3.13,1.25l-1.01,1.3l-2.38,-1.27l-1.13,0.28l-2.0,-1.57l0.54,-1.16l-1.51,-2.17l0.35,-1.24l-0.88,-1.59l2.14,2.63l0.99,-0.81l-2.39,-3.46l-2.19,-5.32l-0.02,-1.17l-1.01,-0.68l-1.14,0.2l-0.99,1.32l1.42,3.79l0.07,5.63l-3.49,0.59l-0.63,0.57l-0.53,-1.38l-2.6,-1.05l0.18,-1.75ZM81.4,316.84l0.03,0.02l-0.03,0.05l0.0,-0.07ZM81.28,316.41l0.0,0.08l-0.05,-0.13l0.02,-0.09l0.03,0.14ZM91.51,313.21l0.0,0.05l-0.05,0.0l0.05,-0.05ZM98.47,305.92l0.24,-1.18l1.51,1.15l0.86,-0.71l0.35,-1.2l-0.5,-1.26l1.64,0.81l-1.11,2.67l2.22,0.81l1.31,1.38l-2.62,5.19l-1.91,-3.88l0.07,-1.64l-1.12,-0.42l-0.94,-1.72ZM103.04,315.34l1.44,-0.82l1.78,0.67l0.2,-0.91l-1.21,-1.0l0.72,0.48l0.82,-0.65l0.63,0.27l0.49,1.07l-0.63,0.46l0.86,0.97l-0.7,1.3l0.39,1.07l1.3,0.71l-3.36,1.24l-1.35,-1.31l-0.55,-2.65l-0.96,-0.51l-0.46,-0.78l0.58,0.38ZM104.12,306.74l-0.07,-0.01l-0.03,0.01l0.08,-0.08l0.03,0.07Z","name":"Kefallonia"},"19":{"path":"M108.62,255.0l0.13,1.05l-0.69,-0.26l-0.89,-2.12l1.04,-4.49l1.52,-0.83l1.58,-2.02l1.26,0.56l1.68,-0.45l2.82,-3.4l0.28,-1.61l-1.81,-5.4l0.36,-0.88l4.54,-1.33l1.56,-1.29l1.33,-2.75l0.42,-5.6l4.31,-3.02l0.89,-1.28l1.41,-7.7l0.97,-0.8l3.96,1.74l3.08,-1.8l1.82,0.69l1.55,2.72l-0.23,1.58l0.57,1.6l3.77,2.9l1.23,3.27l2.93,1.97l5.49,0.31l1.69,1.82l1.09,2.45l-4.05,7.35l0.35,1.72l1.69,2.35l-1.36,0.42l-4.18,3.17l-4.33,1.59l-9.8,0.16l-1.63,0.57l-1.42,1.15l-0.93,2.53l-0.7,0.29l-0.24,1.13l0.48,0.53l-2.31,1.23l-0.71,-0.64l-1.88,0.57l-1.3,-1.83l-0.79,-0.2l-3.16,2.37l-2.14,-2.06l-4.66,-0.03l-1.3,-2.31l-1.58,-0.26l-3.03,2.55l-0.72,2.05Z","name":"Arta"},"18":{"path":"M99.32,361.39l0.11,-1.91l1.42,-1.79l3.85,-2.93l0.54,1.03l-0.45,1.0l0.77,1.52l3.2,3.88l1.82,1.07l1.26,-0.66l2.55,0.79l5.01,2.18l1.06,0.76l-0.49,2.21l3.51,1.92l1.03,1.55l2.62,1.24l0.26,1.37l-3.2,-1.18l-2.27,-1.55l-2.69,0.43l-1.93,1.29l-2.23,3.35l1.82,1.97l-0.13,0.49l-1.47,0.9l-1.32,-0.4l-0.64,-0.3l-0.6,-1.51l-2.97,-2.32l-0.44,-1.2l-3.3,-1.34l-1.47,-1.58l0.33,-1.44l-1.82,-0.83l0.4,-1.88l-0.82,-0.63l-1.51,-0.05l-1.48,-1.59l0.08,-1.76l-0.7,-1.38l0.3,-0.7Z","name":"Zakynthos"},"31":{"path":"M327.75,593.03l-0.42,-0.51l0.29,-0.77l2.19,-1.31l-1.44,-1.44l0.55,-0.9l-0.68,-1.05l0.42,-1.69l1.29,-1.41l-0.57,-1.1l1.09,-0.34l0.84,-1.2l0.13,-1.74l-1.07,-0.59l-0.22,-1.15l2.15,-2.24l-0.26,-1.29l-0.77,-0.65l0.4,-0.47l-0.44,-0.89l0.55,-2.03l1.01,-1.32l-0.44,-0.85l0.93,-0.92l-0.09,-0.75l0.18,-0.78l0.27,-0.5l0.31,0.33l-0.68,0.95l0.22,1.97l0.66,0.67l-0.11,3.64l0.51,0.55l3.5,1.92l4.73,-0.8l0.66,-0.77l0.59,-3.11l-0.37,-2.22l-1.25,-2.32l0.53,-1.69l-0.77,-2.6l0.22,-1.3l1.99,-2.75l2.38,1.89l-0.86,1.85l1.25,4.41l0.04,4.64l1.19,1.0l3.33,0.4l0.86,0.82l4.89,0.75l2.08,-0.35l1.18,0.77l2.13,0.22l0.69,-0.41l1.63,0.31l1.51,-0.69l0.61,0.37l1.91,-1.12l0.33,-1.99l0.83,0.27l1.87,-0.95l-1.04,-1.98l0.44,-1.1l0.99,0.19l0.51,-0.67l1.79,-0.37l3.74,1.3l1.93,3.97l-1.43,2.79l-1.68,0.83l-4.03,-1.22l-1.21,0.35l-0.9,-0.43l-1.4,0.77l-0.51,1.05l4.98,2.39l2.49,-0.07l2.85,1.99l1.12,-0.1l0.9,-1.12l0.74,0.25l1.46,-1.21l1.05,1.51l-0.39,1.97l1.05,1.02l-0.15,1.88l-0.64,1.0l0.42,2.12l1.58,1.05l2.23,0.25l1.11,2.82l-0.18,0.85l-4.4,2.05l0.26,1.27l1.17,0.64l-1.6,7.17l-2.09,-0.12l-2.53,-1.79l-3.7,0.82l-2.06,-0.99l-2.25,0.37l-0.97,-0.42l-0.94,0.61l-1.01,-0.34l-2.1,0.52l-1.26,-0.5l-2.27,-2.63l-2.74,-0.07l-2.47,0.82l-3.38,-1.64l-1.13,0.35l-3.18,-1.24l-1.51,0.17l-0.93,0.84l-0.63,-0.19l-0.38,0.82l-1.3,0.19l-0.73,-0.84l-2.1,-0.22l-2.67,0.17l-1.21,0.8l-1.44,-0.78l-3.62,0.69l-1.73,-0.51l-0.65,0.45l-0.76,-0.84l0.46,-1.45l-1.63,-1.05l-1.4,0.0l-1.4,-1.93ZM333.77,564.73l0.01,0.01l-0.01,0.02l0.0,-0.03ZM368.85,632.83l1.97,-1.56l3.5,0.92l-0.9,2.3l1.57,2.01l-4.18,-1.82l-1.95,-1.85Z","name":"Chania"},"23":{"path":"M245.57,99.28l-2.08,2.1l0.15,0.66l6.13,0.94l1.08,0.83l0.65,1.42l2.38,2.11l2.33,5.41l3.55,1.67l-1.47,0.84l0.78,2.84l-1.07,1.36l-1.3,-0.14l-0.62,-0.78l-0.82,0.86l-0.86,-0.1l-2.56,-1.59l-0.7,-1.47l-4.23,0.35l-2.7,-1.9l-2.99,0.57l-1.15,1.67l-2.01,5.98l-5.98,4.65l-3.26,3.59l-1.53,0.98l-3.01,0.38l-1.96,1.24l-1.8,3.39l-3.25,-1.38l-0.76,-1.23l-0.46,-2.75l-2.56,-2.61l-0.08,-2.53l-0.6,-1.37l-4.71,0.38l-0.98,-0.53l-0.22,-1.38l-5.48,-2.85l-2.8,-4.12l-1.21,-0.96l0.9,-3.74l-2.01,-2.51l-0.08,-2.34l1.78,-3.8l7.22,-1.2l4.59,-1.39l0.28,-1.53l0.85,-0.89l12.37,2.88l3.74,2.29l2.78,2.95l3.31,-1.88l3.28,-3.09l1.24,0.83l3.02,-0.1l1.74,-0.69l1.5,-2.17l1.64,-0.18Z","name":"Imathia"},"51":{"path":"M511.66,240.3l-0.73,-0.21l0.88,-1.29l-0.36,-3.39l0.91,-1.34l-0.45,-0.83l3.98,-3.39l0.78,1.18l1.23,-0.12l0.9,0.6l1.26,-0.95l0.89,0.64l1.62,-0.05l0.83,-1.0l1.98,0.18l0.77,-0.6l2.32,-0.17l2.45,-1.65l0.99,0.72l2.87,-1.62l1.25,-0.08l1.45,-1.4l-0.99,-1.18l0.46,-1.24l-0.41,-0.9l0.9,-0.45l1.0,0.49l2.56,-0.87l6.77,0.98l1.71,-1.29l1.42,0.91l-0.93,1.65l0.93,1.15l1.01,0.64l2.41,-0.31l1.47,0.6l-3.54,4.76l0.15,1.08l7.69,4.54l-0.31,0.65l1.01,0.6l1.2,2.63l1.12,0.94l1.52,0.32l-0.43,2.31l1.48,0.88l0.8,2.0l-0.15,1.14l3.07,2.68l1.14,1.92l0.26,2.77l-1.28,0.38l-2.29,-0.99l-1.71,0.29l-1.05,-1.22l0.5,-1.13l-1.49,-0.42l0.2,-0.77l1.31,-0.7l-0.17,-1.52l-2.46,-2.96l-1.51,-0.87l-2.3,0.59l-1.36,1.43l0.81,1.92l1.63,1.66l1.51,0.36l3.26,3.74l0.61,2.88l-1.32,1.08l-0.35,-0.84l-3.02,0.97l-6.01,0.67l-2.77,-1.24l-2.93,-0.03l-3.25,-2.31l-4.1,-1.36l-3.35,-0.26l-1.63,0.87l-1.98,-1.52l-2.11,-3.32l-1.27,-0.92l-1.17,0.08l1.52,-1.35l2.05,0.69l2.21,-0.95l2.09,-2.67l2.58,-0.41l2.66,-1.9l2.08,-0.38l1.5,-3.12l-1.39,-1.45l-2.19,-0.87l-2.84,0.28l-1.38,-0.41l-1.29,0.9l-1.3,-0.03l-1.45,1.79l0.02,2.09l-2.56,2.04l-0.61,2.41l-1.07,-0.45l-1.63,2.44l-6.52,-2.1l-2.78,0.37l-0.79,-1.06l0.22,-0.42l-1.32,-1.17l-2.45,-0.44l-1.34,-1.13l-0.75,0.03l-0.21,-1.19l-1.13,-0.73ZM510.53,239.98l0.04,-0.09l0.13,0.13l-0.08,0.05l-0.09,-0.09ZM566.85,246.35l0.09,0.0l0.09,-0.03l-0.1,0.1l-0.08,-0.08ZM551.06,221.97l0.02,-0.02l0.01,0.0l-0.02,0.02l-0.01,-0.0ZM551.15,221.94l-0.02,0.0l0.04,-0.02l-0.02,0.02ZM551.27,221.89l-0.01,0.0l0.01,-0.01l0.0,0.01ZM448.04,166.17l-0.08,-0.51l0.88,-0.55l3.11,-0.0l2.94,-1.58l1.0,1.76l3.63,-1.08l1.39,0.23l1.06,-0.72l1.42,1.52l1.11,0.25l-0.15,1.8l1.37,0.89l-0.61,0.58l0.95,1.02l0.79,0.08l2.08,-2.08l0.75,0.47l2.0,-1.25l-0.59,-1.15l2.54,-2.26l-0.37,-1.25l2.34,1.39l1.58,-1.83l1.56,-0.77l-1.18,1.04l0.86,3.47l-1.93,0.81l-2.44,2.62l-0.5,1.76l0.46,1.08l-0.63,-0.47l-1.29,0.44l-0.69,1.02l0.39,1.3l-1.44,0.99l0.22,1.26l0.4,0.4l0.29,-0.03l0.1,0.1l-0.91,0.74l0.18,1.19l2.25,2.54l-1.77,1.02l0.41,1.35l-3.71,-1.11l-0.76,-1.01l0.54,-1.17l-1.28,-1.2l-1.16,-0.08l-1.52,-1.93l1.88,-0.97l-0.55,-0.92l1.29,-1.58l-2.09,-2.15l-1.86,0.08l-3.4,2.53l-0.53,0.71l0.4,0.53l1.27,-0.7l-2.05,2.72l-1.47,-0.58l-2.05,1.89l0.31,-0.51l-1.56,-1.1l-2.08,1.27l-1.96,-0.34l-0.89,0.81l1.25,-1.44l-1.12,-1.04l0.69,-0.74l0.18,-1.21l-0.49,-0.51l0.91,-0.8l0.37,-1.78l-1.01,-1.33l-0.79,-0.21l-0.51,-2.15l0.31,-1.57ZM460.14,174.79l0.05,-0.05l0.04,0.02l-0.03,0.03l-0.06,0.0ZM463.27,177.14l0.03,0.03l0.06,0.02l-0.14,-0.03l0.05,-0.02ZM458.62,178.95l1.05,0.2l0.09,1.26l1.53,1.87l-4.42,0.0l-1.09,-1.01l-0.02,-0.9l0.77,-0.55l0.33,-1.24l0.87,-0.22l0.89,0.6ZM454.4,161.85l0.14,-0.09l0.11,0.04l-0.06,0.03l-0.19,0.03ZM441.92,209.44l0.53,-2.24l0.88,-0.54l0.81,-1.82l3.82,2.78l-5.21,5.52l-0.82,-3.7Z","name":"Lesvos"},"36":{"path":"M264.22,394.85l1.73,2.56l-0.07,1.92l1.74,1.8l-1.41,2.47l0.95,0.98l0.89,-0.03l1.83,2.45l0.82,2.48l1.1,0.8l-0.12,0.74l1.51,2.1l-0.13,0.98l1.75,1.02l-0.52,1.05l2.46,2.42l0.63,2.53l1.2,0.85l-1.36,4.24l0.37,2.27l1.78,1.41l0.92,-0.1l0.47,-0.67l1.76,0.01l-0.39,1.29l2.41,2.2l-0.91,-0.39l-0.73,0.73l3.21,4.32l-0.72,0.39l0.66,0.94l-0.29,0.64l-8.96,0.21l-1.65,1.43l-4.36,-1.67l-1.69,-1.84l-3.23,-0.91l-3.27,0.0l-0.3,-4.6l-1.87,-3.06l-3.79,-4.08l-0.03,-9.53l-16.15,-3.9l-0.49,0.35l-0.77,7.4l-1.97,2.84l-3.79,2.03l-4.91,1.49l-1.51,1.23l-1.05,-1.21l-2.6,0.08l-2.48,1.35l-1.61,-2.57l-2.47,-1.68l-1.62,-2.65l-2.89,-1.04l-1.33,-2.54l-2.36,-1.87l-0.55,-5.11l-4.5,-4.0l1.35,-4.51l-0.59,-1.6l-1.09,-0.9l0.42,-1.2l1.48,-0.62l0.72,-1.62l-2.32,-2.63l-7.24,-5.29l-2.69,-0.93l-2.49,0.13l-0.09,-9.62l-1.64,-4.52l0.38,-3.49l4.4,-6.59l2.32,-0.47l0.8,2.5l10.79,4.83l1.66,-0.17l1.99,-2.12l1.31,-0.47l2.34,0.13l0.5,1.29l1.55,0.44l1.63,-0.63l2.0,-2.11l4.34,-1.55l0.56,-1.06l3.63,3.73l1.45,0.46l4.12,-0.35l2.22,0.67l-1.72,4.47l-0.74,3.88l0.31,1.46l1.66,1.23l2.73,-1.27l0.93,0.32l2.12,5.36l2.52,1.29l0.09,1.2l1.97,2.3l-0.99,3.48l0.57,1.64l1.43,1.15l2.4,0.84l1.8,4.02l1.24,0.69l1.58,0.02l1.53,-0.73l2.64,0.38l1.69,-0.8l-0.12,-4.18l2.16,-1.97l1.33,-0.37l0.61,1.37l-0.92,1.94Z","name":"Arcadia"},"35":{"path":"M655.95,516.09l0.86,-0.68l2.79,-0.55l1.5,-1.58l0.96,-0.02l2.13,-3.15l0.11,-2.12l1.25,-2.36l1.26,-0.05l1.51,-0.98l2.77,-3.56l2.75,-1.8l3.62,-1.0l7.32,-4.0l5.1,-1.94l5.45,-0.15l2.57,-3.07l1.04,1.24l-0.85,3.06l1.37,1.42l-3.21,3.62l0.73,1.82l-2.88,3.72l-0.85,2.1l0.3,0.92l-1.73,2.13l-0.7,1.9l0.02,1.51l-2.89,0.87l-2.13,3.28l-0.77,3.28l0.71,0.75l1.17,-0.21l-0.39,0.58l0.37,0.89l-1.24,1.16l0.77,1.03l-1.45,-0.38l-1.17,-1.33l-1.93,-0.08l-5.37,2.85l-1.91,2.08l-3.22,5.7l-1.97,2.4l-3.06,1.6l-2.35,2.32l-1.0,0.18l-3.35,-2.28l-1.17,-2.32l2.81,-6.35l0.26,-7.4l-1.04,-1.3l-2.92,-0.86l0.56,-1.14l-1.1,-1.88l-0.92,0.45l-0.5,-0.32ZM662.87,475.92l2.06,-1.51l0.25,-1.32l0.58,0.06l0.21,0.8l1.23,-0.21l0.57,0.76l1.07,-0.9l1.13,-0.35l-1.27,0.98l0.58,0.6l1.37,-0.3l-0.72,1.16l0.66,0.63l-1.58,0.83l1.47,0.8l-1.25,0.63l0.73,1.36l-1.17,0.9l-0.93,0.03l-0.13,-0.48l0.63,0.25l0.71,-1.18l-0.64,-0.85l-1.73,-0.93l-1.23,0.4l0.82,-0.76l-0.53,-1.23l-2.21,0.48l-0.67,-0.65ZM666.06,472.87l0.0,0.03l-0.03,0.0l0.03,-0.03ZM667.51,470.92l1.33,-0.73l0.58,0.62l-1.66,0.3l-0.24,-0.2ZM669.44,482.72l0.01,-0.43l0.49,0.1l-0.33,0.15l-0.18,0.18ZM661.51,540.46l-0.28,-0.22l0.58,-0.04l-0.25,0.26l-0.04,-0.0ZM656.06,505.7l0.5,-0.91l1.67,-0.38l-0.27,1.05l-0.62,-0.45l-1.29,0.69ZM657.78,505.91l0.12,0.12l-0.19,0.23l-0.12,-0.12l0.19,-0.23ZM642.85,510.36l0.28,-1.77l1.91,-0.33l0.49,0.41l3.2,-0.95l1.57,0.5l-0.02,0.86l-0.65,0.51l-0.38,-0.29l-1.61,0.71l-2.25,-0.39l-2.55,0.73ZM625.13,491.24l0.26,-3.35l2.18,1.0l0.95,-0.7l0.28,-1.33l1.05,-0.06l2.46,3.88l-0.63,1.5l0.6,0.73l0.74,0.3l0.83,-0.77l1.45,1.48l0.93,-1.38l0.55,0.58l-0.86,1.0l-3.17,0.99l-2.43,-2.32l0.0,-1.53l-0.79,-0.95l-0.85,-0.02l-2.11,1.75l-0.46,-0.89l-0.97,0.11ZM595.85,461.29l2.67,-1.16l2.47,0.45l6.79,-7.27l7.24,-3.62l4.7,-0.23l3.72,-1.96l1.39,1.93l2.01,0.76l1.44,-0.58l0.81,1.51l0.09,0.78l-1.92,1.06l-12.49,3.52l-4.43,4.42l-6.51,-0.9l-3.92,1.63l-0.97,1.03l1.05,2.06l-1.36,1.29l0.28,2.56l-2.99,-2.61l-0.44,-1.17l0.35,-3.5ZM607.4,566.45l-0.29,-1.13l1.38,-0.5l0.42,-0.42l-0.28,-0.58l2.91,-2.09l0.24,-1.12l-0.59,-0.85l0.59,-1.62l3.37,-4.61l-0.53,-2.0l0.74,-4.14l1.15,0.43l1.73,-2.5l1.41,0.1l-0.18,2.46l-1.56,1.73l-0.18,1.8l0.8,2.52l-2.22,2.84l-0.61,2.37l-1.73,1.6l-0.33,2.32l0.37,0.43l-0.87,0.82l1.08,1.52l1.33,0.28l-0.15,0.79l1.14,1.2l0.87,0.15l-0.0,1.22l1.14,0.97l-1.58,1.44l0.09,1.42l1.04,0.95l1.55,-0.07l0.74,0.85l-0.84,1.65l-0.55,-0.76l-1.45,0.05l-1.33,1.57l-1.28,0.55l-1.38,1.77l-0.37,1.54l0.88,0.62l-0.74,0.59l-1.38,-1.86l-1.28,0.15l-1.96,-1.57l1.8,-1.69l0.92,-1.94l-1.14,-2.14l0.59,-3.04l-1.23,-1.7l-1.86,-0.77l0.42,-0.74l-0.81,-0.84ZM619.11,544.06l-1.33,-0.28l-0.98,-1.42l0.73,-0.03l1.52,-1.75l0.07,-1.68l0.98,-0.25l-0.64,2.32l0.75,2.53l-1.1,0.54ZM612.11,477.65l-0.07,-2.67l2.91,-0.82l1.39,0.03l1.8,2.89l-1.49,2.04l-4.13,-0.55l-0.41,-0.9ZM611.67,444.78l-1.14,-0.97l1.82,-0.29l0.44,0.82l0.89,-0.88l0.97,0.39l-1.51,1.3l0.72,0.67l-0.34,0.24l-1.09,-0.03l0.13,-0.57l-0.88,-0.68ZM610.24,470.04l0.38,0.04l-0.33,0.71l-0.14,-0.42l0.09,-0.32ZM611.76,469.09l0.45,-0.51l0.08,0.08l0.09,0.34l-0.62,0.08ZM608.14,433.66l0.37,0.08l0.08,0.07l-0.36,-0.03l-0.09,-0.11ZM608.78,433.87l0.03,0.0l0.05,0.03l-0.03,0.03l-0.06,-0.06ZM608.45,413.96l-0.12,-0.34l0.02,-0.5l0.76,0.82l-0.66,0.03ZM608.37,412.45l0.06,-0.06l0.02,-0.09l0.01,0.09l-0.09,0.06ZM608.64,412.03l0.08,-0.08l0.01,0.01l-0.09,0.09l0.0,-0.02ZM607.28,478.3l-0.07,0.0l0.07,-0.0l-0.0,0.0ZM592.61,432.78l0.31,-0.31l4.77,1.97l0.54,-0.3l2.27,1.38l-1.1,-0.32l-0.4,0.42l2.76,2.59l0.33,1.18l0.84,-0.86l1.39,-0.2l0.86,1.18l-0.58,1.5l-0.99,0.67l1.11,0.58l-1.02,0.76l0.35,0.48l-3.48,-0.15l-0.66,0.65l0.31,1.67l-0.84,0.05l-0.49,-0.58l-0.49,0.58l-1.13,-0.3l-0.9,-0.81l0.09,-0.48l-1.16,-0.59l1.51,-1.45l-0.75,-1.14l1.16,-1.89l-0.02,-1.2l1.82,0.57l0.42,-0.57l-2.04,-2.57l-1.84,-0.23l-0.33,-0.95l-2.62,-1.34ZM594.9,435.64l0.03,-0.08l0.07,0.03l-0.07,0.05l-0.02,0.0ZM595.2,435.61l-0.02,0.0l0.01,-0.01l0.01,0.01ZM605.01,443.52l0.08,0.02l0.11,0.28l-0.31,-0.17l0.13,-0.13ZM589.8,587.02l4.34,-5.04l2.23,0.45l5.29,-1.41l-1.08,2.38l-2.28,0.47l-2.41,2.49l-1.51,0.12l-2.14,2.06l-1.88,-0.59l-0.55,-0.93ZM597.45,396.88l-0.21,-0.44l3.54,0.62l-1.06,1.1l-0.78,-0.7l-1.16,1.11l-0.33,-1.7ZM601.39,397.57l0.01,-0.12l0.24,0.21l-0.07,0.05l-0.18,-0.14ZM599.03,484.53l0.17,-0.18l0.2,0.03l-0.1,0.1l-0.27,0.05ZM594.58,438.91l-1.1,-0.4l-0.36,-0.31l1.36,-0.08l0.81,1.07l-0.71,-0.28ZM584.27,423.73l-0.69,-0.36l0.83,-1.31l1.03,0.73l1.26,-0.57l0.64,0.47l0.71,-0.56l1.9,0.72l-1.69,1.81l0.97,0.85l1.19,-0.39l0.38,0.22l-0.63,0.9l1.97,1.67l0.62,1.15l-0.24,0.67l-1.07,-0.72l-0.58,0.48l0.33,0.56l-1.77,0.08l-0.46,-0.79l1.69,-0.35l0.31,-1.49l-1.01,-0.45l-2.63,1.39l-0.44,-0.81l1.82,-1.46l-0.07,-0.55l-1.43,-0.78l-1.33,0.36l-0.4,-1.07l-1.21,-0.4ZM586.0,421.56l-0.11,-0.11l0.32,-0.12l0.01,0.01l-0.22,0.22ZM590.76,579.99l0.3,0.17l0.14,0.32l-0.94,-0.37l0.5,-0.12ZM579.57,411.16l0.84,-1.12l0.71,1.26l1.26,0.59l-0.84,0.65l-1.96,-1.38ZM583.27,413.28l0.39,-0.73l-0.43,-0.41l1.35,-0.43l0.1,1.3l-1.41,0.28ZM583.11,412.12l-0.03,-0.03l0.04,0.03l-0.0,-0.0ZM579.7,403.28l-0.41,-0.42l2.7,2.23l-1.39,-0.57l-0.9,-1.24ZM579.22,402.85l0.04,-0.03l0.03,0.03l-0.06,0.0ZM578.28,406.43l-0.02,-0.02l0.24,-0.24l-0.01,0.08l-0.21,0.18ZM575.32,498.35l-0.22,-0.4l1.21,-0.37l0.94,1.36l-1.66,0.57l-0.26,-1.15ZM564.78,412.9l0.18,-2.08l0.59,-0.62l1.76,1.31l-0.74,0.37l0.03,0.65l-1.16,-0.24l-0.65,0.61ZM567.25,413.75l0.16,0.66l-1.37,-0.32l0.78,-0.63l0.43,0.29ZM565.0,409.6l0.21,-0.09l0.04,0.23l-0.04,0.04l-0.22,-0.19ZM565.94,409.14l-0.74,-1.62l0.57,-0.51l-0.59,-0.75l0.0,-0.74l1.09,0.93l1.48,-1.04l0.36,0.99l1.48,0.59l0.04,0.8l-2.32,-0.67l-1.38,2.03ZM558.18,439.04l-0.47,0.14l1.45,-0.58l-0.57,0.41l-0.41,0.04ZM557.07,438.84l-0.35,0.05l-0.04,-0.1l0.31,-0.05l0.09,0.11ZM560.55,439.22l-0.29,-0.05l-0.52,-0.43l1.7,0.4l-0.89,0.08ZM559.67,481.46l-0.04,-0.04l0.08,-0.08l0.01,0.06l-0.05,0.05ZM543.97,476.7l-0.11,-0.28l0.34,-0.33l0.57,1.13l1.36,-1.0l0.74,0.15l2.3,1.28l0.38,0.95l0.77,0.03l0.37,1.18l-1.48,1.28l2.0,2.17l-0.73,0.27l-1.06,-0.53l-1.11,0.6l-1.52,-1.15l-0.65,0.28l-0.97,-2.46l-0.86,-0.54l0.31,-1.52l-0.86,-1.02l0.2,-0.48ZM552.22,477.71l-0.38,-0.46l1.03,-0.58l1.11,0.63l-1.75,0.41ZM554.54,477.68l-0.27,-0.26l0.73,-0.63l-1.04,-2.14l1.83,-1.03l-0.71,-0.43l-1.7,0.47l-0.84,-1.15l0.41,-0.58l2.93,1.36l3.52,3.47l-0.38,0.28l-1.08,-0.95l-1.43,0.64l-0.41,-0.28l-0.63,1.26l-0.46,-0.38l-0.47,0.36ZM554.25,523.06l0.07,-0.07l-0.02,0.11l-0.04,-0.04ZM544.74,441.15l0.86,0.08l0.49,-0.5l0.64,0.02l-1.75,0.97l-0.6,-0.28l0.35,-0.28ZM540.76,479.76l-0.1,-0.07l0.1,-0.1l0.02,0.04l-0.02,0.13ZM533.92,479.75l-0.06,-0.06l-0.15,0.07l-0.02,-0.02l0.29,-0.11l-0.07,0.11Z","name":"Dodekanisa"},"52":{"path":"M568.13,373.41l-0.33,-0.57l2.98,-3.09l2.06,0.03l3.09,-2.53l1.34,0.09l3.98,-1.6l8.4,0.66l2.63,2.49l3.63,0.62l2.99,2.19l1.25,-0.93l-2.05,-2.62l5.86,1.19l1.77,-0.46l-1.75,0.64l-0.79,1.44l1.19,0.96l-0.33,1.05l0.47,0.53l1.95,-0.1l0.26,0.6l-4.19,1.04l-2.45,-0.35l-1.82,1.6l-1.97,-0.1l-1.88,0.68l-2.06,1.59l-0.46,2.36l-1.4,0.3l-4.93,-0.55l-2.93,-4.44l-3.03,-1.77l-6.24,0.68l-1.87,1.75l-1.87,0.53l-0.81,-1.03l0.5,-1.1l-1.16,-1.77ZM600.19,367.76l0.05,-0.05l0.06,0.15l-0.0,0.0l-0.11,-0.11ZM554.86,386.52l1.01,-0.48l0.42,0.34l-1.17,0.38l-0.26,-0.24ZM556.31,386.4l0.69,-1.08l1.08,-0.04l0.35,1.53l-0.36,0.85l-0.74,-1.23l-1.01,-0.04ZM561.61,389.72l0.11,-1.24l-1.16,-1.16l0.34,-1.35l0.78,0.77l0.09,1.71l1.02,1.01l-0.43,0.46l0.46,0.7l-1.22,-0.9ZM560.76,385.7l0.11,-0.11l-0.02,0.2l-0.09,-0.09ZM562.99,385.75l-0.05,-0.16l0.65,-0.15l-0.35,0.53l-0.25,-0.21ZM563.89,385.14l-0.46,-1.57l0.37,-0.81l-1.51,-0.9l0.81,-1.77l1.55,1.12l-0.74,0.87l0.22,0.91l0.99,0.46l-1.21,1.7ZM560.89,385.09l-0.11,-0.07l0.04,-0.04l0.07,0.07l0.0,0.05ZM521.1,391.86l2.76,-4.83l3.62,-4.03l1.76,-1.19l1.32,0.61l4.06,-0.73l0.63,0.61l1.37,-0.18l1.69,0.68l7.94,-4.91l4.62,-0.86l-0.05,0.64l-1.38,0.73l-1.64,3.2l-2.15,2.03l-5.41,3.49l-1.9,0.73l-6.33,0.51l-4.43,3.77l-2.67,-0.23l-3.21,0.76l-0.59,-0.79Z","name":"Samos"},"33":{"path":"M386.55,602.99l1.36,-7.37l-1.28,-0.84l-0.15,-0.72l4.28,-1.84l0.24,-1.41l-1.04,-2.64l3.11,0.22l1.55,-1.07l2.75,0.2l0.86,-0.73l1.83,-0.16l1.12,0.52l1.12,-0.74l1.18,0.51l5.06,-0.75l4.86,-1.59l3.0,-2.46l3.31,0.14l0.53,-0.69l6.17,0.62l0.62,1.15l6.76,-0.26l-0.45,1.46l1.65,2.29l-1.57,2.42l2.05,1.98l-0.01,3.49l-1.81,5.89l-3.47,0.2l-1.03,-2.52l-1.66,-0.91l-1.13,1.23l-0.52,2.35l-0.03,4.8l-0.65,0.66l-1.19,-0.78l-1.69,0.42l-1.43,1.06l-0.83,3.18l-10.37,-0.4l-3.62,-3.74l-3.24,-0.84l-1.73,0.37l-2.58,-1.27l-0.62,-1.02l-1.18,0.22l0.38,-0.72l-1.71,-1.29l-1.51,0.2l-1.1,0.87l-2.29,-0.65l-2.88,1.34l-1.0,-0.4ZM434.08,582.94l0.78,-0.96l1.74,0.97l-0.29,1.04l-2.22,-1.05Z","name":"Rethymno"},"37":{"path":"M245.37,362.21l1.56,0.32l1.58,-0.71l0.86,0.48l0.02,0.9l-2.29,3.53l1.38,1.26l1.77,-0.69l3.77,0.82l2.7,1.4l4.28,-0.31l4.78,2.95l3.07,1.02l3.13,-0.03l4.56,-1.23l3.66,0.81l0.65,1.34l1.35,0.74l5.29,1.1l1.36,-1.15l2.69,-0.94l2.71,0.42l1.54,-0.83l2.76,1.44l0.81,-0.15l-1.78,3.22l1.47,2.34l-0.79,0.88l-0.29,1.65l2.35,1.69l-2.18,6.19l0.66,1.69l1.31,1.29l3.83,1.11l2.36,1.6l1.37,0.26l2.23,2.04l1.69,-0.15l3.85,0.88l1.7,-0.74l2.73,0.0l0.67,0.88l0.02,1.9l-2.11,0.84l-0.48,-0.76l-5.19,-0.18l-3.29,1.87l-2.23,-1.16l-0.97,0.88l-0.08,0.81l-2.17,0.53l-0.62,0.93l0.99,1.69l0.63,-0.78l0.66,1.51l1.77,0.16l-1.27,0.1l-1.97,-0.43l-3.11,0.66l-1.23,1.94l1.73,1.71l-0.04,0.71l-1.09,-0.28l-0.77,0.86l-2.17,-1.77l1.32,-0.78l-0.64,-1.13l-0.92,0.07l-2.51,-2.37l-3.05,0.08l0.69,-0.84l-0.68,-2.19l2.36,0.14l1.21,-1.34l-0.16,-1.39l1.42,1.0l1.19,-0.85l-0.99,-0.83l0.13,-1.42l-1.25,-1.46l-2.48,-0.4l-2.59,0.46l-0.47,-0.37l0.6,-0.88l-1.25,-1.56l-2.81,1.58l-1.77,-4.22l-0.68,-0.6l-2.73,-0.25l-1.02,-1.42l-0.92,0.03l-0.33,0.63l-1.33,-0.43l-2.21,0.48l-1.19,1.37l-1.79,-1.49l-0.63,0.1l0.47,-0.97l-2.1,-2.07l0.43,-0.61l-0.35,-0.61l-2.5,-1.54l-2.65,1.01l-1.89,1.79l0.75,2.79l-1.52,0.47l-2.46,2.34l-0.28,1.62l0.52,2.27l-1.16,0.58l-2.74,-0.38l-2.61,0.75l-1.02,-0.57l-1.64,-3.87l-3.8,-1.92l-0.46,-1.08l0.98,-3.83l-2.03,-2.41l-0.27,-1.5l-2.36,-1.06l-2.2,-5.47l-1.51,-0.64l-2.76,1.28l-0.94,-0.73l-0.25,-1.07l0.72,-3.76l1.79,-4.65l1.46,-0.98l2.31,-3.58l1.2,-0.96l1.17,-0.41l0.97,0.99ZM296.07,410.1l0.02,-0.13l-0.65,-0.61l1.41,0.78l-0.79,-0.05ZM296.96,410.15l0.06,-0.01l0.13,-0.13l-0.11,0.16l-0.08,-0.02ZM284.1,399.72l0.02,-0.1l0.12,0.08l-0.07,0.06l-0.07,-0.03ZM279.5,394.13l0.26,0.06l0.19,0.31l-0.27,-0.08l-0.17,-0.29Z","name":"Argolida"},"32":{"path":"M549.55,595.0l0.17,0.07l-0.41,-0.23l0.19,0.16l0.04,0.0ZM549.78,595.1l0.05,-0.01l0.02,0.02l-0.03,0.03l-0.03,-0.04ZM482.85,592.96l2.65,-0.85l1.3,-1.07l2.3,0.17l1.39,-1.19l5.59,-1.41l2.88,1.13l5.21,-0.42l-0.34,1.21l-3.01,1.72l0.28,1.25l-0.7,1.96l0.91,1.17l0.47,2.02l-1.97,1.07l0.41,1.38l-0.5,0.58l0.58,0.63l-0.87,1.21l0.11,0.99l1.46,2.22l-0.28,0.91l0.56,0.57l2.4,-0.0l3.82,1.74l0.98,-0.4l2.29,-2.61l0.18,-1.19l0.41,-0.25l0.61,0.67l2.41,-1.71l0.47,-0.5l-0.27,-0.79l1.8,0.56l2.74,-0.35l0.94,-1.59l0.59,0.52l1.95,-0.32l2.43,-2.86l0.98,0.52l1.23,-0.49l0.89,0.89l1.16,0.17l2.3,-0.87l-0.77,1.36l0.66,0.8l1.86,0.75l2.23,-0.27l1.88,-1.12l0.42,-0.42l-0.33,-0.93l3.4,-2.6l-0.39,-0.95l1.25,-0.69l-0.35,-0.52l0.33,-0.14l0.98,0.81l0.54,-0.77l0.85,-0.02l-1.06,0.89l0.95,3.16l-0.69,1.86l0.74,1.22l2.37,1.29l0.84,-0.79l0.12,0.84l-3.0,1.31l-0.33,1.89l0.74,0.97l-0.33,1.81l-1.42,1.56l0.67,0.81l-1.33,1.23l-1.73,3.06l-0.94,0.01l-2.22,1.91l-2.42,-0.07l-3.2,1.88l-1.37,-0.24l0.13,-0.69l-1.08,-1.22l-1.8,-0.27l-0.94,0.99l-1.27,-0.81l-0.76,0.5l-3.99,-2.28l-1.21,0.68l-2.21,-0.21l-5.94,1.39l-3.64,1.69l-3.07,0.0l-1.82,-0.92l-1.09,0.51l-3.91,-0.91l-1.89,0.87l-5.41,-0.2l-3.88,1.69l-0.06,-5.02l-1.58,-2.83l-2.17,-0.63l0.15,-2.37l-1.18,-1.27l-5.93,-2.83l-1.13,-2.07l1.52,-3.25l-0.12,-1.49l0.97,-0.73l2.89,-0.17l2.4,-2.15l0.28,-2.28ZM544.88,594.27l0.45,0.01l-0.95,0.21l0.13,-0.12l0.37,-0.1ZM545.45,593.01l0.09,0.05l0.32,-0.05l-0.29,0.17l-0.12,-0.17ZM546.42,592.9l0.12,-0.12l0.04,0.04l-0.03,0.03l-0.13,0.05ZM545.59,591.89l0.15,-0.1l0.4,0.0l-0.15,0.12l-0.41,-0.02ZM546.29,591.73l0.37,-0.19l0.45,0.04l-0.54,0.42l-0.29,-0.27ZM502.47,595.99l0.28,-0.47l-0.35,-0.58l0.06,-0.12l0.14,-0.14l0.27,1.46l-0.41,-0.15ZM502.41,593.7l0.07,-0.31l0.82,0.43l-0.49,0.44l-0.39,-0.56ZM536.5,588.82l0.09,-0.62l0.67,-0.05l-0.35,0.47l-0.4,0.2ZM536.47,590.06l0.02,-0.01l0.1,0.02l-0.06,0.06l-0.07,-0.07ZM532.93,624.92l0.29,-0.78l1.51,0.65l-1.04,0.66l-0.77,-0.53ZM497.99,630.73l0.21,-0.25l0.32,0.01l1.44,0.42l-1.97,-0.17Z","name":"Lasithio"},"50":{"path":"M538.11,299.14l0.54,-0.22l0.93,0.82l0.65,-0.41l1.25,1.1l1.8,0.41l-1.73,0.7l-0.64,-0.77l-1.81,-0.38l-0.99,-1.25ZM545.24,302.33l0.09,-0.09l0.32,0.2l-0.22,0.22l-0.19,-0.33ZM510.29,299.18l-0.55,-0.95l1.71,-2.76l2.8,-0.82l3.72,0.1l5.31,-1.55l2.95,1.47l1.17,-0.36l1.59,2.95l0.73,0.58l0.92,-0.38l1.12,1.71l0.62,-0.8l0.61,0.54l0.49,-0.4l0.15,-1.44l1.47,1.1l0.08,0.94l-0.95,1.34l0.26,2.27l-1.73,0.29l-0.69,1.52l0.75,0.58l0.8,-0.3l-0.53,1.15l1.45,0.35l-1.6,3.44l-0.04,1.2l0.7,6.29l1.29,1.04l-0.48,0.71l0.5,0.93l-4.38,3.37l0.04,2.49l0.92,1.2l-1.18,1.85l-4.33,0.65l-1.78,2.36l-0.27,2.19l-1.16,-0.38l-0.55,-0.84l-1.62,-0.27l-1.47,-1.41l0.29,-0.67l-0.4,-0.4l-1.92,0.08l0.28,-0.82l-1.26,-0.49l-0.15,-1.23l-1.59,-0.08l-0.67,-1.95l-1.22,0.28l0.68,-2.09l3.11,-2.23l0.87,0.81l0.51,-0.4l-0.18,-0.58l0.5,0.45l0.5,-0.46l0.51,0.46l0.96,-0.2l1.06,-1.75l-0.4,-0.69l0.31,-0.84l1.84,-1.37l0.07,-0.76l-0.75,-2.73l0.4,-0.99l-0.47,-0.45l-0.48,0.32l-1.36,-1.36l0.0,-1.01l-0.69,-0.4l0.18,-1.84l-1.07,-1.56l-1.71,-1.29l-2.69,-0.41l-1.88,-1.53l-2.04,-3.78ZM532.37,298.24l-0.01,0.01l-0.02,-0.07l0.04,0.04l-0.01,0.01ZM487.0,294.52l-0.64,-0.91l1.18,0.38l1.75,-1.0l0.53,0.37l0.54,-0.39l2.07,1.41l-0.77,4.63l-1.54,-0.05l-1.28,-0.94l-0.54,0.43l0.61,-1.81l-1.91,-2.11ZM483.59,298.89l0.72,-0.92l0.74,0.18l-0.69,1.11l-0.81,0.03l0.04,-0.39Z","name":"Chios"}},"height": 637.163792480661,"width": 700.0});
diff --git a/js/vmap/dist/maps/jquery.vmap.iran.js b/js/vmap/dist/maps/jquery.vmap.iran.js
new file mode 100644 (file)
index 0000000..df2bc81
--- /dev/null
@@ -0,0 +1,6 @@
+/**
+       Iran Vector Map
+       Created By Mahmoud Eskandari E-mail:info@webafrooz.com
+       http://Webafrooz.com
+**/
+jQuery.fn.vectorMap('addMap', 'iran_ir', {"width": 600, "height": 600, "paths": {"15": {"path": "M353.778,484.712c-0.204,0.204-0.767,1.047-1.086,0.647c-0.827-1.037-1.373-1.065,0.181-1.321c1.159-0.191,0.241-1.308,0.129-1.762,c1.186-0.392,0.011-1.69,1.216-1.813c0.314-0.032,0.236,0.389,0.362,0.596c0.17,0.278,1.727,0.29,1.5,0.648,c-0.309,0.486-1.089,0.681-1.449,1.269c-0.285,0.466-0.058,0.691,0.129,1.114c0.293,0.664,0.37,0.697,1.035,0.492,c1.294-0.398-0.207,1.125-0.207,1.451c0,0.426,0.75,0.525,0.75,1.166c0,0.801-1.546,0.131-1.733-0.544,c-0.095-0.344,0.073-0.81,0.181-1.088c0.068-0.176-0.222-0.894-0.414-0.751L353.778,484.712L353.778,484.712z M345.481,490.346,l1.34,0.013c0.671,0.399,1.383,0.555,1.319,1.554c-0.074,1.158-0.609,1.96-0.543,3.186c0.061,1.134-1.56,1.24-1.086,2.616,c0.447,1.301,0.758,2.382,0.414,3.782c-0.596,2.42,1.885,3.342,4.293,3.342l0,0c-0.346-1.397-0.552-2.951,0.491-4.196,c1.153-1.153,1.093-2.818,1.966-3.601c1.01-0.907,0.182-2.637,1.371-2.72c0.986-0.069-0.495-1.184-0.414-1.347,c0.24-0.482,0.528-0.418,0.181-0.984c-0.562-0.919,0.188-1.772,0.957-2.383c-0.399-0.526-0.618-0.158-1.164-0.311,c-0.457-0.128-0.411-0.699-0.828-0.699c-1.719,0-0.173-1.046-0.905-1.995c-0.475-0.615-4.146-2.35-4.371-2.124,c-0.819,0.819-1.219,2.63-1.888,3.678C346.177,488.842,345.809,489.582,345.481,490.346L345.481,490.346z", "name": "kish"},"16": {"path": "M88.025,126.032l3.75,9.17l0,0l-1.242,0.466c-1.013,0.757-0.514,0.974,0,1.943c0.528,0.995-0.879,0.732-0.879,1.632,c0,0.626-0.057,0.962-0.491,1.399c-0.707-0.142-2.869,0.147-3.569,0.44c-1.019,0.427-1.894-0.358-2.923-0.544,c-3.022-0.549-4.12-0.821-5.664-3.704c-0.14-0.261-4.453,1.089-5.405,1.14c-2.403,0.129-5.432,0.934-7.785,0.052,c-2.395,0-2.618,1.147-4.449-0.544c-1.483-1.37-3.149-0.943-4.863-0.337c-4.995,1.769,1.601,7.02-4.319,7.02,c-0.814,0-5.872-0.138-5.613,1.062c0.453,2.089,0.013,1.056-1.215,1.865c-0.527,0.347,0.242,0.937-0.052,1.399,c-0.196,0.308-0.76,0.949-0.828,1.217c-0.132,0.033-0.422,0.192-0.569,0.104c-1.182,0.705-0.506,1.224-1.112,2.357l-1.798,1.349l0,0,c-0.607-0.063-1.25-0.02-1.926,0.153c-3.41,0.875-2.708,0.088-2.043-2.513c0.355-1.39-0.312-1.358-1.138-2.487,c-0.83-1.134,0.065-2.718-0.595-3.601c0.582-0.778-0.295,0.567-0.698-1.502l-0.44-2.254c0.613-0.821-0.307-2.06-0.647-2.668,c-0.694-1.244-1.166-0.618-2.38-0.181c-3.151,1.133-2.089-2.262-3.905-3.341c-2.108-1.252,0.281-1.809-0.233-3.135,c-0.276-0.712,1.17-0.287,1.112-1.244c-0.053-0.881-0.172-2.377-0.517-3.16c-0.603-1.364-1.736-0.626-2.406-1.295,c-0.216-0.216-0.034-1.307-0.595-1.114c-0.786,0.27-0.988-0.207-1.707,0.026c-0.962,0.107-1.842,0.142-1.267-1.269,c0.184-0.453,0.599-0.971,0.724-1.347c0.166,0,0.465-0.176,0.621-0.207c0.344-1.361,1.191-1.689,0.13-3.316,c-0.568-0.87,1.157-2.6-0.31-2.953c-0.631-0.152-1.037-1.034-1.707-0.44c-0.432,0.382-0.403-0.434-0.569-0.622,c-0.312-0.353-0.621-0.252-0.621-0.829c0-0.726-0.939-0.56-0.802-1.269l0.621-1.191l0,0l0.052-1.244,c-0.228-0.536-0.488-1.089-0.388-1.684c0.094-0.561,0.719-0.657,1.034-1.088c1.038-1.414-0.911-1.704-1.707-2.28,c-0.711-0.513,0.19-1.551-0.828-1.813c-1.648-0.425-1.354-0.222-1.966-1.762c-2.102-0.297-1.198-1.036-1.811-2.59,c0-1.183,1.781-0.797,0.698-2.306c-0.596-0.83,0.773-1.285-0.44-2.409c-2.093-1.94,1.882-1.913,0.284-4.455,c-0.85-1.353-1.989-1.627-3.388-1.14c-1.449,0.505-1.908-1.46-2.664-2.461c-0.545-0.723-1.717-1.342-2.69-1.062,c-4.412,1.27-0.362-4.35-0.362-5.44c0.706-0.239,0.549-1.572,0.854-1.995c0-1.172,0.596-0.621,1.138-1.295,c0.501-0.622-0.633-1.01,0.543-1.01c0.401,0,1.037-2.409,0.983-2.824c-0.106-0.81-0.721-1.622,0.388-2.176,c0.585-0.292,2.246-1.031,2.302-1.761c0.085-1.131-1.451-2.459-2.431-1.943c-1.234,0.65-1.201-0.215-2.302,0.078,c-1.526,0.406-0.539-1.488-0.569-1.891c-0.078-1.037-1.135-1.662,0.052-2.849c-0.289-0.725-0.225-2.556,0.285-3.264,c-0.157-0.573,0.146-1.12-0.543-1.451c-0.704-0.337-1.434,0.246-0.957-1.218c0.565-1.734-1.473-1.105,0.337-3.057,c0.593-0.64-0.641-0.765,0.103-1.71c0.548-0.697,0.486-2.295-0.647-2.383c-1.784-0.139-1.077-2.062-1.992-2.875,c-0.683-0.608,0.13-1.425-0.336-1.762c-1.082-0.781,0.326-1.169,0.543-1.606c0.206-0.414-0.426-1.14-0.44-1.606,c-0.257-1.276,1.173-1.014,0.621-2.124c-0.139-0.279-1.063-2.11-1.19-2.202c-0.632-0.456-1.216-0.19-1.733-0.466,c-0.894-0.479-0.082-1.512-0.647-2.228c-0.317-0.402-0.166-0.768,0.052-1.166c0.232-0.424-0.607-2.388-1.034-2.668,c-0.624-0.409-0.122-1.53-0.155-1.502c0.621-1.347,1.686-0.641,2.38-0.026c0.743,0.658,2.1-0.974,3-0.751,c0.046,0.188,0.211,0.431,0.259,0.622c0.403,0.079,1.482,0.615,1.552,0.596c0.641-0.182,3.104-1.18,3.492-1.658,c0.745-0.918-1.121-0.886,0.259-2.383c0.746-0.81,0.28-1.267,0.052-2.124c-0.281-1.056,0.889-1.55,1.267-2.564,c0.498-1.334-0.293-2.462,0.853-3.419l3.104-2.772l1.242,2.305l2.354,0.518l0.461,1.31l1.453,0.71l0,0,c0.118,0.363,0.15,0.778,0.384,1.079c0.348,0.446,0.355,0.639,1.09,0.579c0.287-0.023,1.183-0.143,1.215,0.363,c0.002,0.035-0.082,1.047-0.052,1.321c0.004,0.034,0.007,0.112,0.052,0.129c0.68,0.268,0.541,1.293,0.983,1.787,c0.541,0.605,0.776,0.793,0.776,1.658c0,1.208,0.261,2.069,1.474,2.383c1.484,0.384,1.621,0.647,2.172,1.969,c0.242,0.579,0.836,1.044,1.086,1.606c0.448,1.007-0.174,2.844,1.009,3.575c1.055,0.653,4.628,0.653,5.121,1.554,c0.522,0.954,1.678,2.359,1.759,3.342c0.078,0.956,1.604,0.098,1.604,2.072c0,0.861,0.245,1.361,0.631,1.644l0,0l-1.174,3.796,c-0.076,0.058-0.23,0.207-0.336,0.233c-0.236,0.962-1.192,0.73-1.086,2.487c0.065,1.089-0.597,1.442-0.672,2.332,c-0.092,1.096,0.347,3.122,0.827,4.067c0.244,0.48,0.642,1.447,0.673,1.995c0.049,0.864-0.527,0.759-0.646,1.243,c-1.135,0.163-4.156,3.429-5.354,4.145c-1.239,1.553-2.131,2.754-2.276,4.818c-0.188,2.683,3.082,3.757,3.75,6.424,c0.736,2.938,0.724,5.99,0.724,9.041c0.408,2.176,0.336,4.302,1.086,6.45c0.986,2.824,3.563,3.061,3.337,6.321,c-0.254,3.655-2.212,5.331,1.215,8.083c1.672-0.324,5.477,3.043,6.543,4.196c1.91,2.065,1.981,2.36,4.837,1.917,c1.492-0.231,3.489-0.926,4.526,0.622c2.131,3.181,5.285,5.379,7.889,8.367c3.668-0.71,2.64-4.662,6.208-5.388,c1.793-0.365,1.039,1.257,2.405-0.751c1.885-2.772,3.462,1.012,4.759,1.347c2.552,0.66,0.651,2.484,1.759,3.834,c2.171,2.647-1.244,5.854,2.949,6.761C83.021,127.549,84.826,126.482,88.025,126.032L88.025,126.032z", "name": "west azarbaijan"},"17": {"path": "M122.165,111.707l2.286-2.053c2.929-0.999,3.038,0.377,5.215,1.769c1.317,0.842,2.151-0.129,2.923-1.088,c0.477-0.592,3.404-0.882,4.112-0.882l0,0c-0.139-0.34-0.198-0.669-0.155-0.983c0.299-1.103,1.149-3.97,0.181-4.74,c-1.701-1.352-3.029-2.186-4.009-4.274l-5.483-11.683c-0.095-0.774-0.879-1.213-0.879-2.046c0-0.829,0.611-1.261,0.802-1.969,c0.281-1.044-0.181-3.102,0.259-3.756c1.581-2.353,0.112-5.67,2.664-7.616c2.331-1.777-0.965-1.104-1.423-2.228,c-0.527-1.296,0.084-0.907-1.319-1.45l-0.084-5.983l0,0c-0.113-0.095-0.24-0.182-0.382-0.261c-0.222-0.123-0.892-0.409-1.009-0.622,c-0.209-0.381,0.188-0.904-0.052-1.295c-0.399-0.652-1.228,0.111-1.5-0.933c-0.053-0.203-0.258-1.153-0.233-1.166,c-0.362-0.488-1.51,0.147-2.069,0.259c-1.269,0.48-2.168-0.038-2.38-1.321c-0.213-1.293-1.597-0.63-1.319-1.995,c0.576-2.832-2.515-2.004-3.957-3.005c-0.443-0.308-0.427-1.145-1.06-1.425c-1.189-0.526-1.748-2.797-1.474-3.912,c0.444-0.11,0.691,0.145,1.267,0c0.012-0.05,0.028-0.065,0.078-0.078c0.447-2.266,4.801-0.884,6.595-2.409,c1.194-1.014,0.622-1.429,0.957-2.694c-0.105-0.415-0.883-2.154-1.112-2.435c-0.657-0.802-1.633,0.181-2.224-1.347,c-0.674-1.741-3.718-2.309-2.095-4.792c0.437-0.669,1.864-1.925,2.612-2.124c0.974-0.259,0.981,0.262,1.992-0.492,c0.757-0.566,1.46-0.278,1.862-1.269l-9.285-11.165l-2.194-0.998c-0.027,0.064-0.054,0.118-0.082,0.169,c-0.315,0.567-4.093,2.458-4.397,2.357c-1.127-0.375-1.411-0.177-2.121,0.958c-0.554,0.885-0.878,1.014-1.966,1.114,c-0.676,0.062-0.982,1.874-1.811,1.528c-0.233-0.097-0.795,0.09-1.112,0.285c-0.516,0.317-0.533,1.161-1.216,1.502,c-1.153,0.576-2.805,0.306-3.673,0.933c-1.574,1.137-3.351,5.511-5.483,5.673c-0.873,0.066-3.698,1.991-4.164,2.746,c-0.745,1.204-0.494,1.367-1.491,2.249l0,0l2.965,3.451c0.025,0.784,1.235,2.558,1.603,3.368c1.203,2.638-0.732,5.713,0.104,8.238,h0.103c0.149-0.442,2.494-1.829,3-2.668c0.899-1.49,2.311-4.025,3.751-4.87c2.393-1.404,2.378-1.242,2.819,1.217,c0.517,2.881,2.429,4.76,0.905,7.539c-0.91,1.659-4.453,2.773-4.061,4.766c1.718,0.422,1.656-0.441,3.311-0.441,c4.846-1.661-3.133,11.299-3.699,12.305c-0.891,1.586-1.106,1.049,0.491,2.124c1.632,1.098,4.413,2.596,6.259,3.16,c2.359,0.721,4.063-1.082,5.82-0.648c0.173,0.703,0.903,2.148,1.267,2.875l2.095,8.082l2.069,2.409l3.854,0.906,c0,0.73,0.447,1.43,0.052,2.15c-1.03,1.879-1.607,4.278-1.707,6.45c-0.158,3.425,0.743,4.18,3.776,5.699,c1.485-0.24,1.587,4.466,1.681,5.388c0.113,1.113,0.436,1.234,1.241,1.813C120.872,110.372,122.039,111.195,122.165,111.707,L122.165,111.707z", "name": "Ardabil"},"18": {"path": "M37.781,44.496c0.986,0.724,2.892,0.041,3.973,0.403c1.154,0.387,0.601,0.829,2.121,0.829c1.189,0,1.338,0.984,2.25,0.958,c1.591-0.045,1.839-0.001,3.026,1.192c1.474,1.48,1.306,0.056,2.483-0.078c0.887-0.101,0.907,0.981,2.095,0.492,c1.817-0.747,1.99,1.21,3.575,1.363l0,0c0.064,0.006,0.131,0.01,0.201,0.01c2.044,0,3.687-2.735,5.819-2.875,c1.315-0.086,1.208,1.212,2.845,0.751c1.03-0.29,1.67,0.217,2.51,0.315l0,0c0.354,0.041,0.744,0.01,1.215-0.186,c0.865-0.359,1.123-0.534,1.578-1.321c0.13-0.226,0.616-1.112,0.854-1.217c0.547-0.241,0.16-1.326,0.595-1.58,c1.149-0.673,1.968-0.287,2.302-1.813c0.236-1.077,0.846-0.823,1.552-1.528c0.887-0.887,0.963-2.894,2.897-2.357,c0.466,0.129,0.733,0.857,1.397,0.466c0.51-0.3,1.007-0.981,1.474-1.373c0.078-0.066,0.151-0.128,0.217-0.187l0,0l2.965,3.451,c0.025,0.784,1.235,2.558,1.603,3.368c1.203,2.638-0.732,5.713,0.104,8.238h0.103c0.149-0.442,2.494-1.829,3-2.668,c0.899-1.49,2.311-4.025,3.751-4.87c2.393-1.404,2.378-1.242,2.819,1.217c0.517,2.881,2.429,4.76,0.905,7.539,c-0.91,1.659-4.453,2.773-4.061,4.766c1.718,0.422,1.656-0.441,3.311-0.441c4.846-1.661-3.133,11.299-3.699,12.305,c-0.891,1.586-1.106,1.049,0.491,2.124c1.632,1.098,4.413,2.596,6.259,3.16c2.359,0.721,4.063-1.082,5.82-0.648,c0.173,0.703,0.903,2.148,1.267,2.875l2.095,8.082l2.069,2.409l3.854,0.906c0,0.73,0.447,1.43,0.052,2.15,c-1.03,1.879-1.607,4.278-1.707,6.45c-0.158,3.425,0.743,4.18,3.776,5.699c1.485-0.24,1.587,4.466,1.681,5.388,c0.113,1.113,0.436,1.234,1.241,1.813c0.414,0.297,1.581,1.12,1.707,1.632l0,0l-1.319,0.13c-0.578-0.289-1.172-0.427-1.759-0.751,c-0.422-0.233-0.741-0.558-1.215-0.725c-1.084-0.383-2.66-0.217-3.802,0.026c-0.891,0.189-1.832,0.115-2.741,0.285,c-1.364,0.114-2.735-1.294-3.751-0.751c-1.745,0.933-2.549,0.7-4.5,0.7c-2.711,0-6.016,3.304-8.277,4.715,c-1.54,0.961-1.702,3.162-3.233,3.808c-2.723,1.149-2.986,2.524-4.009,5.026l0.465,1.865l0,0c-3.199,0.45-5.004,1.516-8.302,0.803,c-4.193-0.907-0.778-4.114-2.949-6.761c-1.107-1.35,0.793-3.174-1.759-3.834c-1.297-0.335-2.874-4.119-4.759-1.347,c-1.366,2.008-0.613,0.387-2.405,0.751c-3.567,0.726-2.54,4.678-6.208,5.388c-2.603-2.988-5.758-5.186-7.889-8.367,c-1.037-1.548-3.035-0.853-4.526-0.622c-2.855,0.443-2.927,0.148-4.837-1.917c-1.066-1.153-4.872-4.52-6.543-4.196,c-3.428-2.751-1.469-4.427-1.215-8.083c0.227-3.26-2.351-3.497-3.337-6.321c-0.75-2.148-0.679-4.274-1.086-6.45,c0-3.051,0.012-6.102-0.724-9.041c-0.668-2.667-3.939-3.741-3.75-6.424c0.145-2.064,1.037-3.266,2.276-4.818,c1.198-0.716,4.219-3.982,5.354-4.145c0.12-0.484,0.695-0.38,0.646-1.243c-0.031-0.548-0.429-1.515-0.673-1.995,c-0.48-0.945-0.92-2.971-0.827-4.067c0.075-0.889,0.738-1.242,0.672-2.332c-0.106-1.756,0.85-1.525,1.086-2.487,c0.106-0.026,0.26-0.175,0.336-0.233L37.781,44.496L37.781,44.496z", "name": "East azarbaijan"},"19": {"path": "M140.063,222.347c0.521-1.967,4.346-1.949,3.647-4.741c-0.292-1.167-0.69-1.534-0.414-2.849c0.289-1.375-0.134-2.142-0.802-3.316,c-0.837-1.416-1.899-1.953-2.354-3.782c-0.388-1.559,0.446-3.232,0.155-4.818c-0.162-0.882-4.343-2.083-2.923-3.031,c0.431-0.288,2.37,0.698,3.518,0.311c0.939-0.317,2.051,0.602,2.328,1.451c1.473,0-1.464-4.296-1.293-5.181,c0.38-1.967,4.289-0.463,2.535-3.989c-0.259-0.806-1.321-1.903-0.595-2.824c0.082-0.104,4.752,0.657,5.768,0.544,c1.956-0.218,4.43-0.763,3.129,2.072c-0.606,1.32-1.43,2.726,0.337,3.29c1.183,0.378,5.065,4.071,3.957-0.674,c-0.523-2.243-1.266-5.141-3.311-6.451c-1.397-0.894-2.504-1.122-4.035-1.502c-0.623-0.155-2.567-1.427-2.043-2.254,c0.657-1.037,4.298,0.218,4.397-1.969c0.091-2.008-1.167-2.535-2.121-4.067c-0.453-0.783-0.583-3.704,0.207-4.274,c1.273-0.92,1.187,1.234,1.164,1.969c-0.048,1.556,1.723,2.332,2.483,0.803c0.921-1.855-0.828-2.485-0.828-4.041l0.104-1.451l0,0,c-0.811-1.426-3.456,0.009-4.681-0.518c-2.196-0.944-4.186,0.126-6.362-0.155c-1.46-0.188-2.075-1.325-0.828-2.487,c0.45-0.419,1.067-0.197,1.449-0.622c0.543-0.605-0.522-1.51-1.06-1.684c-1.412-1.238-3.036-2.327-4.94-2.435,c-0.679-0.039-1.225,0.363-1.81,0.363c-0.025,0.038-0.026,0.014-0.052,0.052c-0.135,0-0.334,0.214-0.414,0.285l0,0v2.772,l-2.871,1.217c-2.487-0.167-4.042-1.812-6.052-2.979c-2.242-1.301-3.165,1.697-5.509,1.114c-1.395-0.347-1.654-2.166-2.69-3.031l0,0,l-1.164-0.518c-0.916-0.916-2.125-1.987-3.311-2.513c-2.166-0.96-1.862,0.18-0.621,1.425c1.626,1.63,4.677,3.941,0.362,4.43,c-0.825,0.093-1.382,0.753-2.121,1.062c-2.375,0.994-0.793-4.999-2.819-2.643c-0.679,0.79-2.36,0.963-1.681,2.383,c1.071,2.243,2.801,3.924,3.388,6.424c0.233,0.996,0.13,3.497,1.449,3.497c1.379,1.973,3.841,2.384,4.888,4.689,c0.87,1.915,0.577,3.959-0.492,5.751c-1.236,2.073-1.641,1.735-2.457-0.052c-1.48-3.243-1.63,2.221-3.336,1.166,c-0.755-0.467-1.577-0.344-1.707,0.699l0,0c0.088,0.919,0.046,1.665-0.569,2.28c-0.553,0.553-1.326,0.857-1.862,1.451,c-0.692,0.766,1.255,2.616-0.465,3.057c-1.227,0.314-6.279,0.341-4.087,3.109c0.199,0.251,2.2,1.589,2.483,1.632,c0.885,0.135,2.498-0.58,2.845,0.829c0.383,0.723,0.059,2.823,0.647,3.083c1.017,0.449,1.365-1.052,1.681-1.658,c0.622-1.196,1.329-0.516,1.759-1.14c0.604-0.876,1.394-0.673,1.888,0.13c0.459,0.746-0.189,1.676-0.258,2.435,c-0.09,0.974,0.753,2.954-0.104,3.575c-0.485,0.351-4.484-0.717-5.276-0.958c-1.728-0.526-1.63,1.851-2.276,2.72l0,0l2.742,2.409,c0.894,0.689,2.586,1.691,3.207,2.487c1.524,1.952,4.08,0.866,6,3.652c1.278,1.854,2.945,1.843,5.018,1.762,c1.585-0.062,2.803,0.798,4.319,1.01c1.474,0.207,1.978-0.984,2.974-1.761c0.482-0.377,2.72,0.127,4.061-0.544,c1.221-0.612,1.466,1.153,2.483,1.969L140.063,222.347L140.063,222.347z", "name": "Hamadan"},"20": {"path": "M122.165,111.707l2.286-2.053c2.929-0.999,3.038,0.377,5.215,1.769c1.317,0.842,2.151-0.129,2.923-1.088,c0.477-0.592,3.404-0.882,4.112-0.882l0,0c1.049,2.559,6.683,5.723,8.173,7.876c1.143,1.652,1.159,3.67,1.604,5.544,c0.392,1.65,2.933,0.922,3.078,2.098l0,0l-9.492,5.44c-1.217,4.215,3.094,6.887,6.492,7.875c5.659,1.645,5.421,3.828,6.078,9.144,c0.165,1.046,1.605,4.199,0.388,4.844c-1.93,1.023-3.881,2.939-6.207,2.539c-1.483-0.255-2.36,0.391-3.518,1.243,c-0.301,0.221-2.163,1.275-2.354,0.518c-0.859-0.217-5.328-6.648-5.328-0.933c0,3.073-3.231,3.045-2.405,7.201l1.164,1.528l0,0,v2.772l-2.871,1.217c-2.487-0.167-4.042-1.812-6.052-2.979c-2.242-1.301-3.165,1.697-5.509,1.114,c-1.395-0.347-1.654-2.166-2.69-3.031l0,0c-0.545-1.094-0.087-2.106-1.5-2.798l-3.595-1.761c-1.816-0.89-5.851-2.272-3.518-4.767,c1.677-1.793,1.023-3.276,1.604-5.284c1.014-1.269,0.203-2.197-0.543-3.316c-0.959-1.439-0.755-2.357-1.086-3.886,c-0.814-3.756-4.053-2.322-6.828-3.316l-5.716-2.047c-1.38-0.494-1.865,0.483-3.362,0.441l-0.931-1.528l0,0l-3.75-9.17l0,0,l-0.465-1.865c1.023-2.502,1.285-3.877,4.009-5.026c1.531-0.646,1.693-2.847,3.233-3.808c2.26-1.411,5.566-4.715,8.277-4.715,c1.952,0,2.755,0.233,4.5-0.7c1.015-0.543,2.387,0.865,3.751,0.751c0.91-0.17,1.85-0.096,2.741-0.285,c1.143-0.242,2.718-0.409,3.802-0.026c0.475,0.168,0.794,0.493,1.215,0.725c0.587,0.325,1.181,0.462,1.759,0.751L122.165,111.707,L122.165,111.707z", "name": "Zanjan"},"21": {"path": "M91.775,135.203l0.931,1.528c1.497,0.042,1.982-0.934,3.362-0.441l5.716,2.047c2.775,0.993,6.014-0.441,6.828,3.316,c0.331,1.529,0.127,2.446,1.086,3.886c0.746,1.119,1.557,2.047,0.543,3.316c-0.581,2.009,0.074,3.491-1.604,5.284,c-2.333,2.495,1.701,3.877,3.518,4.767l3.595,1.761c1.413,0.692,0.955,1.704,1.5,2.798l0,0l-1.164-0.518,c-0.916-0.916-2.125-1.987-3.311-2.513c-2.166-0.96-1.862,0.18-0.621,1.425c1.626,1.63,4.677,3.941,0.362,4.43,c-0.825,0.093-1.382,0.753-2.121,1.062c-2.375,0.994-0.793-4.999-2.819-2.643c-0.679,0.79-2.36,0.963-1.681,2.383,c1.071,2.243,2.801,3.924,3.388,6.424c0.233,0.996,0.13,3.497,1.449,3.497c1.379,1.973,3.841,2.384,4.888,4.689,c0.87,1.915,0.577,3.959-0.492,5.751c-1.236,2.073-1.641,1.735-2.457-0.052c-1.48-3.243-1.63,2.221-3.336,1.166,c-0.755-0.467-1.577-0.344-1.707,0.699l0,0c-2.219,0-2.778,0.234-4.319-1.787c-1.332-1.748-1.905-3.886-4.371-3.886,c-1.359,0-2.132-2.15-2.974-1.917c-1.794,0.497,1.194,3.274-0.491,3.834c-0.959,0.319-1.928,0.249-2.949,0.052,c-3.336,0-0.63,5.541-3.802,3.86c-3.176-1.684-0.966,1.674-3.957,2.409c-0.175,0.712-0.207,3.038-1.293,2.824,c-2.672-0.528-1.357,1.21-1.448,2.202c-0.139,1.503-6.171-0.474-6.777-0.155c-2.808,1.479-1.613-2.334-1.707-3.264,c-0.13-1.273-1.423-0.466-2.069-0.466c-1.278-5.055-6.586-9.106-10.423-12.538l-3.698-1.714l0,0,c-0.09-0.852-0.645-1.503-1.268-2.198c-1.419-1.427-1.941-2.27-2.871-4.041c-0.793-1.512,0.365-2.007-0.336-3.29,c-0.834-1.524,0.122-0.668,0.905-0.933c0-1.786-1.132-1.532-0.103-3.135c1.145-1.784,1.318-1.036,3.517-1.036,c0.838,0,1.617-0.815,1.733-0.803c1.906,0.194,1.327,0.264,2.845-1.114c2.016-1.829,0.733-1.212,0.233-2.746,c-1.654,0-3.918,2.594-5.044-0.337c-0.479-1.248-5.23,0.406-5.276,0.544c-0.456,0-0.736-0.247-1.216-0.337,c-1.055,0-0.802,1.036-1.577,1.036c-0.509,0-0.997-0.537-1.552-0.259c-1.562,0.781-1.542-0.459-2.354-1.787,c-1.361-2.23-3.354-4.491-5.988-4.764l0,0l1.798-1.349c0.606-1.134-0.07-1.652,1.112-2.357c0.147,0.088,0.437-0.07,0.569-0.104,c0.068-0.268,0.632-0.909,0.828-1.217c0.294-0.462-0.475-1.052,0.052-1.399c1.229-0.809,1.668,0.224,1.215-1.865,c-0.26-1.2,4.798-1.062,5.613-1.062c5.92,0-0.676-5.251,4.319-7.02c1.714-0.607,3.38-1.034,4.863,0.337,c1.83,1.691,2.054,0.544,4.449,0.544c2.353,0.882,5.382,0.077,7.785-0.052c0.952-0.051,5.265-1.401,5.405-1.14,c1.544,2.883,2.643,3.156,5.664,3.704c1.028,0.187,1.904,0.971,2.923,0.544c0.7-0.293,2.862-0.582,3.569-0.44,c0.435-0.437,0.491-0.773,0.491-1.399c0-0.899,1.407-0.636,0.879-1.632c-0.514-0.969-1.013-1.186,0-1.943L91.775,135.203,L91.775,135.203z", "name": "kurdistan"},"22": {"path": "M291.472,136.187l-3.983,1.425c-0.003,0.002-0.293,0.161-0.31,0.233c-1.739,0.439-3.645,3.402-4.112,5.025,c-0.631,2.191,0.275,5.176-2.121,6.269c-1.846,1.406-2.17,2.113-3.362,4.171c-1.991,3.435-3.776,4.279-7.734,3.73,c-1.681-0.233-2.387-0.543-3.595,0.958c-1.045,1.298-2.422,0.725-3.802,0.725l-1.81,0.311l0,0c-1.624-0.41-3.292-2.612-4.733-1.891,c-4.141,2.07-4.712-0.92-8.121-1.632c-1.265-0.264-4.237-0.314-4.733-1.813c-2.851,0-4.758,3.599-6.802,5.155,c-2.517,2.517-3.978,3.94-7.811,1.839c-3.214-1.762-3.148-5.916-6.544-8.134c-2.677-1.749-4.387-1.829-7.604-1.736l-3.931,0.078l0,0,l-0.595-1.373c0-1.44,0.248-2.423-1.629-2.565c-1.424-0.108-2.44-1.111-3.906-1.321c-0.967-0.138-2.114,0.228-2.845-0.596,c-0.767-0.865-1.763-2.313-3-2.383c-0.956-0.054-1.509,0.069-2.354-0.414l-2.897-1.036l0,0c0.451-0.594,0.012-1.819-0.569-2.176,c-0.783-0.481-1.741-0.684-2.509-1.192l-5.173-3.419l-6.895-5.602l0,0c1.728,0.109,3.545-1.323,3.789-3.07,c0.303-2.171-0.663-4.424,1.966-5.518l3.088-1.287l0,0c0.166,0.122,0.319,0.246,0.457,0.374c5.232,4.834,14.559,8.61,21.674,9.507,c0.024,0.002,0.473,0.022,0.491,0.078c1.387-0.697,5.906,2.33,7.397,2.849c2.857,0.995,8.985,1.342,11.923,0.518l13.579-3.808,c0.062,0.006,0.385,0.087,0.466,0.026c1.149,0.46,6.984-1.636,8.535-2.047l12.725-3.368c3.11-0.823,8.528-0.464,11.406-1.554,c1.508,0,5.463-0.45,6.854-0.984c0.622-0.239,1.736-0.655,2.354-0.725c0.93-0.106,0.681,0.296,0.31,0.829,c-0.583,0.839-7.37,1.235-8.819,1.606c-0.702,0.18-6.893-0.06-4.035,0.907c-0.251,0.335-2.489-0.049-3.311,0.466,c-0.24,0.15,0.474,1.3,0.724,1.425c0.948,0.472,3.104-0.544,4.293-0.544c1.757,0,4.643,0.214,6.337,0.648,c1.406,0.36,2.858,0.121,3.982-0.583l0,0l-0.179,1.697l-2.172,1.503l-0.724,2.228l2.173,1.295l4.371,2.331L291.472,136.187,L291.472,136.187z", "name": "Mazandaran"},"23": {"path": "M177.991,128.824l6.895,5.602l5.173,3.419c0.768,0.508,1.726,0.71,2.509,1.192c0.581,0.357,1.02,1.581,0.569,2.176l0,0,c-0.956,0.185-2.726-0.271-3.698-0.544c-0.821-0.23-2.086,0.036-2.974-0.078c-1.547-0.199-2.718-0.596-4.345-0.052,c-2.229,0.745,1.132,3.188,1.785,3.653c-0.149,0.518,2.071,0.96,2.431,1.14c4.234,2.117-1.654,4.289-0.31,6.062,c-0.068,0.113-0.148,0.818-0.181,0.984c-0.745,1.653-0.602,2.011-2.483,2.953c-1.981,0.993-3.81,1.672-5.871,2.357,c-2.433,0.808-1.435,3.302-0.802,4.793l0.672,1.684l0,0c-0.923,0-1.461-0.506-2.354-0.337c-1.024,0.195-2.139,0.651-3,1.244,c-0.551,0.379-1.77,0.832-2.121,1.295c-2.532,0-3.869,1.174-6.13,1.865c-1.397,0.427-4.246,0.263-4.94,1.658,c-0.415,0.834,0.035,1.917-1.164,1.917c-1.093,0-3.694-0.871-4.578-0.233l0,0c-0.811-1.426-3.456,0.009-4.681-0.518,c-2.196-0.944-4.186,0.126-6.362-0.155c-1.46-0.188-2.075-1.325-0.828-2.487c0.45-0.419,1.067-0.197,1.449-0.622,c0.543-0.605-0.522-1.51-1.06-1.684c-1.412-1.238-3.036-2.327-4.94-2.435c-0.679-0.039-1.225,0.363-1.81,0.363,c-0.025,0.038-0.026,0.014-0.052,0.052c-0.135,0-0.334,0.214-0.414,0.285l0,0l-1.164-1.528c-0.826-4.156,2.405-4.128,2.405-7.201,c0-5.715,4.469,0.716,5.328,0.933c0.191,0.757,2.053-0.297,2.354-0.518c1.158-0.852,2.034-1.498,3.518-1.243,c2.327,0.4,4.277-1.516,6.207-2.539c1.217-0.645-0.223-3.798-0.388-4.844c-0.657-5.316-0.419-7.499-6.078-9.144,c-3.398-0.988-7.709-3.66-6.492-7.875l9.492-5.44l0,0l0.543,2.332c1.794,2.647,6.891,4.456,10.087,4.456,c2.774,0,4.297,0.126,6.802-0.984c2.186-0.969,4.466-2.798,6.983-2.798L177.991,128.824L177.991,128.824z", "name": "Qazvin"},"24": {"path": "M136.701,109.452c1.049,2.559,6.683,5.723,8.173,7.876c1.143,1.652,1.159,3.67,1.604,5.544c0.392,1.65,2.933,0.922,3.078,2.098l0,0,l0.543,2.332c1.794,2.647,6.891,4.456,10.087,4.456c2.774,0,4.297,0.126,6.802-0.984c2.186-0.969,4.466-2.798,6.983-2.798,l4.02,0.849l0,0c1.728,0.109,3.545-1.323,3.789-3.07c0.303-2.171-0.663-4.424,1.966-5.518l3.088-1.287l0,0,c-1.733-1.277-4.803-2.304-5.595-4.134c-3-2.984-3.629-2.985-4.94-6.942c-1.034-3.12-1.229-4.93-5.069-5.285,c-2.334-0.216-2.993-1.936-4.759-2.616c-0.017-0.007-1.425,1.136-2.328,1.062c-0.42-0.035-3.172-0.126-3.259-0.388,c-0.13,0-0.107-0.044-0.362-0.052c-1.06-0.635-4.91-0.539-6.311-0.751c-1.874-0.284-4.323-1.151-6-2.072,c-2.409-1.323-7.115-3.843-7.889-6.839c-0.556-2.151-2.472-5.598-2.044-7.823c0-2.644-0.925-4.967-0.724-7.616,c0.216-2.857-1.164-4.907-1.164-7.668c0-0.665-0.06-2.072-0.064-3.338l0,0c-0.891,0-3.049-0.18-3.583,0.54,c-0.821,1.108-1.312,1.098-2.612,1.036c-2.01-0.095-1.54-2.222-2.877-3.34l0,0l0.084,5.983c1.403,0.543,0.791,0.155,1.319,1.45,c0.458,1.124,3.754,0.451,1.423,2.228c-2.552,1.946-1.083,5.262-2.664,7.616c-0.439,0.654,0.022,2.712-0.259,3.756,c-0.19,0.708-0.802,1.14-0.802,1.969c0,0.834,0.784,1.272,0.879,2.046l5.483,11.683c0.98,2.088,2.309,2.922,4.009,4.274,c0.968,0.77,0.118,3.638-0.181,4.74C136.503,108.783,136.562,109.112,136.701,109.452L136.701,109.452z", "name": "Gilan"},"25": {"path": "M95.422,221.311c0.829,0.926,1.398,2.896,1.345,4.145c-0.045,1.062-0.542,1.981-1.5,2.461c-1.444,0.723-1.62,2.461-3.13,3.057,c-1.621,0.64-3.14-0.251-4.837,0.311c-1.616,0.925-4.422,1.215-5.509,3.109c-0.786,1.37-2.393,3.11-3.336,4.119,c-0.489,0.523,2.339,3.963,2.845,4.533c0.882,0.995,1.101,2.094,2.483,2.539c2.308,0.743,2.528,2.502,5.173,2.746,c3.016,0.279,3.665,1.601,5.949,3.031l8.949,6.684c-0.077,0.026,0.525,0.774,0.595,1.088c0.228,1.024,0.185,2.066,0.854,2.927,c0.933,1.2,0.908,2.285,1.629,3.471c0.326,0.537,0.854,0.809,0.854,1.502c0,0.758-0.252,1.698,0.155,2.383l1.707,1.71l0,0,c0,0.416-1.026,2.338-1.216,2.875c-0.387,1.096-0.582,2.419-1.319,3.368c-1.542,1.984-3.646,3.394-2.586,6.113,c0.563,1.444,0.477,2.493-0.828,3.497l-3.798,2.612l0,0c-0.326-0.33-0.606-0.539-0.806-0.565c-1.344-0.177-0.895-0.749-1.397-1.788,c0.211-0.211,0.508-0.395,0.75-0.544c0.223-0.137,0.354-0.541,0.362-0.544c0-0.77-1.111-1.582-1.733-1.736,c-0.109-0.554,0.604-1.228,0.155-1.477c-0.48-0.265-1.378-0.018-1.681-0.57c-0.899-1.636,0.406-1.623,0.077-2.435,c-0.631-1.558-4.353-4.52-5.535-3.186c-2.529,2.854-13.634-6.027-14.458-8.756c-2.075-1.04-4.061-3.123-5.975-4.663,c-2.908-2.34-6.196-3.238-9.88-3.238c-2.33,0-3.543,0.482-3.543-2.331c0.219-0.074,0.22-0.169,0.543-0.13,c0.073,0.009,0.522,0.065,0.543,0c2.97,0-5.567-3.523-1.448-3.523c1.715,0,4.393-1.062,2.638-2.824,c-0.381-0.383,0.513-1.148-0.233-1.865c-0.863-0.686-1.828-1.374-2.405-2.28c-0.407-0.639-0.323-2.148-1.19-2.435,c0-1.129-0.779-4.001-2.276-3.135c-1.276,0.739-3.609-0.016-1.423-1.114c1.892-0.95,0.201-1.53,0.078-2.409,c-0.216-1.537-2.4-1.177-3.518-0.596c-1.727,0.898-0.546,0.31-1.242-0.777c-0.038-0.059-0.1-0.124-0.18-0.194l0,0l0.723-4.676,c0.323-1.005,0.53-2.365,1.086-3.238c0.173-0.27,1.005-2.367,0.621-2.461c-0.048-0.195-2.065-2.628-0.595-2.305,c2.335,0.512,4.671,0.085,6.259-1.503c0.643-0.643,3.364,1.988,4.423,2.331c1.819,0.59,2.713-0.465,4.475-0.285,c2.074,0.212,3.957,2.878,5.509,4.093c2.135,1.671,5.215,1.961,7.837,2.202c0.958,0.028,2.436,0.555,3.311,0.026,c1.403-0.849,4.231-2.422,5.949-2.072c1.451,0.295,1.626,1.678,3.31,0.648c0.824-0.504,1.266-2.369,1.423-3.29,c0.14-0.818-2.771-3.558-0.569-4.015c0.686-0.142,3.987-0.84,4.475-0.544L95.422,221.311L95.422,221.311z", "name": "Illam"},"26": {"path": "M95.422,221.311c0.018-0.092,0.002-0.26,0.078-0.285c0-0.333,0.754-0.668,0.569-1.321c-0.332-1.172-1.443-2.804,0.388-3.264,c2.11-0.531,4.386,0.828,4.837-1.943c0.334-2.056-1.828-3.983,0.724-5.052l2.018,0.363l0,0l2.742,2.409,c0.894,0.689,2.586,1.691,3.207,2.487c1.524,1.952,4.08,0.866,6,3.652c1.278,1.854,2.945,1.843,5.018,1.762,c1.585-0.062,2.803,0.798,4.319,1.01c1.474,0.207,1.978-0.984,2.974-1.761c0.482-0.377,2.72,0.127,4.061-0.544,c1.221-0.612,1.466,1.153,2.483,1.969l5.225,1.554l0,0l-0.207,1.969c0.962,2.372-0.388,2.673-0.388,4.741,c0,0.72-0.611,1.458-0.492,2.15c0.164,0.954,0.781,0.272,1.345,0.648c0.349,0.233,0.605,1.177,1.19,1.01,c1.754-0.5,1.792,0.372,3.181,0.596c1.818,0.292,4.811-1.684,4.811-3.627c0-1.535,4.683-4.143,5.664-3.419,c1.392,1.026,2.845,1.942,2.845,3.86c0,2.004-0.902,3.606,1.448,4.611c1.064,0.293,1.899,0.573,2.38,1.58,c0.28,0.586,0.536,1.07,1.293,0.699c0.801-0.393,0.424-1.575,0.802-2.253c1.167-2.094,1.718,1.548,2.354,1.243,c0.406-0.195,1.392-1.489,1.837-0.596c0.372,0.747-0.647,2.254-0.647,3.135c0,1.603,0.961,0.311,1.759,0.311l0.595,1.14l0,0,c-0.12,0.478-0.537,0.916-0.854,1.295c-0.268,0.322-0.955,0.522-0.569,1.062c0.482,0.674,1.838,0.306,1.759,1.347,c-0.061,0.812-0.621,1.495-0.879,2.254c-0.529,0.526-1.804,2.985-1.992,3.652c-0.325,1.157,0.646,3.212-1.293,3.212,c-1.045,0-2.163,0.976-2.974,0.751c-2.375-0.659-0.681,0.523-2.173,1.011c-0.608,0.198-1.676,0.141-1.914,0.855,c-0.473,1.42,1.912,3.217,0.88,4.715c-1.437,2.085-4.202,0.326-5.638,3.756l0,0c-2.166,0-4.873,1.678-6.802,0.466,c-2.297-1.442-4.044-3.813-6.181-5.492c-1.554-1.22-2.697,1.074-4.113,0.13c-2.507-1.674-2.688,1.342-4.681-2.099,c-1.652-2.85-5.43-1.215-7.423,0.078c-3.419,0.724-8.33-2.58-9.57,1.943c-0.791,2.887-2.44,4.686-2.612,7.849,c-0.075,1.383-2.283,3.047-3.155,4.196l0,0l-1.707-1.71c-0.407-0.685-0.155-1.626-0.155-2.383c0-0.693-0.527-0.965-0.854-1.502,c-0.722-1.186-0.697-2.271-1.629-3.471c-0.669-0.861-0.625-1.903-0.854-2.927c-0.07-0.314-0.672-1.062-0.595-1.088l-8.949-6.684,c-2.283-1.43-2.932-2.752-5.949-3.031c-2.645-0.244-2.865-2.002-5.173-2.746c-1.382-0.445-1.601-1.543-2.483-2.539,c-0.506-0.57-3.334-4.01-2.845-4.533c0.944-1.009,2.55-2.749,3.336-4.119c1.087-1.894,3.893-2.184,5.509-3.109,c1.696-0.561,3.215,0.329,4.837-0.311c1.51-0.596,1.686-2.333,3.13-3.057c0.958-0.48,1.455-1.399,1.5-2.461,C96.82,224.207,96.251,222.237,95.422,221.311L95.422,221.311z", "name": "Lorestan"},"27": {"path": "M57.35,178.719l3.698,1.714c3.838,3.432,9.146,7.483,10.423,12.538c0.646,0,1.939-0.807,2.069,0.466,c0.094,0.93-1.101,4.743,1.707,3.264c0.606-0.319,6.638,1.659,6.777,0.155c0.092-0.992-1.223-2.73,1.448-2.202,c1.087,0.215,1.118-2.112,1.293-2.824c2.991-0.736,0.781-4.093,3.957-2.409c3.172,1.682,0.466-3.86,3.802-3.86,c1.02,0.197,1.99,0.267,2.949-0.052c1.685-0.559-1.303-3.336,0.491-3.834c0.842-0.234,1.615,1.917,2.974,1.917,c2.466,0,3.039,2.138,4.371,3.886c1.542,2.022,2.1,1.787,4.319,1.787l0,0c0.088,0.919,0.046,1.665-0.569,2.28,c-0.553,0.553-1.326,0.857-1.862,1.451c-0.692,0.766,1.255,2.616-0.465,3.057c-1.227,0.314-6.279,0.341-4.087,3.109,c0.199,0.251,2.2,1.589,2.483,1.632c0.885,0.135,2.498-0.58,2.845,0.829c0.383,0.723,0.059,2.823,0.647,3.083,c1.017,0.449,1.365-1.052,1.681-1.658c0.622-1.196,1.329-0.516,1.759-1.14c0.604-0.876,1.394-0.673,1.888,0.13,c0.459,0.746-0.189,1.676-0.258,2.435c-0.09,0.974,0.753,2.954-0.104,3.575c-0.485,0.351-4.484-0.717-5.276-0.958,c-1.728-0.526-1.63,1.851-2.276,2.72l0,0l-2.018-0.363c-2.552,1.068-0.39,2.995-0.724,5.052c-0.45,2.77-2.726,1.412-4.837,1.943,c-1.831,0.46-0.72,2.092-0.388,3.264c0.185,0.653-0.569,0.988-0.569,1.321c-0.075,0.025-0.06,0.193-0.078,0.285l0,0l-1.061,0.078,c-0.488-0.296-3.789,0.402-4.475,0.544c-2.202,0.457,0.709,3.197,0.569,4.015c-0.157,0.921-0.598,2.786-1.423,3.29,c-1.685,1.03-1.859-0.353-3.31-0.648c-1.718-0.35-4.546,1.224-5.949,2.072c-0.874,0.529-2.353,0.002-3.311-0.026,c-2.622-0.241-5.701-0.531-7.837-2.202c-1.552-1.215-3.435-3.882-5.509-4.093c-1.762-0.18-2.655,0.875-4.475,0.285,c-1.058-0.343-3.78-2.974-4.423-2.331c-1.588,1.588-3.925,2.015-6.259,1.503c-1.47-0.323,0.546,2.11,0.595,2.305,c0.384,0.094-0.448,2.191-0.621,2.461c-0.556,0.872-0.763,2.233-1.086,3.238l-0.723,4.676l0,0c-0.562-0.493-2.039-1.243-2.588-1.826,c-0.24-0.255-1.632-3.46-1.655-3.705c-0.729-0.729-0.458-1.409-0.879-2.176c-0.39-0.711-1.049-1.21-1.449-1.943,c-0.969-1.775-3.846-0.082-3.311-2.435c0.177-0.777,1.751-0.275,1.655-1.969c-0.052-0.914,0.862-2.114,1.655-2.668,c0.614-0.429,1.431-0.092,1.061-1.295c-0.493-1.6-0.354-1.055,0.181-2.409c0.488-1.233-0.095-2.216-0.44-3.394,c-0.32-0.74-1.056-0.863-1.785-1.036c-1.236-0.292-0.479-0.98-0.543-1.761c-0.056-0.686-2.186-2.768,0.698-2.28,c0.909,0.154,1.061-1.967,0.879-2.617c-0.081-0.29-0.841-1.908-0.491-1.994c0.09,0.364,2.058,1.149,2.535,1.528,c1.056,0.84,1.802-0.133,3.026,0.544c1.501,0.83-0.155-4.23-0.155-5.129c0-0.99-2.69-0.677-0.543-2.824,c0.837-0.837,0.704-0.893,0.491-2.098c0.798-0.798,3.615,0.398,2.768-2.072c-0.776-2.259,3.13,1.488,2.25-1.684,c-0.137-0.494,0.492-0.476,0.492-0.984c0-1.286-1.336-2.36,0.595-2.902c1.311-0.367-0.031-1.244,0.44-1.425,c0.185-0.07,0.623,0.339,0.802,0.441c0.751,0.425,1.701-0.149,2.069,0.078c0.74,0.455,1.63,1.796,1.63-0.285,c0-0.032,1.77-0.224,2.354-0.518c1.412-0.711-1.37-2.173,0.44-2.772c1.835-0.608-0.519-2.15-1.629-2.15,c-0.154-0.608,0.608-0.875,0.672-1.502C57.368,179.042,57.367,178.877,57.35,178.719L57.35,178.719z", "name": "Kermanshah"},"28": {"path": "M192.722,180.562c-1.182,4.092,0.944,12.279-5.25,12.279c-3.116,0-2.937,3.744-5.949,4.378c-3.162,0.666-3.569,1.323-3.569,4.663,c0.442,0.827,4.428,3.928,5.173,4.119c3.744,0.959,3.692,7.668,6.285,7.668c2.128,0,3.335-0.81,4.397,1.451,c0.891,1.898,0.87,2.564,3.233,2.564l1.112-0.388l0,0c0.82-0.645,1.293-4.819,1.293-5.88c0-9.376,16.095-2.658,21.286-6.451,l1.526-1.036l0,0l0.181-1.269c0.563-0.701,1.701-0.776,2.017-1.606c0.351-0.921,0.28-1.787,0.336-2.772,c0.119-2.102,1.907-4.245-0.181-5.855l0,0l-1.319-0.647c-2.116-2.128-3.718-2.521-6.595-3.264c-3.632-0.938-4.636-3.33-7.371-5.337,c-1.564-1.148-3.484-0.98-5.25-1.451c-2.473-0.66-3.071-2.774-5.897-1.891L192.722,180.562L192.722,180.562z", "name": "Qom"},"29": {"path": "M177.359,164.164c0.579,0.019,1.169,0.164,1.789,0.296c0.548,0.116,1.119,0.223,1.728,0.223c1.219,0,2.73,0.188,3.802,0.725,c0.994,0.498,1.157,1.261,1.836,2.021c0.58,0.649,1.715,0.56,1.112-0.414c-0.456-0.737-1.345-1.82-0.673-2.668,c1.236-1.561,3.052-0.564,3.052,1.243c0,0.746-0.883,2.282,0.207,2.642c1.949,0.646,0.727-3.855,3.026-2.383,c1.042,0.667,1.686,2.629,2.095,3.73c-0.155,0.532,0.197,0.979,0.155,1.528c-0.129,1.705-0.834,3.161-1.319,4.741l-1.449,4.714l0,0,c-1.182,4.092,0.944,12.279-5.25,12.279c-3.116,0-2.937,3.744-5.949,4.378c-3.162,0.666-3.569,1.323-3.569,4.663,c0.442,0.827,4.428,3.928,5.173,4.119c3.744,0.959,3.692,7.668,6.285,7.668c2.128,0,3.335-0.81,4.397,1.451,c0.891,1.898,0.87,2.564,3.233,2.564l1.112-0.388l0,0c0.37,0.679,0.828,1.089,1.371,1.632c1.367-0.275,0.454,2.673,0.336,3.057,c-0.592,1.937-2.845,2.238-3.285,4.093c-0.216,0.911,0.459,1.832-0.026,2.746c-0.648,1.223-1.773,0.25-2.768,0.285,c-1.426,0.049-3.396,2.248-4.63,3.005c-0.981,0.613-3.196,1.621-4.397,1.425c-1.148-0.188-2.361-0.36-3.337,0.441,c-2.222,1.823-4.838,0.92-7.345,2.539c-1.581,1.021-2.781,2.477-4.242,3.627l0,0l-0.595-1.14c-0.797,0-1.759,1.292-1.759-0.311,c0-0.881,1.018-2.388,0.647-3.135c-0.444-0.893-1.43,0.401-1.837,0.596c-0.636,0.304-1.187-3.337-2.354-1.243,c-0.378,0.679-0.001,1.861-0.802,2.253c-0.758,0.371-1.013-0.113-1.293-0.699c-0.481-1.007-1.315-1.288-2.38-1.58,c-2.35-1.005-1.448-2.607-1.448-4.611c0-1.918-1.453-2.834-2.845-3.86c-0.981-0.723-5.664,1.884-5.664,3.419,c0,1.942-2.993,3.919-4.811,3.627c-1.39-0.224-1.428-1.096-3.181-0.596c-0.585,0.167-0.84-0.777-1.19-1.01,c-0.564-0.376-1.181,0.306-1.345-0.648c-0.119-0.692,0.492-1.43,0.492-2.15c0-2.068,1.35-2.369,0.388-4.741l0.207-1.969l0,0,c0.521-1.967,4.346-1.949,3.647-4.741c-0.292-1.167-0.69-1.534-0.414-2.849c0.289-1.375-0.134-2.142-0.802-3.316,c-0.837-1.416-1.899-1.953-2.354-3.782c-0.388-1.559,0.446-3.232,0.155-4.818c-0.162-0.882-4.343-2.083-2.923-3.031,c0.431-0.288,2.37,0.698,3.518,0.311c0.939-0.317,2.051,0.602,2.328,1.451c1.473,0-1.464-4.296-1.293-5.181,c0.38-1.967,4.289-0.463,2.535-3.989c-0.259-0.806-1.321-1.903-0.595-2.824c0.082-0.104,4.752,0.657,5.768,0.544,c1.956-0.218,4.43-0.763,3.129,2.072c-0.606,1.32-1.43,2.726,0.337,3.29c1.183,0.378,5.065,4.071,3.957-0.674,c-0.523-2.243-1.266-5.141-3.311-6.451c-1.397-0.894-2.504-1.122-4.035-1.502c-0.623-0.155-2.567-1.427-2.043-2.254,c0.657-1.037,4.298,0.218,4.397-1.969c0.091-2.008-1.167-2.535-2.121-4.067c-0.453-0.783-0.583-3.704,0.207-4.274,c1.273-0.92,1.187,1.234,1.164,1.969c-0.048,1.556,1.723,2.332,2.483,0.803c0.921-1.855-0.828-2.485-0.828-4.041l0.104-1.451l0,0,c0.884-0.638,3.485,0.233,4.578,0.233c1.199,0,0.749-1.083,1.164-1.917c0.694-1.395,3.543-1.23,4.94-1.658,c2.261-0.691,3.597-1.865,6.13-1.865c0.351-0.463,1.57-0.916,2.121-1.295c0.861-0.592,1.976-1.049,3-1.244,C175.899,163.658,176.436,164.164,177.359,164.164L177.359,164.164z", "name": "Markazi"},"30": {"path": "M177.359,164.164c0.579,0.019,1.169,0.164,1.789,0.296l0,0l1.573-0.814c2.54-1.36,5.817-0.272,8.638-1.321,c1.882-0.699,4.065-0.432,6-0.803c1.039-0.199,7.273,2.43,5.199-0.7c-1.13-1.704-0.844-2.13,0.543-3.057,c0.98-0.654,1.414-2.902,2.767-2.902c1.588-0.614,4.25,3.097,5.095,1.399c0.39-0.784-1.487-2.314-0.104-3.005,c0.445-0.222,0.892-0.044,1.216-0.492c0.243-0.337,0.285-1.443,0.285-1.865l0,0l-0.595-1.373c0-1.44,0.248-2.423-1.629-2.565,c-1.424-0.108-2.44-1.111-3.906-1.321c-0.967-0.138-2.114,0.228-2.845-0.596c-0.767-0.865-1.763-2.313-3-2.383,c-0.956-0.054-1.509,0.069-2.354-0.414l-2.897-1.036l0,0c-0.956,0.185-2.726-0.271-3.698-0.544c-0.821-0.23-2.086,0.036-2.974-0.078,c-1.547-0.199-2.718-0.596-4.345-0.052c-2.229,0.745,1.132,3.188,1.785,3.653c-0.149,0.518,2.071,0.96,2.431,1.14,c4.234,2.117-1.654,4.289-0.31,6.062c-0.068,0.113-0.148,0.818-0.181,0.984c-0.745,1.653-0.602,2.011-2.483,2.953,c-1.981,0.993-3.81,1.672-5.871,2.357c-2.433,0.808-1.435,3.302-0.802,4.793L177.359,164.164L177.359,164.164z", "name": "Alborz"},"31": {"path": "M179.148,164.46c0.548,0.116,1.119,0.223,1.728,0.223c1.219,0,2.73,0.188,3.802,0.725c0.994,0.498,1.157,1.261,1.836,2.021,c0.58,0.649,1.715,0.56,1.112-0.414c-0.456-0.737-1.345-1.82-0.673-2.668c1.236-1.561,3.052-0.564,3.052,1.243,c0,0.746-0.883,2.282,0.207,2.642c1.949,0.646,0.727-3.855,3.026-2.383c1.042,0.667,1.686,2.629,2.095,3.73,c-0.155,0.532,0.197,0.979,0.155,1.528c-0.129,1.705-0.834,3.161-1.319,4.741l-1.449,4.714l0,0l5.458-0.725,c2.826-0.883,3.423,1.231,5.897,1.891c1.766,0.471,3.686,0.303,5.25,1.451c2.735,2.006,3.74,4.398,7.371,5.337,c2.878,0.743,4.479,1.136,6.595,3.264l1.319,0.647l0,0c0.304-0.535,0.796-1.103,1.009-1.658c0.158-0.412-0.104-1.25-0.104-1.735,c0-1.084,1.528-2.679,2.224-3.471c2.782-1.395-2.078-5.21-3.052-6.347c-2.83-3.305-0.104-4.809-0.104-8.082,c0-1.616-0.641-4.264,1.837-2.254c0.286,0.232,1.642,0.065,1.655,0.104c0.065,0,2.116,1.246,2.793,1.425,c1.039,0.274,2.131,1.494,2.897,2.202c1.981,1.831,3.511,2.278,6.078,1.451c2.163-0.539,4.442,1.847,6.518,2.28,c2.245,0.468,4.938-0.205,7.113-0.751c1.999-0.502,8.456-6.824,8.613-8.886c0.187-2.468-1.707-4.971-1.448-7.668l0,0,c-1.624-0.41-3.292-2.612-4.733-1.891c-4.141,2.07-4.712-0.92-8.121-1.632c-1.265-0.264-4.237-0.314-4.733-1.813,c-2.851,0-4.758,3.599-6.802,5.155c-2.517,2.517-3.978,3.94-7.811,1.839c-3.214-1.762-3.148-5.916-6.544-8.134,c-2.677-1.749-4.387-1.829-7.604-1.736l-3.931,0.078l0,0c0,0.423-0.041,1.529-0.285,1.865c-0.324,0.448-0.771,0.27-1.216,0.492,c-1.383,0.691,0.494,2.221,0.104,3.005c-0.846,1.698-3.507-2.013-5.095-1.399c-1.353,0-1.787,2.247-2.767,2.902,c-1.387,0.926-1.673,1.352-0.543,3.057c2.074,3.13-4.16,0.5-5.199,0.7c-1.935,0.371-4.118,0.104-6,0.803,c-2.821,1.048-6.098-0.039-8.638,1.321L179.148,164.46L179.148,164.46z", "name": "Tehran"},"32": {"path": "M176.299,309.698c2.173,1.657,5.344,4.292,8.173,3.419c3.609-1.114,3.981,3.262,6.57,4.56c1.033,1.316,3.139,3.593,4.681,4.223,c0.784,0.32,1.439,1.05,2.327,0.855c1.148-0.252,1.155,0.208,2.069,0.389c0.268,0.822,2.176-0.495,2.431-0.751,c0.729-0.729,0.914-1.215,1.888-1.632l2.666-0.104l0,0c3.428-4.271-3.287-10.555-2.586-15.129c0.14-0.916,0.154-3.983,1.112-4.378,c1.179-0.485,1.205,0.221,1.293-1.14c-0.226-1.126-3.138-2.244-1.009-3.601c2.273-1.448,0.54-0.899,0.362-2.461,c-0.111-0.97,1.259-1.682,1.474-2.513c0.376-1.456-0.846-2.61-1.862-3.523l-5.276-4.741c-0.77-0.692-2.777-1.292-3.207-2.021,c-2.469-2.469,1.996-2.889,0.078-5.544c-0.631-0.873-0.281-0.896-0.388-1.839c-0.116-1.018-1.965,0.363-1.965-1.606,c0-1.297-0.183-3.599-2.173-2.824c-0.762,0.297-0.922,1.339-1.836,1.658c-2.339,0.815-3.876-0.914-6.44,0.829,c-1.154,0.575-1.931,1.43-2.974,2.124c-1.127,0.75-1.64-0.98-2.819-0.751c-1.031,0.2-1.376,0.829-2.354,0.052l-2.509-1.995,c-1.563-1.242-1.973,0.312-3.44,0.725c-0.904,0.254-1.44-0.575-2.224-0.622c-2.325-0.14-3.896,3.394-6.362,3.394l0,0l0.903,3.704,c0.044,1.507,2.161,3.243,3,4.404c1.649,2.283,1.582,5.883,4.681,6.683c2.863,0.74,0.458,5.227,3,7.046,c0.493,1.177,2.347,3.279,3.492,3.886c0.911,0.483,1.954,1.096,1.888,2.254c-0.076,1.336,1.258,2.228,0.336,3.471,C178.383,307.437,177.243,308.522,176.299,309.698L176.299,309.698z", "name": "Charmahal&Bakhtiari"},"33": {"path": "M186.283,354.902c-1.954,1.796,1.107,4.938,2.586,5.751c1.508,0.828,0.523,3.748,2.483,4.352c0.96,0.296,3.129,1.116,4.086,0.933,c1.086-0.208,2.077-0.673,3.207-0.544c0.682,0.077,1.398,0.685,2.043,0.933c2.094,0.804,4.714-0.527,5.147,2.901,c0.355,1.142-0.239,2.008,0.052,2.953c0.15,0.488,2.311,4.151,2.69,4.404c2.674,1.785,5.92,1.346,7.501,4.507,c1.259,2.517,4.095,7.385,4.423,10.051c0.399,1.421,2.156,3.164,3.13,4.326c3.664,4.375,3.763,10.737,5.949,15.673,c-0.084,0.578,2.198,4.905,2.587,5.855c0.396,0.968-0.242,3.614,0.724,4.145c2.484,1.364,3.202,2.063,5.147,4.197,c1.924,2.109,2.464,4.172,3.207,6.917c0.255,2.66,3.21,6.327,5.043,8.16c0.958,0.958,2.523,1.491,3.724,2.124,c1.335,0.703,2.334,1.782,3.466,2.772l1.655,1.606l0,0c-0.639,1.285-4.029,0.907-5.199,0.907c-0.796,0-1.398,0.265-2.147,0.337,l-1.225,1.308l0,0c-0.611-0.754-2.059-1.826-2.603-1.826c-0.326-0.987,0.849-0.318,1.086-1.036c0.566,0,0.983-0.191,1.423-0.337,c0-0.052-0.014-0.039,0.026-0.052c0-1.297-0.892-1.273-1.94-1.736c-1.01-0.446-1.174-2.255-1.888-3.057,c-1.797-2.018-3.391-3.058-6-3.29c-3.503-0.432-5.179-2.21-7.113-4.818c-0.829-1.118-8.63-1.018-10.294-0.699,c-1.204,0.231-1.528-0.475-2.509-0.544c-1.98-0.139-2.881-1.836-4.992-2.357c0.026-0.052-0.436-0.778-0.517-0.881,c-0.253-0.32-0.399-0.519-0.621,0.026c-0.406,0.998-1.164-0.254-1.448-0.933c-0.402-0.946-0.71-3.375-1.707-3.704,c-0.205,0.62-0.259,1.36-0.259,2.124c-0.281,0-0.672-1.988-0.672-2.357c0-0.894-0.667-1.552-0.362-2.746,c0.465-1.822-2.212-5.565-3.44-6.891c-2.024-2.183-1.674-3.783-2.198-6.502c0-1.055-0.074-2.5-0.414-3.445,c-0.404-1.124-1.364-1.748-1.707-2.642c-0.236-0.614,0.238-1.149-0.466-1.502c-0.833-0.418-1.964-0.078-2.871-0.311,c-1.323-0.339-1.386-1.965-2.147-3.109c-0.653-0.981,1.081-2.83,1.5-3.912c0.174-0.449,0.643,1.674,0.828,1.788,c0.735,0.452,0.311-1.943,0.155-2.228c-0.642-1.175-0.855-2.103-2.509-2.228c-0.748-0.056-3.124-1.424-3.673,0.233,c-0.998-0.741-0.855-1.522-0.957-2.591c0-0.569-0.047-0.981,0.077-1.528c0.054-0.238,0.667-1.086,0.569-1.217,c0.229-0.384-0.543-1.505-0.543-2.072c0-0.781,0.015-1.545-0.181-2.253c-0.146-0.527-1.492-3.39-1.759-3.549,c-0.126,0.094-0.494,0.294-0.543,0.44c-0.675,0-1.572-1.398-1.836-1.995c-0.534-1.209-1.344-1.679-2.224-2.564l-1.086-1.062,l-1.242-1.451c-1.286-1.037-1.82-2.711-2.845-3.886l-2.871-3.29c-1.597-1.829,0.635-4.119-0.931-6.787,c-1.176-2.003-1.632-2.272-3.152-2.637l0,0l2.945-1.871c0.777,0.226,1.664,0.055,2.406,0.492c1.184,0.698,1.876,0.669,3.233,0.44,c0.986-0.167,2.479,0.178,3.362-0.156l0,0c1.095,0.193,1.954-0.284,2.69,0.777c0.163,0.234,0.743,0.049,1.009,0.181,C185.761,354.122,185.984,354.603,186.283,354.902L186.283,354.902z", "name": "Bushehr"},"34": {"path": "M154.185,264.054l1.865,4.559c2.63,0.308,4.344-1.291,6.751,0.44c1.244,0.894,0.867,1.603,0.077,2.668,c-0.881,1.189-1.17,1.552-0.879,3.031l0,0l0.903,3.704c0.044,1.507,2.161,3.243,3,4.404c1.649,2.283,1.582,5.883,4.681,6.683,c2.863,0.74,0.458,5.227,3,7.046c0.493,1.177,2.347,3.279,3.492,3.886c0.911,0.483,1.954,1.096,1.888,2.254,c-0.076,1.336,1.258,2.228,0.336,3.471c-0.916,1.236-2.056,2.321-3,3.497l0,0l-1.474,3.238c-0.965,2.504-3.056,2.223-5.302,3.031,c-1.325,0.477-3.29,2.677-3,4.171c0.204,1.05,0.194,1.843,0.517,2.902c0.636,2.08,1.637,2.182,1.06,4.611,c-0.553,2.328-0.113,5.368,2.561,2.694c2.638-2.639,2.226,1.842,3.931,2.824c1.016,0.582,1.804,1.421,2.923,1.917,c1.446,0.64,3.828,0.678,3.828,2.824c0,0.643-1.174,3.213-1.785,3.419c0,1.828-0.819,2.343,0.957,3.938,c1.403,1.259,0.854,3.32,0.854,5.077l0.285,2.616l0,0c-0.883,0.334-2.376-0.011-3.362,0.156c-1.357,0.229-2.049,0.258-3.233-0.44,c-0.742-0.437-1.628-0.266-2.406-0.492l-2.945,1.871l0,0c-0.351-0.084-0.759-0.174-1.245-0.291c-0.97-0.234-1.832,0.903-2.483,0.777,l-5.328,3.808c-0.628,0.449-4.293,3.803-4.888,2.616c-0.21-0.419-1.461-1.904-1.216-2.15c0.319-0.321,2.547-2.927,0.466-2.927,c-1.778,0-4.783-0.768-6.156-0.207c-2.955,1.207-0.535-1.971-4.138-2.565c-1.49-0.245-2.542-0.711-3.466-1.788l-2.535-2.953,c-0.571-0.665,1.775-0.922,1.293-1.166c-0.58-0.292-1.723-0.026-2.354-0.026c-0.335,1.332-1.43,1.638-0.621,3.523l1.19,2.772,c0.82,0.207,0.17,4.416-0.052,5.077c-1.043,3.123-1.798,1.048-3.906,1.606c-3.93-1.464-3.089,2.432-4.63,2.305,c-0.595-0.049-1.331-0.765-1.681,0.207l0,0c-1.066-0.76-3.088-0.918-3.906-1.995c-0.582-0.766-0.159-2.857-0.905-3.186,c-0.868-0.383-0.846-0.874-0.647-1.762c0.207-0.331,0.348-0.887,0.517-1.114c-0.633-1.062-3.1-5.033-4.371-5.129,c-0.313-0.024-1.73,1.316-1.94,0.466c-0.204-0.052-0.429-2.639-0.647-3.083c-0.617-1.26-1.99-1.007-3.026-1.58l-1.291-0.567,l0.362-17.462H101.94V313.74l4.681-11.683c0.394-0.393,0.663-1.729,0.466-2.28c-0.281-0.785-0.953-0.602-1.345-1.217,c-0.219-0.343,0.055-1.028-0.155-1.451c-0.332-0.667-1.291-0.503-1.63-1.399c-0.372-0.984-2.645-4.689-4.056-6.118l0,0l3.798-2.612,c1.305-1.004,1.39-2.053,0.828-3.497c-1.059-2.72,1.044-4.129,2.586-6.113c0.737-0.949,0.932-2.272,1.319-3.368,c0.19-0.538,1.216-2.459,1.216-2.875l0,0c0.872-1.15,3.08-2.813,3.155-4.196c0.172-3.164,1.821-4.962,2.612-7.849,c1.24-4.522,6.151-1.219,9.57-1.943c1.993-1.293,5.771-2.928,7.423-0.078c1.994,3.441,2.174,0.425,4.681,2.099,c1.415,0.944,2.559-1.35,4.113-0.13c2.138,1.679,3.884,4.05,6.181,5.492C149.312,265.732,152.02,264.054,154.185,264.054,L154.185,264.054z", "name": "Khuzestan"},"35": {"path": "M181.653,352.959c1.095,0.193,1.954-0.284,2.69,0.777c0.163,0.234,0.743,0.049,1.009,0.181c0.41,0.204,0.632,0.685,0.931,0.984l0,0,l3.114-0.605c2.433,0.3,3.768,0.755,6.197,0.112c1.57-0.415,2.402-2.306,3.776-2.15c2.228,0.253,5.268-2.741,4.966-5.026,c-0.165-1.244-1.443-2.187-0.543-3.238c0.842-0.983-0.442-2.386-1.19-3.135c-0.143-0.279-0.336-0.493-0.336-0.803,c1.269-0.429-0.155-1.643-0.155-2.202c0-0.605,4.579,0.197,5.121,0.984c0.409,0.594,0.98,0.934,1.629,1.088,c1.478,0.351,1.126,2.046,2.819,2.046c4.777,0,7.105-1.412,6.13-6.372l-0.543-1.606l0,0c-1.617-2.015-4.689-3.401-6.647-5.077,c-2.485-2.128-3.538-5.086-3.516-8.264l0,0l-2.666,0.104c-0.974,0.417-1.159,0.903-1.888,1.632,c-0.256,0.256-2.163,1.573-2.431,0.751c-0.914-0.18-0.921-0.64-2.069-0.389c-0.888,0.195-1.544-0.535-2.327-0.855,c-1.542-0.63-3.649-2.907-4.681-4.223c-2.589-1.298-2.96-5.674-6.57-4.56c-2.829,0.873-6-1.763-8.173-3.419l0,0l-1.474,3.238,c-0.965,2.504-3.056,2.223-5.302,3.031c-1.325,0.477-3.29,2.677-3,4.171c0.204,1.05,0.194,1.843,0.517,2.902,c0.636,2.08,1.637,2.182,1.06,4.611c-0.553,2.328-0.113,5.368,2.561,2.694c2.638-2.639,2.226,1.842,3.931,2.824,c1.016,0.582,1.804,1.421,2.923,1.917c1.446,0.64,3.828,0.678,3.828,2.824c0,0.643-1.174,3.213-1.785,3.419,c0,1.828-0.819,2.343,0.957,3.938c1.403,1.259,0.854,3.32,0.854,5.077L181.653,352.959L181.653,352.959z", "name": "Kohgiluyeh&Boyer-Ahmad"},"36": {"path": "M328.406,243.589c1.906,2.51,4.877,4.674,6.466,7.202l3.776,6.01c1.611,2.564,4.353,5.927,6.621,7.875,c2.773,2.382,3.853,5.413,6.104,8.238c0,2.689,1.991,7.904,4.138,9.637c1.117,0.901,2.01,1.708,2.69,2.953,c0.344,0.63,0.656,1.305,1.035,1.917c0.284,0.46,2.961,3.322,3.026,3.782l0,0c-0.091,0-0.076,0.035-0.129,0.052,c0,1.654-3.957,3.954-5.276,3.316c-2.036,1.021-3.243,2.305-4.785,3.938c-1.384,1.466-3.182,2.129-4.888,3.083,c-3.035,1.697-7.507,2.231-10.164,4.378c-1.909,1.542-1.038,3.974-1.449,6.165c0,3.25,1.695,11.048-3.207,12.072,c-3.162,0.66-9.996,1.105-12.88-0.389c-4.115-0.452-8.991,3.262-12.622,2.565c-4.096-0.786-5.901,1.244-7.889,4.87,c-0.388,0.708-1.611,5.959-0.776,6.165c0.039,0.27,0.901,1.331,1.19,1.373c0.57,1.428,1.958,2.225,1.837,4.119,c0.497,1.361-0.012,4.509,1.034,5.207c1.747,1.167,2.46-0.234,2.328,2.668c-0.186,4.092-2.979,7.959-0.853,11.994,c1.458,2.767,0.491,1.793-2.043,2.28c-1.03,0.198-2.005,0.74-2.897,1.217l0,0c-1.436-2.525-7.139-3.555-9.518-5.129,c-3.245-2.147-1.58-8.77-3.233-12.098c-0.881-1.774-3.902-3.599-4.293-5.336c-4.583-4.571-8.795-14.572-10.449-20.828,c-0.358-2.891-2.099-7.51-3.931-9.818c-1.941-2.444-5.165-3.818-7.759-5.492l-6.053-2.072l0,0c0.415-1.43-1.371-3.374-1.371-5,c0-1.245-0.018-2.551,0.233-3.756c0.294-1.41,0.881-3.158,1.034-4.559c1.074-3.819,1.61-8.519,0.776-12.486,c-0.383-1.825-0.751-3.813,0.465-5.414c1.005-1.322,3.408-0.457,4.733-1.788c2.043-1.8,3.163-3.808,6.337-3.808,c4.46,0,8.005,2.367,12.208,2.176c4.577-0.208,8.73-3.341,12.648-5.311c1.549-0.049,4.662-1.579,6.544-1.891,c6.23-1.034,15.904-2.45,16.797-10.207c0.955-0.939,2.189-0.182,3.223-1.735c0.484-0.726,0.283-1.669,0.776-2.435,c0.749-1.164,1.906-2.208,3.207-2.642c1.616-0.538,2.76-1.722,4.293-2.487L328.406,243.589L328.406,243.589z", "name": "Yazd"},"37": {"path": "M217.268,333.997l2.716-0.803c0.632-1.181-0.157-2.267-0.233-3.445c-0.142-2.215,0.132-4.169,1.319-6.088,c1.409-2.278,2.096-3.955,2.431-6.684c0.258-0.586,1.345-4.213,0.362-4.456c-0.103-0.408-1.818-0.376-2.199-0.466,c-1.501-0.356-3.013-1.063-3.906-2.461c-1.75-2.742,0.776-2.043,2.509-1.503c1.323,0.412,3.749-0.194,4.63-1.373,c0.58-0.776,4.705-3.561,5.638-3.938c2.118-0.855,2.516-2.831,2.328,1.321c-0.171,3.777,3.012,3.336,6.233,4.145,c4.234,1.063,6.898-0.996,10.682-1.528l3.776-1.217l0,0l6.053,2.072c2.594,1.674,5.818,3.048,7.759,5.492,c1.832,2.307,3.574,6.926,3.931,9.818c1.654,6.255,5.866,16.257,10.449,20.828c0.391,1.738,3.412,3.562,4.293,5.336,c1.653,3.328-0.012,9.951,3.233,12.098c2.379,1.574,8.082,2.604,9.518,5.129l0,0l0.259,1.684l2.923,5.777,c-0.111,1.703,2.554,4.288,4.061,4.663c3.502,0.871,7.316-1.335,8.82,3.316c1.181,3.653,1.649,7.247,3.44,10.828l0.983,1.684l0,0,l1.267,3.393c0.318,0.989,0.693,1.643,0.44,2.668c-2.005,0.507-2.702,0.526-0.879,2.487c3.283,3.532,11.574,6.976,9.492,12.719,c-0.602,0.872-2.419,7.516-2.147,8.549c0.504,1.912,3.82,2.072,4.371,4.948c1.006,5.255-4.557,3.116-6.932,3.342,c-1.485,0.141-1.339,2.004-2.923,2.409c-2.152,0.552-2.085,1.495-3.233,3.419c0.261,1.623-1.366,4.54-2.819,5.362,c-3.058,1.729-5.88-1.548-8.613-2.072c-1.571-0.301-3.311,0.254-4.63,1.166c-1.79,1.238-2.089,0.585-3.879-0.311l-9.078,0.855,c-1.092,0.103-5.233,1.085-4.914,2.746c0.144,0.752,0.723,1.308,0.905,2.021c0.119,0.466-0.771,1.38-1.009,1.813,c-0.44,0.802,1.753,2.079,0.698,3.264c-0.564,0.633-1.981-0.064-2.742,0.7c-2.396,2.403-6.193-0.22-9.518-0.259,c-1.299,0.377-3.86,0.387-5.018-0.155c-1.366-0.641-1.28-2.272-3.078-2.72c-1.839-0.458-3.899,0.804-5.794,0.389,c-2.279-0.5-1.943-1.664-2.897-3.342l-1.216-0.7l0,0l-1.655-1.606c-1.132-0.99-2.131-2.068-3.466-2.772,c-1.201-0.633-2.766-1.166-3.724-2.124c-1.833-1.833-4.788-5.5-5.043-8.16c-0.743-2.745-1.283-4.807-3.207-6.917,c-1.945-2.134-2.664-2.833-5.147-4.197c-0.966-0.531-0.328-3.177-0.724-4.145c-0.389-0.95-2.671-5.277-2.587-5.855,c-2.185-4.935-2.284-11.297-5.949-15.673c-0.973-1.162-2.73-2.905-3.13-4.326c-0.328-2.667-3.164-7.534-4.423-10.051,c-1.581-3.162-4.826-2.722-7.501-4.507c-0.379-0.253-2.54-3.916-2.69-4.404c-0.291-0.945,0.303-1.812-0.052-2.953,c-0.433-3.429-3.053-2.098-5.147-2.901c-0.646-0.248-1.361-0.855-2.043-0.933c-1.13-0.129-2.121,0.336-3.207,0.544,c-0.957,0.183-3.126-0.637-4.086-0.933c-1.96-0.604-0.975-3.524-2.483-4.352c-1.479-0.813-4.54-3.955-2.586-5.751l0,0l3.114-0.605,c2.433,0.3,3.768,0.755,6.197,0.112c1.57-0.415,2.402-2.306,3.776-2.15c2.228,0.253,5.268-2.741,4.966-5.026,c-0.165-1.244-1.443-2.187-0.543-3.238c0.842-0.983-0.442-2.386-1.19-3.135c-0.143-0.279-0.336-0.493-0.336-0.803,c1.269-0.429-0.155-1.643-0.155-2.202c0-0.605,4.579,0.197,5.121,0.984c0.409,0.594,0.98,0.934,1.629,1.088,c1.478,0.351,1.126,2.046,2.819,2.046c4.777,0,7.105-1.412,6.13-6.372L217.268,333.997L217.268,333.997z", "name": "Fars"},"38": {"path": "M253.555,305.502c0.415-1.43-1.371-3.374-1.371-5c0-1.245-0.018-2.551,0.233-3.756c0.294-1.41,0.881-3.158,1.034-4.559,c1.074-3.819,1.61-8.519,0.776-12.486c-0.383-1.825-0.751-3.813,0.465-5.414c1.005-1.322,3.408-0.457,4.733-1.788,c2.043-1.8,3.163-3.808,6.337-3.808c4.46,0,8.005,2.367,12.208,2.176c4.577-0.208,8.73-3.341,12.648-5.311,c1.549-0.049,4.662-1.579,6.544-1.891c6.23-1.034,15.904-2.45,16.797-10.207c0.955-0.939,2.189-0.182,3.223-1.735,c0.484-0.726,0.283-1.669,0.776-2.435c0.749-1.164,1.906-2.208,3.207-2.642c1.616-0.538,2.76-1.722,4.293-2.487l2.948-0.57l0,0,c0-8.078-1.04-15.524-1.81-23.522l0,0l-27.623-0.466c-9.167,0-18.756-1.201-27.778-2.642c-6.502-1.039-15.626,0.091-19.064-6.419,c-1.116-0.173-2.22-0.357-3.309-0.55c-3.098-1.123-6.007-3.238-9.337-3.238c-3.639,0-8.011,1.021-11.432,0.13,c-1.074-0.28-4.751-1.938-5.38-2.824c-0.135-0.016-0.291-0.087-0.414-0.13l0,0l-1.526,1.036c-5.191,3.792-21.286-2.925-21.286,6.451,c0,1.062-0.474,5.235-1.293,5.88l0,0c0.37,0.679,0.828,1.089,1.371,1.632c1.367-0.275,0.454,2.673,0.336,3.057,c-0.592,1.937-2.845,2.238-3.285,4.093c-0.216,0.911,0.459,1.832-0.026,2.746c-0.648,1.223-1.773,0.25-2.768,0.285,c-1.426,0.049-3.396,2.248-4.63,3.005c-0.981,0.613-3.196,1.621-4.397,1.425c-1.148-0.188-2.361-0.36-3.337,0.441,c-2.222,1.823-4.838,0.92-7.345,2.539c-1.581,1.021-2.781,2.477-4.242,3.627l0,0c-0.12,0.478-0.537,0.916-0.854,1.295,c-0.268,0.322-0.955,0.522-0.569,1.062c0.482,0.674,1.838,0.306,1.759,1.347c-0.061,0.812-0.621,1.495-0.879,2.254,c-0.529,0.526-1.804,2.985-1.992,3.652c-0.325,1.157,0.646,3.212-1.293,3.212c-1.045,0-2.163,0.976-2.974,0.751,c-2.375-0.659-0.681,0.523-2.173,1.011c-0.608,0.198-1.676,0.141-1.914,0.855c-0.473,1.42,1.912,3.217,0.88,4.715,c-1.437,2.085-4.202,0.326-5.638,3.756l0,0l1.865,4.559c2.63,0.308,4.344-1.291,6.751,0.44c1.244,0.894,0.867,1.603,0.077,2.668,c-0.881,1.189-1.17,1.552-0.879,3.031l0,0c2.466,0,4.037-3.534,6.362-3.394c0.784,0.047,1.32,0.876,2.224,0.622,c1.467-0.413,1.877-1.967,3.44-0.725l2.509,1.995c0.978,0.777,1.322,0.148,2.354-0.052c1.179-0.229,1.692,1.501,2.819,0.751,c1.043-0.694,1.82-1.549,2.974-2.124c2.564-1.743,4.101-0.014,6.44-0.829c0.914-0.318,1.075-1.361,1.836-1.658,c1.99-0.775,2.173,1.526,2.173,2.824c0,1.969,1.85,0.588,1.965,1.606c0.107,0.943-0.243,0.966,0.388,1.839,c1.918,2.655-2.547,3.075-0.078,5.544c0.43,0.729,2.437,1.329,3.207,2.021l5.276,4.741c1.016,0.913,2.238,2.067,1.862,3.523,c-0.215,0.831-1.585,1.542-1.474,2.513c0.178,1.562,1.91,1.013-0.362,2.461c-2.13,1.357,0.783,2.475,1.009,3.601,c-0.089,1.361-0.114,0.655-1.293,1.14c-0.959,0.394-0.972,3.462-1.112,4.378c-0.7,4.573,6.015,10.857,2.586,15.129l0,0,c-0.022,3.177,1.03,6.135,3.516,8.264c1.958,1.677,5.03,3.063,6.647,5.077l0,0l2.716-0.803c0.632-1.181-0.157-2.267-0.233-3.445,c-0.142-2.215,0.132-4.169,1.319-6.088c1.409-2.278,2.096-3.955,2.431-6.684c0.258-0.586,1.345-4.213,0.362-4.456,c-0.103-0.408-1.818-0.376-2.199-0.466c-1.501-0.356-3.013-1.063-3.906-2.461c-1.75-2.742,0.776-2.043,2.509-1.503,c1.323,0.412,3.749-0.194,4.63-1.373c0.58-0.776,4.705-3.561,5.638-3.938c2.118-0.855,2.516-2.831,2.328,1.321,c-0.171,3.777,3.012,3.336,6.233,4.145c4.234,1.063,6.898-0.996,10.682-1.528L253.555,305.502L253.555,305.502z", "name": "Isfahan"},"39": {"path": "M357.141,131.213l1.5,0.518c1.201,0,2.353-0.958,3.543-0.958c1.058,0,1.796-0.148,2.716,0.44c0.566,0.363,0.926,0.958,1.423,1.295,c0.319,3.567-1.947,5.103-2.923,8.29c-1.009,3.293,1.769,6.551,0.905,9.637c1.001,2.417,1.186,4.622,2.845,6.684,c1.243,1.545,3.459,2.404,4.966,3.808c3.294,3.07,6.463,5.144,1.474,9.067c-4.038,4.055-1.004,8.803-7.552,10.492,c-4.116,1.061-6.406,2.549-8.692,5.145c-3.741,2.67-6.647,6.623-9.853,9.828l-0.258,1.606l0,0c5.691,0,10.888,2.374,17.277,1.347,c5.401-0.868,4.617-7.748,9.725-9.067c6.543-1.689,14.046-0.157,14.949,7.72c0.271,2.362-0.23,7.063,2.379,8.134,c2.921,1.2,2.47,4.386,1.19,6.632c-1.142,1.048-0.904,4.496,0.362,5.44c3.082,2.298,6.276-0.777,9.466-0.777,c1.2,0,2.271,0.77,2.949,1.71c0.444,0.615,2.561,2.072,2.535,2.176c2.966,1.111,9.807-0.762,13.423-0.311,c1.708-0.158,3.346,0.518,5.483,0.052c1.669-0.364,3.564-0.829,5.276-0.829c2.427,0,1.829,2.266,4.63,1.684l3.362-0.699,c1.19-0.248,1.962-1.252,3.181-1.373c2.703,0,3.841,1.219,6.311,1.865c4.416,1.154,8.082,3.714,12.337,4.974,c3.698,1.095,7.854-3.462,12.023-3.135l0,0l-0.307-1.709l1.138-3.342l3.31-3.083l0.181-1.114l6.698,0.207,c0.138-0.035,0.072-1.102-0.181-1.166c-0.105-0.535-1.526-1.057-1.526-1.528c0-1.014-0.75-1.308-0.75-2.254,c0-0.817,0.294-0.892-0.414-1.477c-0.277-0.229-2.247-1.188-1.992-1.477c0.142-0.162,2.381-0.855,2.664-0.855,c2.659,0,1.529-1.676,2.845-2.668c2.708,1.646,1.34-3.457,2.948-3.989c0-0.052-0.014-0.039,0.026-0.052,c0-0.058,0.026-0.071,0.026-0.13c0.1-0.033,0.045-0.092,0.052-0.285l0.978-2.085c-0.038-0.15-0.081-0.314-0.124-0.48,c-0.074-0.28,0.502-1.561,0.285-1.658c-0.024-0.01,0.023-0.066,0-0.078c-0.154-0.076,0.207-2.135,0.207-2.642,c0-1.063,1.225-1.48,0.931-2.409c-0.193-0.611-0.548-1.133,0.052-1.736c0.914-0.918,0.924-0.748,0.362-2.021,c-0.656-1.484-1.603-1.195-0.672-2.85c0.414-0.738-0.947-1.38-0.75-2.15c0.203-0.796,1.501-0.649,2.121-0.699,c1.509-0.124,0.501-1.818,0.776-2.539c0.737-1.932,1.302-3.421,2.354-5.129c0.616-1,0.605-2.495,0.179-3.792l0,0,c-0.223-0.68-0.56-1.305-0.98-1.777c-1.113-1.249,0.704-2.446,0.388-3.575c-0.102-0.366-0.052-1.49,0.207-1.969,c0.401-0.742-0.453-3.06-0.672-3.704c-0.507-1.488-0.842-0.742-2.328-0.855c-1.296-0.098-0.526-1.579,0.026-1.839,c0.304-0.144,0.75-2.21,0.828-2.228c0.564-0.128,0.683-1.605,0.983-2.15c1.195-2.17-0.536-3.527-0.983-5.751,c-0.136-0.679-0.75-0.593-0.75-1.347c0-0.489,0.232-0.964-0.052-1.373c-0.892-1.287,0.325-1.477,0.207-2.513,c-0.051-0.451-0.332-1.15,0.336-1.503c0.125-0.066,0.093-0.359-0.026-0.414c-0.966-0.448,0.29-2.215,0.517-2.772,c0.398-0.977-0.546-2.269-1.118-3.328l-8.917,0.349l-14.122-0.104l-3.466-5.647c-0.46-0.749-0.245-1.038-1.19-1.58,c-1.321-0.757-1.156-1.516-2.069-2.539c-0.892-1.601-0.949-3.564-2.587-4.637c-2.051-1.344-3.448,0.594-5.25-2.124,c-1.44-2.172-2.246-0.217-3.414-0.959c-0.615-0.391-0.902-0.941-1.759-0.751c-1.213,0.269-0.629,0.96-2.173,0.155,c-1.428-0.745-1.132-0.371-1.604-1.917c-0.378-1.24-1.474,0.133-1.474-1.839c0-0.409-1.664-2.493-2.095-2.59,c-1.368-0.824-0.68-1.83-1.138-3.109c-0.48-1.338,1.378-1.257,0.026-2.357c-0.312-0.254-0.44-1.673-0.595-2.176,c-0.217-0.704-2.269,0.259-2.897,0.259c-0.379,0-3.637-2.068-3.957-2.409c-1.099-1.172-3.878-2.807-5.505-2.943,c-1.392,0-2.308-1.51-3.531-1.51c-0.238,0.714,0.149,2.755-1.429,1.572l-0.306,0.163c-0.592,2.961-5.027-4.009-6.715-0.633,c-1.251,2.503-6.112,0.227-8.245-0.306c-0.217-1.084-0.338-4.082-1.796-4.082c-0.621,0-1.167-0.042-1.673-0.129l0,0l0.44,4.19,c-0.088,0.948,1.251,5.815,1.966,6.424c-0.014,0.049,1.422,2.678,1.422,3.627c0,2.799-0.193,3.253,2.147,5,c2.965,2.213,0.299,2.318,0,4.689c0.622,1.68-1.981,0.687-2.483,2.772c-0.218,0.906-0.177,1.753,0.491,2.513,c0.11,0.126,1.745,1.495,0.983,1.684c-0.115,0.467-3.774,2.331-4.397,2.643c-3.946,1.97-2.929,3.656-4.707,6.942,c-1.914,3.538-4.823,1.297-7.371,0.026l-10.164-5.259l-13.941-6.217l-11.898,7.823L357.141,131.213L357.141,131.213z", "name": "Razavi Khorasan"},"40": {"path": "M337.484,105.127c-2.603,0-4.637,6.755-5.276,8.73c-0.574,1.774-1.697,2.534-2.095,4.611c-0.323,1.688-0.022,3.997-0.181,5.777,c-0.425,4.993-11.137,1-14.82,1.477c-6.764,0.875-7.284,7.656-12.906,9.999c-1.299,0.345-2.688,1.319-4.061,0.933,c-1.748-0.492-3.578-1.065-5.457-0.907l-1.216,0.44l0,0l-3.828-2.564l-4.371-2.331l-2.173-1.295l0.724-2.228l2.172-1.503,l0.179-1.697l0,0c1.196-0.75,2.019-2.026,2.019-3.666c0-0.638,0.176-1.745-0.414-2.202c-1.087-0.843-0.724-0.593-0.724-1.969,c0-0.435-0.759-2.64-1.086-2.901c0-2.029-0.968-4.843-1.345-6.813c-0.135-0.703-0.238-1.46-0.319-2.246l0,0l9.653,0.876l1.143-1.082,l2.204,0.061l1.347-0.408l2.2-2.169c0.412-0.187,0.576,0.015,0.918-0.194c0.119-0.073,0.217-0.293,0.349-0.389,c0.192-0.137,1.65-0.816,1.733-0.816c0.619,0,1.253,0.631,1.914,0.79c0.856,0.206,1.546-0.597,1.94-1.217,c0.242-0.382,0.398-1.003,0.945-1.003c0.232,0,0.698-0.087,0.905-0.544c0.247-0.544,1.086-3.311,0.724-3.782,c-1.056-1.375,0.694-3.65,1.242-5.077c0.357-0.932,1.636-0.407,2.328-1.528c0.272-0.441,0.725-0.907,1.267-0.907,c0.954,0,0.761-0.768,1.345-1.192c0.556-0.403,1.164-1.653,1.68-2.21c0.38-0.41,1.046-1.019,1.513-1.296,c0.428-0.254,0.825,0.113,1.255-0.285c0.319-0.296,0.44-0.039,0.789-0.039c0.474,0,0.736-0.712,1.125-0.972,c0.516-0.344,1.31-0.667,1.915-0.613c0.614-1.376,2.826-1.114,3.609-2.314c1.267-1.939,1.284-0.075,2.123-0.755,c1.265-1.026,3.969-0.462,5.633-0.735c1.082-0.177,1.342-0.911,2.408-0.612c0.501,0.141,0.96-0.415,1.449-0.143,c0.393,0.218,0.758,0.524,1.143,0.755c2.828,1.515,5.116,0.388,8.021,0.388c0.638,0,1.55,0.68,2.053,0.853l0,0l-0.316,3.236,c-0.217,0.929-0.771,1.902-0.931,2.85c-0.159,0.946,0.091,1.844-0.233,2.798c-0.513,1.51-1.895,3.441-0.776,5.104,c0.822,1.22,2.872,1.077,3.724,2.228c1.106,1.491,0.172,3.851-1.63,4.196c-1.572,0.301-5.485-1.445-5.949,0.855l-1.707,0.674,c-0.873,0.395-1.448,1.025-1.448,2.021c0,0.461,0.014,0.71-0.259,1.088c-0.144,0.199-0.619,0.457-0.672,0.674,C338.53,104.117,337.759,104.714,337.484,105.127L337.484,105.127z", "name": "Golestan"},"41": {"path": "M337.484,105.127c0.225,2.342,2.438,1.913,3.078,3.989c0.353,1.148,0.71,3.203,2.354,2.901c0.857-0.157,2.954-0.161,3.466,0.7,c0.893,1.503-2.429,0.831-2.767,2.59c-0.218,1.138,2.136,1.597,1.371,3.627c-1.496,3.874,0.802,5.308,3.311,7.823,c1.006,1.009,2.256,2.464,3.518,3.057c1.325,0.622,3.015,0.001,4.423,0.881l0.905,0.518l0,0l1.5,0.518,c1.201,0,2.353-0.958,3.543-0.958c1.058,0,1.796-0.148,2.716,0.44c0.566,0.363,0.926,0.958,1.423,1.295,c0.319,3.567-1.947,5.103-2.923,8.29c-1.009,3.293,1.769,6.551,0.905,9.637c1.001,2.417,1.186,4.622,2.845,6.684,c1.243,1.545,3.459,2.404,4.966,3.808c3.294,3.07,6.463,5.144,1.474,9.067c-4.038,4.055-1.004,8.803-7.552,10.492,c-4.116,1.061-6.406,2.549-8.692,5.145c-3.741,2.67-6.647,6.623-9.853,9.828l-0.258,1.606l0,0l-3.983,5.596,c-1.651,3.307-4.342,7.019-5.225,10.621c-0.708,2.888-1.148,6.217-4.397,6.217c-1.517,0-5.844-0.069-7.035,0.57l0,0l-27.623-0.466,c-9.167,0-18.756-1.201-27.778-2.642c-6.502-1.039-15.626,0.091-19.064-6.419c-1.116-0.173-2.22-0.357-3.309-0.55,c-3.098-1.123-6.007-3.238-9.337-3.238c-3.639,0-8.011,1.021-11.432,0.13c-1.074-0.28-4.751-1.938-5.38-2.824,c-0.135-0.016-0.291-0.087-0.414-0.13l0,0l0.181-1.269c0.563-0.701,1.701-0.776,2.017-1.606c0.351-0.921,0.28-1.787,0.336-2.772,c0.119-2.102,1.907-4.245-0.181-5.855l0,0c0.304-0.535,0.796-1.103,1.009-1.658c0.158-0.412-0.104-1.25-0.104-1.735,c0-1.084,1.528-2.679,2.224-3.471c2.782-1.395-2.078-5.21-3.052-6.347c-2.83-3.305-0.104-4.809-0.104-8.082,c0-1.616-0.641-4.264,1.837-2.254c0.286,0.232,1.642,0.065,1.655,0.104c0.065,0,2.116,1.246,2.793,1.425,c1.039,0.274,2.131,1.494,2.897,2.202c1.981,1.831,3.511,2.278,6.078,1.451c2.163-0.539,4.442,1.847,6.518,2.28,c2.245,0.468,4.938-0.205,7.113-0.751c1.999-0.502,8.456-6.824,8.613-8.886c0.187-2.468-1.707-4.971-1.448-7.668l0,0l1.81-0.311,c1.38,0,2.757,0.573,3.802-0.725c1.208-1.501,1.914-1.191,3.595-0.958c3.958,0.548,5.743-0.296,7.734-3.73,c1.192-2.057,1.516-2.765,3.362-4.171c2.396-1.093,1.49-4.078,2.121-6.269c0.468-1.624,2.374-4.586,4.112-5.025,c0.018-0.072,0.307-0.231,0.31-0.233l3.983-1.425l0,0l1.216-0.44c1.879-0.158,3.709,0.415,5.457,0.907,c1.373,0.387,2.761-0.588,4.061-0.933c5.622-2.343,6.142-9.124,12.906-9.999c3.683-0.477,14.395,3.516,14.82-1.477,c0.159-1.779-0.142-4.089,0.181-5.777c0.398-2.077,1.521-2.837,2.095-4.611C332.847,111.882,334.881,105.127,337.484,105.127,L337.484,105.127z", "name": "Semnan"},"42": {"path": "M337.484,105.127c0.225,2.342,2.438,1.913,3.078,3.989c0.353,1.148,0.71,3.203,2.354,2.901c0.857-0.157,2.954-0.161,3.466,0.7,c0.893,1.503-2.429,0.831-2.767,2.59c-0.218,1.138,2.136,1.597,1.371,3.627c-1.496,3.874,0.802,5.308,3.311,7.823,c1.006,1.009,2.256,2.464,3.518,3.057c1.325,0.622,3.015,0.001,4.423,0.881l0.905,0.518l0,0l-0.44-5.88l11.898-7.823l13.941,6.217,l10.164,5.259c2.548,1.271,5.457,3.512,7.371-0.026c1.778-3.286,0.761-4.973,4.707-6.942c0.623-0.311,4.282-2.176,4.397-2.643,c0.762-0.188-0.872-1.558-0.983-1.684c-0.668-0.759-0.71-1.606-0.491-2.513c0.502-2.085,3.105-1.092,2.483-2.772,c0.299-2.371,2.965-2.476,0-4.689c-2.339-1.746-2.147-2.2-2.147-5c0-0.949-1.436-3.578-1.422-3.627,c-0.714-0.609-2.054-5.476-1.966-6.424l-0.44-4.19l0,0c-1.2-0.205-2.184-0.658-3.449-1.381c-1.145-0.52-2.025-1.039-3.021-1.674,c-0.942-0.6-1.756,1.25-2.306-0.163c-0.25-0.642-0.753-1.097-1.408-0.918c-0.737,0.2-0.807-0.832-2.041-0.653,c-0.925,0.134-3-0.819-3.408-0.674c-0.373,0.133-1.394,0.838-1.694,0.755c-0.549-0.152-3.957-1.688-4.102-2.123h-0.041,c-0.314-0.941-0.225-1.184-0.225-2.265c0.407-1.356-0.181-3.258-1.429-3.98c-0.576-0.334-0.687-0.752-0.653-1.408,c0.06-1.151-2.582-5.028-3.817-2.939c-1.07,1.811-1.805,2.905-3.857,2.796c-1.212-0.064-0.66-1.075-1.572-1.184,c-1.355-0.162-2.4,0.134-3.755-0.367c-0.762-0.282-2.692-2.33-3.061-2.102c-1.151,0.71-1.043,0.768-2.429,0.898,c-0.573,0.115-0.897,0.939-1.51,0.939c-0.506-1.519-2.888-1.266-4.388-0.959c-1.57,0.321-2.677,1.887-3.674,3.082,c-0.232,0.278,0.322,2.216,0.265,2.898c-0.111,1.337-2.017,0.666-3.184,1.184c-0.064,0.028-0.158,0.015-0.274-0.025l0,0,l-0.316,3.236c-0.217,0.929-0.771,1.902-0.931,2.85c-0.159,0.946,0.091,1.844-0.233,2.798c-0.513,1.51-1.895,3.441-0.776,5.104,c0.822,1.22,2.872,1.077,3.724,2.228c1.106,1.491,0.172,3.851-1.63,4.196c-1.572,0.301-5.485-1.445-5.949,0.855l-1.707,0.674,c-0.873,0.395-1.448,1.025-1.448,2.021c0,0.461,0.014,0.71-0.259,1.088c-0.144,0.199-0.619,0.457-0.672,0.674,C338.53,104.117,337.759,104.714,337.484,105.127L337.484,105.127z", "name": "North Khorasan"},"43": {"path": "M444.147,339.903l-3.027,12.227l-1.19,9.326c-0.282,1.952-0.828,3.059-1.396,4.922c-1.055,3.458-1.247,4.156,2.121,6.062,c1.804,1.021,0.922,5.156,1.293,7.046c-0.426,2.423,0.592,4.955-0.155,7.616c-0.587,2.089-3.388,4.112-3.388,6.191,c0,2.785,0.33,5.482,1.914,7.745c-0.041,0,0.297,1.091,0.233,1.425c-0.676,3.491-8.794,6.688-11.897,7.461,c-0.644,0.16-3.588,0.974-2.173,2.15c1.863,1.547,4.026,1.193,4.733,3.938c0.723,2.803-1.26,3.829-3.13,5.414l-1.061,1.192,c0,6.92,1.652,13.112-1.19,19.739c-1.174,2.668-2.626,9.347-1.5,12.15c0.946,2.356,0.414,3.369,0.414,5.751,c0,2.643,1.734,3.138,3.336,4.74c1.439,1.25,1.566,5.459-0.207,6.399c-1.267,0.672,1.609,2.62,1.552,3.627,c-0.04,0.704-1.984,0.734-2.276,1.865c-0.822,3.189,2.34,3.672,2.043,5.518c-0.226,1.409-3.004,2.734-2.561,4.792l-0.052,2.357,l-0.892,1.552l0,0c-0.363,0.678-0.906,1.191-0.815,2.085c0.138,1.35,0.538,0.798,1.448,1.23c0.455,0.217,0.485,0.901,0.737,1.296,c1.051,1.641,3.309,2.18,4.41,3.938c0.435,0.491,0.905,0.898,1.034,1.556c0.245,1.255-0.29,1.526,0.957,2.202,c0.517,0.281,1.246,0.447,1.19,1.166c-0.094,1.21,0.734,1.207,1.112,2.254c0.276,0.762,0.951,2.677,0.951,3.504l0,0,c0.978-0.299,1.97-0.628,2.954-0.861c5.065-1.203,5.112,2.658,9.234,2.15c0.753-0.219,4.674-0.268,5.276,0.104,c0.454,0.281,0.944,1.038,1.423,1.425c0.142,0.115,1.075-0.674,1.448-0.777c3.021-0.838,4.624,0.379,6.932,1.269,c0.683,0.263,0.823-1.251,1.526-1.684c2.061-1.269,1.901,1.338,3.362,1.658c0.624,0.137,2.769,0.872,3.13,0.622,c0,0-1.371-1.378-1.371-2.383c0-1.802,3.09-2.096,4.319-1.839c1.371,0.286,2.676,2.711,1.474,3.108,c1.237,1.244-0.647,2.435,2.949,2.435c2.861-0.279,8.055,2.128,11.147,2.564c1.518,0.215,1.46,1.122,2.431,1.891,c2.043,1.617,9.13,3.197,9.13-0.052c0-2.577,2.02-1.763,3.605-1.664l0,0l1.024-3.827l0.517-10.906,c0.404-0.575,0.647-0.432,0.647-1.14c-0.063-0.021,1.397-1.15,1.397-1.839c0.043-0.014,0.057-0.052,0.129-0.052,c0.069-0.204,1.114,0.34,1.164,0.492c0.941,0,1.422-0.939,1.862-1.529l-0.621-2.357c-0.257-0.975,0.916-0.862,1.19-1.477,c0.419-0.942-1.469-1.077-1.552-2.254c-0.056-0.803,0.535-1.047,0.776-1.684c0.191-0.505-0.269-1.093-0.078-1.736,c0.898-1.631,0.773-4.105,1.474-5.829c0.232-0.571,3.217-0.458,3.88-2.461c1.215,0,5.431,3.135,5.431,1.14,c0-0.594,0.198-1.401,1.009-1.088c0.627,0.242,0.285-4.274,0.931-4.274c0.544-1.644,1.234-2.836,3.388-2.616,c0.877,0.09,0.647-1.142,1.655-1.399c0.735-0.188,2.196,0.186,3.104,0.103c1.647-0.039,1.818-1.088,3.207-1.088,c0.19,0.584,2.058-0.806,2.276-1.217c0.418-0.79,4.329,0.53,5.458,0.104c1.103-0.418,8.675,0.749,7.138-1.813,c-0.245-0.408,0.543-2.76,0.077-3.912c-0.407-1.007,0.686-0.814,1.345-0.881c1.012-0.103-0.026-0.991-0.026-1.58,c0.072-0.024,0.251-0.205,0.336-0.233v-0.078l0.155-2.15l-0.026-3.756c0.52-1.282,1.3-0.554,2.069-1.166,c0.376-0.299-1.193-3.503-1.759-3.549c-1.674-0.137-0.931,0.041-2.095-0.984c-0.423-0.372-1.296,0.635-1.81,0.803,c-0.724,0.236-0.975-0.244-1.629-0.207c-0.936,0.053-1.685,0.907-2.871,0.907c-0.44,0-0.825,0.233-1.241,0.233,c-0.53,0-0.588-0.516-0.905-0.596c-0.023-0.092-0.118-0.057-0.181-0.103c-0.701,0.42-0.807,0.711-1.655,0.544,c-0.071-0.289-2.205-1.051-1.474-1.658c2.809-2.333-0.882-1.798,0.569-3.653c1.26-1.61,1.293-2.915,1.293-4.87l-0.414-7.953,l-1.94-8.6l0.88-8.341l-4.5,0.777c-2.099,0.173-2.205-0.202-3.284-1.813c-0.574-0.857-0.693-2.445-1.811-2.616,c-1.164-0.178-1.307-0.757-2.328-1.192c-0.831-0.354-2.33-0.655-3.233-0.829c-1.409-0.404-2.955-1.347-4.345-1.347,c-1.458,0-2.213-0.961-3.492-1.217c-0.806-0.161-2.04-0.081-2.664-0.673c-0.743-0.706-1.159-2.216-2.069-2.668,c-2.074-1.03-1.884-1.599-3.078-3.549c-0.299-0.489-1.801-0.856-2.431-1.736l-2.845-5.336c-0.141-0.719-0.448-1.798-1.267-1.891,c-1.195-0.136-0.432-0.984-0.103-1.399c0.4-0.506-0.604-0.737-0.672-1.036c-0.173-0.762,0.043-1.321-1.086-1.321,c-1.279,0-0.932-1.465-0.724-2.28c0.204-0.797-1.499-1.73-1.785-2.72c-0.213-0.738,0.517-0.968,0.233-1.71,c-0.222-0.578-0.212-1.488-0.388-2.021c-0.049,0-0.064,0.016-0.078-0.026c-0.26,0-0.457,0.103-0.724,0.103,c-0.123-0.372-0.677-0.425-0.698-1.088l-3.699-3.756l-8.509-10.854l0,0l25.89-31.371c-0.616-1.008,1.498-1.558,0.983-2.901,c-0.198-0.516-0.29-1.307-0.432-1.992l1.413-1.375l-0.181-3.963l-0.828-0.933l-0.207-2.124l-0.672-0.622l-0.052-3.471l-1.94-2.435,l-5.638-0.751l-11.505-1.794l0,0c0,1.14,0.876,2.604,0.876,3.763c0,1.028-0.49,1.696-1.164,2.409,c-0.523,0.555-0.605,1.567-1.112,1.969c-1.498,4.51-2.897,7.789-2.897,12.616c0,1.108,0.314,2.971,0.026,3.964,c0,1.973,0.361,3.519,0.646,5.388c0.136,0.889,0.58,3.786,1.061,4.43c-0.384,0.517-0.097,0.72-0.879,1.088,c-0.374,0.176-1.17,0.207-1.604,0.207c-1.095,0-2.285,0.088-3.337-0.181c-1.009-0.259-1.1-1.024-1.836-1.554,c-1.392-1.571-2.241-3.521-3.13-5.388c-0.905-1.899-2.542-1.796-3.828-3.083c-1.089-1.089-1.152-1.511-2.742-1.865,c-1.205-0.269-3.42-0.665-3.802-2.176c-1.545-0.39-2.357,1.444-3.957,1.295l-12.104,3.394l-2.897,0.44L444.147,339.903,L444.147,339.903z", "name": "Sistan&Baluchestan"},"44": {"path": "M298.791,366.275l0.259,1.684l2.923,5.777c-0.111,1.703,2.554,4.288,4.061,4.663c3.502,0.871,7.316-1.335,8.82,3.316,c1.181,3.653,1.649,7.247,3.44,10.828l0.983,1.684l0,0c1.398-0.75,5.471-0.186,6.751,0.699c2.265,1.568,4.853,6.44,7.656,5.984,c3.818-0.622,6.815-6.372,10.242-6.372c1.981-0.575,2.706,2.196,2.638,3.627c-0.134,2.807,0.531,5.67-0.026,8.342,c-0.628,3.011-2.267,4.882-0.285,7.668c0.323,2.5,8.182,7.464,10.604,7.823c3.551,0.527,6.755-1.85,8.897-4.507,c3.721-4.615,6.998-2.555,7.242,2.824c0.054,1.189,0.255,6.373,1.914,6.373c2.812,0,2.03-0.049,3.362,2.616l1.604,2.202,c0.531,0.729,2.942,2.696,2.095,3.653c-0.294,0.332-2.889,1.835-1.241,2.409c2.485,0.866,2.463,1.836,2.69,4.43l0.595,6.813,c-0.436,4.476-0.598,8.603,4.061,9.507c2.401,0.466,5.925,2.582,7.216,4.637c1.63,2.592,4.522-6.142,8.251-1.58,c1.164,1.423,3.195,2.45,4.164,3.912c0.238,0.359,0.775,2.229,0.258,2.487c-0.434,0.216-1.156-0.971-1.94-0.777,c-0.574,1.762,0.885,3.455-0.647,5.207c-0.686,0.715-0.166,2.013-0.776,3.005c-0.453,0.737-0.605,4.277-0.336,5.026,c0.272,0.758-0.396,2.525-0.853,3.212c-1.156,1.737,1.033,0.425,1.604,0.285c2.062-0.508,3.648,1.834,5.38,0.855,c0.345-0.195,1.341-1.639,1.836-0.829c0.579,0.946,1.098,0.917,2.043,1.269c0.376,0,2.433-0.58,2.095,0.44,c-0.302,0.911-0.533,0.728,0.026,1.502c0.436,0.603,0.291,3.427,1.138,3.368c0.509-0.036,0.857-0.596,1.5-0.596,c0.736,0,1.955,0.986,2.328-0.233c0.426-1.392,1.057-1.31,2.147-0.829c1.018,0.45,1.442,1.692,2.186,2.432l0,0l0.892-1.552,l0.052-2.357c-0.444-2.059,2.334-3.383,2.561-4.792c0.296-1.845-2.866-2.328-2.043-5.518c0.292-1.131,2.236-1.161,2.276-1.865,c0.057-1.007-2.819-2.955-1.552-3.627c1.773-0.94,1.646-5.149,0.207-6.399c-1.602-1.602-3.336-2.097-3.336-4.74,c0-2.382,0.533-3.395-0.414-5.751c-1.126-2.802,0.326-9.481,1.5-12.15c2.842-6.627,1.19-12.819,1.19-19.739l1.061-1.192,c1.869-1.585,3.852-2.612,3.13-5.414c-0.708-2.745-2.871-2.39-4.733-3.938c-1.415-1.176,1.529-1.99,2.173-2.15,c3.104-0.772,11.221-3.97,11.897-7.461c0.065-0.334-0.274-1.425-0.233-1.425c-1.584-2.264-1.914-4.961-1.914-7.745,c0-2.079,2.802-4.102,3.388-6.191c0.747-2.661-0.271-5.193,0.155-7.616c-0.371-1.891,0.511-6.025-1.293-7.046,c-3.368-1.906-3.176-2.604-2.121-6.062c0.569-1.863,1.114-2.97,1.396-4.922l1.19-9.326l3.027-12.227l0,0l-5.458-8.652l-5.845-9.844,l-19.76-9.326l-12.932-6.424l-6.104-2.176l0,0l-7.785-3.471c-3.533,0-7.423-3.889-10.708-5.052,c-3.807-1.348-6.55-3.338-10.785-3.601l-2.509-0.156l0,0c-0.091,0-0.076,0.035-0.129,0.052c0,1.654-3.957,3.954-5.276,3.316,c-2.036,1.021-3.243,2.305-4.785,3.938c-1.384,1.466-3.182,2.129-4.888,3.083c-3.035,1.697-7.507,2.231-10.164,4.378,c-1.909,1.542-1.038,3.974-1.449,6.165c0,3.25,1.695,11.048-3.207,12.072c-3.162,0.66-9.996,1.105-12.88-0.389,c-4.115-0.452-8.991,3.262-12.622,2.565c-4.096-0.786-5.901,1.244-7.889,4.87c-0.388,0.708-1.611,5.959-0.776,6.165,c0.039,0.27,0.901,1.331,1.19,1.373c0.57,1.428,1.958,2.225,1.837,4.119c0.497,1.361-0.012,4.509,1.034,5.207,c1.747,1.167,2.46-0.234,2.328,2.668c-0.186,4.092-2.979,7.959-0.853,11.994c1.458,2.767,0.491,1.793-2.043,2.28,C300.658,365.255,299.682,365.797,298.791,366.275L298.791,366.275z", "name": "Kerman"},"45": {"path": "M356.623,456.756c-0.599-0.279-1.332,0.137-1.332,0.842c0,0.331,0.126,0.688,0.414,0.881c0.301,0.201,0.581,0.104,0.918,0.104,c0.006-0.024,0.346-0.207,0.401-0.246c0.153-0.111,0.362-0.376,0.362-0.57c0-0.158-0.094-0.79-0.298-0.79L356.623,456.756,L356.623,456.756z M262.684,466.29c-0.279,0.065-1.269-0.738-1.513-0.933c-0.111-0.089-0.637-0.588-0.556-0.751,c0.042-0.085,0.56,0.13,0.647,0.155c1.065,0.306,2.339,0.458,3.44,0.674c0.475,0.093,2.612,0.106,2.612,0.712,c-1.138,0.363-2.346,0.389-3.569,0.389L262.684,466.29L262.684,466.29z M274.361,470.772c-0.505,0.118-1.321-0.206-1.177-0.803,c0.066,0,0.251-0.06,0.323-0.078c0.102-0.026,0.22,0.056,0.297,0.091c0.353,0.157,0.985-0.069,1.306,0.155,c0.504,0.351,0.054,0.595-0.414,0.635H274.361L274.361,470.772z M283.556,475.72c-0.556,0.126-1.299-0.635-1.397-1.14,c-0.133-0.689,0.726-0.755,1.151-0.855c1.069-0.251,2.033,0.273,2.587,1.179c0.724,1.183-0.839,0.946-1.565,0.946L283.556,475.72,L283.556,475.72z M314.775,496.6c-0.235-0.126-0.429-0.501-0.285-0.752c0.085-0.147,0.204-0.372,0.401-0.401,c0.224-0.034,0.519,0.387,0.595,0.557c0.138,0.309-0.249,0.513-0.504,0.609L314.775,496.6L314.775,496.6z M300.058,495.395,c-0.274,0-0.576-0.139-0.699-0.389c-0.1-0.203,0.293-0.308,0.427-0.375c0.238-0.119,0.571-0.439,0.828-0.259,c0.086,0.06,0.082,0.288,0.09,0.402c0.004,0.061,0.159,0.36,0.207,0.376c0,0.039,0.013,0.083,0.013,0.13,c-0.069,0.023-0.152,0.105-0.246,0.13c-0.133,0.035-0.282,0.085-0.414,0.103L300.058,495.395L300.058,495.395z M299.553,483.504,c-0.084-0.251-0.349-0.602-0.349-0.894c0-0.72,1.083-0.778,1.28-0.181c0.086,0.261-0.142,0.674-0.142,0.971,c0,0.256,0.008,0.44-0.052,0.673c-0.147,0-0.517-0.1-0.556-0.259L299.553,483.504L299.553,483.504z M329.518,469.169,c-0.052,0.155-3.32,1.446-3.698,1.477c-0.681,0.056-1.802,0.455-2.431,0.699c-0.93,0.361-1.393-0.414-1.966-0.414,c0,0.929,0.439,2.035,0.543,2.953c0.151,1.323,1.397-0.567,1.681-0.544c3.119,0.256,6.097-0.781,9.104-2.642,c1.375-0.851,7.229-3.112,7.733-1.062c-2.508,0.83-2.318,4.07-0.052,0.933c1.353-1.873,3.418-2.591,4.966-3.989,c0.909-0.822,1.946-3.85,2.949-4.015c0.67-0.11,3.512-1.361,1.604-1.995c-4.017-1.335-6.343,2.251-9.958,2.435,c-2.146,0.109-5.885-3.097-4.138,0.803c0.888,1.982-0.965,2.012-1.578,0.414c-0.188-0.49,0.283-0.999-0.104-1.632,c-0.156-0.256-2.774,3.013-1.371,3.756c2.682,1.422-1.397,1.363-2.561,2.383L329.518,469.169L329.518,469.169z M353.455,463.453,l0.556-0.104c0.368-0.185,0.988,0.478,0.88,0.829c-0.148,0.48-0.476,0.564-0.853,0.816c-0.657,0.439-2.32,1.012-1.849-0.428,C352.391,463.946,352.964,463.716,353.455,463.453L353.455,463.453z M436.719,510.339c-2.417,0.739-4.756,1.304-6.719-0.162,l-4.681-3.497c-0.451-0.336-8.991-2.117-9.776-1.995c-0.6,0.118-2.91,0.634-3.259,0.492c-1.109-0.452-1.151-1.323-2.56-1.036,c-1.345,0.274-5.55,2.675-6.828,1.969c-0.449-0.248-2.982-3.426-2.923-3.575c-0.807-0.807-1.606-0.653-2.638-0.026,c-0.671-0.404-1.79,0.649-2.354,0.881c-0.95,0.39-0.57-0.848-0.414-1.684c0-3.6-13.684,0.68-14.07-5.311,c-0.072-1.126-1-3.83-2.224-4.015c-2.075-0.314-0.068-4.794-0.44-5.621c-0.578-1.286-2.357-2.487-2.483-3.911,c0-0.697-0.827-1.663-0.827-1.943c-0.367-0.12-0.982-3.789-0.75-4.482c0.6-1.796,0.19-2.961,0.052-4.793,c-0.277-3.659-2.523-6.086-3.879-9.222c-0.966-1.602,0.902-2.953-1.681-2.953l-0.388-1.943c-0.251-1.257-0.965-0.098-1.552-1.528,c-0.366-0.892-4.58-1.58-5.613-1.58c-1.546,0-3.944,0.359-5.328,0c-0.487-0.126-1.51-0.903-1.888-0.803l-5.509,1.451,c-1.75,0.461-1.731,0.273-2.794,0.881c-0.146,0.591-1.522,1.542-2.147,1.347c-0.761-0.237-1.335,1.09-1.785,1.58,c-1.215,1.324-4.426-0.155-4.991,1.554c-1.801,0-3.017-1.018-4.604,0.57c-1.279,1.279-1.125,2.779-1.681,4.326,c-1.407,3.912-6.394,0.768-8.82,1.71c-0.472,0-2.018,3.057-2.457,1.709c-1.471,0.372-2.391,2.517-3.362,2.591,c-2.224,0.168-3.137,2.022-4.992,3.057c-2.592,1.446-7.227,2.477-8.819-0.414c-1.5-2.724-4.019,0.412-5.897-2.409,c-0.7-1.052-1.598-3.344-2.897-2.772c-2.341,1.032-2.968,0.045-5.121-0.155c-3.448-1.733-2.523,0.337-5.25,0.337,c-1.931,0-3.723-0.281-5.069,0.725c-1.088-1.626-4.126-2.81-5.613-4.145c-2.2-1.975-0.74-4.345-3.647-5.311l-5.302-1.761,c-1.376-0.457-6.265-2.022-7.138-2.979c-1.067-0.848-4.529-1.827-5.044-2.668c-0.769-1.257-2.169-2.588-3.725-2.901,c-0.03-0.123-0.127-0.28-0.268-0.454l0,0l1.225-1.308c0.749-0.072,1.351-0.337,2.147-0.337c1.169,0,4.56,0.378,5.199-0.907l0,0,l1.216,0.7c0.954,1.678,0.618,2.842,2.897,3.342c1.894,0.416,3.954-0.846,5.794-0.389c1.798,0.448,1.712,2.079,3.078,2.72,c1.157,0.543,3.719,0.533,5.018,0.155c3.325,0.039,7.122,2.662,9.518,0.259c0.761-0.763,2.178-0.067,2.742-0.7,c1.055-1.185-1.138-2.462-0.698-3.264c0.238-0.433,1.127-1.347,1.009-1.813c-0.182-0.713-0.761-1.269-0.905-2.021,c-0.319-1.661,3.822-2.643,4.914-2.746l9.078-0.855c1.791,0.895,2.09,1.549,3.879,0.311c1.318-0.912,3.059-1.467,4.63-1.166,c2.733,0.525,5.555,3.802,8.613,2.072c1.453-0.822,3.08-3.739,2.819-5.362c1.148-1.924,1.081-2.868,3.233-3.419,c1.583-0.406,1.438-2.268,2.923-2.409c2.375-0.226,7.938,1.913,6.932-3.342c-0.551-2.876-3.867-3.036-4.371-4.948,c-0.273-1.033,1.545-7.677,2.147-8.549c2.082-5.744-6.209-9.187-9.492-12.719c-1.823-1.961-1.126-1.98,0.879-2.487,c0.253-1.025-0.121-1.679-0.44-2.668l-1.267-3.393l0,0c1.398-0.75,5.471-0.186,6.751,0.699c2.265,1.568,4.853,6.44,7.656,5.984,c3.818-0.622,6.815-6.372,10.242-6.372c1.981-0.575,2.706,2.196,2.638,3.627c-0.134,2.807,0.531,5.67-0.026,8.342,c-0.628,3.011-2.267,4.882-0.285,7.668c0.323,2.5,8.182,7.464,10.604,7.823c3.551,0.527,6.755-1.85,8.897-4.507,c3.721-4.615,6.998-2.555,7.242,2.824c0.054,1.189,0.255,6.373,1.914,6.373c2.812,0,2.03-0.049,3.362,2.616l1.604,2.202,c0.531,0.729,2.942,2.696,2.095,3.653c-0.294,0.332-2.889,1.835-1.241,2.409c2.485,0.866,2.463,1.836,2.69,4.43l0.595,6.813,c-0.436,4.476-0.598,8.603,4.061,9.507c2.401,0.466,5.925,2.582,7.216,4.637c1.63,2.592,4.522-6.142,8.251-1.58,c1.164,1.423,3.195,2.45,4.164,3.912c0.238,0.359,0.775,2.229,0.258,2.487c-0.434,0.216-1.156-0.971-1.94-0.777,c-0.574,1.762,0.885,3.455-0.647,5.207c-0.686,0.715-0.166,2.013-0.776,3.005c-0.453,0.737-0.605,4.277-0.336,5.026,c0.272,0.758-0.396,2.525-0.853,3.212c-1.156,1.737,1.033,0.425,1.604,0.285c2.062-0.508,3.648,1.834,5.38,0.855,c0.345-0.195,1.341-1.639,1.836-0.829c0.579,0.946,1.098,0.917,2.043,1.269c0.376,0,2.433-0.58,2.095,0.44,c-0.302,0.911-0.533,0.728,0.026,1.502c0.436,0.603,0.291,3.427,1.138,3.368c0.509-0.036,0.857-0.596,1.5-0.596,c0.736,0,1.955,0.986,2.328-0.233c0.426-1.392,1.057-1.31,2.147-0.829c1.018,0.45,1.442,1.692,2.186,2.432l0,0,c-0.363,0.678-0.906,1.191-0.815,2.085c0.138,1.35,0.538,0.798,1.448,1.23c0.455,0.217,0.485,0.901,0.737,1.296,c1.051,1.641,3.309,2.18,4.41,3.938c0.435,0.491,0.905,0.898,1.034,1.556c0.245,1.255-0.29,1.526,0.957,2.202,c0.517,0.281,1.246,0.447,1.19,1.166c-0.094,1.21,0.734,1.207,1.112,2.254C436.043,507.597,436.719,509.512,436.719,510.339,L436.719,510.339z", "name": "Hormozgan"},"46": {"path": "M474.094,222.605l1.452,8.083l-0.828,2.694l0.103,3.212l0.595,1.632l3.828,1.969l5.949,0.026l0.957,0.751l-0.388,0.466l-1.345-0.207,l-0.75,0.725l0.233,2.305l-1.242,0.829l-5.354,5.751l-1.631,3.627l1.526,4.119l1.862,7.72l0.828,4.015l2.612,5.855l0.879,6.684l0,0,l1.138,3.73l-1.267,4.249l-0.75,1.114l0.414,1.684l-0.336,1.166l-0.155,7.564l0,0l1.19,8.316l7.427,1.159l0,0,c0,1.14,0.876,2.604,0.876,3.763c0,1.028-0.49,1.696-1.164,2.409c-0.523,0.555-0.605,1.567-1.112,1.969,c-1.498,4.51-2.897,7.789-2.897,12.616c0,1.108,0.314,2.971,0.026,3.964c0,1.973,0.361,3.519,0.646,5.388,c0.136,0.889,0.58,3.786,1.061,4.43c-0.384,0.517-0.097,0.72-0.879,1.088c-0.374,0.176-1.17,0.207-1.604,0.207,c-1.095,0-2.285,0.088-3.337-0.181c-1.009-0.259-1.1-1.024-1.836-1.554c-1.392-1.571-2.241-3.521-3.13-5.388,c-0.905-1.899-2.542-1.796-3.828-3.083c-1.089-1.089-1.152-1.511-2.742-1.865c-1.205-0.269-3.42-0.665-3.802-2.176,c-1.545-0.39-2.357,1.444-3.957,1.295l-12.104,3.394l-2.897,0.44l-4.216,1.347l0,0l-5.458-8.652l-5.845-9.844l-19.76-9.326,l-12.932-6.424l-6.104-2.176l0,0l-7.785-3.471c-3.533,0-7.423-3.889-10.708-5.052c-3.807-1.348-6.55-3.338-10.785-3.601,l-2.509-0.156l0,0c-0.065-0.46-2.742-3.322-3.026-3.782c-0.378-0.612-0.691-1.287-1.035-1.917c-0.68-1.245-1.572-2.052-2.69-2.953,c-2.147-1.732-4.138-6.948-4.138-9.637c-2.25-2.825-3.331-5.856-6.104-8.238c-2.268-1.949-5.01-5.311-6.621-7.875l-3.776-6.01,c-1.589-2.528-4.561-4.692-6.466-7.202l0,0c0-8.078-1.04-15.524-1.81-23.522l0,0c1.191-0.64,5.518-0.57,7.035-0.57,c3.249,0,3.689-3.329,4.397-6.217c0.883-3.602,3.574-7.314,5.225-10.621l3.983-5.596l0,0c5.691,0,10.888,2.374,17.277,1.347,c5.401-0.868,4.617-7.748,9.725-9.067c6.543-1.689,14.046-0.157,14.949,7.72c0.271,2.362-0.23,7.063,2.379,8.134,c2.921,1.2,2.47,4.386,1.19,6.632c-1.142,1.048-0.904,4.496,0.362,5.44c3.082,2.298,6.276-0.777,9.466-0.777,c1.2,0,2.271,0.77,2.949,1.71c0.444,0.615,2.561,2.072,2.535,2.176c2.966,1.111,9.807-0.762,13.423-0.311,c1.708-0.158,3.346,0.518,5.483,0.052c1.669-0.364,3.564-0.829,5.276-0.829c2.427,0,1.829,2.266,4.63,1.684l3.362-0.699,c1.19-0.248,1.962-1.252,3.181-1.373c2.703,0,3.841,1.219,6.311,1.865c4.416,1.154,8.082,3.714,12.337,4.974,C465.769,226.836,469.925,222.279,474.094,222.605L474.094,222.605z", "name": "South Khorasan"}},"height": 500,"width": 550});
diff --git a/js/vmap/dist/maps/jquery.vmap.iraq.js b/js/vmap/dist/maps/jquery.vmap.iraq.js
new file mode 100644 (file)
index 0000000..c9888f6
--- /dev/null
@@ -0,0 +1 @@
+jQuery.fn.vectorMap('addMap', 'iraq', {"width": 612, "height": 400, "paths": {"1": {"path": "M125.762 71.4976l-0.7938 0.2467c-0.4965,0.1542 -0.8363,-0.0117 -1.0584,0.5666 -0.1883,0.4906 -0.1481,0.7334 -0.4745,1.1972 -0.3726,0.5293 -1.0559,0.7039 -0.9854,1.4805 0.0839,0.9234 0.3575,1.277 -0.4653,1.9465 -0.1845,0.3443 -0.4324,1.6622 -0.7756,1.7546 -0.2969,0.08 -1.0177,-0.6974 -1.177,-0.9413 -0.2237,-0.3423 -0.8904,-0.3658 -1.2592,-0.2924 -0.5173,0.1031 0.1802,0.5088 -0.0912,0.8042 -0.291,0.3169 0.2352,0.4444 0.146,0.8042 -0.0571,0.23 -0.4987,0.3691 -0.5201,0.5575 -0.0197,0.1743 0.1648,0.4201 0.1095,0.5209 -0.2754,0.5025 0.1518,0.6887 -0.0274,1.1971 -0.1255,0.3564 -0.2291,0.4782 -0.3102,0.8865 -0.0869,0.438 0.227,0.288 0.2737,0.4935 0.0558,0.245 0.0365,0.8223 0.0365,1.1058 0,0.4783 -0.6858,0.6319 -0.9854,0.9321 -0.107,0.2398 -0.357,0.4721 -0.511,0.6946 -0.1863,0.2694 -0.6754,0.2879 -0.9763,0.53 -0.3483,0.2804 -0.4053,1.2259 -0.7117,1.6358 -0.3265,0.437 -0.3284,1.1217 -0.3284,1.6358 0.926,0.1876 1.2041,-0.1586 1.8157,0.7037 0.4652,0.6561 1.388,0.7405 0.958,1.709 -0.0054,0.1713 0.0059,0.0488 -0.0091,0.1096 -0.1854,0.0927 -0.886,1.5501 -1.031,1.8095 -0.3903,0.6981 -0.0347,1.0128 0.3193,1.5444 0.1069,0.1607 -0.0582,2.2243 -0.2098,2.3761 -0.3034,0.3041 -0.8158,-0.0796 -1.0858,0.2467 -0.2167,0.262 -0.0935,0.7108 -0.2281,1.0784 -0.0758,0.222 -0.2187,0.3645 -0.365,0.5392 -0.1889,0.2254 -0.1638,0.6285 -0.1095,0.8956 0.0549,0.2705 0.2976,0.5049 0.4745,0.7036l0.265 0.393 0 0 -1.36 1.2794 0 0 -1.2135 -1.5901c-0.2411,-0.2632 -0.5015,-0.6908 -0.7299,-0.987 -0.2033,-0.2637 -0.5139,-0.4731 -0.7391,-0.7219 -0.5148,-0.5688 -0.6338,-0.7526 -0.6113,-1.5262 0.0143,-0.4901 -0.1625,-0.606 -0.3924,-0.9961 -0.3375,-0.5724 -0.5831,-0.6104 -1.1765,-0.7951l-4.5986 -0.0365 -1.2229 -0.9139 -5.4928 0 -7.7738 -9.7236 0.0182 -6.1046 -2.6642 3.0706 -5.8395 -4.0028 -0.4927 -7.9506 0 0 0 -3.6555 10.3833 -0.3473 -3.23 -5.0628c0.1264,-0.642 -0.2558,-1.6619 -0.2558,-2.376 0,-1.3906 0.9994,-2.1322 1.9343,-3.0341 0.4386,-0.4232 0.9549,-0.9725 1.5238,-1.1972 0.6425,-0.2539 1.5209,-0.026 2.2354,-0.265 0.594,-0.1945 1.1876,-0.4951 1.7519,-0.7768 0.4584,-0.2289 0.9803,-0.3038 1.4416,-0.5117l0.6569 -0.0822 0 0c0.0481,0.6366 0.0298,0.9099 -0.2098,1.5169 -0.1298,0.3291 -0.2778,0.6375 -0.3649,0.9779 -0.0307,0.1198 -0.2079,0.4587 -0.1095,0.5574 0.2255,0.2265 0.7802,0.2831 1.0858,0.4296 0.341,0.1634 0.2554,0.4876 0.2554,0.8224l0 0 -2.9559 1.0693 2.5183 6.1594c0.5629,0.3712 1.97,0.6815 2.6457,0.8134 1.3177,0.2574 2.4226,1.0733 3.6315,1.6084 1.2722,0.5632 1.6817,1.3643 2.6095,2.2938 0.6821,0.6357 1.1333,1.6724 2.2081,1.6724 0.2645,0 0.9659,-0.1084 1.1223,0.0822 0.971,1.1839 2.6094,1.9096 3.6041,3.0706 0.5995,0.6996 0.6633,0.3511 1.0857,-0.4204 0.4688,-0.856 0.6123,-2.1303 1.1406,-2.8512 0.3185,-0.2095 0.7264,-1.2365 0.8942,-1.6084 0.3772,-0.8361 0.8828,-1.4374 0.9763,-2.3761 0.0566,-0.569 -0.151,-1.5042 0.7025,-1.6449l0 0c0.0891,0.1455 0.2149,0.2746 0.292,0.4295 0.0314,0.0257 0.0411,0.0388 0.0639,0.0731 0.4656,0.2999 0.522,0.732 1.1861,0.8407 0.8036,0.1316 1.7691,0.0731 2.5913,0.0731 0.4239,0 0.8071,0.0259 1.2227,0.0823 0.5187,0.0703 0.7939,0.3667 1.2226,0.594 0.1945,0.2877 0.5056,0.5286 0.6479,0.8499 0.1827,0.4122 0.3179,0.8694 0.1642,1.316 -0.1378,0.4001 -0.3102,1.0892 -0.3102,1.5079l0.0182 0.5026 0 0z","name": "salah ad-Din"},"2": {"path": "M118.664 65.2285c0.0891,0.1455 0.2149,0.2746 0.292,0.4295 0.0314,0.0257 0.0411,0.0388 0.0639,0.0731 0.4656,0.2999 0.522,0.732 1.1861,0.8407 0.8036,0.1316 1.7691,0.0731 2.5913,0.0731 0.4239,0 0.8071,0.0259 1.2227,0.0823 0.5187,0.0703 0.7939,0.3667 1.2226,0.594 0.1945,0.2877 0.5056,0.5286 0.6479,0.8499 0.1827,0.4122 0.3179,0.8694 0.1642,1.316 -0.1378,0.4001 -0.3102,1.0892 -0.3102,1.5079l0.0182 0.5026 0 0c0.4194,0.21 0.8462,0.4882 1.3322,0.3198 1.0067,-0.3487 0.9951,-1.352 1.7792,-0.0457 0.6421,1.0696 1.0296,-0.5466 1.4872,-0.0182l0.7756 0.8956c0.1519,0.1753 -0.0726,0.5719 -0.1277,0.7859 -0.1691,0.6557 0.6843,0.1998 0.6843,0.7676 0,0.5248 0.0119,0.8572 0.3467,1.2886 -0.0616,0.4954 0.0698,0.7447 0.1278,1.2063 0.1201,0.06 0.2926,0.3005 0.4379,0.0914 0.2616,-0.3767 0.6902,-0.9738 1.0493,-1.2612 0.3051,-0.2443 0.6831,0.0512 0.9033,-0.1462 0.3613,-0.3237 1.0164,-0.4532 1.25,-0.8407 0.0921,-0.1529 0.0347,-0.4728 0.0822,-0.658 0.0884,-0.3442 0.1795,-0.5717 0.3193,-0.9047 0.2786,-0.661 0.7421,-0.9607 0.8759,-1.6907 0.2094,-1.1429 1.3068,-1.5315 1.8523,-2.4857 0.288,-0.504 -0.6205,-0.247 -0.6205,-0.6946 0,-0.1245 0.4295,-0.405 0.5292,-0.53 0.1672,-0.2095 0.1612,-0.4405 0.3467,-0.6397 0.2326,-0.0976 0.4824,-0.4292 0.584,-0.658 0.1154,-0.2597 0.0078,-0.8485 0.3558,-0.8682 0.3243,-0.0184 0.6927,-0.3107 1.022,-0.3107 0.153,0.6189 -0.1773,1.4864 -0.1095,2.175 0.0818,0.8314 0.3526,2.4684 0.6387,3.2534l0 0c0.4609,0 0.471,-0.101 0.9124,0.1462 0.4563,0.2554 0.4359,-0.6399 0.5292,-0.8864 0.0921,-0.2435 0.4079,-0.269 0.365,-0.5758 -0.0781,-0.5585 -0.6369,-1.1267 -0.1369,-1.6267 0.1561,-0.1561 1.1401,-0.0605 0.5748,-0.3838l0.1313 -0.6504c0.0091,-0.045 0.009,-0.0244 0.0426,-0.0041 0.0697,0.0427 0.1656,0.0533 0.328,0.0148 0.2052,-0.0487 0.5073,0.3621 0.6387,0.4843 0.2186,0.2032 0.4174,-0.1722 0.5474,-0.0274 0.1805,0.2011 0.1979,0.1387 0.4289,0.2102 0.058,0.018 0.7433,0.6325 0.6022,0.064 -0.2573,-1.0363 0.579,-0.2711 0.9945,-0.5209 0.2928,-0.176 0.7064,-0.0974 0.8668,-0.4204 0.0479,-0.0965 0.1037,-0.1837 0.1721,-0.2671l-0.3546 -0.3086c-0.3223,-0.324 -0.2697,-0.8511 0.0457,-1.1424 0.3578,-0.3306 0.629,-0.3076 0.2646,-0.8042 -0.2101,-0.2865 -0.1628,-0.3219 -0.5384,-0.2833 -0.4385,0.045 -0.8354,-0.0079 -0.5201,-0.5666 0.2304,-0.4085 0.7088,-0.4593 0.5931,-1.0418 -0.1118,-0.5634 -1.168,-1.3031 -1.688,-1.4713l-1.3504 -2.5771 0.0365 -0.7128 0.0183 -0.0092c0.0174,-0.0706 0.3134,-0.0438 0.3741,-0.0639 0,-0.0218 0.0056,-0.0308 -0.0183,-0.0366 0,-0.1142 -0.2554,-0.2106 -0.2554,-0.4295 0,-0.2436 -0.061,-0.3609 -0.2099,-0.5483 -0.5176,-0.6519 0.4593,-0.1214 0.6661,-0.1097 0.2859,0.0161 -0.0399,-0.4351 -0.1004,-0.53 -0.0654,-0.1028 -0.0547,-0.3008 -0.0547,-0.4204 0,-0.2506 0.1273,-0.269 -0.1734,-0.4113 -0.3088,-0.146 -0.1117,-0.2415 -0.0456,-0.5209 0.1115,-0.3357 0.4653,-1.0083 0.8668,-0.8773 0.4453,0.1454 0.8749,0.461 1.3869,0.2193 0.4665,-0.2201 0.2355,0.0823 0.6022,0.0823 0.203,-0.6137 0.5894,-0.8168 1.1861,-0.6763 0.5338,0.1256 0.8041,-0.2926 1.1497,-0.6397 0.3361,-0.3374 0.2691,-0.2536 0.7482,-0.3747 0.0307,-0.1244 -0.0752,-0.512 0.1095,-0.5574 0.019,-0.0774 0.0401,-0.6599 -0.0092,-0.6763 -0.021,-0.0849 -0.627,0.1268 -0.739,-0.329 -0.1969,-0.0486 -0.3889,0.5882 -0.9033,0.4661 -0.402,-0.0955 -0.5445,0.661 -0.9033,0.1645 -0.2779,-0.3847 -0.2954,0.0974 -0.5475,0.0822 -0.2007,-0.012 -0.438,-0.6489 -0.5292,-0.8133 -0.1317,-0.2375 -1.0654,-0.4202 -1.3048,-0.3747 -0.4018,0.0763 -0.5161,0.3975 -0.9945,0.3838 -0.3952,0 -0.8851,-0.111 -0.8851,0.2833 0,0.2099 -0.8772,-0.2193 -1.031,-0.2193 -0.3662,0 -0.3422,0.4025 -0.5383,0.5118 -0.1426,0.0796 -0.2185,-0.0979 -0.2829,-0.0731 -0.1202,0.0462 -0.2853,0.1693 -0.4197,0.1279 -0.1616,-0.0499 -0.3614,-0.3203 -0.438,-0.329 -0.1481,-0.0167 -0.2965,0.2219 -0.4653,0.265 -0.0982,0.0251 -0.2681,0.1855 -0.292,0.1828 -0.3148,-0.0359 -0.7615,-1.3924 -0.9489,-1.645 -0.2367,-0.3193 -0.6089,-0.4227 -0.6478,-0.8316 -0.0144,-0.1514 -0.8085,-0.8193 -0.9672,-0.8681 -0.4934,-0.152 -0.7933,-0.4701 -1.0949,-0.8682l-0.8942 -0.0731c-0.1526,0.0941 -0.3792,-0.0183 -0.5566,-0.0183 -0.1017,0 -0.6906,0.1556 -0.7755,0.2193 -0.3531,0.2651 -0.6056,0.6965 -0.9763,0.2102 -0.185,-0.2427 -0.2912,0.1579 -0.438,0 -0.0457,-0.0492 -0.0026,-0.2623 -0.1095,-0.201 -0.1145,0.0656 0.0509,-0.4037 -0.0912,-0.4478 -0.0033,-0.001 -0.0268,-0.0052 -0.0905,-0.0194 0.224,-0.3076 0.7558,-1.0303 0.8295,-1.4154 0.106,-0.5538 -0.1815,-0.5619 -0.5748,-0.7585 -0.5415,-0.2707 -0.366,-1.397 -0.2646,-1.8552 0.0361,-0.1636 -0.3472,-0.9064 -0.4745,-1.0144 -0.1718,-0.1456 -0.724,-0.0023 -0.666,-0.3198 0.0609,-0.3339 0.4562,-0.2019 0.4562,-0.5758 0,-0.3353 -0.7065,-0.3424 -0.6205,-0.6762 0.0274,-0.334 0.3641,-0.4424 0.2373,-0.7951 -0.1054,-0.2931 -0.0822,-0.5032 -0.0822,-0.8225 0,-0.267 -0.6273,-0.982 -0.8212,-0.9413 -0.2971,0.0625 -1.0653,0.0787 -1.2226,0.3199 -0.1218,0.1869 -0.3159,0.3653 -0.5475,0.2285 -0.682,-0.4027 -0.6748,-0.8591 -1.1131,-1.3708 -0.1788,-0.2089 -0.0358,-0.9249 -0.2373,-0.9961 -0.2042,-0.0721 -0.7413,-0.3477 -0.8602,-0.6481l0 0c-1.1616,0.436 -1.9794,-0.0912 -2.9628,0.9953 -0.7789,0.8605 -1.424,-0.7289 -1.9526,-0.859 -0.4388,-0.1079 -1.0156,0.383 -1.2409,0.7219 -0.4545,0.6839 -0.5372,0.9662 -1.4143,1.0419l0.0365 2.8512c0.3053,0.1032 0.9106,-0.1333 1.0949,-0.0822 0.3703,0.1026 0.2653,0.9333 0.9581,0.9595 0.4381,0.0165 0.4014,-0.039 0.4014,0.4752 0,0.572 0.156,0.4801 -0.4653,0.5027 -0.3098,0.0113 -1.7648,0.0559 -1.8066,0.2741 -0.073,0.3804 -0.0365,0.8952 -0.0365,1.2886 0,0.0735 -0.0596,0.383 0.0183,0.4021 0.0449,0.1817 1.4749,0.9603 1.7336,1.3525l1.5237 1.8278c0.4139,0.4967 0.777,0.7865 1.3048,1.124 0.236,0.1508 0.6573,0.4017 0.8121,0.6306 0.0853,0.126 0.6534,0.8875 0.2189,0.8042 -0.1651,-0.0317 -0.3698,-0.2709 -0.5201,-0.2102 -0.2811,0.1135 -0.0141,0.5113 -0.3467,0.594 -0.3423,0.0852 -0.3583,-0.4295 -0.5474,-0.4295 -0.2988,0 -0.346,0.818 -0.6935,0.3381 -0.3523,-0.4863 -0.7399,-0.466 -1.2409,-0.1828l0 0 0.2646 1.0693c0,0.8834 -0.3178,1.9544 0.5292,2.5405 0.8368,0.5789 -0.1678,1.6073 -0.2737,2.3304 -0.0791,0.5407 0.4422,1.4213 0.6478,1.9283 0.1181,0.5889 0.847,1.0918 0.8121,1.6723 -0.0242,0.4017 -0.8779,0.9319 -1.1679,1.2063 -1.1278,1.0669 -1.1195,1.9558 -1.6971,3.2534 -0.2333,0.524 -0.9889,1.4597 -1.5877,1.5536l-1.323 0.5118 0 0z","name": "As-Sulaymaniyyah"},"3": {"path": "M98.4807 57.36l-2.9559 1.0693 2.5183 6.1594c0.5629,0.3712 1.97,0.6815 2.6457,0.8134 1.3177,0.2574 2.4226,1.0733 3.6315,1.6084 1.2722,0.5632 1.6817,1.3643 2.6095,2.2938 0.6821,0.6357 1.1333,1.6724 2.2081,1.6724 0.2645,0 0.9659,-0.1084 1.1223,0.0822 0.971,1.1839 2.6094,1.9096 3.6041,3.0706 0.5995,0.6996 0.6633,0.3511 1.0857,-0.4204 0.4688,-0.856 0.6123,-2.1303 1.1406,-2.8512 0.3185,-0.2095 0.7264,-1.2365 0.8942,-1.6084 0.3772,-0.8361 0.8828,-1.4374 0.9763,-2.3761 0.0566,-0.569 -0.151,-1.5042 0.7025,-1.6449l0 0 1.323 -0.5118c0.5988,-0.0939 1.3544,-1.0296 1.5877,-1.5536 0.5776,-1.2976 0.5693,-2.1865 1.6971,-3.2534 0.29,-0.2744 1.1437,-0.8046 1.1679,-1.2063 0.0349,-0.5805 -0.694,-1.0834 -0.8121,-1.6723 -0.2056,-0.507 -0.7269,-1.3876 -0.6478,-1.9283 0.1059,-0.7231 1.1105,-1.7515 0.2737,-2.3304 -0.847,-0.5861 -0.5292,-1.6571 -0.5292,-2.5405l-0.2646 -1.0693 0 0 -0.5931 -0.1827c-0.5802,-0.0366 -0.7761,-0.1021 -1.2135,-0.4295 -0.2482,-0.1859 -1.165,0.5556 -1.3321,0.7676 -0.1952,0.2478 -0.4652,0.1994 -0.6935,0.0274 -0.3801,-0.2866 -0.7414,-0.1 -1.1405,0.0274 -0.4111,0.1311 -1.1616,0.745 -1.5511,0.6306 -0.4876,-0.1433 -0.2854,0.0573 -0.6479,0.1828 -0.1714,0.0594 -0.7391,-0.2309 -0.8941,-0.3199 -0.4519,-0.2594 -1.0061,-0.0874 -1.5055,-0.1188 -0.4306,0 -1.2071,-0.0681 -1.5785,0.1645 -0.3052,0.1912 -0.6936,0.9014 -0.9125,0.9687 -0.2416,0.0744 -1.5394,-1.0043 -1.7883,-1.1606 -2.2637,-1.4211 -3.2193,2.0587 -3.5311,3.5458 -0.1849,0.8519 -0.3207,1.8333 -0.6843,2.6228 -0.1991,0.4321 -0.1548,1.6922 -0.5019,1.8186 -0.3144,0.1146 -0.6452,-0.1109 -0.8668,-0.3198 -0.5607,-0.5288 -0.3863,-0.552 -1.1953,-0.4204 -0.424,0.069 -0.2483,1.5297 -0.3558,1.9648 -0.2983,0 -0.8636,-1.4348 -1.0949,-1.4348 -0.0533,0.217 -0.3285,0.2712 -0.3285,0.6489 0,0.2307 0.0368,0.454 -0.2555,0.2284l-1.3139 -1.0144 0 0z","name": "Kirkuk"},"4": {"path": "M110.769 17.3229l0.2482 0.8322c-0.0439,0.3169 0.5918,1.2374 0.3741,1.4348 -0.2189,0.1986 0.146,0.8703 0.146,1.1789l-0.0183 0.0091c-0.0163,0.0495 -0.4073,-0.084 -0.5657,0 -0.3536,0.1874 -0.508,0.6237 -0.7299,0.9687 -0.4494,0.699 -1.2827,1.0751 -1.8705,1.6358l-1.5329 1.4622 0 0 -0.6204 -0.1553c-0.4888,-0.0924 -1.0703,-0.0335 -1.5603,0.0274 -0.571,0.0709 -1.2403,0.3107 -1.7975,0.3107 -0.3225,0 -0.4052,0.013 -0.4744,0.3838 -0.0833,0.4459 -0.1469,0.4491 0.2646,0.5757 0.3036,0.0935 0.6286,0.2745 0.7664,0.5666 0.281,0.5952 0.1722,1.4393 -0.4106,1.8095 -0.7092,0.2364 -1.0382,0.4674 -1.8248,0.5483 -0.6729,0.0691 -1.0284,-0.1572 -1.5603,-0.5026 -0.7466,-0.4847 -1.957,-1.7977 -2.8832,-1.7089 -1.0578,0.1015 -1.1298,0.879 -1.8432,1.2977 -0.1709,0.8567 -0.9048,1.5747 -1.5602,2.111 -0.6086,0.4979 -1.2585,0.6762 -1.98,0.9504 -0.46,0.1747 -1.0898,0.3732 -1.5785,0.2102 -0.5986,-0.3426 -0.8011,0.9246 -1.2226,-0.0822 -0.2864,-0.684 -1.2004,0.3133 -1.0311,-0.5392 0.1414,-0.7123 -0.2662,-0.2259 -0.593,-0.6397 -0.595,-0.7536 -0.5413,-0.953 -1.3961,-0.4478 -0.8437,0.4985 -1.1166,-0.376 -1.5693,-0.923 -0.2839,-0.3432 -1.0109,-0.1836 -0.8303,-0.6123 0.1134,-0.3416 -0.1574,-0.2774 -0.2555,-0.4844 -0.0998,-0.2108 0.1814,-0.3577 0.1551,-0.5757 -0.0156,-0.1299 -0.173,-0.164 -0.2281,-0.265 -0.0747,-0.1371 0.0342,-0.4459 0.1004,-0.5666 0.2112,-0.3854 -0.3329,-0.1451 -0.4836,-0.1371 -0.2832,0.0152 -0.7457,-0.4402 -0.9216,-0.6397 -0.3271,-0.3707 -0.5153,-0.8171 -0.6478,-1.2886l-0.0932 -0.9408 0 0 -0.0963 -0.6981 -0.1021 -0.5178 0 0 0.8382 -0.0083c0.422,-0.0765 0.5797,-0.4048 0.9954,-0.4578 0.3477,-0.0444 0.6277,-0.0091 0.9854,-0.1005 0.2501,-0.0638 0.9939,-0.0799 1.0767,-0.3107 0.1051,-0.2926 0.2931,-0.5407 0.5201,-0.7677 0.1035,-0.1035 0.2812,-0.2822 0.2463,-0.4295 -0.049,-0.2072 0.4454,-0.4296 0.584,-0.6306 0.1378,-0.2 0.0456,-0.4663 0.0456,-0.7036 0.0727,-0.0183 0.4512,0.0026 0.4653,-0.0549 0.0183,-0.0045 0.1206,-0.385 0.1551,-0.4295 -0.0858,-0.7758 0.0759,-0.0755 0.5384,-0.5026 0.0574,-0.0531 0.2824,-0.1556 0.3011,-0.2102 0.0182,-0.0529 -0.0619,-0.336 0,-0.3564 0.069,-0.2809 0.8244,-0.5594 0.885,-0.8682l0.0092 -0.0091c0.1611,0 0.3677,0.1188 0.5657,0.1188 0.0112,0.0224 0.0377,0.0314 0.0638,0.0365l0.0092 0.0092c0.2046,0.8278 0.1759,0.2437 0.6387,0.53 0.3299,0.2042 1.5249,0.9159 1.8887,0.7402 0.0813,-0.0393 0.0535,-0.2283 0.219,-0.2833 0.5603,-0.1861 0.6743,0.007 0.8941,-0.6671 0.2809,0 0.3775,0.1209 0.5657,-0.0914 0.2348,-0.2651 0.6341,-0.1326 0.9307,-0.265 0.2579,-0.0285 1.4776,0.2516 1.5603,0.4387 0.1175,0.266 0.5909,-0.0661 0.7208,0.1462 0.12,0.1963 0.1809,0.2974 0.4197,0.3564 0.0801,0.3239 0.5324,0.7808 0.8942,0.5392 0.3463,-0.2311 0.2458,-0.5761 0.9124,-0.4113 0.1173,0.5974 1.2145,1.0254 1.7519,1.2795 0.4255,0.2013 0.3337,0.5273 0.9033,0.5026 0.2148,-0.0093 0.954,-0.564 1.0219,-0.0823 0.1649,0.0829 0.2412,0.1789 0.438,0.2376l0.2281 -0.0182c0.2151,0.5047 0.0633,0.5386 0.6843,0.3655 0.2245,-0.0626 0.6383,-0.351 0.8485,-0.3107 0.5086,0.0975 1.3296,-0.0349 1.7702,0.1462 0.2321,0.0954 0.2517,0.58 0.5109,0.6946 0.3138,0.1386 0.3275,-0.1914 0.4562,-0.4204 0.1997,-0.3555 0.7419,0.1081 1.1041,-0.1097 0.3641,-0.2191 0.4182,-0.5988 0.7299,-0.8225 0,-0.2265 0.1036,-0.4707 0.0821,-0.7768 -0.0061,-0.0879 0.477,-0.076 0.6205,-0.2101 0.2697,-0.2518 0.4677,-0.7002 0.885,-0.5392 0.0886,0.0342 0.1759,0.0769 0.2628,0.1182l0 0z","name": "Duhok"},"5": {"path": "M110.769 17.3229l0.2482 0.8322c-0.0439,0.3169 0.5918,1.2374 0.3741,1.4348 -0.2189,0.1986 0.146,0.8703 0.146,1.1789l-0.0183 0.0091c-0.0163,0.0495 -0.4073,-0.084 -0.5657,0 -0.3536,0.1874 -0.508,0.6237 -0.7299,0.9687 -0.4494,0.699 -1.2827,1.0751 -1.8705,1.6358l-1.5329 1.4622 0 0 1.688 0.6671c0.4293,0.1695 0.8173,0.5258 1.2774,0.7403 0.4178,0.1949 0.0949,0.8416 0.4471,0.9047 0.3606,0.0647 0.2925,0.2765 0.3376,0.6032 0.0805,0.5832 0.3793,0.1181 0.6661,0.201 0.2934,0.0849 0.4676,0.3269 0.7299,0.4661 0.2829,0.15 0.6586,-0.0119 0.9398,0.1005 0.3232,0.1291 0.9194,0.37 1.1405,0.6397 0.197,0.2401 0.2567,0.5681 0.3376,0.859 0.0718,0.2578 0.9431,0.4487 0.657,0.8865 -0.34,0.5205 -0.9183,0.7987 -1.2592,1.3525 -0.117,0.3642 -1.2105,1.2612 -1.5785,1.2612 -0.1812,0 -0.2714,-0.1935 -0.52,-0.1554 -0.3488,0.0534 -0.6528,0.3347 -0.949,0.064 -0.6049,-0.5531 -0.7431,-0.1854 -1.2226,0.3564 -0.1834,0.2071 -0.5019,0.4474 -0.6205,0.6854 -0.2246,0.4505 0.039,0.292 -0.4379,0.4661 -0.408,0.0697 -0.1012,0.594 -0.6661,0.594 -1.2974,0 -0.0839,0.9905 -0.9216,1.2702 -0.1485,0.0495 -0.5093,-0.1135 -0.447,0.1463 0.1874,0.7803 -0.9089,2.0426 -1.3869,2.5679 -0.745,0.8189 -1.9003,1.1634 -2.5457,2.1019 -0.1388,0.4062 -0.2177,0.9023 -0.7026,0.987 -0.631,0.1103 -0.8484,3.2448 -2.2719,3.7012 -0.98,0.3143 -0.6542,0.6004 -0.3924,1.4896 0.182,0.618 -0.5168,1.3684 -0.7573,1.91 0.0116,0.2929 -0.2638,0.5994 -0.3741,0.8773 -0.3282,0.8262 -0.1643,1.5777 -0.1643,2.4675l0 0c0.0481,0.6366 0.0298,0.9099 -0.2098,1.5169 -0.1298,0.3291 -0.2778,0.6375 -0.3649,0.9779 -0.0307,0.1198 -0.2079,0.4587 -0.1095,0.5574 0.2255,0.2265 0.7802,0.2831 1.0858,0.4296 0.341,0.1634 0.2554,0.4876 0.2554,0.8224l0 0 1.3139 1.0144c0.2923,0.2256 0.2555,0.0023 0.2555,-0.2284 0,-0.3777 0.2752,-0.4319 0.3285,-0.6489 0.2313,0 0.7966,1.4348 1.0949,1.4348 0.1075,-0.4351 -0.0682,-1.8958 0.3558,-1.9648 0.809,-0.1316 0.6346,-0.1084 1.1953,0.4204 0.2216,0.2089 0.5524,0.4344 0.8668,0.3198 0.3471,-0.1264 0.3028,-1.3865 0.5019,-1.8186 0.3636,-0.7895 0.4994,-1.7709 0.6843,-2.6228 0.3118,-1.4871 1.2674,-4.9669 3.5311,-3.5458 0.2489,0.1563 1.5467,1.235 1.7883,1.1606 0.2189,-0.0673 0.6073,-0.7775 0.9125,-0.9687 0.3714,-0.2326 1.1479,-0.1645 1.5785,-0.1645 0.4994,0.0314 1.0536,-0.1406 1.5055,0.1188 0.155,0.089 0.7227,0.3793 0.8941,0.3199 0.3625,-0.1255 0.1603,-0.3261 0.6479,-0.1828 0.3895,0.1144 1.14,-0.4995 1.5511,-0.6306 0.3991,-0.1274 0.7604,-0.314 1.1405,-0.0274 0.2283,0.172 0.4983,0.2204 0.6935,-0.0274 0.1671,-0.212 1.0839,-0.9535 1.3321,-0.7676 0.4374,0.3274 0.6333,0.3929 1.2135,0.4295l0.5931 0.1827 0 0c0.501,-0.2832 0.8886,-0.3035 1.2409,0.1828 0.3475,0.4799 0.3947,-0.3381 0.6935,-0.3381 0.1891,0 0.2051,0.5147 0.5474,0.4295 0.3326,-0.0827 0.0656,-0.4805 0.3467,-0.594 0.1503,-0.0607 0.355,0.1785 0.5201,0.2102 0.4345,0.0833 -0.1336,-0.6782 -0.2189,-0.8042 -0.1548,-0.2289 -0.5761,-0.4798 -0.8121,-0.6306 -0.5278,-0.3375 -0.8909,-0.6273 -1.3048,-1.124l-1.5237 -1.8278c-0.2587,-0.3922 -1.6887,-1.1708 -1.7336,-1.3525 -0.0779,-0.0191 -0.0183,-0.3286 -0.0183,-0.4021 0,-0.3934 -0.0365,-0.9082 0.0365,-1.2886 0.0418,-0.2182 1.4968,-0.2628 1.8066,-0.2741 0.6213,-0.0226 0.4653,0.0693 0.4653,-0.5027 0,-0.5142 0.0367,-0.4587 -0.4014,-0.4752 -0.6928,-0.0262 -0.5878,-0.8569 -0.9581,-0.9595 -0.1843,-0.0511 -0.7896,0.1854 -1.0949,0.0822l-0.0365 -2.8512c0.8771,-0.0757 0.9598,-0.358 1.4143,-1.0419 0.2253,-0.3389 0.8021,-0.8298 1.2409,-0.7219 0.5286,0.1301 1.1737,1.7195 1.9526,0.859 0.9834,-1.0865 1.8012,-0.5593 2.9628,-0.9953l0 0c-0.0396,-0.1002 -0.0329,-0.2032 0.0482,-0.3024 0.1432,-0.1751 0.4521,-0.0783 0.5931,-0.2193 0.1372,-0.1372 -0.1262,-0.5451 -0.1916,-0.6763 -0.2292,-0.4559 0.6843,-0.319 0.6843,-0.6397 0,-0.3181 0.0035,-0.7726 -0.0456,-1.0783 -0.1303,-0.8111 -0.3804,-1.9476 -1.4417,-1.709 -0.6301,0.1417 -0.1259,-1.26 -1.0037,-0.6854 -0.4095,0.2681 -0.5324,-0.1702 -0.8394,-0.0914 -0.6133,0.1576 -0.4731,0.0726 -0.6022,-0.4569 -0.1422,-0.5828 0.4614,-0.6236 0.4106,-0.8225 -0.1213,-0.4753 0.6414,-0.3213 0.7299,-0.795 0.0248,-0.4194 0.1016,-0.848 -0.0729,-1.2429 -0.1273,-0.2879 -0.3285,-0.3656 -0.3285,-0.722 0,-0.3104 0.4315,-1.1662 0.1551,-1.4439 -0.245,-0.246 -0.7005,0.0209 -0.8394,-0.466 -0.0257,-0.0043 -0.0163,-0.0072 -0.0365,-0.0275 -0.3345,0.084 -0.6365,0.4828 -0.8121,-0.0913 -0.0635,-0.2079 -0.3832,-0.5894 -0.3832,-0.6946 0,-0.2931 -0.1378,-0.3181 -0.1643,-0.5026 -0.0908,-0.0519 -0.2535,-0.2373 -0.2918,-0.329l0.5291 -0.53 0 0c-0.1674,-0.1221 -0.2615,-0.2387 -0.438,-0.329 -0.1665,-0.0853 -0.4532,-0.0211 -0.5839,-0.1645 -0.3663,-0.4016 -1.1536,0.1685 -1.3139,-0.2468 -0.1129,-0.2924 -0.6849,0.0247 -0.8395,0.1188 -0.0961,0.0586 -0.238,0.3386 -0.3193,0.3564 -0.1004,0.0219 -0.2496,-0.0008 -0.3559,0.0092 -0.1413,0.1939 -0.2172,0.7777 -0.4197,0.8407 -0.3808,0.1186 -0.2677,0.0064 -0.4288,0.3382 -0.0708,0.1457 -0.3135,0.2443 -0.4562,0.3198 -0.1932,0.1021 -1.8217,1.187 -1.9344,0.7311 -0.0652,0 -0.5495,0.289 -0.5931,0.3381 -0.032,0.0362 0.1886,0.3856 0.1552,0.5209 -0.3206,0.046 -0.7221,1.0255 -0.8121,1.2977 -0.1943,0 -0.4783,-0.3254 -0.7664,-0.3472 -0.4748,-0.0359 -0.3421,-0.236 -0.3924,-0.594 -0.0351,-0.2494 -0.1159,-0.2778 -0.2555,-0.4753 -0.2001,-0.2829 -0.0869,-0.4079 -0.1825,-0.7128 -0.657,-0.376 -0.3879,-0.4214 -0.593,-0.9595 -0.1464,-0.3844 0.2997,-0.6526 0.4836,-0.9687 0.0307,-0.0529 0.0712,-0.2783 0.1277,-0.2925 0.0212,-0.0859 0.9763,0.1431 0.9763,-0.3381 0,-0.4598 -0.2737,-0.6126 -0.2737,-0.9778 0,-0.1511 0.1148,-0.6805 0.073,-0.6946l0 -0.0183c-0.2541,-0.0357 -0.507,-0.3651 -0.5566,-0.6031 -0.0751,-0.3609 -0.4321,-0.1229 -0.6843,-0.2285 -0.179,-0.075 -0.1741,-0.2582 -0.438,-0.3198 -0.3883,-0.0908 -0.4823,-0.1662 -0.7208,-0.4661 -0.1233,-0.1549 -0.3719,0.0285 -0.5657,0.0457 -0.2851,0.1628 -0.5438,0.0503 -0.8048,-0.0737l0 0z","name": "Arbil"},"6": {"path": "M80.7412 23.127l0.0932 0.9408c0.1325,0.4715 0.3207,0.9179 0.6478,1.2886 0.1759,0.1995 0.6384,0.6549 0.9216,0.6397 0.1507,-0.008 0.6948,-0.2483 0.4836,0.1371 -0.0662,0.1207 -0.1751,0.4295 -0.1004,0.5666 0.0551,0.101 0.2125,0.1351 0.2281,0.265 0.0263,0.218 -0.2549,0.3649 -0.1551,0.5757 0.0981,0.207 0.3689,0.1428 0.2555,0.4844 -0.1806,0.4287 0.5464,0.2691 0.8303,0.6123 0.4527,0.547 0.7256,1.4215 1.5693,0.923 0.8548,-0.5052 0.8011,-0.3058 1.3961,0.4478 0.3268,0.4138 0.7344,-0.0726 0.593,0.6397 -0.1693,0.8525 0.7447,-0.1448 1.0311,0.5392 0.4215,1.0068 0.624,-0.2604 1.2226,0.0822 0.4887,0.163 1.1185,-0.0355 1.5785,-0.2102 0.7215,-0.2742 1.3714,-0.4525 1.98,-0.9504 0.6554,-0.5363 1.3893,-1.2543 1.5602,-2.111 0.7134,-0.4187 0.7854,-1.1962 1.8432,-1.2977 0.9262,-0.0888 2.1366,1.2242 2.8832,1.7089 0.5319,0.3454 0.8874,0.5717 1.5603,0.5026 0.7866,-0.0809 1.1156,-0.3119 1.8248,-0.5483 0.5828,-0.3702 0.6916,-1.2143 0.4106,-1.8095 -0.1378,-0.2921 -0.4628,-0.4731 -0.7664,-0.5666 -0.4115,-0.1266 -0.3479,-0.1298 -0.2646,-0.5757 0.0692,-0.3708 0.1519,-0.3838 0.4744,-0.3838 0.5572,0 1.2265,-0.2398 1.7975,-0.3107 0.49,-0.0609 1.0715,-0.1198 1.5603,-0.0274l0.6204 0.1553 0 0 1.688 0.6671c0.4293,0.1695 0.8173,0.5258 1.2774,0.7403 0.4178,0.1949 0.0949,0.8416 0.4471,0.9047 0.3606,0.0647 0.2925,0.2765 0.3376,0.6032 0.0805,0.5832 0.3793,0.1181 0.6661,0.201 0.2934,0.0849 0.4676,0.3269 0.7299,0.4661 0.2829,0.15 0.6586,-0.0119 0.9398,0.1005 0.3232,0.1291 0.9194,0.37 1.1405,0.6397 0.197,0.2401 0.2567,0.5681 0.3376,0.859 0.0718,0.2578 0.9431,0.4487 0.657,0.8865 -0.34,0.5205 -0.9183,0.7987 -1.2592,1.3525 -0.117,0.3642 -1.2105,1.2612 -1.5785,1.2612 -0.1812,0 -0.2714,-0.1935 -0.52,-0.1554 -0.3488,0.0534 -0.6528,0.3347 -0.949,0.064 -0.6049,-0.5531 -0.7431,-0.1854 -1.2226,0.3564 -0.1834,0.2071 -0.5019,0.4474 -0.6205,0.6854 -0.2246,0.4505 0.039,0.292 -0.4379,0.4661 -0.408,0.0697 -0.1012,0.594 -0.6661,0.594 -1.2974,0 -0.0839,0.9905 -0.9216,1.2702 -0.1485,0.0495 -0.5093,-0.1135 -0.447,0.1463 0.1874,0.7803 -0.9089,2.0426 -1.3869,2.5679 -0.745,0.8189 -1.9003,1.1634 -2.5457,2.1019 -0.1388,0.4062 -0.2177,0.9023 -0.7026,0.987 -0.631,0.1103 -0.8484,3.2448 -2.2719,3.7012 -0.98,0.3143 -0.6542,0.6004 -0.3924,1.4896 0.182,0.618 -0.5168,1.3684 -0.7573,1.91 0.0116,0.2929 -0.2638,0.5994 -0.3741,0.8773 -0.3282,0.8262 -0.1643,1.5777 -0.1643,2.4675l0 0 -0.6569 0.0822c-0.4613,0.2079 -0.9832,0.2828 -1.4416,0.5117 -0.5643,0.2817 -1.1579,0.5823 -1.7519,0.7768 -0.7145,0.239 -1.5929,0.0111 -2.2354,0.265 -0.5689,0.2247 -1.0852,0.774 -1.5238,1.1972 -0.9349,0.9019 -1.9343,1.6435 -1.9343,3.0341 0,0.7141 0.3822,1.734 0.2558,2.376l3.23 5.0628 -10.3833 0.3473 0 3.6555 0 0 -8.8875 0.1005 -3.8322 -1.2154c-0.489,-0.1966 -1.9201,-0.5846 -2.2263,-1.0144 -0.8084,-0.2015 -1.7486,0.0048 -2.6004,-0.1005 -0.0507,-0.0405 -0.1489,-0.0666 -0.1734,-0.128 -0.3988,-0.2498 -0.7649,-0.8062 -1.1679,-1.1149 -0.4167,-0.3193 -1.0228,-0.5255 -1.5055,-0.722l-0.8248 -0.3194 0 0 -0.0232 -0.6401 0.1095 -2.4492 0.8212 -2.3943 0.0364 -2.4858 2.0986 -2.9061 -0.292 -4.88 -1.989 -4.7887 0.4744 -6.3605 2.1533 -3.8017 7.5366 -1.4074 9.6511 -10.6095 0 0z","name": "Ninawa"},"7": {"path": "M119.704 109.423c-0.1021,0.0465 -0.1288,0.0457 -0.2281,0.0457 -0.1046,0.3208 -0.062,0.7747 -0.0821,1.1515 -0.0354,0.6605 -0.3288,0.5849 -0.876,0.5849 -0.0456,0.1379 -0.0023,0.5309 -0.0091,0.7128 -0.0346,0.9124 0.0278,0.453 0.657,0.7676 0.3562,0.178 0.3523,0.5763 0.6752,0.7951 0.6084,0.4125 0.9191,0.6173 1.5237,0.0822 0.1681,-0.1487 0.7055,-0.2651 0.9124,-0.137 0.2907,0.1798 0.2545,0.5651 0.4745,0.7585 0.1997,0.6364 1.0663,1.2836 1.6789,1.4713 0.5308,0.1627 1.0409,0.1529 1.5602,0.2742 0.273,0.0638 1.0139,1.4819 1.3595,1.782 0.2739,0.2379 0.4954,0.4626 0.8486,0.5849 0.1887,0.0654 0.6054,0.1868 0.7391,0.3198l0 0.064c-0.3609,0.2868 -0.4928,0.5657 -0.4928,1.051 0,1.0645 0.6811,0.6397 1.3869,0.6397 0.1406,0.2323 -0.0397,0.6885 -0.2098,0.859 -0.3213,0.3218 -1.3593,0.9094 -1.1132,1.4713 0.1421,0.3247 0.6073,0.1645 0.8851,0.1645 0.3543,0 0.5188,0.1525 0.666,0.4478l0.0365 0.4844 0 0c1.1687,0.3745 2.3277,0.3633 3.3669,1.1058 0.3779,0.2699 0.3773,0.5811 0.5931,0.9321 0.2127,0.3457 0.8032,0.549 1.1314,0.7951 0.6109,0.5526 0.9423,0.6958 1.2318,1.4987 0.1461,0.4051 0.0945,0.7384 0.4014,1.0875 0.5505,0.6259 1.063,0.9521 1.7336,1.4256 0.7132,0.5035 0.6399,1.1955 0.8486,1.9283l0.6569 1.0692 0 0 0.5201 -0.2559c0.0619,-0.0774 0.1765,-0.1113 0.2646,-0.1553 0.0325,-0.0029 0.0352,-0.0039 0.0639,-0.0183l6.7246 -0.064 3.8687 -0.1553 0 0c0.1463,-0.4036 0.7646,-0.4297 0.8485,-0.8682 0.0749,-0.3911 -0.5313,-0.7362 -0.6478,-1.0418 -0.0658,-0.1724 -0.1586,-0.691 0.0183,-0.8133 0.1308,-0.0905 0.3675,-0.1065 0.5201,-0.1828l1.9708 -0.8408c0.4949,-0.2111 0.3723,-0.5439 0.3011,-1.0509 -0.0178,-0.0071 -0.0203,-0.0096 -0.0274,-0.0274 -0.3888,-0.0562 -1.1135,-0.681 -1.1679,-1.0693 -0.1092,-0.7799 -0.3217,-1.0664 -0.8029,-1.6723 -0.7535,-0.9489 0.7915,-2.0716 0.9124,-3.1346 0,-0.3565 0.6205,0.1243 0.6205,-0.6946 0,-0.4907 -0.1271,-0.8222 -0.0274,-1.3433 0.216,-1.1293 0.1839,-2.4035 0.7391,-3.4545 0.1635,-0.3097 0.5807,-1.1587 0.4562,-1.4804 -0.2924,-0.7566 -0.403,-0.4984 0.146,-1.1678l0 0c-0.3264,-0.314 -0.6847,-0.5884 -1.1315,-0.6691 -0.4802,-0.0868 -0.7129,-0.4341 -1.1314,-0.6214 -0.9036,-0.4044 -2.0705,-1.0104 -3.1205,-0.8042 -0.6963,0.1368 -1.3732,0.4723 -2.0803,0.1827 -0.23,-0.0941 -0.6047,-0.4935 -0.8212,-0.4935 0,-0.1379 -0.0559,-0.7128 0.1186,-0.7128 0.4778,0 0.463,-0.2122 0.6205,-0.6123 0.1089,-0.0817 0.2134,-0.1753 0.3376,-0.2376 0.0086,-0.0697 0.0821,-0.1075 0.0821,-0.201l-0.0091 -0.0092c-0.3323,0 -0.7613,0.0913 -0.9672,-0.2193 -0.2276,-0.3435 -1.3132,-0.266 -1.2318,-0.4661 0.4408,-1.0822 1.2405,-0.0437 1.9526,-0.6488 0.2139,-0.1817 1.2912,-1.4193 1.0037,-1.5079 -0.4365,-0.1344 -0.4941,0.1461 -0.3559,-0.4204 0.0267,-0.1094 0.2732,-0.7864 0.1643,-0.8224 -0.019,-0.0776 -0.8664,-0.5773 -0.9946,-0.658 -0.5305,-0.3343 -0.2303,-0.5299 -0.4653,-0.9139 -0.1153,-0.1886 -0.4644,-0.2125 -0.5748,-0.4569 -0.1734,-0.3841 0.0509,-0.5879 -0.2555,-0.987 -0.253,-0.5571 -0.4439,-0.3979 -0.3924,-1.0784 0.0148,-0.1961 -0.2506,-0.6457 -0.447,-0.6945l0 0 -0.4106 0.3564c0.0289,0.4645 -1.0202,0.6901 -1.3504,0.7676 -1.4279,0.3353 -0.7203,1.2438 -1.5602,2.0837 -0.6136,0.6136 -1.0921,-0.2861 -1.6241,0.9595 -0.4373,1.0237 -0.7904,2.2674 -1.5967,3.0341 -1.3222,1.2571 -1.1361,0.3565 -2.5001,-0.1463 -0.7856,-0.1773 -1.3246,-0.4686 -2.2263,-0.4934 -0.6142,-0.0169 -1.3021,0.0202 -1.8795,-0.2194 -0.6727,-0.279 -1.7349,-0.9655 -2.2628,-1.4713 -0.7444,-0.7131 -1.7039,-0.5706 -2.6004,-0.7951 -0.5243,0.1016 -1.5382,0.1871 -1.9435,0.5118 -0.5902,0.4727 -0.7994,1.9265 -1.2043,2.6228 -0.4553,0.7832 -1.1455,1.4693 -1.8705,2.0014 -0.1599,0.3085 -0.5845,0.5664 -0.9036,0.6671 -0.974,0.3077 -0.4692,-0.8039 -0.7847,-1.2703 -0.2013,-0.2974 -0.4228,-0.189 -0.6296,0.0183 -0.2493,0.2501 -0.4736,-0.1176 -0.6113,-0.3016l0 0z","name": "Wasit"},"8": {"path": "M125.762 71.4976c0.4194,0.21 0.8462,0.4882 1.3322,0.3198 1.0067,-0.3487 0.9951,-1.352 1.7792,-0.0457 0.6421,1.0696 1.0296,-0.5466 1.4872,-0.0182l0.7756 0.8956c0.1519,0.1753 -0.0726,0.5719 -0.1277,0.7859 -0.1691,0.6557 0.6843,0.1998 0.6843,0.7676 0,0.5248 0.0119,0.8572 0.3467,1.2886 -0.0616,0.4954 0.0698,0.7447 0.1278,1.2063 0.1201,0.06 0.2926,0.3005 0.4379,0.0914 0.2616,-0.3767 0.6902,-0.9738 1.0493,-1.2612 0.3051,-0.2443 0.6831,0.0512 0.9033,-0.1462 0.3613,-0.3237 1.0164,-0.4532 1.25,-0.8407 0.0921,-0.1529 0.0347,-0.4728 0.0822,-0.658 0.0884,-0.3442 0.1795,-0.5717 0.3193,-0.9047 0.2786,-0.661 0.7421,-0.9607 0.8759,-1.6907 0.2094,-1.1429 1.3068,-1.5315 1.8523,-2.4857 0.288,-0.504 -0.6205,-0.247 -0.6205,-0.6946 0,-0.1245 0.4295,-0.405 0.5292,-0.53 0.1672,-0.2095 0.1612,-0.4405 0.3467,-0.6397 0.2326,-0.0976 0.4824,-0.4292 0.584,-0.658 0.1154,-0.2597 0.0078,-0.8485 0.3558,-0.8682 0.3243,-0.0184 0.6927,-0.3107 1.022,-0.3107 0.153,0.6189 -0.1773,1.4864 -0.1095,2.175 0.0818,0.8314 0.3526,2.4684 0.6387,3.2534l0 0c-0.1938,0 0.2259,0.9565 -0.1369,1.2337 -0.1414,0.1081 -0.4407,0.3258 -0.5931,0.3838 -0.4647,0.1771 -0.2157,-0.0194 -0.4197,-0.2924l-0.6934 0.6671c-0.1048,0.1008 0.2965,0.5639 0.0638,0.6397 0,0.1373 0.1278,0.1285 0.1278,0.2925 -0.5217,0.0643 -0.2958,0.339 -0.5019,0.6488 -0.3489,0.5241 -0.2937,0.4099 0.3011,0.7585 0.2656,0.2568 0.1187,0.2843 0.1187,0.5666 0,0.2436 0.1637,0.1715 0.2828,0.3382 0.0794,0.1113 0.2372,0.7535 0.2372,0.8864 0,0.3944 0.0394,0.3954 0.1734,0.7494 0.0852,0.2254 -0.0525,0.4214 -0.0091,0.6488 0.0132,0.0692 0.1741,0.3303 0.0821,0.393 -0.4616,0.3149 -0.532,-0.2644 -0.8394,-0.3381 -0.1235,-0.0296 -0.3043,0.0832 -0.4198,0.1279 -0.1811,0.0702 -0.2751,-0.1786 -0.5839,-0.064 -0.9151,0.3394 -1.1547,-0.091 -1.3413,-0.8499 -0.0653,0 -0.3227,-0.0136 -0.3376,-0.0731 -0.1355,0 -0.3596,0.6734 -0.4562,0.8316 -0.0731,0.1195 0.1901,0.3008 0.2099,0.4753 0.0376,0.3315 -0.0427,0.5459 -0.0639,0.8681 -0.1668,0.4498 -0.3473,0.6441 -0.8212,0.3839 -0.0189,-0.0104 -0.6442,0.3261 -0.7026,0.4021 -0.0337,0.0437 0.3103,0.6642 0.3103,0.8499 0,0.2642 -0.0666,0.5252 0.1095,0.7402 0.1524,0.1862 0.3969,0.9701 0.5748,0.9595 0.1335,-0.008 0.2252,-0.242 0.3832,-0.1279 0.2585,0.1869 0.3647,-0.176 0.6113,0.1279 0.739,0.9105 0.723,1.6495 0.146,2.7325 -0.0099,0.3941 0.1719,1.1562 0.5201,1.3891 0,0.1017 -0.7436,0.3911 -0.8942,0.4843 -0.2645,0.1635 -0.4601,0.3541 -0.6387,0.6123 -0.1759,0.2542 -0.2521,0.262 -0.4471,0.457 -0.1807,0.1807 0.024,0.2852 0.0365,0.4386 0.008,0.0978 -0.1743,0.9494 -0.2281,0.9961 -0.2128,0.1844 -0.4924,-0.0523 -0.5474,0.3108 -0.0777,0.5129 -0.6075,0.204 -0.1734,0.9138 0.1068,0.1746 1.2078,0.0457 1.4599,0.0457l0.0091 0.0092c0.1318,0.5334 0.0925,0.7088 0.6387,1.0509 0.0939,0.2736 0.3497,0.5153 0.4197,0.8133 0.1017,0.4331 0.2763,0.9195 0.6205,1.2246 0.1488,0.132 0.6993,0.4344 0.7482,0.5758 0.0611,0.177 -0.0365,0.4492 -0.0365,0.6488 0,0.9118 1.1062,1.727 1.7883,2.1842 0.3232,0.1273 0.5824,0.004 0.4745,0.4386 -0.0445,0.1796 -0.2646,0.5463 -0.2646,0.6671 0.2268,-0.1695 0.6749,-0.1341 0.8759,-0.3472 0.3687,-0.3911 0.9482,-0.4314 1.5055,-0.4752 0.0756,-0.0059 0.6723,-0.1522 0.5566,0.0913 -0.2694,0.5671 -0.084,0.5277 0.3194,0.9322 0.6285,0.6304 -0.03,0.9744 -0.5566,1.3982 -0.4361,0.3511 -1.0689,0.6231 -0.146,0.658 0.5348,0.0202 0.661,0.2991 1.0128,-0.1371 0.124,-0.1539 0.84,-0.3854 0.958,-0.201 0.1212,0.1892 -0.1599,0.3511 0.1552,0.4295l0 0 -0.4106 0.3564c0.0289,0.4645 -1.0202,0.6901 -1.3504,0.7676 -1.4279,0.3353 -0.7203,1.2438 -1.5602,2.0837 -0.6136,0.6136 -1.0921,-0.2861 -1.6241,0.9595 -0.4373,1.0237 -0.7904,2.2674 -1.5967,3.0341 -1.3222,1.2571 -1.1361,0.3565 -2.5001,-0.1463 -0.7856,-0.1773 -1.3246,-0.4686 -2.2263,-0.4934 -0.6142,-0.0169 -1.3021,0.0202 -1.8795,-0.2194 -0.6727,-0.279 -1.7349,-0.9655 -2.2628,-1.4713 -0.7444,-0.7131 -1.7039,-0.5706 -2.6004,-0.7951 -0.5243,0.1016 -1.5382,0.1871 -1.9435,0.5118 -0.5902,0.4727 -0.7994,1.9265 -1.2043,2.6228 -0.4553,0.7832 -1.1455,1.4693 -1.8705,2.0014 -0.1599,0.3085 -0.5845,0.5664 -0.9036,0.6671 -0.974,0.3077 -0.4692,-0.8039 -0.7847,-1.2703 -0.2013,-0.2974 -0.4228,-0.189 -0.6296,0.0183 -0.2493,0.2501 -0.4736,-0.1176 -0.6113,-0.3016l0 0 -0.1639 -0.7402c-0.0527,-0.2835 -0.1183,-0.5525 -0.2555,-0.8134 -0.1152,-0.2192 -0.5331,-0.319 -0.7573,-0.3929 -0.7697,-0.254 -0.1988,-0.9858 -0.4379,-1.4805l0 0 0.5474 0.0092c0.3982,0.069 1.1275,-0.0321 1.3778,-0.4021 0.295,-0.4359 0.0793,-0.6022 0.1003,-1.0876 0.012,-0.2763 0.0839,-0.5793 0.1186,-0.859 0.0498,-0.4019 0.0694,-0.8613 0,-1.2611 -0.1173,-0.676 -0.2635,-0.7852 -0.9124,-0.8225l-3.6496 -0.2102 0 0 -0.265 -0.393c-0.1769,-0.1987 -0.4196,-0.4331 -0.4745,-0.7036 -0.0543,-0.2671 -0.0794,-0.6702 0.1095,-0.8956 0.1463,-0.1747 0.2892,-0.3172 0.365,-0.5392 0.1346,-0.3676 0.0114,-0.8164 0.2281,-1.0784 0.27,-0.3263 0.7824,0.0574 1.0858,-0.2467 0.1516,-0.1518 0.3167,-2.2154 0.2098,-2.3761 -0.354,-0.5316 -0.7096,-0.8463 -0.3193,-1.5444 0.145,-0.2594 0.8456,-1.7168 1.031,-1.8095 0.015,-0.0608 0.0037,0.0617 0.0091,-0.1096 0.43,-0.9685 -0.4928,-1.0529 -0.958,-1.709 -0.6116,-0.8623 -0.8897,-0.5161 -1.8157,-0.7037 0,-0.5141 0.0019,-1.1988 0.3284,-1.6358 0.3064,-0.4099 0.3634,-1.3554 0.7117,-1.6358 0.3009,-0.2421 0.79,-0.2606 0.9763,-0.53 0.154,-0.2225 0.404,-0.4548 0.511,-0.6946 0.2996,-0.3002 0.9854,-0.4538 0.9854,-0.9321 0,-0.2835 0.0193,-0.8608 -0.0365,-1.1058 -0.0467,-0.2055 -0.3606,-0.0555 -0.2737,-0.4935 0.0811,-0.4083 0.1847,-0.5301 0.3102,-0.8865 0.1792,-0.5084 -0.248,-0.6946 0.0274,-1.1971 0.0553,-0.1008 -0.1292,-0.3466 -0.1095,-0.5209 0.0214,-0.1884 0.463,-0.3275 0.5201,-0.5575 0.0892,-0.3598 -0.437,-0.4873 -0.146,-0.8042 0.2714,-0.2954 -0.4261,-0.7011 0.0912,-0.8042 0.3688,-0.0734 1.0355,-0.0499 1.2592,0.2924 0.1593,0.2439 0.8801,1.0213 1.177,0.9413 0.3432,-0.0924 0.5911,-1.4103 0.7756,-1.7546 0.8228,-0.6695 0.5492,-1.0231 0.4653,-1.9465 -0.0705,-0.7766 0.6128,-0.9512 0.9854,-1.4805 0.3264,-0.4638 0.2862,-0.7066 0.4745,-1.1972 0.2221,-0.5783 0.5619,-0.4124 1.0584,-0.5666l0.7938 -0.2467 0 0z","name": "Diyala"},"9": {"path": "M114.311 102.642l1.36 -1.2794 0 0 3.6496 0.2102c0.6489,0.0373 0.7951,0.1465 0.9124,0.8225 0.0694,0.3998 0.0498,0.8592 0,1.2611 -0.0347,0.2797 -0.1066,0.5827 -0.1186,0.859 -0.021,0.4854 0.1947,0.6517 -0.1003,1.0876 -0.2503,0.37 -0.9796,0.4711 -1.3778,0.4021l-0.5474 -0.0092 0 0c-0.9394,0 -1.6685,0.2674 -2.4544,0.7859 -0.8912,0.5878 -1.7469,0.2366 -2.5913,-0.1553 -0.4529,-0.2101 -1.0879,-0.3972 -1.4781,-0.6946l2.7459 -3.2899z","name": "Baghdad"},"10": {"path": "M120.197 129.62l-1.7154 1.3708 -0.0182 2.3212c0.2746,0.5073 0.5778,1.3094 0.9672,1.6998 0.5555,0.5571 -1.169,1.0384 -1.0493,1.6633 0.0896,0.4683 0.2977,0.7427 0.1186,1.252 -0.0941,0.2675 -0.2704,0.4119 -0.3741,0.6488 -0.104,0.2377 0.085,0.6387 0.1642,0.8773 0.0758,0.5948 0.7654,1.8889 -0.3011,1.7638 -0.3615,-0.0424 -0.8869,0.4643 -0.6752,0.7677l0.9307 1.3342c0.3664,0.5251 0.4526,1.4549 1.1132,1.5993l3.4672 0.7585 0.7938 0.2467 0 0c-0.5083,0.4581 -1.1559,2.0604 -1.3504,2.7234 -0.2833,0.9653 -0.8244,1.9461 -1.5602,2.641 -0.5736,0.5416 -0.5167,1.5622 -0.9125,2.1568 -0.1591,1.0684 -0.2911,2.4585 -1.0675,3.2807 -0.7532,0.7978 -1.1497,1.9279 -1.9343,2.7142 -0.4859,0.4868 -1.1121,1.4077 -1.6789,1.7364 -1.5533,1.4576 -2.2474,3.7499 -3.0293,5.6568 -0.1477,0.3602 -0.3721,1.4362 -0.6295,1.6633 -0.119,0.9057 -0.68,1.8693 -0.8669,2.7873 -0.1418,0.697 -0.6659,1.6353 -1.1679,2.1384 -0.3262,0.3268 -0.4973,0.7629 -0.812,1.0967 -0.4483,0.4753 -0.6892,1.2186 -1.1314,1.7089l-0.5267 1.0497 0 0 -16.4446 -13.825 0 0 0.0552 -7.6588c0.03,-1.2041 0.803,-3.4239 1.7424,-4.2221 0.4244,-0.3605 0.7751,-0.8011 1.2227,-1.1514 0.4613,-0.3612 0.2431,-1.6802 0.3376,-2.2116 0.1101,-0.6266 0.0471,-1.0951 0.2919,-1.7089 0.3055,-0.7656 1.4143,-1.5634 1.4143,-2.3761 0,-1.201 -0.0783,-2.3028 0.7482,-3.2808 0.481,-0.271 1.0487,-1.5784 1.4142,-2.0653 0.6345,-0.845 1.2589,-2.026 2.0074,-2.7416 1.0954,-1.0474 2.1026,-1.1738 3.5037,-1.709 0.172,-0.0638 0.4123,-0.2855 0.5383,-0.4203 0.2464,-0.2638 0.5768,-0.4809 0.8486,-0.722 0.1316,-0.1166 0.2489,-0.2489 0.3832,-0.3564 0.1934,-0.155 0.4,-0.2356 0.6113,-0.3564l0.8851 -0.9779 -1.7701 -1.8825 0 0 9.1612 -3.8109 0 0 0.8481 3.6921 1.1405 -0.064 1.5147 -1.8186 2.792 2.0105 0 0z","name": "An-Najaf"},"11": {"path": "M120.197 129.62c0.3288,0.3294 1.8679,0.7805 2.3358,0.8134 0.5129,0.036 1.2796,0.1303 1.7701,0.0091l0.0092 -1.3982c0.0023,-0.3457 -0.1664,-0.5412 -0.2008,-0.786 -0.0596,-0.4231 1.0691,-0.5391 1.3869,-0.5391 0.8068,0 1.0724,-0.7293 1.5511,-1.3069 0.2745,-0.296 0.5498,-0.1888 0.8577,-0.4021 0.1747,-0.1211 0.2991,-0.4605 0.4197,-0.6488 0.4098,-0.64 1.2179,-1.055 1.7701,-1.5627l0 0c1.1687,0.3745 2.3277,0.3633 3.3669,1.1058 0.3779,0.2699 0.3773,0.5811 0.5931,0.9321 0.2127,0.3457 0.8032,0.549 1.1314,0.7951 0.6109,0.5526 0.9423,0.6958 1.2318,1.4987 0.1461,0.4051 0.0945,0.7384 0.4014,1.0875 0.5505,0.6259 1.063,0.9521 1.7336,1.4256 0.7132,0.5035 0.6399,1.1955 0.8486,1.9283l0.6569 1.0692 0 0c-0.4131,0.6908 0.2929,1.4865 0.5019,2.0837 0.3245,0.9268 0.5383,1.7511 0.5383,2.769 0,0.1596 -0.0091,0.3169 -0.0091,0.4752 0,0.4189 0.0736,0.8154 0.1642,1.2246l0.1643 0.6397 0 0c-0.5437,0 -1.1341,-0.219 -1.6424,-0.3838l-2.2537 -0.7311c-0.4715,-0.1528 -1.0791,-0.4669 -1.5603,-0.4935 -0.8573,-0.1497 -3.8153,-1.6256 -4.3249,-0.6032 -0.173,0.347 -0.4011,0.7995 -0.7938,0.9139 -0.5572,0.1622 -1.3214,-0.0141 -1.9161,0.0365 -0.8296,0.0705 -1.3162,0.0185 -0.3193,0.6489 0.3186,0.2015 1.5713,1.3011 1.1223,1.6815 -0.1937,0.3396 -0.2555,0.7748 -0.4836,1.0784 -0.2606,0.3471 -0.576,0.3025 -0.8121,0.7676 -0.4239,0.8353 -0.4899,2.0216 -0.9854,2.8421 -0.2285,0.3782 -0.7117,1.2178 -0.7117,1.6541 -0.1119,0.0848 -0.6642,-0.1112 -0.8029,-0.1462 -0.1902,-0.7526 -1.5884,-2.026 -2.3176,-2.175l0 0 -0.7938 -0.2467 -3.4672 -0.7585c-0.6606,-0.1444 -0.7468,-1.0742 -1.1132,-1.5993l-0.9307 -1.3342c-0.2117,-0.3034 0.3137,-0.8101 0.6752,-0.7677 1.0665,0.1251 0.3769,-1.169 0.3011,-1.7638 -0.0792,-0.2386 -0.2682,-0.6396 -0.1642,-0.8773 0.1037,-0.2369 0.28,-0.3813 0.3741,-0.6488 0.1791,-0.5093 -0.029,-0.7837 -0.1186,-1.252 -0.1197,-0.6249 1.6048,-1.1062 1.0493,-1.6633 -0.3894,-0.3904 -0.6926,-1.1925 -0.9672,-1.6998l0.0182 -2.3212 1.7154 -1.3708 0 0z","name": "Al-Qadisyyah"},"12": {"path": "M111.565 105.932c0.3902,0.2974 1.0252,0.4845 1.4781,0.6946 0.8444,0.3919 1.7001,0.7431 2.5913,0.1553 0.7859,-0.5185 1.515,-0.7859 2.4544,-0.7859l0 0c0.2391,0.4947 -0.3318,1.2265 0.4379,1.4805 0.2242,0.0739 0.6421,0.1737 0.7573,0.3929 0.1372,0.2609 0.2028,0.5299 0.2555,0.8134l0.1639 0.7402 0 0c-0.1021,0.0465 -0.1288,0.0457 -0.2281,0.0457 -0.1046,0.3208 -0.062,0.7747 -0.0821,1.1515 -0.0354,0.6605 -0.3288,0.5849 -0.876,0.5849 -0.0456,0.1379 -0.0023,0.5309 -0.0091,0.7128 -0.0346,0.9124 0.0278,0.453 0.657,0.7676 0.3562,0.178 0.3523,0.5763 0.6752,0.7951 0.6084,0.4125 0.9191,0.6173 1.5237,0.0822 0.1681,-0.1487 0.7055,-0.2651 0.9124,-0.137 0.2907,0.1798 0.2545,0.5651 0.4745,0.7585 0.1997,0.6364 1.0663,1.2836 1.6789,1.4713 0.5308,0.1627 1.0409,0.1529 1.5602,0.2742 0.273,0.0638 1.0139,1.4819 1.3595,1.782 0.2739,0.2379 0.4954,0.4626 0.8486,0.5849 0.1887,0.0654 0.6054,0.1868 0.7391,0.3198l0 0.064c-0.3609,0.2868 -0.4928,0.5657 -0.4928,1.051 0,1.0645 0.6811,0.6397 1.3869,0.6397 0.1406,0.2323 -0.0397,0.6885 -0.2098,0.859 -0.3213,0.3218 -1.3593,0.9094 -1.1132,1.4713 0.1421,0.3247 0.6073,0.1645 0.8851,0.1645 0.3543,0 0.5188,0.1525 0.666,0.4478l0.0365 0.4844 0 0c-0.5522,0.5077 -1.3603,0.9227 -1.7701,1.5627 -0.1206,0.1883 -0.245,0.5277 -0.4197,0.6488 -0.3079,0.2133 -0.5832,0.1061 -0.8577,0.4021 -0.4787,0.5776 -0.7443,1.3069 -1.5511,1.3069 -0.3178,0 -1.4465,0.116 -1.3869,0.5391 0.0344,0.2448 0.2031,0.4403 0.2008,0.786l-0.0092 1.3982c-0.4905,0.1212 -1.2572,0.0269 -1.7701,-0.0091 -0.4679,-0.0329 -2.007,-0.484 -2.3358,-0.8134l0 0 -2.792 -2.0105 -1.5147 1.8186 -1.1405 0.064 -0.8481 -3.6921 0 0 -0.9489 -2.3212c-0.3973,-0.4702 -0.6506,-0.9636 -1.1223,-1.3982 -0.1975,-0.1821 -0.9129,-1.0048 -0.8942,-1.252 0.0419,-0.5538 0.9786,-1.7558 1.3687,-2.1659 0.4262,-0.4482 0.812,-0.3332 0.812,-0.9413 0,-0.0937 -0.077,-0.6177 -0.1642,-0.6397 -0.0258,-0.1023 -0.9023,-0.2459 -1.0402,-0.265 -0.4038,-0.0559 -0.9436,-0.2602 -1.3504,-0.3747l0 0 -0.0182 -0.5483c0.3999,-0.8021 0.8034,-1.8489 0.9033,-2.7325 0.0912,-0.8063 -0.2007,-1.562 -0.2007,-2.312 0,-0.5284 0.0937,-1.0236 -0.0183,-1.5353 -0.0498,-0.1377 -0.4621,-0.5009 -0.5931,-0.5941 -0.1829,-0.1303 -0.2664,-0.3367 -0.3102,-0.5574 -0.0556,-0.2805 -0.9733,-0.7168 -1.25,-0.6763 -0.3608,0.0529 -0.4147,0.3502 -0.6478,-0.0822 -0.1123,-0.2082 -0.365,-0.8971 -0.365,-1.1149 0,-0.2404 0.0913,-0.4413 0.0913,-0.6763l3.4124 0.3198 0 0z","name": "Babil"},"13": {"path": "M110.562 116.442c0.4068,0.1145 0.9466,0.3188 1.3504,0.3747 0.1379,0.0191 1.0144,0.1627 1.0402,0.265 0.0872,0.022 0.1642,0.546 0.1642,0.6397 0,0.6081 -0.3858,0.4931 -0.812,0.9413 -0.3901,0.4101 -1.3268,1.6121 -1.3687,2.1659 -0.0187,0.2472 0.6967,1.0699 0.8942,1.252 0.4717,0.4346 0.725,0.928 1.1223,1.3982l0.9489 2.3212 0 0 -9.1612 3.8109 0 0 -8.4488 -8.6909 5.0366 -1.1698 5.4383 -2.4126c0.4377,-0.1706 0.8483,-0.4228 1.3139,-0.53 0.5642,-0.13 1.1933,-0.2833 1.7701,-0.2833l0.7116 -0.0823 0 0z","name": "Karbala"},"14": {"path": "M90.506 163.452l0.0552 -7.6588c0.03,-1.2041 0.803,-3.4239 1.7424,-4.2221 0.4244,-0.3605 0.7751,-0.8011 1.2227,-1.1514 0.4613,-0.3612 0.2431,-1.6802 0.3376,-2.2116 0.1101,-0.6266 0.0471,-1.0951 0.2919,-1.7089 0.3055,-0.7656 1.4143,-1.5634 1.4143,-2.3761 0,-1.201 -0.0783,-2.3028 0.7482,-3.2808 0.481,-0.271 1.0487,-1.5784 1.4142,-2.0653 0.6345,-0.845 1.2589,-2.026 2.0074,-2.7416 1.0954,-1.0474 2.1026,-1.1738 3.5037,-1.709 0.172,-0.0638 0.4123,-0.2855 0.5383,-0.4203 0.2464,-0.2638 0.5768,-0.4809 0.8486,-0.722 0.1316,-0.1166 0.2489,-0.2489 0.3832,-0.3564 0.1934,-0.155 0.4,-0.2356 0.6113,-0.3564l0.8851 -0.9779 -1.7701 -1.8825 0 0 -8.4488 -8.6909 5.0366 -1.1698 5.4383 -2.4126c0.4377,-0.1706 0.8483,-0.4228 1.3139,-0.53 0.5642,-0.13 1.1933,-0.2833 1.7701,-0.2833l0.7116 -0.0823 0 0 -0.0182 -0.5483c0.3999,-0.8021 0.8034,-1.8489 0.9033,-2.7325 0.0912,-0.8063 -0.2007,-1.562 -0.2007,-2.312 0,-0.5284 0.0937,-1.0236 -0.0183,-1.5353 -0.0498,-0.1377 -0.4621,-0.5009 -0.5931,-0.5941 -0.1829,-0.1303 -0.2664,-0.3367 -0.3102,-0.5574 -0.0556,-0.2805 -0.9733,-0.7168 -1.25,-0.6763 -0.3608,0.0529 -0.4147,0.3502 -0.6478,-0.0822 -0.1123,-0.2082 -0.365,-0.8971 -0.365,-1.1149 0,-0.2404 0.0913,-0.4413 0.0913,-0.6763l3.4124 0.3198 0 0 2.7459 -3.2899 0 0 -1.2135 -1.5901c-0.2411,-0.2632 -0.5015,-0.6908 -0.7299,-0.987 -0.2033,-0.2637 -0.5139,-0.4731 -0.7391,-0.7219 -0.5148,-0.5688 -0.6338,-0.7526 -0.6113,-1.5262 0.0143,-0.4901 -0.1625,-0.606 -0.3924,-0.9961 -0.3375,-0.5724 -0.5831,-0.6104 -1.1765,-0.7951l-4.5986 -0.0365 -1.2229 -0.9139 -5.4928 0 -7.7738 -9.7236 0.0182 -6.1046 -2.6642 3.0706 -5.8395 -4.0028 -0.4927 -7.9506 0 0 -8.8875 0.1005 -3.8322 -1.2154c-0.489,-0.1966 -1.9201,-0.5846 -2.2263,-1.0144 -0.8084,-0.2015 -1.7486,0.0048 -2.6004,-0.1005 -0.0507,-0.0405 -0.1489,-0.0666 -0.1734,-0.128 -0.3988,-0.2498 -0.7649,-0.8062 -1.1679,-1.1149 -0.4167,-0.3193 -1.0228,-0.5255 -1.5055,-0.722l-0.8248 -0.3194 0 0 0.2688 7.4385 -1.8796 2.6867 -2.4824 5.5381 -6.1439 1.9129 -32.8881 20.0199 0 0 5.2257 18.5888 -1.7046 0.3831 1.0767 3.7286 3.7044 -1.1515 0.7117 2.632 -1.6887 1.6632 0 0 20.6573 4.2038 0.9614 0.1338 18.3004 12.0572 11.4601 5.3553 14.7625 12.4109 0 0z","name": "Al-Anbar"},"15": {"path": "M165.453 151.479l-0.0091 5.8854 -0.5932 2.6684c-0.0522,0.2551 -0.2463,0.4326 -0.2463,0.6855 0,0.8395 0.3194,1.602 0.3194,2.44l-0.0183 0.0091c-0.0219,0.0671 -0.2542,-0.0589 -0.2919,-0.0822 -0.3278,-0.2033 -0.6957,-0.3292 -1.0402,-0.5118 -0.2032,-0.1078 -0.3797,-0.2546 -0.5931,-0.3564 -0.1746,-0.0834 -0.3946,-0.1322 -0.5566,-0.2193l-6.7519 2.4217 0 0 0.292 2.9061c0.1052,1.0482 0.763,2.0102 1.3321,2.8513 0.6738,1.0344 0.9124,2.0358 0.9124,3.2534 0,0.997 -0.0652,2.3344 -0.3558,3.2807l-1.2318 5.2365c-0.4309,0.9199 -0.7038,1.9957 -0.5748,3.0066 0.098,0.7688 0.0988,1.5953 -0.0274,2.3578 -0.0725,0.4376 -0.4319,0.7409 -0.584,1.1515 -0.2386,0.6436 -0.2984,1.1336 -0.3558,1.8277l0.0511 2.1816 0 0 0.1223 -0.0431 0 0 1.0219 -1.2246c0.4279,-0.4867 0.9857,-0.7778 1.3504,-1.3434 0.4638,-0.7195 0.9947,-1.4039 1.3777,-2.175 0.1946,-0.62 0.7632,-1.0096 1.2044,-1.4256 0.5611,-0.5292 1.0662,-1.6513 1.3048,-2.3852 0.3243,-0.9978 1.0336,-1.625 1.4599,-2.5314 0.2076,-0.4947 0.3285,-1.0143 0.3285,-1.5536 0,-0.6199 0.8541,-1.5675 1.0949,-2.1567 0.4087,-1.0003 0.8848,-2.0542 1.1496,-3.1163 0.7263,-0.4455 0.5627,-1.0391 1.5694,-1.1881 0.5172,-0.0766 1.0564,-0.4046 1.5055,-0.6762 0.8917,-0.5393 0.935,-0.8146 2.0712,-0.7951l5.3103 0.0914 4.5987 2.4035 0 0c0.8361,-1.2246 1.4959,-1.2524 2.865,-1.0053 0.6548,0.1182 1.2383,0.2292 1.8614,0.4844 0.9042,0.2583 1.6695,1.1473 2.4544,1.6541 0.3863,0.2495 1.2768,0.1553 1.7519,0.1553 0.2003,0 0.2928,-0.1462 0.4653,-0.1462 0.2109,0 0.5625,0.2198 0.8303,0.2559 0.2092,0.0281 0.3127,-0.3109 0.3011,-0.4661 -0.0109,-0.1447 -1.7336,-0.5362 -1.7336,-1.0327l0 0c-0.2009,-0.2437 -0.387,-0.5006 -0.6025,-0.7311 -0.3984,-0.4262 0.2683,-1.1175 -0.6204,-1.6449 -0.8411,-0.4991 -0.3467,-1.2779 -0.3467,-2.0288 0,-1.1 -3.0123,-2.4873 -3.6862,-3.162 -0.9131,-0.9143 -0.7351,-1.9992 -2.3906,-2.2847 -0.1302,-0.0224 -0.2564,-0.0463 -0.3964,-0.0749l0.1227 -10.8549 -6.1862 -0.0549 0.014 -4.2678 0 0c-0.4512,0 -1.1371,-0.0368 -1.5741,-0.1553 -0.3134,-0.085 -0.6251,-0.2825 -0.9398,-0.3472 -1.9628,-0.984 -4.4015,-0.5649 -6.2501,0.4295 -0.5423,0.2916 -0.7214,0.9144 -1.104,1.3251l0.0182 1.0783 0 0z","name": "Al-Basrah"},"16": {"path": "M123.618 145.923c0.7292,0.149 2.1274,1.4224 2.3176,2.175 0.1387,0.035 0.691,0.231 0.8029,0.1462 0,-0.4363 0.4832,-1.2759 0.7117,-1.6541 0.4955,-0.8205 0.5615,-2.0068 0.9854,-2.8421 0.2361,-0.4651 0.5515,-0.4205 0.8121,-0.7676 0.2281,-0.3036 0.2899,-0.7388 0.4836,-1.0784 0.449,-0.3804 -0.8037,-1.48 -1.1223,-1.6815 -0.9969,-0.6304 -0.5103,-0.5784 0.3193,-0.6489 0.5947,-0.0506 1.3589,0.1257 1.9161,-0.0365 0.3927,-0.1144 0.6208,-0.5669 0.7938,-0.9139 0.5096,-1.0224 3.4676,0.4535 4.3249,0.6032 0.4812,0.0266 1.0888,0.3407 1.5603,0.4935l2.2537 0.7311c0.5083,0.1648 1.0987,0.3838 1.6424,0.3838l0 0c0.3286,0.3898 0.4386,0.5572 0,0.8499 -0.432,0.2884 -0.1095,0.8627 -0.1095,1.252 0,0.8221 -0.2871,1.4774 -0.4745,2.2664 -0.0302,0.3456 -0.2723,0.5926 -0.3193,0.9138 -0.0264,0.181 -0.1534,0.7255 0.0821,0.8042 0.1266,0.0422 0.2772,-0.4031 0.4744,-0.1827 0.2767,0.3095 -0.276,0.8695 -0.3741,1.124 -0.506,1.3133 1.134,3.1928 -0.2737,4.2495 -0.411,0.5728 -0.3619,0.9718 -0.6204,1.5536 -0.3313,0.7454 -0.8025,0.4945 -1.2592,0.859 -0.0036,0.0262 -0.008,0.0355 -0.0274,0.0549 0,0.7611 -0.1587,2.1413 0.1734,2.8055 2.2243,1.0146 5.0953,0.9139 7.5458,1.0053 0.7267,0.2019 1.4957,0.3655 2.2537,0.3655 0.9282,0 1.984,0.5332 2.6825,1.115 0.3584,0.2984 0.7601,0.6089 1.0493,0.9869 0.2906,0.38 0.4902,0.8706 0.7847,1.2246 0.0748,0.5852 1.0292,1.9733 1.5055,2.3578 0.1826,0.1476 0.4818,0.077 0.7117,0.0914l0.4471 -0.1097 0 0 0.292 2.9061c0.1052,1.0482 0.763,2.0102 1.3321,2.8513 0.6738,1.0344 0.9124,2.0358 0.9124,3.2534 0,0.997 -0.0652,2.3344 -0.3558,3.2807l-1.2318 5.2365c-0.4309,0.9199 -0.7038,1.9957 -0.5748,3.0066 0.098,0.7688 0.0988,1.5953 -0.0274,2.3578 -0.0725,0.4376 -0.4319,0.7409 -0.584,1.1515 -0.2386,0.6436 -0.2984,1.1336 -0.3558,1.8277l0.0511 2.1816 0 0 -2.2986 0.8108 -30.2079 -2.8309 -15.6726 -13.1762 0 0 0.5267 -1.0497c0.4422,-0.4903 0.6831,-1.2336 1.1314,-1.7089 0.3147,-0.3338 0.4858,-0.7699 0.812,-1.0967 0.502,-0.5031 1.0261,-1.4414 1.1679,-2.1384 0.1869,-0.918 0.7479,-1.8816 0.8669,-2.7873 0.2574,-0.2271 0.4818,-1.3031 0.6295,-1.6633 0.7819,-1.9069 1.476,-4.1992 3.0293,-5.6568 0.5668,-0.3287 1.193,-1.2496 1.6789,-1.7364 0.7846,-0.7863 1.1811,-1.9164 1.9343,-2.7142 0.7764,-0.8222 0.9084,-2.2123 1.0675,-3.2807 0.3958,-0.5946 0.3389,-1.6152 0.9125,-2.1568 0.7358,-0.6949 1.2769,-1.6757 1.5602,-2.641 0.1945,-0.663 0.8421,-2.2653 1.3504,-2.7234l0 0z","name": "Al-Muthanna"},"17": {"path": "M140.06 133.641l0.5201 -0.2559c0.0619,-0.0774 0.1765,-0.1113 0.2646,-0.1553 0.0325,-0.0029 0.0352,-0.0039 0.0639,-0.0183l6.7246 -0.064 3.8687 -0.1553 0 0c0.1202,0.1861 0.2307,0.3072 0.2007,0.5209 -0.2216,0.1769 -0.5414,0.3451 -0.7847,0.4661 -0.0045,0.0183 -0.0091,0.0241 -0.0091,0.0457 0.476,0.2973 0.8841,0.8577 1.25,1.2977 0.2197,0.2641 0.4076,0.5606 0.5566,0.8681 0.1957,0.4037 0.2361,0.8306 0.4106,1.2246 -0.097,0.3668 -0.2101,1.8717 0.0456,2.1476 0.1728,0.1864 0.3313,0.2286 0.5019,0.4661 0.3374,0.4699 0.6379,0.1839 0.8394,0.8407 0.18,0.5867 0.8423,1.1041 1.3139,1.5353 0.6142,0.5614 0.3355,1.4218 0.1277,2.0745 -0.4442,1.3787 0.9951,1.6251 1.8796,2.1476 0.8425,0.4976 1.0676,0.4266 1.0676,1.4531 0,0.2347 -0.1295,0.3922 -0.1643,0.6305 -0.0223,0.1524 0.0635,1.1066 0.1278,1.2155 0.1275,0.2161 0.5099,0.3495 0.6752,0.6031 0.2468,0.3784 0.4049,0.901 0.9033,0.9047l2.3814 0.0183 2.6278 0.0274 0 0 -0.0091 5.8854 -0.5932 2.6684c-0.0522,0.2551 -0.2463,0.4326 -0.2463,0.6855 0,0.8395 0.3194,1.602 0.3194,2.44l-0.0183 0.0091c-0.0219,0.0671 -0.2542,-0.0589 -0.2919,-0.0822 -0.3278,-0.2033 -0.6957,-0.3292 -1.0402,-0.5118 -0.2032,-0.1078 -0.3797,-0.2546 -0.5931,-0.3564 -0.1746,-0.0834 -0.3946,-0.1322 -0.5566,-0.2193l-6.7519 2.4217 0 0 -0.4471 0.1097c-0.2299,-0.0144 -0.5291,0.0562 -0.7117,-0.0914 -0.4763,-0.3845 -1.4307,-1.7726 -1.5055,-2.3578 -0.2945,-0.354 -0.4941,-0.8446 -0.7847,-1.2246 -0.2892,-0.378 -0.6909,-0.6885 -1.0493,-0.9869 -0.6985,-0.5818 -1.7543,-1.115 -2.6825,-1.115 -0.758,0 -1.527,-0.1636 -2.2537,-0.3655 -2.4505,-0.0914 -5.3215,0.0093 -7.5458,-1.0053 -0.3321,-0.6642 -0.1734,-2.0444 -0.1734,-2.8055 0.0194,-0.0194 0.0238,-0.0287 0.0274,-0.0549 0.4567,-0.3645 0.9279,-0.1136 1.2592,-0.859 0.2585,-0.5818 0.2094,-0.9808 0.6204,-1.5536 1.4077,-1.0567 -0.2323,-2.9362 0.2737,-4.2495 0.0981,-0.2545 0.6508,-0.8145 0.3741,-1.124 -0.1972,-0.2204 -0.3478,0.2249 -0.4744,0.1827 -0.2355,-0.0787 -0.1085,-0.6232 -0.0821,-0.8042 0.047,-0.3212 0.2891,-0.5682 0.3193,-0.9138 0.1874,-0.789 0.4745,-1.4443 0.4745,-2.2664 0,-0.3893 -0.3225,-0.9636 0.1095,-1.252 0.4386,-0.2927 0.3286,-0.4601 0,-0.8499l0 0 -0.1643 -0.6397c-0.0906,-0.4092 -0.1642,-0.8057 -0.1642,-1.2246 0,-0.1583 0.0091,-0.3156 0.0091,-0.4752 0,-1.0179 -0.2138,-1.8422 -0.5383,-2.769 -0.209,-0.5972 -0.915,-1.3929 -0.5019,-2.0837l0 0z","name": "Dhi Qar"},"18": {"path": "M155.362 114.15c-0.549,0.6694 -0.4384,0.4112 -0.146,1.1678 0.1245,0.3217 -0.2927,1.1707 -0.4562,1.4804 -0.5552,1.051 -0.5231,2.3252 -0.7391,3.4545 -0.0997,0.5211 0.0274,0.8526 0.0274,1.3433 0,0.8189 -0.6205,0.3381 -0.6205,0.6946 -0.1209,1.063 -1.6659,2.1857 -0.9124,3.1346 0.4812,0.6059 0.6937,0.8924 0.8029,1.6723 0.0544,0.3883 0.7791,1.0131 1.1679,1.0693 0.0071,0.0178 0.0096,0.0203 0.0274,0.0274 0.0712,0.507 0.1938,0.8398 -0.3011,1.0509l-1.9708 0.8408c-0.1526,0.0763 -0.3893,0.0923 -0.5201,0.1828 -0.1769,0.1223 -0.0841,0.6409 -0.0183,0.8133 0.1165,0.3056 0.7227,0.6507 0.6478,1.0418 -0.0839,0.4385 -0.7022,0.4646 -0.8485,0.8682l0 0c0.1202,0.1861 0.2307,0.3072 0.2007,0.5209 -0.2216,0.1769 -0.5414,0.3451 -0.7847,0.4661 -0.0045,0.0183 -0.0091,0.0241 -0.0091,0.0457 0.476,0.2973 0.8841,0.8577 1.25,1.2977 0.2197,0.2641 0.4076,0.5606 0.5566,0.8681 0.1957,0.4037 0.2361,0.8306 0.4106,1.2246 -0.097,0.3668 -0.2101,1.8717 0.0456,2.1476 0.1728,0.1864 0.3313,0.2286 0.5019,0.4661 0.3374,0.4699 0.6379,0.1839 0.8394,0.8407 0.18,0.5867 0.8423,1.1041 1.3139,1.5353 0.6142,0.5614 0.3355,1.4218 0.1277,2.0745 -0.4442,1.3787 0.9951,1.6251 1.8796,2.1476 0.8425,0.4976 1.0676,0.4266 1.0676,1.4531 0,0.2347 -0.1295,0.3922 -0.1643,0.6305 -0.0223,0.1524 0.0635,1.1066 0.1278,1.2155 0.1275,0.2161 0.5099,0.3495 0.6752,0.6031 0.2468,0.3784 0.4049,0.901 0.9033,0.9047l2.3814 0.0183 2.6278 0.0274 0 0 -0.0182 -1.0783c0.3826,-0.4107 0.5617,-1.0335 1.104,-1.3251 1.8486,-0.9944 4.2873,-1.4135 6.2501,-0.4295 0.3147,0.0647 0.6264,0.2622 0.9398,0.3472 0.437,0.1185 1.1229,0.1553 1.5741,0.1553l0 0 0.0135 -4.0666 3.1297 -7.6948c0.1436,-0.3176 0.1733,-0.7101 -0.1004,-0.9687 -0.3373,-0.3189 -0.7493,-0.4132 -0.9763,-0.8682 0.0384,-0.0064 0.0106,0.0083 0,0.0457 0.0267,-0.121 0.2402,-0.466 0.1825,-0.5666 -0.0854,-0.1486 -0.3913,0.0567 -0.4562,-0.3016 -0.0914,-0.5052 -0.6178,-0.2766 -0.7847,-0.8224 -0.081,-0.2652 -0.2793,-0.5118 -0.3467,-0.7677 -0.0561,-0.2134 -0.1185,-0.826 -0.2281,-0.9778 -0.1325,-0.1833 -0.4651,0.0739 -0.6022,-0.2011 -0.1198,-0.2401 -0.1698,-0.3526 -0.3285,-0.5666 -0.1717,-0.2316 0.1868,-0.5057 -0.0548,-0.6762l-0.8668 -0.6123c-0.4558,-0.3219 -0.5969,0.4621 -0.8942,-0.3382 -0.0797,-0.2144 -0.319,-0.2227 -0.4379,-0.4386 -0.1088,-0.4756 0.2725,-0.6128 0.5657,-0.8316 0.2011,-0.1502 0.0912,-0.5676 0.0912,-0.8042 -0.4842,-0.1223 -0.7388,-0.3564 -0.9763,-0.8043 -0.2597,-0.49 0.4726,-0.348 0.1825,-0.8224 -0.1004,-0.1641 -0.8154,-0.0897 -1.0037,-0.2102 -0.0882,-0.0565 -0.0088,-0.2717 -0.0729,-0.3838 -0.0777,-0.1361 -0.447,-0.324 -0.365,-0.4478 0.2903,-0.4378 0.824,-0.6033 0.1004,-1.0784 -0.4074,-0.2721 -0.8716,-1.4212 -1.2957,-1.3617 -0.4328,0.0608 -1.5913,-0.4323 -1.6332,-0.4021 -0.289,0.2088 -0.3841,0.5829 -0.7756,0.658 -2.2778,0.4372 -4.0861,-2.2622 -5.7483,-3.3722 -0.5729,-0.3503 -1.1445,-0.8738 -1.4964,-1.4439 -0.2593,-0.4203 -0.7374,-0.375 -0.885,-0.859 -0.0872,-0.2858 -0.395,-0.4443 -0.5931,-0.658 -0.4187,-0.4518 -0.2114,-0.5109 -0.8486,-0.6854 -0.4109,-0.1126 -1.2475,-0.4197 -1.5055,-0.7676 -0.2374,-0.3203 -0.5014,-0.5594 -0.8303,-0.8043 -0.0332,-0.0331 -0.0666,-0.0661 -0.1003,-0.0985l0 0z","name": "Maysan"}},"height": 300,"width": 306});
diff --git a/js/vmap/dist/maps/jquery.vmap.russia.js b/js/vmap/dist/maps/jquery.vmap.russia.js
new file mode 100644 (file)
index 0000000..77aadc1
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add Russia Map Data Points */
+jQuery.fn.vectorMap('addMap','russia_en',{"width":959,"height":593,"paths":{"da":{"path":"m34.939,403.74,2.6516,1.2627,3.6618,0.50507,1.7678-2.0203,2.1466,2.0203,2.3991-1.6415,0.25254-1.7678,1.6415-2.1466,3.0305,0.50508,3.7881-2.9042-0.50508-1.894-4.7982-0.50508,0.75762-3.1567-1.0102-0.63134,0.63135-2.2728-3.1567-2.7779,1.5152-0.50508,3.9143,0.88388,0-1.389-1.0102-1.2627,8.3338-0.25254,4.9245,5.4296,1.2627,1.894-0.37881,2.2728-5.3033-0.3788,0.50508,2.5254,1.5152,3.0304-1.0102,3.5355-2.3991,2.7779-1.2627,0.25254,4.5457,0.75761-5.5558,2.1466-0.50508,2.0203-0.75762,0.50508-3.0305,0.50507-0.25254,4.7982-1.2627,0.88388-1.1364,13.132-9.0914-0.12627-3.6618-2.2728-1.389-0.88388,0-11.617-3.283-5.9346,0.37881-2.9042,1.2627-0.37881z","name":"Republic of Dagestan"},"sa":{"path":"M671.25,126.75l-1.44,1.06-1.25,1.63s1.44,0.87,2.16,0.87c0.71,0,2.69-1.97,2.69-1.97l-2.16-1.59zm18.47,12.09c-0.18-0.01-0.4,0.02-0.63,0.07-1.78,0.35-4.81,1.93-4.81,1.93s-1.41,1.1-2.12,1.1c-0.72,0-2.35-0.38-2.35-0.38-0.71,0-2.5,1.25-2.5,1.25l-1.4,1.78s-1.1-0.51-1.1,0.38-0.35,1.96,0.72,2.5c1.07,0.53,1.61,1.06,2.5,1.06s3.22-0.72,3.22-0.72l1.97-0.87,1.97,1.06s0.51-0.9,1.4-1.44c0.9-0.53,3.4-2.31,3.75-3.03,0.36-0.71,0.72-3.22,0.72-3.22s-0.11-1.36-1.34-1.47zm-19.81,7.1c-0.15,0.01-0.29,0.05-0.44,0.09-1.25,0.36-2.85,0.19-3.56,0.19-0.72,0-0.91,0.19-0.91,0.19s-0.88,1.58-1.59,1.93c-0.72,0.36-1.99,0.74-3.07,0.57-1.07-0.18-3.75-1.25-3.75-1.25s-1.93-0.02-1.93,1.59,3.03,3.41,3.03,3.41l1.06,1.4s-2.51,0.73-3.41,0.38c-0.89-0.36-2.65-2.16-2.65-2.16l-3.22-0.72s-2.88,0.2-2.88,1.1c0,0.89-0.68,2.67-0.68,3.56s-0.9,3.04,0.53,3.94c1.43,0.89,1.79,3.03,1.97,3.75,0.17,0.71,0.7,1.77,2.84,2.31,2.14,0.53,4.29,0.53,5,1.06,0.71,0.54,1.77,1.07,2.84,0.53,1.08-0.53,1.82-2.65,1.82-2.65l2.12-1.97s1.61-1.44,2.5-2.16c0.89-0.71,2.7-0.54,4.13-1.44,1.42-0.89,2.31-3.75,2.31-3.75v-5l-0.38-4.43s-0.68-0.58-1.68-0.47zm106.25,5.62c-0.45,0.09-0.75,4.1-0.75,4.1l-7.32,1.65-3.28,0.63-4.53-6.06-7.84-0.13-0.38,0.87-5.68,1.66-1.76,2.13-6.06,6.31v2.78l-2.15,1.91-3.29,5.03-4.93-2.38-3.41-0.37-1.75,2h-4.56l-3.41,1.78-1.75-1.53,4.28-2.91-2.28-1.62-3.03-0.13-8.84,4.03,1.9,5.44-0.87,4.78-2.66,2.91-1.65-2.13,3.03-7.47-1.75-0.37-2.66,4.03-3.03,2.03-1-0.75,1-3.16,2.28-0.74,2.91-2.66-7.1,1.75-9.22,5.31-6.68,0.25,3.65,3.66-3.65,3.4-0.5,3.03,0.37,1.16,3.91-1.78-1,4.03,4.81,2.91-0.91,2.9-2-1.37-3.68,1,1.28,3.41,2.4-0.26-1.03,2.66-3.9-0.5-4.28-1.66-3.53,0.26-2.41,3.15-0.63,4.06h-6.46l-1.76-1.53-2.4-2-0.5,4.41,0.87,0.87-0.12,1.41,1.65,0.87-0.9,2.54,1.66,6.18-3.29-1.4-1,1.15-9.87-5.31v-4.94l-2.25,0.13-1.78,2.41-2-3.41,3.65-0.63-0.5-2.9-4.43-1.66,0.75-0.87,0.12-2.53-5.28-4.04-5.31-2.53-1,3.66-7.35,0.65-2.37-1.65-4.19,2.15v2.13l4.19,4.69-10.94,5.31-10.28-1.16,0.44-4.4-12.07,0.19-3.96,3.78h-2.85l-1.09,1.09,2.66,2.87h-2.13l-2.91-2.06,1.19-2.09-0.87-1.38-1.54-1.78,0.07,2.28-1.5,1.07-3.85-1.32s-2.9,3.53-2.84,3.78c0.06,0.26,2.66,3.29,2.66,3.29l-1.41,3.34,1.59,2.09,0.19,2.78,7.38,5.82-0.32,5.47,2.53,1.9,1.63,2.53-2.53,2.72-4.41,3.03-0.69,2.63-4.81,2.78,0.25,6.12-2.25,1.1-2.97-1.28-5.65,4.75-4.44,0.09,0.06,1.97,5.38,6.59,1.78,20.1-6.35,1.97,4.19,3.4-1.78,4.19v1.25l7.16,8.84-4.57,6.69,0.97,1.6-2.4,1.87,0.09,2.25,5.63,0.34,0.71,0.72,9.1,0.19,3.31,3.31-0.53,1.6-3.31,0.34,0.19,3.94,4.03-1.06,5.06,6.59-0.53,5.53,3.84,5.19-1.97,3.4,0.53,2.13,7.69,6.53v4.37l-3.75,6.44,0.28,10.78,3.85,4.13,3.37-3.94,3.75,0.09,1.88-1.34,2.68-0.62,2.41-2.07,3.56,3.85,0.38,2.31,4-5.06,0.09-4.13,5.38-2.75-0.29-6.25,2.32-4.12,3.84-1.5,4.91,1.06,6.15,4.91,0.57,3.84,1.31,0.87,4.03-1.4,2.5-2.06,2.69,1.06,0.87,4.47,3.13,4.56,2.15,1.78v3.03l2.32,1.35,0.71,4.71,3.94,0.19,0.97,1.35,1.53,4.09,8.38-0.25,3.31-1.97,5.53,1.16,3.56,1.97,11-0.72,5.54,3.75,2.21,0.53,5.19-2.6h2.6l3.03,2.26,2.78-0.19,3.22-3.94,5.68-0.06,2.5-1.97h7.88l0.19-3.75,10.68-5.09,0.82-3.04-4.28-4.12,2.31-1.69,0.62-4.03-1.34-1.69-2.41,0.38-2.03-1.44,2.75-4.03-2.84-1.6,0.25-1.87,1.53-1.97-1.44-1.44-3.47-1.15-0.53-1.6,3.38-1.43-1.88-0.91-0.19-5.25-0.87-0.62-0.19-1.88,2.78-1.25-1.62-1.25v-2.94l5.47-1.97,3.12,0.16,0.25-1.78,6.53,0.09v-2.75l-1.25-1.53,1.16-1.25,3.47-0.62,3.31-2.22,1.34-6,5-0.44,0.1-2.06s-5.29-4.9-5.47-5.25c-0.18-0.36-0.88-3.94-0.88-3.94l-3.56-2.59v-5.97l2.94-7.16-1.69-9.19,0.78-3.12,13.5,0.72,0.25-5.28,5.19-1.16,3.47,1.87,0.81-2.31-2.41-3.69,1.69-0.62,0.19-2.75-7.16-8.5,0.1-4.37-3.13-1.5-0.09-4.04-1.78-1.15,1.09-2.13,3.81-0.47,1.35-1.78,4.28,0.38,0.09-2.44-3.37-1.5,0.15-3.31,5.47-0.53v-3.57l5.63,0.44,5.62-8.03,0.44-2.5-6.06-6.06-0.19-1.88,2.31-3.4-0.97-1.79-3.31,0.19-1.5-2.34,4.72-1.41-0.09-1.53-2.07-0.97-0.25-1.34,2.13-3.75,5.72-1.97-0.78-3.56,5.15,0.68-0.62-5.43,1.34,0.28,0.19-3.59-2.69-0.63-2.94-4.53-7.59-0.28-4.19-1.88,0.72-3.47h-3.12l-0.19-1.62,8.12-10.44,1.07-7.84s-9.81-5.72-10.25-5.63zm-135.1,8.56c-0.12,0.03-0.23,0.08-0.34,0.19-0.89,0.9-1.07,1.79-0.53,2.5,0.53,0.72,1.06,1.63,1.78,2.35,0.71,0.71,2.31,1.25,2.31,1.25s0.71-1.1,0.53-1.82c-0.18-0.71-1.97-2.84-1.97-2.84s-0.94-1.78-1.78-1.63zm28.94,7.35l-2.31,0.34s-1.07,0.91-1.25,1.63c-0.18,0.71-0.9,1.24,0,1.78,0.89,0.53,3.75,1.25,3.75,1.25s1.6-0.02,1.78,0.87c0.18,0.9,0.18,1.8,0,2.69s-0.53,1.78-0.53,1.78l0.72,0.72,1.93-0.53s0.74-0.72,1.82-0.72h2.65s1.44-0.53,1.97-1.25c0.54-0.71,1.97-1.25,1.97-1.25h2.69s1.41-0.52,0.87-1.59c-0.53-1.07-1.76-1.62-2.65-2.16-0.9-0.53-3.22-2.31-3.22-2.31h-2.5l-3.6,0.34-2.84,0.38-1.25-1.97zm-17,10.15c-0.12,0-0.22,0.01-0.31,0.04-0.72,0.17-1.44,1.4-1.44,1.4s0.37,1.78,2.16,1.78c1.78,0,2.3,0.55,2.65-0.34,0.36-0.89-0.87-2.31-0.87-2.31s-1.37-0.55-2.19-0.57z","name":"Sakha Republic"},"so":{"path":"m45.583,387.43-2.2728,2.6516-4.1669-2.6516-2.0203,1.1364-0.37881,5.8084-1.1364,1.389-2.2728-0.12627-5.9346-2.6516-3.0305-3.283,0.12627-4.9245,4.672,0.75761,0.37881-0.88388,2.5254-0.12627,3.283,1.5152,4.0406-1.894s-0.12627-3.5355,0.75761-2.7779c0.88388,0.75762,1.389,1.2627,1.389,1.2627l0.25254,3.5355z","name":"Republic of North Ossetia–Alania"},"kb":{"path":"m20.982,375.86c0.26786,0.35715,2.5893,4.7322,2.5893,4.7322l0.98214,3.9286,4.6429,1.1607,2.8571-1.0714,3.2143,1.5179,4.375-1.875,0.26786-3.125-5.9821-2.3214-1.875-5.0893-2.2321-1.1607-4.375,0.71429z","name":"Kabardino-Balkar Republic"},"kc":{"path":"m13.482,361.39,2.2321,8.4821,5.0893,6.25,4.375-2.6786,5.3571-0.89286,0.08929-3.3928,3.75-1.0714-6.6964-7.2321-2.2321,2.4107-2.8571,0.26786-1.6071-4.5536,0.44643-2.1429z","name":"Karachay–Cherkess Republic"},"st":{"path":"m33.929,367.73-3.4821,0.98215,0.17857,3.75,1.5179,1.25,1.7857,4.6428,6.5179,3.0357,1.3393,1.3393,0.08929,3.0357,3.8393,1.7857,1.6071,2.5893,3.2143,0.625,0.71429-1.4286-2.8571-3.125,1.5179-0.53572,3.5714,0.80357,0.17857-1.1607-0.98214-1.3393,7.7679-0.0893,1.6964-1.5179,0.26786-3.5714-5.2679-7.5-0.17857-9.4643-3.4821-6.0714-4.9107-0.98214-1.5179-2.7679-5.0893-5.7143-0.98214-0.625-1.5179,1.3393-2.7679-2.0536-1.4286,0.80357-0.80357,1.0714-0.08929,1.6071,0.35714,1.3393,0.35714,1.1607-0.71429,1.6071-0.98214,1.4286-1.9643,2.2322-1.875,1.0714-0.71428,0.98214-0.98214,2.3214z","name":"Stavropol Krai"},"ks":{"path":"m21.607,356.48-0.08929,2.0536,0.98214,3.8393,0.35714,0.80357,2.2321,0.0893,3.75-4.5536,1.4286-1.9643,1.9643-1.0714,2.6786-4.0178-0.26786-3.3929,0.17857-1.6964,0.89286-1.5179,1.3393,0,1.7857,1.5179,1.3393,0,2.5893-3.0357,0.08929-1.9643-0.89286-0.98214-2.2321-1.3393,0.17857-2.9464,2.8571-3.125,0.08929-1.4286-2.7679-2.9464-3.75-0.71428-0.80357-0.89286,1.6071-1.25,0.17857-2.4107-2.1429-1.6072-2.5893-0.80357-1.6071-1.6964-1.25-0.98214-0.89286-0.0893-1.3393,2.2322-0.625,0.98214,1.0714,1.4286-0.35714,1.5179-0.80357,0.625-2.7679-0.26786-0.89286-0.89286-1.9643,0.0893-1.875,0.71429-3.0357,1.7857-1.6964,0-1.3393-1.4286-1.6071-0.625-1.1607-1.4286,0-2.6786-2.2321-0.26786-1.25,0.625-0.35714,2.9464-0.089286,13.214,0.71429,5.8929,0.98214,3.6607-0.089286,2.3214-0.625,2.7679-0.089286,2.4107,0.17857,2.0536,1.5179,0.89285,0.71429,0.625,1.6071,1.5179,0.89286,1.0714,0.89286,0.89286l7.947-4.27-0.804-1.25-0.357-1.43-5.089,2.68h-1.875l-1.25-1.875,0.35714-3.5714,6.25-1.4286,2.7679-2.3214,0.71429-2.5893-1.3393-0.80357-1.9643,0.44642-1.1607-1.5178-0.71429-2.6786-1.3393-1.7857-0.17857-1.25,0.08929-1.1607,1.3393-0.80357,1.3393,0.625,1.0714,1.3393,1.0714,1.9643,1.3393,1.7857,2.3214,1.3393,1.6964,0.89285s0.625,0.26786,0.71429,0.625c0.08929,0.35715,0.89286,2.6786,0.89286,2.6786v4.0178l-0.08929,1.3393-1.0714,1.0714-1.875,1.5178-1.6071,1.4286z","name":"Krasnodar Krai"},"ro":{"path":"m37.5,323.45,2.0536,0.98214,1.4286-0.17857,0.625-0.89286-0.44643-1.1607-1.25-0.89286-1.9643-1.3393-0.89286-1.1607-0.35714-0.71428,1.0714-1.4286l2.231-1.08,1.6071-0.26786,1.0714,0.35714,1.4286,1.3393,1.5179,0.35714,1.6964-0.89286,0.89286,0.44643,1.072,1.06,1.339,1.79,0.268,1.33,1.607-0.08,1.3393-0.80358,1.6964-0.0893,1.3393-0.0893,0.35714-1.5178,0.53571-1.4286,1.25-1.6071,1.3393-1.0714,1.6964,1.0714,0.71429,0.35714,0.89286-1.875,0.44643-0.71428,2.6786-0.26786,1.875-1.6964,2.3214-0.17857,2.0536,1.1607,2.1429,1.25,0.98214,0.53571,3.9286,0.0893h2.2321l1.5179-0.98215h1.3393l0.71429,0.625,0.26786,1.6964-0.08929,1.9643v1.875l-0.08929,1.0714-0.981,1.34-1.25,0.98214-1.25,0.71429-0.80357,0.35714-0.35714,1.25-0.44643,1.6072-0.08929,1.4286-0.44643,1.1607-0.625,1.4286-1.4286,1.5179-1.6964,0.53571h-3.125l-1.608-0.36-1.518,0.53-0.625,1.97-0.982,0.62-0.80357,0.53572,0.17857,0.89285,1.3393,1.4286,0.71429,1.4286-1.1607,1.4286-1.3393,0.89285-0.80357,1.7857-0.08929,0.80357,0.98214,0.53571,1.1607,1.1607,0.625,1.0714,0.80357,0.80357,0.71429,1.3393v1.0714l-0.71429,0.80357,0.53572,0.625,1.4286,0.35715,0.625-0.53572,0.71429-0.0893,0.35714,0.98214v1.4286l-1.3393,1.3393-2.1429,1.0714-2.0536,1.1607-3.3929,0.0893-0.80357,0.80357-1.3393,0.80357-1.696,0.46-1.429-0.71-1.696-0.71-0.893-0.9-0.178-2.23-0.179-1.52-1.696-2.14-1.1607-0.80357-0.17857-1.25-0.80357-0.89286-1.7857-0.0893h-2.7679l-2.8571-0.0893-1.3393-0.17857-1.6071-1.7857-0.98214-0.71429v-0.89286l1.3393-1.5178v-1.5179l-0.625-1.25-1.875-1.4286-0.71429-0.625,0.26786-2.2322,2.7679-3.2143,0.08928-1.6071-1.9643-2.2322-1.3393-0.89285-2.411-0.55-1.0714-0.35714-0.08929-0.71429,1.0714-1.0714,0.26786-1.1607z","name":"Rostov Oblast"},"kk":{"path":"m44.554,348.71,0.98214,1.6071,1.1607,1.0714,1.1607,1.6964,0.80357,1.1607,1.1607,0.71429,2.5893,0.44643,1.3393,0.625,0.98214,1.6071s0.98214,1.7857,1.25,2.2321c0.26786,0.44643,0.98214,2.4107,0.98214,2.4107l0.17857,4.9107v3.2143l0.89286,2.2321,3.3036,4.1964,1.25,2.0536-0.17857,2.5893-1.4286,1.875,0.89286,1.3393,4.375,4.7321,0.53571,1.25,0.35714,0.98215,0.89286,0.53571,1.4286,0.0893,1.6071-0.26786,1.7857-0.53572,2.2321-0.89285,2.3214-0.26786,0.713-0.71,0.625-2.15-0.268-1.16-2.232-1.34-0.982-0.71,0.08928-1.3393,1.0714-0.625,1.7857,0.0893,1.4286-1.25-0.53572-0.71428-0.71428-2.0536-0.268-1.7-0.179-1.16h1.0714l1.6964,1.25,1.7857,0.80357,2.6786-0.17857h0.89286l0.53571-1.1607-0.17857-2.4107-0.08929-3.8393v-6.3393-0.98214l-0.08929-2.2321,2.9464-2.8572,0.17857-1.3393-1.4286-0.625v-3.2143l-1.0714-1.1607-1.1607-0.35715-2.5-0.17857-0.625-1.4286-0.17857-0.80357-1.25,0.26786-0.625,1.0714h-1.3393l-1.25-0.0893-1.071-0.98-0.804-0.71-2.321-0.27-0.98214,0.35715-0.71429,0.80357-0.71429,0.35714-0.26786,1.1607-0.35714,0.80357,0.35714,0.625,1.0714,0.35714,1.0714-0.44643,0.89286,0.35714,0.08929,0.98215-0.44643,1.5178-5,3.125-3.3929,0.26786-2.3214,1.3393-1.5179,0.53571-3.8393-1.7857-0.53571-0.35715-0.08929-3.3928-0.71429-1.4286-2.3214-2.2322-0.625-1.25-1.9643-0.80357h-3.5714z","name":"Republic of Kalmykia"},"as":{"path":"m86.873,350.94,1.6415-1.389,1.1364-0.63135,1.7678,1.2627,2.0203,0.63135,2.2728,0.50508,0.88388,1.0102,2.1466,0.88388,0.75761,1.1364,0.63134,1.1364,0,1.389,0,0.88389-1.5152,0.3788-1.1364,1.389-0.12627,1.0102,0.63134,1.389,1.0102,1.1364-0.37881,2.1466-0.75762,1.0102-1.7678,0.88389-0.25254,1.1364,0.50508,0.88388,1.7678,1.1364,2.2728,1.5152,1.389,1.6415,0.63134,1.0102,0,1.5152-1.0102,1.1364-0.25254,2.0203-1.0102,1.0102,0,2.2728,0,2.7779-0.75761,0.3788-1.7678-0.3788-1.894-0.75762-0.63134,0.37881-0.37881,2.1466,1.6415,2.1466,1.1364,1.2627,0.88388,1.0102,0.50508,0.63134,0.12627,1.2627-3.9143,0.25253-3.0305,0.63135-2.1466,0-1.894-1.2627-2.0203-1.5152-5.4296,0-1.0102-0.37881-1.1364-1.1364,0.37881-2.9042-0.88388-1.0102-2.2728-1.6415,0-1.6415,1.0102-0.3788,1.5152,0,1.389-1.0102-0.63134-1.389-0.75761-4.0406,0.63134-0.3788,1.2627,0.75761,2.9042,1.389,2.0203-0.25254,1.2627-0.12627,0.50508-1.6415-0.25254-5.4296,0.12627-5.0508-0.25254-4.2931,2.1466-2.2728,1.0102-1.1364,0.12627-1.389-1.2627-0.50508-0.25254-2.1466z","name":"Astrakhan Oblast"},"ad":{"path":"m21.786,356.21,2.4107-1.4286,2.5-2.6786,0.35714-2.1428-0.26786-3.9286-1.0714-2.7679-2.9464-0.98214l-2.412-1.78-2.232-3.75-1.5179-1.1607-1.3393,0.71428-0.17857,2.1429,1.6071,1.875,0.80357,2.5893,1.1607,1.6964,1.6071-0.35714,1.5179,0.44643-0.44643,2.9464-2.9464,2.3214-3.394,0.71-2.8571,0.35715-0.17857,3.8393,1.0714,1.7857h1.7857l5.3571-2.9464,0.35714,1.7857z","name":"Republic of Adygea"},"vl":{"path":"m85.893,313.18,1.5179-0.98214,1.875-0.0893,1.1607-1.0714,1.1607-1.6072,0-1.25,1.1607-0.98214,1.9643,1.25,2.5,1.9643,3.3036,2.1428,3.9286,1.5179,1.4286,1.5179,0.625,2.1428,0.44643,1.4286,2.8571,0.35714,0.44643,1.4286,2.5893,0.80357,1.7857,1.7857,1.6964,1.6964,0.17857,2.2322-1.5179,1.25-1.6071,2.2321-1.4286,1.3393-0.26786,1.25,0.89286,2.2321,2.9464,1.875,1.6964,1.875,1.7857,1.1607,1.25,3.3036,1.0714,1.875,0.0893,1.25-0.71428,0.53572-1.3393,0.44643-0.71429,0.53571-2.8571,0.26786-4.6429-0.0893-1.6964,0.26786-0.71429,1.6071,0,2.8572-0.17857,1.1607-1.6964,1.25-1.3393,0.98214-4.0178-0.0893-1.0714-0.0893-1.3393-3.0357-1.4286-1.0714-1.875-1.0714-1.0714-0.625l-2.256-0.46-2.054-1.25-1.071-0.18-1.1607,0.625-0.98214,0.71429-1.25,0.26785-2.1429-0.0893-0.89286-1.1607-0.35714-1.25-1.4286,0.26786-0.89286,1.1607h-1.25l-1.875-0.71428-1.25-0.80357-1.3393-0.35715-1.4286,0.17858-1.4286,1.25h-0.89286l-1.4286-2.5-1.25-1.4286-1.0714-0.71428,0.448-1.44,0.893-1.52,1.607-1.43,0.179-0.89-1.6964-2.1429-0.44643-1.0714,1.4286-0.80358,0.625-1.875,0.625-0.53571,1.25-0.35714,1.6071,0.0893h3.0357l1.7857-0.625,1.9643-2.5893,0.89286-4.0179,0.625-1.4286,2.8571-2.0536,1.1607-1.6964,0.35714-3.3036v-2.2322z","name":"Volgograd Oblast"},"vn":{"path":"m70.089,310.77,0-6.0714,0.08929-1.1607,3.75-3.2143,2.5-3.6607,1.3393-1.4286,0.35714-1.875,2.4107-0.71428,0.35714-2.5893,0.625-1.7857,1.0714-0.35714,0.625-2.0536,1.3393-1.7857,1.1607-1.0714,0.98214-0.53571,0.89286,1.1607,0.44643,0,0.71429-1.0714,0.53571-0.71428,1.1607-0.17857,0.89286,0.89285,1.25,1.1607,1.4286,1.4286,1.1607,1.5179,0.80357,0.89285-0.26786,2.1429,0,1.6071,1.875,1.0714,2.3214,1.3393,0.80357,1.3393-0.0893,1.7857-0.89285,1.5178-0.44643,0.98215,1.5179,1.25,1.875,1.7857,1.9643,2.2321,1.3393,1.6964,1.1607,1.9643-0.26786,2.3214,0,2.0536-2.1429,1.0714-0.71428,0.17857-4.2857-1.875-2.6786-1.7857-2.1429-1.4286-1.6964-1.1607-0.53571-0.17857-0.71429,0.80357-0.44643,1.25-1.4286,1.9643-1.6964,0.44643-2.8571,0.80357-3.5714,1.1607-3.2143,0.0893-2.5-0.17857-2.3214-1.25-2.3214-1.0714z","name":"Voronezh Oblast"},"bl":{"path":"m63.304,272.29-5.4464,3.3036,0.08928,2.6786,1.6964,1.875,0.08929,3.125,0.44643,1.6964,2.8571,1.6071,2.8571,0.44643l1.608,2.23-2.5,3.3036-0.35714,2.1429,1.0714,1.6071,2.3214,1.5179,0.17857,2.9464,1.1607,1.5179,0.71428,0.89285,4.7321-4.375,3.75-5.4464,2.0536-0.89285,0.80357-4.1072,1.0714-0.89285,0.53571-1.3393-2.5-2.8571-3.5714-4.1071-2.7679-0.26786-2.9464-1.1607-2.6786-1.6964-2.5893-1.6072-1.9643-1.6071z","name":"Belgorod Oblast"},"ky":{"path":"m63.482,271.84,0-4.6429l-0.357-1.61-1.786-1.97-0.714-1.07,1.3393-1.0714,3.75-1.3393,2.7679-1.3393,2.6786,0.0893,0.53571,1.0714,1.25-0.0893,1.7857-1.1607h0.80357l0.98214,0.44643,1.4286,1.6071,0.53571,0.80357,0.08929,1.6964,1.0714,0.89286,1.0714,0.71428h0.89286l1.0714,1.25,0.17857,3.2143v2.4107l-0.89286,0.98214v1.5179,1.1607l1.0714,1.25,1.1607,0.98214,0.89286,0.17857,1.5179,0.53571,1.0714,1.6072,1.6071,1.5178-0.71429,1.1607-0.80357,0.89286-0.89286-0.80358-1.9643,1.25-1.4286,1.1607-0.53571,0.80357-3.4821-4.1071-2.2321-2.3214-0.98214-0.53572-3.3036-0.625-2.8571-1.5178-3.6607-2.1429-2.4107-1.9643z","name":"Kursk Oblast"},"or":{"path":"m74.732,258.27,1.0714-1.875,2.2321-0.26786,0.89286-1.6071,0.89286-0.53572,1.9643,0.89286,1.6964-0.0893,1.6071-0.71429,1.0714-1.5179,0.89286-0.53571,0.98214,0.17857,1.3393,0.98214,1.9643,0.89286,1.1607,0.89286,0.35714,0.89285,0.71429,1.3393,0.17857,2.0536,0,3.6607,0.98214,1.7857,1.4286,1.875,0.80357,1.25,0.71429,1.7857-0.26786,1.5179-3.9286,1.875-1.9643,0.98214-1.0714,2.1429-1.875,1.0714-1.875,1.0714-2.4107-0.89286-1.9643-1.6071-0.44643-1.6964,0.44643-1.9643,0.44643-0.89285,0.08928-4.4643-0.89286-1.6964-1.7857-0.53571-1.7857-1.4286-0.08929-1.6072-1.3393-1.5178-1.6071-1.6964z","name":"Oryol Oblast"},"lp":{"path":"m86.875,278.45,1.5179,1.875,1.0714,0.89286,1.1607,0.71428,1.1607,1.0714,2.5,2.2321,1.25,1.5179,0.625,1.4286-0.44643,2.5893,0.53572,0.625,2.5,1.3393,1.875,1.7857,1.0714-0.17857,1.0714-0.625,0.44643-0.80357,0.0893-5.8036,0.35714-0.71428,1.4286-0.80357,2.3214-0.17857,2.0536-1.1607,1.3393-0.44643,0.17857-1.6964,0.625-1.3393,1.25-1.5179-0.80357-1.1607-2.6786-0.98215-0.53571-0.53571-0.17858-0.71429,1.0714-1.3393,0-1.6071-2.1428-0.35715-1.0714,0.44643-1.6072,0.80357-0.98214,0.89286-1.1607,0.625-1.4286,0.0893-1.3393-1.5179-1.6964-1.6964-0.80357-0.98214-2.4107,0.89285-3.125,1.6964-1.1607,1.6072-1.6071,1.4286z","name":"Lipetsk Oblast"},"tl":{"path":"m93.482,256.3,3.2143-2.0536,0.98214-0.17857,1.6071,0.80357,0.98215-0.80357,0.71428-1.0714,3.125,0,1.6072,0.625,2.0536,0.35714,1.4286,0.80358,2.4107,0.35714,1.4286,0.71428,0.53572,1.0714,0.98214,1.0714,1.25,1.4286,0.71429,1.6072-0.35715,1.6964-0.98214,1.1607-0.71428,1.6964-1.3393,1.9643-1.6964,2.0536-1.0714,1.875-0.71428,0.98215-0.53572,0.35714-1.7857,0-2.5,0.89286-1.5179,1.0714-1.3393,0.26785-2.0536-1.3393-2.0536-2.5893-0.26786-2.0536-0.53571-1.4286-1.6071-2.5l-1.413-2.14-0.179-2.23z","name":"Tula Oblast"},"bn":{"path":"m67.679,258.62,0.26786-1.7857,2.3214-1.5179,0.44643-1.1607,0-1.4286-1.6071-1.9643-1.7857-2.1429-1.6964-1.9643-2.3214-1.875-1.5179-0.89286-1.6964-0.26786-0.89286-1.1607,0.17857-2.3214,1.3393-1.6071,3.125-2.1429,2.6786-1.875,0.89286-1.7857,0.98214-0.71428,1.6964,0.26786,0.625,1.25,0.625,1.5178,1.0714,2.2322,1.1607,0.80357,5.8929,0.26785,2.1429-0.35714,1.4286,0.53572,3.125,0.89285,2.3214,0,0.71429,1.9643,0,2.2321-0.17857,1.1607-0.98214,1.5178-0.71429,0.53572-0.26786,1.4286,0.26786,1.5179,0,1.25-0.80357,1.4286-1.4286,1.5178-1.7857,0.71429-1.6964,0.17857-1.7857-0.71428-1.4286,0.71428-0.26786,0.89286-2.4107,0.80357-1.0714,1.4286-1.3393,1.25-1.4286,0.17857-1.4286-0.71428z","name":"Bryansk Oblast"},"kj":{"path":"m89.196,239.61,1.6071-1.25,1.6071-1.3393l1.161-0.27,1.429,0.63,0.80357,1.4286,1.0714,1.25,1.7857,0.80357,1.7857,0.35715,3.125,0.0893,1.875-0.0893,1.6071-1.0714,2.4107-0.0893,1.4286,0.44643,0.98214,2.0536,0.26786,1.4286,1.25,0.625,1.6071,0.98215,0.98214,0.80357,0.53572,1.25-0.53572,2.0536-1.0714,1.7857-1.4286,1.9643-1.1607,1.25-0.89286,0.44643-3.75-1.25-2.6786-1.0714-2.6786,0.0893-1.875,0.44642-1.0714,1.25-1.5179-0.44642-1.0714,0.0893-1.0714,0.80357-2.0536,1.0714-0.89286-0.89286-1.0714-0.80357-1.9643-1.25-1.5179-0.89285-0.89286-0.44643v-1.0714-2.4107l-0.08929-0.625,1.1607-1.6964,1.0714-1.875v-1.7857l-0.26786-1.6071z","name":"Kaluga Oblast"},"sm":{"path":"M79.375,237.55,80,235.95,80.179,234.52,79.732,233l-0.08928-1.4286,1.5179-1.3393,0.71429-1.6071,0.08929-3.125,0.35714-1.875,2.4107-2.5,2.5-1.9643,1.875-1.7857s1.875-1.3393,2.2321-1.5179c0.35714-0.17857,2.5-1.5178,2.5-1.5178l2.5,0.0893,3.0357,3.4822,1.875,3.4821,2.5,3.6607,1.4286,0.89286,2.7679,0.53571h2.0536l0.80357,0.71429,1.1607,1.875,1.1607,1.3393,1.25,1.6071,1.0714,1.4286,0.17857,1.3393-0.98214,1.25-1.875,0.89285-1.875,0.53572-0.89286,1.25-0.44643,0.89285-1.875,0.44643-1.7857,0.625-1.6072,0.35715h-3.0357l-3.75-0.80358-1.7857-1.7857-1.4286-1.3393-1.1607-0.26785-1.1607,0.71428-2.2321,1.5179-1.1607,0.44643-1.7857-0.44643-4.1071-0.98214-2.4107-0.35715z","name":"Smolensk Oblast"},"mc":{"path":"m116.07,234.16,3.5714,0.26785,2.3214-0.89285,1.4286-0.44643,0.53571,0.625,0.0893,1.7857,0,1.1607-0.17857,1.3393,1.5178,0.89286,2.9464,0.44643,1.7857,0.89285,2.0536,0.89286,2.7678,0.89286,1.7857,0.26786,1.25,0.53571,0.26786,1.6071-0.0893,1.5179-0.44643,1.6964-1.5179,0.625-2.1428,1.1607-1.6072,1.3393-0.0893,1.25-0.625,1.7857-1.1607,1.5179-0.35714,1.6071,0.17857,1.6072,0.0893,0.89285,1.1607,1.0714,1.0714,0.625,1.1607-1.0714,0.625,0.44643,0,1.5179-0.0893,3.2143-0.44643,1.1607-1.3393-0.44643-1.875-0.17857-1.6072,0.17857-0.80357,0.89286-2.0536,0.0893-1.6071-0.35714-1.25-0.71429-1.0714-1.1607-1.6071-0.625-1.6964,0-0.44643,0.80357-0.17857,1.1607-1.0714,0.53571-1.4286,0.0893-0.80357-0.80358-0.17858-0.625,1.1607-2.4107,0.26786-1.9643-0.53572-1.6964-1.1607-1.5179-1.1607-1.5179-1.0714-0.89286,0.625-1.25,2.5-2.9464,1.1607-2.6786-0.71429-1.7857-1.6071-1.6071-1.6071-0.98215-0.53572-0.35714-0.625-1.875-0.80357-1.25-0.80357-0.80357,0.625-1.5179,2.5893-1.3393z","name":"Moscow Oblast"},"rz":{"path":"m114.55,265.59-1.9643,2.6786-2.1429,3.125-0.625,2.7679-0.80357,1.7857,0.17857,0.80357,1.6964,0.71429,1.9643,1.3393,0.44643,1.5179-0.26786,0.89286,1.4286,1.1607,1.9643,0,1.1607,0.71429,0.0893,1.875,0.44643,1.1607,1.25,0.44643,1.5179-0.625,1.9643,0,1.5179,0.98214,0.625,1.7857,1.0714,1.1607,2.6786-0.17857,3.125,0,2.9464-2.0536,3.0357-2.9464,1.5179-2.2321,1.0714-1.7857-0.98214-2.2321-0.53572-3.125-2.0536-2.0536-1.25-1.6964-0.44643-2.8571-0.53571-1.6072-0.35715-0.98214-2.1428-0.35714-3.4822,0.26786-0.625,0.80357-2.1428-0.17857-1.875-0.71429-1.875-1.0714-1.9643-0.89286-1.0714,0.35715-0.80357,1.4286-1.4286,0.89286-1.6071-0.44643z","name":"Ryazan Oblast"},"tb":{"path":"m112.77,279.43-1.6964,2.1429-0.35714,1.7857-0.80358,0.89286-2.6786,0.98214-1.875,0.44643-1.5178,0.71429-0.71429,1.4286,0,2.1429,0.26786,2.3214-0.71429,1.875-1.5179,0.53571-0.44642,1.4286-0.44643,1.6964-0.625,1.1607,0.08928,0.625,2.3214,2.1429,2.2321,2.1429,1.6072,2.2321,1.4286,2.0536,0.98214,0,2.1429,0,1.9643-1.25,2.5-1.25,1.6964-1.0714,4.0179-0.26785,1.0714-0.98215v-3.6607c0-0.35714,0.0893-2.3214,0.0893-2.3214l1.5179-1.1607s0.71429-0.71429,0.80357-1.0714c0.0893-0.35714-0.26785-4.6429-0.26785-4.6429l1.4286-1.0714-0.80357-2.1428-1.7857-1.4286-2.3214,0.26786-0.89285,0.625-1.1607-0.80357-0.89286-1.3393v-1.3393l-1.875-0.80357h-1.3393l-0.89286-1.0714-0.26786-1.3393z","name":"Tambov Oblast"},"kn":{"path":"m44.107,152.55,0,2.2322,0.53571,2.5,2.0536,5.1786,1.4286,3.4821,1.9643,3.6607,2.5,1.0714,3.75-0.44642,1.9643-1.3393,0.625-1.7857-0.44643-4.2857-0.89286-2.8571-1.5179-1.6071-2.4107-0.53572-0.98214-0.71428,0-3.0357-0.80357-1.4286-1.6964-1.6071-1.6071-0.26786-0.35714,1.25-0.625,1.3393-0.625,0.89285-1.4286-0.35714z","name":"Kaliningrad Oblast"},"ps":{"path":"m95.268,213.98,0.35714-2.1428-0.26786-2.1429-1.4286-1.875-1.3393-1.4286-0.08929-1.6964,0.98214-0.71429,0.17857-1.6964-0.89286-0.98215-1.25-1.875,0-4.1964,1.5179-0.89285,3.75-2.2322,0.80357-2.4107,0.53572-1.7857,1.875-1.25,2.4107-0.0893,1.3393-1.6071,0.98214-1.6964s1.25-0.625,1.6072-0.80357c0.35714-0.17857,2.8571-0.71429,2.8571-0.71429l1.5179-0.0893,1.0714,0.53571-0.625,1.5179-0.71428,0.89285-0.17857,0.98215,1.6071,0.26785,1.25-1.7857,0.98214-2.0536,1.1607-1.5179,1.6071-0.71428h1.6071l1.5179-1.5179,1.1607-0.625h1.4286l0.98214,0.98214,0.625,1.5179,0.98214,1.6071-0.26786,1.6964-0.89285,0.98214-0.35715,1.3393-0.80357,1.6071-0.17857,1.1607h-1.4286-0.80357l-0.71429-0.53572-0.80357,0.53572-0.625,0.80357-0.53571,1.5178-0.53572,2.1429-0.0893,2.5-0.35715,1.875-1.1607,1.25-1.3393,0.98214h-1.7857l-1.5179,1.3393-0.53571,1.7857-1.3393,0.53572-0.44643,1.0714-0.17857,1.4286-1.7857,0.89286-1.7857,0.80357-0.625,1.6964,0.625,1.5178,0.625,0.625-0.26785,1.4286s-0.0893,0.44643-0.44643,0.80358c-0.35714,0.35714-1.1607,1.3393-1.1607,1.3393l-1.4286,0.80357-2.3214,0.89286-1.0714,0.0893-1.1607-0.89286-0.89286-0.89286z","name":"Pskov Oblast"},"no":{"path":"m123.12,188.27,1.5179,1.25,2.1428,0.35714,2.1429,0.17857,1.25,1.1607,2.5,0.53571,2.3214-0.0893,1.0714-0.89286,0.44643,0.625,0.0893,1.7857,2.1429-0.53571,2.3214,0.0893,0.80357,0.80358,0.17857,2.5,0.17857,2.5,0.53572,1.0714,1.3393,0.17858,1.3393,0.44642,0.26785,2.1429,0.71429,1.6964,0.98214,0.80357,0.44643,2.9464,0.0893,2.2321,0.89285,1.4286-0.53571,0.98215-0.71429,0.53571,0,1.6071,0.17858,1.5179,1.4286,1.3393,0.625,0.53571,0.0893,1.9643,0,1.9643-0.17857,1.3393-1.25,0.53571-0.71428-0.26785-0.625-0.80358-0.71429-0.80357-0.17857-1.1607-0.98214-0.80357-0.80358-0.625-2.0536,0-1.5178-0.53572-0.53572-0.35714-1.5178-0.53571-0.71429-0.26786,0-0.44643s-0.26786-1.25-0.26786-1.6964c0-0.44643-0.0893-2.0536-0.0893-2.0536l-0.625-0.98214h-1.7857l-0.89285-0.44643-0.44643-0.98214-0.98215-0.625-0.53571,0.625-0.89286,1.0714-1.6964,1.4286h-2.1428c-0.35715,0-1.5179,0.0893-1.5179,0.0893l-0.71429-1.0714-1.0714-0.71428-2.3214-0.17857-2.6786-0.0893-1.5179-0.44643-1.3393-0.98214-2.3214-0.44643h-2.1428l-0.89286-1.1607-1.25-1.0714-0.53571-0.71429-1.1607-0.71428,0.98214-2.7679,0.71429-0.44643,1.1607-1.5179,1.0714-1.0714,2.0536-0.625,2.5-1.9643,0.625-1.9643,0.0893-3.5714,0.98214-2.5893,1.0714-1.25,1.1607,0.26786z","name":"Novgorod Oblast"},"tr":{"path":"m98.661,216.66,3.2143-0.625,2.2321-1.6072,1.3393-1.6071,0.17857-1.4286-0.80357-1.4286-0.26786-1.3393,0.35714-0.89286,1.4286-0.89285,1.6964-0.625,1.1607,0.44643,1.5179,1.5178,1.0714,0.98215,0.98215,0.53571,1.6964,0.17857,2.4107,0.35714,1.3393,0.98215,1.3393,0.26785,3.2143,0.44643,1.5178,0,1.25,0.71429,0.80358,0.71428,1.875,0.35715,1.7857-0.17857,1.875-1.6072,1.25-1.25,0.71429,0.44643,0.625,0.80357,1.4286,0.44643,1.4286,0.17857,0.53571,1.5179,0.17857,2.4107,0.35715,0.80358,1.1607,0.71428,1.4286,0.80357,1.0714,0.26786,1.875,0.35714,0.98214,0.26786,1.25,1.0714,0.44643,1.3393,0.98214,1.0714,0.80358,0.53572,1.7857-0.35715,1.3393,0.0893,1.25,0.71429,1.6071,0.89285,0,1.5179-0.625,1.6964-1.25,1.6071-1.6071,0.44643-1.25,0.98214-1.5179,1.3393-0.89286,1.0714-0.44643,0.71428-0.26785,1.5179-0.44643,1.0714-1.25,1.4286-0.53572,1.4286-0.35714,2.0536-2.0536,1.9643-2.0536,1.3393-1.0714,0.17858-0.53571-0.71429-0.26786-1.7857-1.6964-0.71429-3.8393-0.89286-3.8393-1.6071-3.0357-0.80357-1.5178-1.0714-0.0893-3.0357-0.35714-1.6964-3.3036,0.80357-3.4822,0.26786-1.3393-0.89286-3.4821-4.4643-1.5179-2.0536-3.3036-0.625-2.7679-0.53571-1.4286-1.7857z","name":"Tver Oblast"},"vm":{"path":"m137.41,247.73,1.6072,1.7857,2.0536,1.25,1.1607,1.0714,1.3393,0.35714,0.80357,0.89286,0.0893,1.5178-0.89285,1.7857-0.35715,1.0714,1.25,0.625,1.7857,0.26785,1.0714,1.1607,0.17857,1.9643,0.98214,1.875,1.0714,1.25,1.3393,1.25,1.3393,1.3393,1.3393,1.1607,1.7857,1.875,0.89286,1.3393-0.17857,0.98214-0.89286,0.71429l-0.18,0.98,0.53571,0.71429,0.44643,0.71428,0.0893,1.6072-1.7857,0.53571-2.2321-0.0893-1.1607-1.0714-4.4643-0.0893h-5.1786l-1.7857,0.53571-0.71429-1.6964-1.6964-1.9643-1.6071-2.6786-0.80357-4.1964-0.0893-4.1071-0.17857-2.0536-0.44643-0.44643-0.71428,0.44643-1.1607,0.26785-1.4286-1.25-0.26786-2.5893,0.71429-2.0536,1.1607-2.0536,0.44643-1.7857,1.3393-1.0714z","name":"Vladimir Oblast"},"pz":{"path":"m127.05,289.96,1.6964,1.7857,2.0536,1.5179,1.25,0.98214,1.6964,0.625,1.25,1.875,0.71429,1.6071,0.26785,1.9643,0.98215,0.98214,1.0714,1.0714,2.6786,0.17857,1.6964,0.0893,0.625,2.1429,0.89286,1.7857,1.6964,0.71429,2.1429,0.26785,1.4286,1.0714,0.625,1.0714-1.5179,0.89286-0.89286,0.98214,0.0893,4.1071-0.26786,3.4822-2.7679,1.25-1.0714-0.0893-0.89286,1.6071-1.9643,0.98215-1.1607-1.7857-0.98214-0.98214-5.9822-0.0893-1.1607-1.875-0.89286-0.89285-3.125-0.71429-0.98214-1.6071-1.25-1.6964-2.1429-0.71429-2.4107-1.3393-1.6071-1.0714-2.5,0.0893-0.71429-1.875,0.26786-2.5,1.1607-0.89285,3.8393-0.80357,0.89285-2.4107,0-3.4821,1.3393-1.6964,1.3393-1.6071-0.26786-2.5893,0-1.9643,1.1607-0.89286z","name":"Penza Oblast"},"sr":{"path":"m107.23,308.27-0.17857,3.0357-0.26786,1.25-2.2321,1.1607,1.4286,1.6964,1.0714,3.2143,2.2321,0.71429,0.98215,0.80357,0.89285,1.0714,1.7857,0.625,2.5893,2.5,0.89286,1.0714,0,1.875-1.5179,2.0536-2.4107,2.8571-0.44643,1.25,0.44643,1.6964,0.71429,0.89286,2.1428,1.1607,4.0179,3.9286,1.7857,4.5536,1.25,1.4286,1.25,1.3393,0.26786,1.9643-0.71428,2.5-0.53572,2.4107,0.26786,1.7857,0.89286,1.0714,1.6071,0.44643,1.6964,0,1.6964-1.1607,1.25-1.0714,0.44642-2.6786,0.0893-1.875,2.2321-0.625,3.3036,1.25,1.6964,0.35714,1.6072,0,1.3393-1.5179,0.44643-0.53571,1.6071,0.35714,1.3393,1.0714,1.5178,0.89286,4.6429,0,1.1607-1.1607,1.3393,0.17857,0.89286,0.80358,1.6071-0.53572,0-1.7857-0.89286-1.9643-0.35714-1.3393-0.17857-3.9286-0.0893-2.0536-0.71428-1.25,0.0893-2.8571-0.35714-1.6071,0-2.5-0.80357-1.3393-1.1607-1.6071-2.5-1.0714-1.6072-2.0536-2.5893-0.0893-1.0714-0.35714-1.7857-1.6964-0.625-1.25-0.44642-0.89286-1.7857-2.4107-5.625-0.26786-0.53571-0.17857-1.9643-2.5893-3.125-0.89286-2.2321-2.9464-6.1607-3.3036-2.3214,0-1.0714-1.6964,0.44643-2.5-0.80357-0.35714-3.8393,2.1428-1.5179,0.35715z","name":"Saratov Oblast"},"mr":{"path":"m127.59,290.05,1.875,2.1429,2.6786,1.7857,1.7857,1.1607,1.7857,2.7679,0.44642,2.4107,2.0536,2.1429,2.5893,0.0893,1.6071,0.26786,0.89286,2.2321,0.71429,1.4286,2.0536,0.89286,1.7857,0.35714,1.25,0.625,0.53572,0.80358,5.8928,0.17857,2.6786-3.5714,0.35715-0.53572,0.71428-1.3393,0.0893-2.1429-0.0893-1.9643-1.7857-0.98215-0.35714-2.5-0.0893-0.80357-1.6964,0,0,0.17857-0.80357,0.89286-1.3393,0.80357-5.2678,0-2.5893-2.3214,0.17857-3.5714-1.1607-1.0714-0.17857-0.80358,1.0714-1.0714,0-1.6072-2.5893-0.53571-1.7857-0.0893-0.80357-1.25-0.71429-1.6964-1.25,1.1607-2.1429,2.3214-2.4107,1.5178-1.5179,0.98215-2.9464,0.26785z","name":"Republic of Mordovia"},"cu":{"path":"m159.11,299.07,1.3393-0.89286,2.9464,0.44643,1.3393,0.44643,1.0714-1.3393,0.26786-1.7857,2.2321-1.1607,2.2321-2.2322,3.125,0.0893,2.6786,0,1.25,1.5179,0.35715,2.9464-0.17857,1.5179,0.35714,1.25,0.71428,1.1607-0.0893,0.71428-1.3393,0.625-4.1071-0.0893-1.3393,0.53571-0.80357,0.80357,0,0.89286,1.1607,0.71428-0.17857,0.89286-1.3393,1.1607-1.7857,1.25-2.1429,0.98214-1.3393,0.44643-1.3393-1.3393-2.5-0.44643-0.98215-0.625-0.98214-1.3393-0.80357-0.80357,0.80357-3.5714z","name":"Chuvash Republic"},"ul":{"path":"m158.57,305.32-1.875,2.6786-0.98215,1.4286-4.8214-0.26785-0.80358,0.26785-1.7857,1.4286-0.80357,1.1607,0,2.3214,0,2.5893,0,1.6964-1.7857,1.4286-1.0714,0.26786-0.89286,0-1.25,1.25-1.25,1.0714-0.625,0.26786,0.89286,1.9643,1.6071,1.6071,2.3214,0.44643,1.5178,0.17857,1.25,1.6072,1.5179,0.80357,2.1429,0.17857,0.89286-0.625,0.0893-1.875,0.17857-1.6964,1.0714-1.6964,0.35714-1.3393,1.3393-0.26786,0.80357,0.53571,1.3393,0.625,1.875-0.17857,1.3393-0.98214,1.0714,0.17857,1.6964,1.4286,2.0536,1.875,1.5179,1.6072,0.80357,1.4286,2.3214,0.17857,1.1607-1.5179,2.8572-2.0536,2.0536-1.1607,0.26785-2.3214,0-3.5714-1.875-1.1607-3.6607-0.0893-2.0536-1.4286-0.98214-1.1607-2.5-0.26785-0.98215-1.5179-3.0357-1.5179-0.80357-1.5179-0.625-2.0536z","name":"Ulyanovsk Oblast"},"ss":{"path":"m150.98,329.96,1.3393,2.1428,0.71428,2.8572,0.44643,2.8571,0,2.1429,0.625,2.3214-0.0893,2.8571,0.35714,2.4107,0.53571,2.1429,0.625,1.9643,0.71429,0.98214,5.8929,0.0893,3.0357-1.6071,1.25-1.9643,1.9643-0.35715,1.6964-0.0893,2.1429-1.4286,1.4286-0.89286,1.25-0.17857,1.6072,0.625,1.7857-0.17857,0.80357-1.875,1.0714-2.3214,4.375-2.5893,1.7857-1.4286,1.1607-2.0536-0.625-1.5179-0.80357-1.7857-0.35715-2.5-1.1607-1.25-0.71429-2.4107-3.6607-0.26785-2.3214-1.6964-1.4286-0.80357-3.5714,2.3214-1.9643,2.2322-2.4107,0.0893-0.98214-0.98214-2.2321-2.4107-2.4107-1.875-1.0714-1.0714-0.89285,0.26785-1.6072,0.71429-1.6964-0.0893-1.5178-0.80357-1.0714,0-0.625,0.98215-0.53572,1.0714-0.80357,1.5179-0.17857,1.3393,0,0.98214-0.0893,0.71429z","name":"Samara Oblast"},"ob":{"path":"m155.89,352.82,0.53571,1.4286,0.71429,1.6071-1.0714,1.6072,1.0714,1.4286,3.0357,0.17857,1.9643-0.35714,2.5,0,0.17857,2.3214-0.89286,2.6786,0.35714,1.0714,3.5714,1.6071,2.1429,1.4286,0.17857,3.5714,0,4.1071,0,1.4286-1.25,0.89286,0,1.9643,0,0.71428,0.71429,1.0714,1.0714,0.89286,1.7857-2.5,0-1.4286,0.89286-0.89286,1.4286,0,1.0714,2.3214-0.17858,1.4286-0.71428,1.25-0.35714,1.4286l0.36,1.43,1.25,0.89286,2.3214,1.25,1.7857,0.89286h1.9643,2.5l1.4286-1.0714,1.6071,0.17857,1.9643,1.0714,0.89285,1.6071,0.35715,1.7857,1.0714,1.25h1.7857l0.89286-0.89285h1.25l1.6071,0.53571,1.25,1.4286,0.53571,2.6786-0.17857,3.5714,1.7857,1.6072,1.4286,0.89285,1.0714,1.6072,1.0714,0.53571,1.6071-0.71429,1.4286-0.17857,1.6071,1.4286v1.25l1.9643,1.7857,1.25,0.71428,2.1429,0.35715h2.6786l1.4286-0.17857,1.25-0.89286,1.25-1.0714,0.89286-0.89286-0.17858-1.25-2.3214-3.2143-1.0714-1.25v-3.75l-0.71429-2.1429-0.17857-2.1429,1.0714-2.3214,1.9643-1.4286-1.4286-1.7857-3.0357-2.8571-1.9643,0.35714-1.4286-0.17857-0.89286-1.25h-2.3214l-1.4286,1.25-1.0714,1.25-0.53572,1.0714h-2.5l-1.0714-2.5-3.2143-0.17858-2.8572-0.35714-0.89285-2.5-1.08,0.33-1.79,0.89h-1.4286l-0.17857-1.0714,1.4286-1.7857,2.5-2.5-0.53-1.78-0.71-0.36v-0.89286l2.5-1.9643,0.35715-1.0714v-2.1429h-1.7857l-2.1429,0.71429-1.6071,0.17857-1.4286-1.9643-0.53571-2.3214,1.25-1.7857,1.0714-0.89286v-1.6071l-0.35714-2.3214,1.0714-0.89285,0.17857-3.0357-1.25-1.9643-1.7857-1.7857-0.17857-1.6071,1.0714-2.8571,1.6072-2.5,0.89285-1.7857-0.53571-1.25-2.1429-1.6071-1.4286-2.1429-1.25-1.4286-1.6071,1.7857-1.4286,1.4286-4.1072,2.5-1.4286,1.9643-0.35714,1.9643-0.53571,0.35714-1.9643,0.17857-2.1429-0.35714-1.9643,0.53571-1.9643,1.4286-2.8571,0.53572-1.0714,0.71428-1.4286,1.7857-2.1429,1.25h-2.5z","name":"Orenburg Oblast"},"nn":{"path":"m156.25,271.57,4.2857-0.53571,2.5-1.4286,3.5714-0.71428,2.6786-1.0714,1.25-0.17857,2.3214,1.25,1.7857,1.0714,2.6786-0.17857,1.4286,0,2.6786-1.0714,1.25,0.17857,1.4286,1.9643,1.0714,2.1429,2.5,0.17857,2.5,1.7857,1.0714,1.25,0.89286,2.5,1.25,1.4286-0.17858,1.6071-1.25,0.89286-1.7857,0.17857-0.71429,0.89286-1.6071,0-0.71428-0.89286-1.7857-1.0714-1.6071,0.71429,0,1.6071-1.25,1.4286-1.25,0.53572-2.1429-0.89286-2.1429-1.6071-3.0357-0.89286-1.7857,0-1.0714,0.89286-0.71429,1.7857,0,2.8571-0.17857,2.8572,0.53571,1.0714-1.0714,1.4286-2.3214,1.4286-1.4286,0.89285,0,1.4286-0.35715,0.89285-0.89285,0.71429-2.8572-0.35714-1.0714-0.17858-0.89285,0-0.71429,0.53572-0.38692,0.34215-0.69448-0.12626-0.44194-0.50508-0.50508-3.0936-1.5784-0.12627-1.5784,1.4521-2.2097,0.44194-3.9775-0.25253-2.0834-2.0203,0.1894-3.3461-1.2627-1.389-0.0631-0.75761,1.0102-1.4521-0.0631-1.0733-3.7249-0.63135-1.1996-0.75761-1.0733-2.7148,1.1364-2.336-1.1996-3.3461,2.0203-0.50507,3.283-0.12627,5.9978,0.12627,1.2627,0.88388,2.0203,0.1894,2.0203-0.75761,0.12627-1.5152-0.94702-1.4521,0.63135-1.0733z","name":"Nizhny Novgorod Oblast"},"ml":{"path":"m181.51,286.29,2.2728,2.336,2.4622,2.0834,2.7779,1.1364,2.9673,0.0631,2.4622,2.0834,1.5784,1.6415,0.44194,1.3258,0.63134,0.94702-0.3788,1.6415-0.56821,1.1364-0.0631,1.8309-1.5152,1.389-0.88388,0.56821-1.4521-0.12627-1.1996-1.5152-1.1996-0.44194-1.389-0.82075-1.7046-0.12627-0.50508,0.88389-1.7046,0.88388-2.5885,0.12627-1.9572-0.82075-1.1364-0.69448-0.88388-3.0305-0.37881-4.7351-1.1996-1.4521-4.0406-0.0631-1.3258-0.1894-0.63134-1.0733,0-2.0834,0.0631-3.0936,0.37881-1.8309,1.0102-1.0733,0.82075-0.63134,2.5885,0.3788,2.2728,0.88389,2.9673,1.7678z","name":"Mari El Republic"},"ta":{"path":"m160.93,308.14,0.0631,1.1364,0.44194,1.0733,0.88389,1.0102,1.5152,0.63134,1.8309,1.4521,1.5152,0.75762,1.389,0.44194,1.4521,1.0733,1.389,1.0102,2.4622,0.44194,1.4521,0.0631,1.7046,0.88388,0.12627,2.2097-0.37881,2.9042,0.44195,1.4521,2.0834,1.1996,1.0733,0.75761,2.9042,0.18941,0.82075,0.69448,0.56821,1.7046,1.3258,2.1466,0.63134,2.5885,0.88389,1.7678,1.6415,1.894,1.389,2.2728,1.6415,1.1364,0.88388,0.88388,1.1996,0.0631,2.9042-1.8309,2.9042-2.7148,0.44194-0.63135,0-1.894-1.0102-1.0102-0.0631-0.88388,1.8309-0.25254,1.2627,0.31567,0.75762,0.56822,1.3258,0.3788,1.6415-0.31567,1.1996-0.69448,2.9042-0.12627,1.5152-0.37881,0-0.94701-0.37881-1.2627-1.1996-1.5784-0.63134-1.2627-1.5152-0.44194-0.88389-1.2627s1.2627-1.0102,1.5784-1.1364c0.31567-0.12627,2.2728-0.75762,2.2728-0.75762l0.0631-1.4521s-1.1364-0.18941-1.389-0.50508c-0.25254-0.31567-0.69448-0.94702-0.69448-0.94702l2.0203-1.3258,2.0203-1.389,0.12626-1.1364-0.69447-0.82075h-1.5152l-0.69448,0.0631-1.1364,1.3258-0.56821,0.69448h-1.894l-0.12627,0.88388-0.12627,1.3258-0.82075,1.1364-1.5152-0.12627-0.75761-1.4521-1.1364-0.94702-0.82075,1.0102-1.7678-0.31567-0.56821-2.2728-1.4521-0.88388-0.63135-1.2627,0.12627-1.3258-1.1364-1.3258,0.0631-2.6516,0.12627-3.0936,0.63135-0.94702-0.25254-1.0102-0.69448-1.0733-0.56821-0.56821-1.0102,0.44194-0.88388,0.37881-1.0102-0.12627-1.0733-0.88389-0.88388-0.82074-1.8309-0.69448-1.4521-0.44195-0.94702,0.94702-1.8309,0.75762-1.8309,0.1894-1.6415-0.31567-1.9572-1.0733-1.389,0.50508h-2.7148l-2.0834,0.0631-1.389,1.1364-0.0631,0.88389,0.69448,0.50507,0.12627,0.82075-0.82075,1.0733-1.5152,1.2627-2.6516,1.0733-1.5784,0.69448-1.1364-0.75762-2.0834-0.82075z","name":"Republic of Tatarstan"},"iv":{"path":"m144.26,252.7,2.0203-1.1364s0.94702-0.50507,1.1996-0.50507c0.25254,0,2.5885,0.31567,2.5885,0.31567l2.7148,1.1364,2.3991,1.1364,1.2627,1.1996s1.4521,1.0102,1.7046,1.1996c0.25254,0.18941,1.4521,1.2627,1.4521,1.2627l1.7046,0.63135,1.1364-0.88388h0.88388l0.50508,0.82074,0.1894,1.1996,1.0102,0.75762,1.5152,0.82074,1.0102,0.63135,0.44194,1.0102-0.69448,1.0733-0.12626,0.88388,0.75761,0.37881,0.88388-0.56821,1.389,0.63134,0.69448,0.94702,0.25254,1.2627-0.25254,0.50508-1.894,0.69448-2.9673,0.82075-3.0936,0.50507-2.3991,1.5152-3.4724,0.50508-0.94702-0.12627-1.7678-2.3991-3.5987-3.4724-2.7148-3.3461-0.82075-2.7779-0.88388-1.0102-2.1466-0.44195-0.69448-0.56821,0.50507-1.4521,0.56821-1.3258z","name":"Ivanovo Oblast"},"yr":{"path":"m154.11,228.33,1.7678,1.5784,1.9572,0.50507,1.7678,0.50508,1.3258,1.6415,1.9572,1.5784,1.5784,0.0631,1.0733-0.69448,0.82075,0.31568,0.3788,1.4521,0.12627,3.4093-0.0631,2.6516,0.25254,1.5152,0.88388,1.0102,0.56821,0.94702-0.37881,1.0733-1.7046,1.1364-2.7148,1.3258-3.283,2.2097-1.6415,1.0733-3.3461,0.88388-2.4622-0.1894-2.1466-0.63135-2.6516-0.69448-2.1466,0.63135-1.8309,1.0733-1.7046-0.88388-1.4521-1.0102-1.894-1.1364-1.1364-1.1996-0.25254-1.3258,0.56821-1.4521,2.0203-0.88388,2.2097-1.1996,1.6415-2.7779,1.0102-2.9673,1.1996-1.2627,0.75762-2.4622,1.6415-1.8309,1.9572-1.8309,2.7148-1.5152z","name":"Yaroslavl Oblast"},"kt":{"path":"m168.7,245,1.389,0.12627,1.2627-0.75762,1.5152-1.389,1.894-0.75762,1.894,1.1364,1.894,1.5152,2.5254,0.12627,0.63135-0.75761,0.75761,0.50507,1.2627,2.1466,2.2728,2.2728,1.5152,1.5152,1.1364,1.894,0.3788,2.2728,1.2627,1.7678,1.5152,1.6415,2.5254,1.389,1.7678,1.5152,1.7678,1.894,2.0203,0.88388,1.894,0.12627,2.0203-2.0203,1.6415-0.3788,0.63135,1.894,1.1364,1.0102-0.12627,1.6415-1.6415,1.5152-0.12627,1.894-0.3788,2.5254s-1.7678,0.75761-2.3991,0.75761c-0.63134,0-6.3134-0.12626-6.3134-0.12626l-3.1567,0.12626-1.1364,1.1364-1.2627,0.50507-2.0203-0.75761-1.5152-0.75762-2.0203-0.3788-1.0102-1.5152-0.88388-1.6415-0.75762-0.63135-1.1364-0.12627-0.88388,0.50508-2.1466,0.75762-3.283-0.25254-1.7678-0.50508-2.0203-1.2627-0.50508-0.50508,0.25254-0.63134v-1.1364l-1.389-1.2627-0.88389-0.50508-0.63134,0.37881-0.38556,0.10695-0.53571-0.35714,0.0893-0.89286,0.71429-0.625,0.0893-0.98214-0.89285-0.71429-1.7857-1.0714-0.98214-0.98215-0.26786-0.98214-0.71428-0.89286h-0.98215l-0.89285,0.625-0.625,0.0893-1.25-0.71429-1.4286-0.80357-1.3393-1.25-1.7857-1.3393-0.69-0.57,1.07-0.71,2.05-0.54,2.3214-0.71428,2.8571-2.0536,3.3036-1.6964z","name":"Kostroma Oblast"},"le":{"path":"m123.49,177.57,1.7678-1.6415,1.5152,0,2.2728-1.894,2.5254-0.50507,2.2728,0.63134,2.9042,2.1466,2.7779,1.5152,0.75761,2.5254,0.12627,1.389,1.0102,1.1364,1.1364-0.37881,0.75761-2.0203-0.12627-2.3991-0.88388-1.6415-0.88388-1.894,0.12626-2.0203,1.1364-1.2627-0.25254-1.894-0.75762-1.0102,0-0.37881,1.2627-0.25254,3.283,0.25254,3.5355,1.2627,2.2728,0.12627,1.894,0.12627,1.2627,1.1364,0.63135,1.2627,0,1.7678-0.37881,1.6415-0.25254,2.1466-0.63134,1.7678-2.1466,1.2627-0.75761,1.0102-1.0102,1.894-1.0102,1.1364-1.7678,1.1364-0.63135,1.2627,0.25254,1.1364,1.389,0.75762,2.1466,0.25253,1.0102,0.88389,0.25254,1.6415,1.0102,0.75762,2.1466,0.12627,1.1364-0.50508,3.4093-0.25254,1.7678-0.63134,2.0203-0.25254,1.5152,0.75761,1.0102,1.6415,1.1364-1.2627,1.389-1.7678,0.75762,0.88388,0.50507,2.0203,0.63135,2.2728,2.1466,0.50507,1.2627,0.75762,1.1364,1.0102,0.12626,1.2627,0.12627,1.6415-0.12627,1.7678-1.2627,0.75761-2.2728-0.25254-1.389-0.88388-1.389-0.25254-0.75761,0.88388-1.5152,1.0102-3.0305,0-1.5152,0.3788-2.7779,3.0305-1.0102,1.389-0.37881,2.1466-1.6415,1.0102-1.1364,0.12627-0.3788,1.2627-1.2627,0.63134-0.63135-1.0102-1.1364-1.1364-2.2728-0.12627-0.75761,0-1.1364-3.0305,0-2.9042-1.0102-1.5152-0.88389-1.894-0.12627-1.6415-2.2728-0.88388-0.88388-0.63135s-0.37881-1.0102-0.37881-1.5152c0-0.50507-0.25254-3.4093-0.25254-3.4093l-0.75761-1.1364-2.3991-0.25254-1.389,0.75761-0.75762-0.50507-0.12627-1.2627-0.63134-0.88389-1.0102,0.63135-2.1466,0.3788-2.7779-0.88388-1.5152-0.88388-3.283-0.37881-1.2627-0.88388-1.0102-0.75762,0.63135-1.2627,0.88388-2.1466,0.88388-1.389,0.12627-1.2627z","name":"Leningrad Oblast"},"ki":{"path":"m207.59,265.33,1.2627-0.88388,0.12627-2.0203,0-2.0203-1.0102-1.389-0.12627-1.6415,1.5152-0.37881,3.9143,0.25254,2.5254-0.88388,2.6516-1.1364,0.63134-1.389,1.1364-0.63134,2.7779,0.25254,1.389,1.7678,0.12627,2.7779-0.63134,3.0305-1.0102,1.389-0.75761,2.7779-1.894,0.75762-2.0203,0.12626-1.6415,1.7678-0.63134,1.6415-1.0102,0.63134-0.75761,0.88389,0.75761,1.389,1.6415,0.88388,1.0102,1.389-1.6415,1.894,0.12626,1.894,1.1364,0.88389,1.2627,0.50507,0.88388-1.389,0.88388-1.894,2.7779,0,3.1567,0.3788,4.2932,1.2627,1.7678,2.2728,2.1466-0.12627,2.1466-1.6415,1.6415,0.37881,1.2627,1.0102,0.75762,1.894s1.0102,1.5152,1.389,1.7678c0.3788,0.25254,2.5254,1.894,2.5254,1.894l0.25254,1.5152-0.88389,2.0203-2.0203,1.1364-3.5355,0.25253-1.2627,0.63135-1.2627,1.5152-0.25254,1.389,1.0102,1.389,0.12627,1.1364-1.5152,1.1364-0.75762,1.389-0.12627,2.1466-1.2627,1.0102-2.7779,0.12627-1.1364-1.2627-1.0102-2.5254-2.0203-0.12627-1.389-0.3788v-1.894l-2.0203-1.1364-3.1567,0.75761-1.7678,1.389s-1.2627,1.0102-1.2627,1.5152c0,0.50508-0.3788,2.2728-0.50507,2.7779-0.12627,0.50508-1.6415,1.5152-1.6415,1.5152l-2.5254,1.1364-1.894-0.50507-1.2627-1.389-1.5152,0.25253s-0.75761,0.50508-1.0102,1.389c-0.25254,0.88389-0.12627,2.7779-0.12627,2.7779l0.12627,1.894-2.0203,0.63135-3.4093,0.3788-0.25254,1.1364v1.389l-0.3788,1.389-1.7678,0.88389h-0.63135l-0.63134-1.5152-0.50508-0.37881,0.12627-2.5254,0.25254-2.5254,0.50508-1.5152-0.88389-1.6415-0.25254-1.2627,0.75762-2.9042,0.63134-2.5254-1.0102-1.5152-1.6415-2.5254-2.1466-1.5152-0.88388-0.63134-3.9144-0.12627-1.7678-1.2627-1.6415-1.5152-1.6415-1.5152-0.50507-0.50508,0.50507-1.0102,1.2627-1.6415,0.25254-1.0102,1.1364-0.75761,1.5152,0.50507,1.894,1.389,1.389-0.75761,2.1466-0.63135,1.389-1.2627v-1.5152l-1.2627-1.894-0.63135-1.5152s-0.78918-1.1049-0.85231-1.2627c-0.0631-0.15784,0.56821-0.69448,0.56821-0.69448l0.97858-0.63135,0.75762-0.75761s2.2728-0.0316,2.8095-0.0316c0.53664,0,3.1567,0.0631,3.8828,0.0631,0.72605,0,3.7881-0.44194,3.7881-0.44194l1.4521-0.59978s0.12626-1.5784,0.15783-1.7993c0.0316-0.22097,0.47351-2.4938,0.47351-2.4938l2.0203-2.3991z","name":"Kirov Oblast"},"bs":{"path":"m211.5,329.86,2.3991-1.6415,2.5254-1.6415,1.5152-0.25254,1.894,2.6516,2.2728,2.2728,2.9042,0,2.6516,2.5254,1.7678,2.5254,1.1364,1.7678,1.7678,0,1.2627,2.1466,2.6517,2.3991,2.2728,1.6415,2.0203,1.7678,1.2627,1.1364,0.88389,1.389-0.37881,1.1364-1.6415,0.63134-0.88388,1.2627,0.25254,1.389,1.389,0.63135-0.63135,1.2627-1.5152,0.50508-1.2627-0.75762-2.3991,0.37881,0,1.0102-1.5152-0.25254-0.50508-0.88388-1.5152-1.0102-4.5457,0-1.1364-0.37881,0-1.2627,1.7678-1.2627,0.12627-1.389-1.0102-0.88389-1.6415-1.1364-2.5254,0.25254-1.0102,2.1466-1.7678,2.6516-0.88388,2.0203,0.50508,3.0305,1.894,1.0102,2.0203-0.75761,1.6415,0.75761,1.0102,2.0203,2.5254,0.12627,2.0203,0.75761,2.7779,0,1.7678-0.50508,1.5152,1.1364-0.63135,1.389-1.894,1.5152-1.2627,1.1364-1.0102,1.389-1.2627,0-1.2627-0.63134-2.1466-0.75762-1.6415-0.3788-1.6415,1.2627-0.3788,1.5152-0.63135,1.389-2.3991,2.6516-1.6415,2.3991-3.9143,3.6618-1.894,1.5152-0.25254,2.0203-0.63134,1.5152-2.9042-0.25254-1.6415,1.7678-1.2627,1.389-0.50507,0.63135-2.0203,0-1.1364-2.0203-0.50508-0.63134-5.4296-0.63135-1.389-2.1466-2.7779,0.88388-1.2627-0.12627,0-0.50507,3.4093-4.4194,0-1.6415-0.88389-0.63134,0-1.1364,1.7678-1.1364,1.0102-1.389,0-2.0203-0.25253-0.50508-1.894-0.12627-2.2728,1.2627-1.7678-1.1364-1.1364-2.3991,1.2627-2.3991,1.0102-1.894-0.25254-2.5254,0-0.75761,0.88389-1.5152,0-3.1567-2.5254-2.9042-0.12627-2.0203,1.0102-2.6516,2.0203-4.1669,2.9042-2.1466,3.9143-3.1567,1.0102-2.1466-0.88389-1.389-0.12627-0.12627,0-0.75761,1.389-0.25254,2.3991,0.75762,1.389,0.12626,1.7678-0.63134,2.6516-0.25254,1.7678-0.12627,0.88388-0.63134,0-1.7678z","name":"Republic of Bashkortostan"},"cl":{"path":"m242.18,347.66,1.7678-0.88388,2.7779,0.50507,2.3991,2.1466,2.3991,1.7678,3.0305,1.894,2.9042,0,1.5152,1.6415,1.6415,2.3991,0.75761,1.894-0.63135,3.1567,0,2.7779-0.88388,1.389-1.7678,0.63135-1.6415,1.1364-0.75762,1.2627-2.0203,0.63135-1.894,1.5152,0,1.1364,1.5152,1.5152,2.0203,2.0203,1.1364,2.3991-0.37881,2.7779-0.75762,1.7678-2.3991-0.63135-2.6516-0.50507-3.283-0.37881-2.0203-0.50508-1.5152-1.7678-2.0203-1.7678-1.1364-1.1364-1.1364,0.50508-1.5152,1.1364-0.88388,1.0102,0,1.894,1.6415,1.2627-0.37881,0.75761-2.2728,0.63135v1.0102c0,0.50508,0.75761,2.0203,0.75761,2.0203l2.0203,1.7678,0.12627,1.894-1.5152,0.63134-1.5152-1.5152-1.389-1.2627-2.2728-0.63134-3.283,0.12627-1.5152,0.25253-0.63134,1.2627,1.0102,1.389-0.37881,1.894-1.0102,1.6415-4.5457,0.25254-1.6415-0.88389-1.6415-0.63134,0.50507-2.0203,1.6415-0.88388-0.75761-1.7678-2.0203-2.3991-1.6415-1.0102-1.894,0.12627-1.389-0.63135,0.63134-2.7779,1.7678-2.6516,4.4194-4.1669,3.7881-4.672,1.2627-2.9042,1.389-0.88389,2.5254,0.25254,2.0203,1.0102h2.0203l1.894-2.2728,2.2728-1.894,0.50508-1.389-1.5152-1.2627-2.1466,0.50507h-3.0304l-2.7779-0.88388h-1.5152l-0.88388-1.894-1.389-0.50507-1.7678,0.63134-1.0102-0.37881-0.88389-0.63134-0.63134-1.894-0.12627-1.6415,3.6618-5.6821,0.75762-0.63135,1.7678,0.37881,1.7678,0.88388,0.63134,1.1364-0.3788,0.75762-1.2627,1.1364v1.1364l-0.12627,0.12627,0.75761,0.63135,2.6516,0.12627h2.2728l1.5152,1.0102,1.2627,1.1364,1.1364-0.63135,0.50507-0.75761,2.0203,0.12627,1.7678,0.37881,1.1364-1.2627-0.37881-1.0102-0.75761-0.88388,0.25253-1.5152,1.5152-1.0102,0.63135-1.1364z","name":"Chelyabinsk Oblast"},"ud":{"path":"m231.7,302.33-0.12627,1.389-2.0203,2.7779-1.5152,1.389,0.12626,1.389-1.6415,1.0102-1.1364,1.5152-1.5152,2.3991-0.50508,1.894-0.50508,3.1567-2.0203,1.0102-2.2728,0.12627-0.63135,1.1364-0.37881,3.0304-0.12627,1.389-3.0304,2.0203-2.2728,1.389-1.0102,0-1.2627-1.5152-1.7678-0.75762-0.63134-1.2627,1.389-1.1364,2.0203-0.75761,0.50508-1.1364-0.37881-0.50508-1.5152-0.88388,0.25254-0.88389,2.7779-1.7678,1.0102-1.1364-0.50507-1.0102-0.75762-0.63134-2.0203,0.63134-1.1364,1.389-1.5152,0.63135-1.0102,0.25253-0.3788,1.5152-0.63135,0.75762-0.88388,0.25254-0.75762-1.0102-1.389-1.2627-0.75761,0.37881-1.2627,0.37881-0.88388-0.88389-0.63135-1.1364-1.0102-1.0102-0.63135-1.0102,0-1.1364,1.6415-0.88389,1.1364-1.1364,0.25254-2.0203,0.25254-1.0102,3.1567-0.50507,1.6415-0.50508,0.37881-4.4194s0-1.2627,0.63135-1.5152c0.63134-0.25253,1.2627-0.3788,1.2627-0.3788l1.2627,0.63134s1.6415,1.894,2.3991,1.389c0.75761-0.50507,1.894-0.88388,1.894-0.88388s2.3991-1.0102,2.2728-1.6415c-0.12627-0.63134,0.25254-1.6415,0.25254-1.6415l0.3788-1.389,2.1466-2.2728,1.2627-0.75761,2.2728-0.50508,1.6415,0.37881,0.88388,1.1364v0.75761l0.25254,0.63135,1.0102,0.12627,1.6415,0.3788,0.63135,0.50508,0.63134,1.6415,0.75762,0.75761z","name":"Udmurt Republic"},"pe":{"path":"M242.06,274.03l-2.28,1.16,0.5,1.5-0.5,3.53,0.5,1.28,1.41,2.41,2.25,1.62,0.65,1.66-1.4,2.12-2.41,1.03-2.87,0.63-1.66,0.87-1.13,1.54,0.5,1.24,0.63,1.38-0.13,1.03-1.9,1.63-0.38,2.4-0.87,1.6-0.13-0.19-1,0.12-1.28,2.5-2,2.29-0.15,1.53-0.88,0.87-2,2.03-1.91,3.41-0.62,3.9-1.28,0.88-2.25,0.38-1.28,0.78-0.63,4.9,2.53,2.66,2.13,2.28,2.53,0.25,2.28,1.5,3.41,4.94,1,0.37,1.28-0.12,1.12-1.25,0.88-1.28,1.03-1.75,1.25-1.66,1.28,0.88,1.5,1.28h2.41l2.03-0.91,0.5-1.75,0.25-1.91,0.87-0.75,0.88-1,0.78-0.5,2.5,2.75h3.69l0.87-1,0.5-1.5,0.25-1.65,0.88-1.25,4.69-0.38,2.15-0.78,0.63-1.5-0.63-0.62-0.12-1.41,1.12-1.38,0.75-1.03v-1.37l-0.5-0.88-0.62-1.03,0.25-1.75,1-1.53,2.03-1.5,3.15-0.5,1.88-1.91,2.28-1.62,2.28-1.66,2.28-1.65,0.88-0.75,0.5-1.25,1-1.78s0.9-1.12,1.53-1.75c0.63-0.64,1.62-1.91,1.62-1.91l1.16-1.37,0.25-1.66-2.41-0.38-2.65-0.75-2.66-1.65-2.75-1.38-2.66-1.28-2.53,0.66-3.15,0.12-3.66-0.9-2.9-1.63-1.63,0.85-0.41-0.22-1.9-1.25-1.38-2.03-1.12-1.13-2.28-0.78-0.13-1.63-1.12-1.28-1.41-1.5-1.91-0.5-2.62-0.25-2.41-0.78z","name":"Perm Krai"},"sv":{"path":"m286.13,291.72,1.7678-1.1364,1.1364,1.389,0.88388,2.3991,2.6516,1.5152,2.9042,2.1466,1.2627,2.3991,2.2728,2.7779,0.12627,1.7678,0.63135,2.0203,0.75761,1.5152-0.63134,1.7678-1.894,1.894-0.63135,1.7678-0.25253,4.7982,0.3788,2.7779,0.63135,1.0102-1.0102,2.9042-1.5152,1.7678-0.37881,2.3991,2.0203,1.2627,2.3991,2.0203,0.75761,2.0203,0.12627,2.6516-0.63134,1.6415,0,2.9042,0.75761,2.3991-0.25254,1.894s-0.88388,0.88388-0.88388,1.389c0,0.50508-0.50508,2.7779-0.50508,2.7779l-1.2627,1.2627-2.0203,0.12627-1.1364,0.88388h-3.0304l-1.5152-0.88388-2.1466,0.25254-1.389,1.1364-0.88388,1.389-0.25254,2.9042-0.75761,1.1364-1.1364,1.0102-1.7678,0.50508-3.0305,0.25254-2.0203,0.25254-1.0102,0.88388-1.894-0.37881-1.389-1.1364-1.894-1.894-2.5254-1.6415-1.5152-0.63135-2.2728,0.37881-1.894,0.3788-1.389-0.12626-1.6415-1.389-1.894-2.2728h-2.2728c-0.50508,0-1.6415-0.75761-1.6415-0.75761l-4.672-3.1567-1.6415-1.7678-2.9042-0.3788-1.389,0.12627-0.88389,0.12627-1.2627-1.2627-3.9143-3.283-3.1567-3.0305-0.50507-1.389,2.0203-2.9042,1.389-2.7779,0.75762-0.25253,1.6415,1.1364,1.1364,0.75761h2.7779l1.5152-1.389,0.50507-1.7678,0.12627-1.7678,2.5254-1.7678,1.7678,2.0203,1.2627,0.63134h2.3991l1.6415-1.1364,0.75761-2.0203,0.50508-1.894,3.7881-0.75762,2.5254-0.3788,1.389-1.2627v-1.0102l-0.88388-1.389,1.7678-2.1466,0.25254-1.1364v-1.389l-1.0102-1.6415,1.0102-2.5254,2.1466-1.6415,3.283-0.88388,1.1364-0.75762,8.0812-6.1872,0.88388-1.6415,1.6415-2.7779,2.1466-2.5254z","name":"Sverdlovsk Oblast"},"ku":{"path":"m255.69,383.01,2.3991,1.894,3.283,0.88388,4.2932,1.2627,3.1567,0.75762,4.1669-0.50508,2.5254,0.25254,2.9042,1.0102,3.5355,1.1364,3.5355,0.88388,3.283,1.0102,3.4093-0.12627,2.3991-1.2627,3.6618,0,1.0102-1.5152,0-1.894-1.5152-2.1466-1.389-2.7779s-1.5152-0.12627-2.1466-0.37881c-0.63135-0.25254-2.2728-1.6415-2.2728-1.6415l-0.75761-3.1567-1.389-1.7678-2.6516-1.2627-1.5152-1.6415-1.2627-2.2728-1.6415-1.5152-1.389-1.2627-1.0102-1.389,0.50508-2.3991,1.389-1.2627,1.1364-1.894-2.5254,0.37881-3.0305,0.12627-1.389,0.50507-0.75762,0.50508-1.2627-0.37881-2.0203-1.0102-1.7678-1.7678-2.0203-1.389-1.7678-0.75761h-1.2627l-3.0305,0.63134-1.7678-0.12627v1.1364l0.63135,0.88388-0.50508,2.2728v2.2728l-0.25253,2.1466-0.88389,1.1364-2.5254,1.1364-1.389,1.1364-1.5152,1.2627-1.7678,0.88388-0.50507,1.2627,0.63134,1.1364,1.894,1.894,1.389,1.389,0.63134,1.7678v1.894l-0.50507,1.7678z","name":"Kurgan Oblast"},"ko":{"path":"m224.63,259.27,2.1466-0.63134,0.63134-0.88388,1.894,0.12627,1.6415,1.894,2.1466,0.25254,2.1466-0.50508,1.5152-1.894,0.50508-1.5152-0.63135-0.88389,0.63135-1.5152,2.1466-1.2627,4.5457-1.894,2.6516-1.1364,0.25254-1.5152-0.50508-2.5254-2.1466-0.88389-3.283,0.12627-2.3991,1.6415-2.3991-0.75761s-0.50508-1.0102-1.2627-1.0102-1.5152-0.25253-1.5152-0.25253l0.50507-3.0305,1.7678-0.37881,1.389-1.5152,0.50508-1.894,2.1466-0.50508,2.2728,0.12627,0.63135-1.7678-0.63135-0.63134-0.63134-2.1466,0.63134-1.389,4.5457-2.0203v-1.2627l-1.0102-2.5254-0.63135-1.6415-1.6415-1.7678-0.63134-1.1364,0.25254-1.6415,1.2627-0.63134,1.7678,0.75761,1.5152,2.1466,1.6415,1.5152,2.2728,1.894,2.6516,1.2627,1.7678,1.1364,0.50508,1.7678,1.5152,1.5152,3.1567,0.3788,1.894,1.2627,2.9042,0.50507,0.88388,1.2627h2.0203l1.0102-0.63134-0.25254-1.5152-0.75761-1.5152,0.50507-1.0102,0.88389-1.5152s0.25253-1.1364-0.12627-1.6415c-0.37881-0.50508-1.1364-1.1364-1.1364-1.1364v-0.88388l2.7779-3.283,3.1567-2.1466,1.894-2.0203,1.0102-0.88388,2.3991,0.63134,3.4093,0.12627,2.5254,0.75762,4.2932,0.50507,2.1466,0.63135,3.283,0.12627,2.3991-0.50508,1.5152,0.12627,0.12627,1.894,1.2627,1.0102,2.1466,2.1466,5.3033,4.672,7.4499,4.672,6.4397,3.7881,5.177,3.0305,5.5558,3.283,2.7779,1.894,2.2728,0.25254h3.283l2.1466-1.0102,2.5254-2.3991,1.6415-1.2627,2.7779,0.25253,2.3991-0.12626,2.0203-0.63135,1.5152-0.88388,1.6415-0.37881,3.1567,0.12627,1.6415,0.25254-0.50508,1.5152-0.88388,1.1364-1.1364,0.63134-0.50508,1.894,1.2627,1.7678,1.2627,1.389,0.12627,1.894-1.1364,1.389-0.88388,0.25254-0.75762,1.389-2.0203,0.25254-2.3991-0.12627-2.1466,0.88388-2.5254,1.389-1.389,1.1364-3.0305-0.12627-2.1466-0.50507h-3.1567-2.0203l-1.0102,0.3788-1.389,1.5152-0.75762,0.88389-2.1466,1.6415-1.5152,0.50508h-2.3991l-2.3991-0.25254-1.5152,0.50508-2.9042,2.0203-2.2728,1.2627-1.5152,1.0102-1.5152,0.3788-1.2627-0.12626-1.2627-1.0102-0.12626-1.894-0.63135-1.389-1.6415,0.88388-1.5152,1.389-1.0102,1.2627-0.88388,0.50508-1.2627,0.50507-0.75762,0.37881-0.12627,1.7678-0.3788,1.7678-0.63135,1.389-0.88388,1.1364-1.0102,1.6415-1.894,1.6415-1.6415,1.389-1.2627,0.75762-2.7779,3.283-1.894,2.6516-1.1364,3.0305-0.50507,1.6415-1.5152,1.6415-2.0203,0.88388-1.5152,0.63134-1.7678,1.0102h-2.2728l-3.1567-1.0102-3.1567-1.6415-4.4194-2.1466-0.75761-0.3788-2.5254,0.50507h-3.283l-3.0305-0.88388-2.9042-1.389-1.0102,0.25254-1.6415-0.12627-1.5152-1.2627-2.2728-2.3991-1.894-0.88388-0.63135-1.5152-2.2728-3.0305-5.8084-1.1364-1.389-0.63134-1.7678,0.63134-0.75761,0.75762v0.75761l0.37881,0.88389v1.6415,1.0102l-0.50508,0.3788-1.389-0.63134-0.88388-0.37881-1.1364,0.25254-1.5152,0.88388-1.5152,0.50508-1.1364-0.25254-0.88389-1.389-0.88388-0.63135-2.2728-0.88388-6.0609-1.1364-1.2627,0.25254-1.1364,1.1364-0.63135,1.5152-1.1364,0.37881-1.6415-1.389v-1.1364l1.0102-1.389,0.50507-0.75761-0.50507-1.0102-1.1364-1.0102-1.1364-1.0102-0.3788-0.75761,1.5152-1.2627,1.1364-2.5254,1.6415-1.0102,1.6415-0.3788,1.894-1.2627,0.88388-2.3991,1.2627-1.2627z","name":"Komi Republic"},"mu":{"path":"m217.31,136.92,1.1364-1.5152,1.5152-0.75761,2.9042,0,4.2932,0.12626,2.1466-0.50507,2.5254-1.6415,0.88388-2.0203,0.12627-3.5355,1.5152-3.4093,1.0102-1.0102,4.7982,0,2.3991-0.63134,1.0102-1.2627,1.7678-0.12627,2.3991,1.0102,3.0305,1.894,2.2728,1.894,2.6516,0,2.2728-0.25253,0.25254,2.3991,1.894,0.3788,1.7678,1.0102,0,2.2728,0,1.7678-1.0102,0.63134-1.5152-0.3788-0.75761-1.1364-0.25254-0.63134-0.88388,1.0102-0.25254,0.63135,0.50508,1.1364,1.1364,0.88388,0.50507,0.75762-0.3788,1.0102-1.0102,0.63134,0,0.75762,1.1364,1.2627,0.88388,1.5152,0.88388,1.7678,2.0203,2.1466,0.75761,1.7678,0,1.7678,0,1.1364-0.50507,1.1364-0.25254,2.0203-0.12627,5.5558,0,5.5558-0.75762,1.389-0.25253,1.894,0.63134,0.88389,0.63135,1.0102-0.12627,4.0406,0,3.5355-0.63135,1.389-1.7678,1.1364-0.88389,0.88388,0,1.0102-0.25254,0.88389-1.1364,0.88388-2.7779,0.75761-3.6618,0.12627-3.1567,0.50508-1.6415,0.37881-2.5254-0.50508-2.0203-0.75761-1.894-1.389-1.894-2.2728-1.7678-2.2728-1.1364-1.894-0.63135-2.2728-0.3788-2.3991-1.2627-2.6516-1.1364-2.0203-0.3788-1.6415-0.37881-3.9143,0-1.7678,0-1.389-0.88388-0.88389-0.12627-2.9042,0-2.1466,0.75761-1.5152,0.12627-1.1364,0-1.5152-0.88388,0-0.63135,0.88388-0.88388,1.389-0.75762,1.894-0.25253,0.63135-3.5355,0-2.6516-0.25254-0.75761-1.5152,1.389-2.0203,1.1364-0.75761,0.25254-1.0102-1.7678-2.2728-1.5152-1.7678-1.2627-2.7779-1.2627-1.2627z","name":"Murmansk Oblast"},"kl":{"path":"M216.94,136.91l-2.28,1.53,0.12,1.62-1,2.28-1.9,2.04-1.88,0.87-4.31-0.13-0.88,1-2.28,2.16h-2.91l-2.4,0.38-0.13,4.03-0.62,1.9-2.91,0.38-1.87,0.25,0.12,1.4,0.88,1.5-1.78,1.29-1.25,0.5-3.41-0.91-1.66,1.16-0.37,2.9-0.13,4.16-1.25,2.28-2.65,1.62-3.41,1.16-8.72-0.12-3.53-0.91-5.19-0.75-4.28-0.75,0.88,1.87-0.13,1.54,0.07,0.53-0.94,5.65-2.53,1.5-2.03,3.32-2.91,1.87-0.13,1.66,2.66,1.25,1.91,0.75,1,2.4,2.9,0.25,5.07-0.75,1.65-0.9,2.25,0.53,1.78,1.37,1.38-1.62,1.12-0.78,1.78,4.69,1.5,0.62,2.91,1.53,0.06,0.69-0.12,2.69,0.06,1.78-1.63,1.53,1,1.12,2.29,0.5,1.75-0.62,2.53-1,0.62-0.5,1.91,1.5,1,1.9,1.03,1.88,3.16,0.25,3.28-3.03,0.75-1.5,1.25-1.38,2.4-1.28,2.03-1.75,0.5-1.15-0.37-1.25-1.91-0.63-1-1.03,0.13-1.63,1.37-2.4,1.78-1.91,1.66-1.87,1.25-2.16,1.38,0.25,1.78,1.53h1.9l0.88-0.53,0.12-2,1.5-2.03,0.25-1.75-0.25-3.16-0.5-1.53,0.63-1.78,1.4-0.87,1.38-0.63,3.03-2.53,0.5-1.13,0.53-1.28h1.38l3.4-0.62,2.16-1,1.5-1.28v-1.88-3.4l0.25-2.54,1.03-0.87v-1.16l-0.12-2-0.78-1.15-2-0.38-1.41-0.37-0.63-0.88v-0.75l0.63-1.15,1.28-1,0.75-0.63-0.38-1.03-1.65-2.37-1.88-2.29-1.4-2.15-1.75-2.53z","name":"Republic of Karelia"},"vo":{"path":"m185.36,208.76c0.12627,2.5254-1.389,5.0508-1.389,5.0508l-1.5152,1.894s-0.3788,1.0102-0.3788,1.7678c0,0.75762,0.12626,1.389,0.12626,1.389s0.63135,1.389,1.894,2.1466c1.2627,0.75761,2.0203,2.7779,2.0203,2.7779l1.0102,1.894,1.5152,1.2627,1.2627,1.0102,1.1364,1.894,1.2627,0.37881,3.1567,0.50508,1.5152,2.2728,1.0102,1.894,1.7678,0.63135,0.25254,0.63135,1.0102,2.2728,1.2627,0.75761,2.6516,0.25254,1.5152,0.12627,0.50507,2.7779,1.2627,2.0203,2.7779,1.389,1.389,0.12627,1.0102-0.63134,1.389,0.12627,1.0102,0.50507,0.75761,1.0102-0.63134,1.5152-0.75762,1.389,0.25254,0.75762,1.2627,1.1364,0.75761,0.50508,1.0102,0.50507,0.3788,0.63135v1.0102l-1.5152,1.5152-2.0203,0.63135-2.0203,0.75761-4.2931-0.25254-1.2627,0.88389,0.25253,1.1364,0.88389,1.2627v2.6516,1.1364l-1.0102,1.1364-0.75761-0.63134-1.1364-1.0102-0.37881-1.5152-1.0102-0.12626-1.6415,1.0102-1.0102,1.0102h-1.7678l-3.0305-1.5152-2.1466-2.1466-2.0203-1.1364-1.894-1.6415-2.0203-2.7779v-1.894l-1.894-2.7779-2.5254-2.2728-1.5152-2.0203-1.2627-1.7678-0.63135,0.75761-1.6415,0.12627-1.6415-0.25254-2.2728-1.894-0.88388-0.50508-1.2627,0.63135-2.7779,1.7678-0.63135,0.37881-1.2627,0.12627-0.88388-0.50508-0.50508-1.2627-0.63134-1.894,0.25254-4.0406-0.50508-2.5254-0.50508-1.2627-1.2627,0.12627-1.2627,0.37881-0.88388-0.25254-1.389-1.2627-1.6415-1.7678-4.0406-1.0102-1.2627-1.1364-0.50508-1.0102,0.63135-2.0203-0.50508-0.88388-1.0102-0.75761-1.1364-0.63135-1.894-0.37881-0.25254-0.12627,0.50508-2.7779-0.50508-1.6415-0.63134-1.2627-0.88388-0.88389-0.37881-0.50507-0.12627-1.0102-0.25254-1.5152,0.63135-0.88388,0.75761-0.88388,1.389-0.25254h1.6415l0.88388,1.2627,1.0102,0.88388,1.1364-0.50507,0.25253-1.1364,1.2627-0.25254,1.1364-0.63135,0.75761-1.1364,0.12627-1.5152,3.283-3.6618,1.2627-0.88388h1.7678l2.0203-0.37881,1.389-0.75762,0.88388-0.63134h1.1364l1.5152,0.88388h1.2627l0.88389,0.75762,0.50507,0.88388,1.389,0.63134h1.1364l1.389-0.3788,1.5152-0.50508,1.1364-0.37881,0.63135-0.25253,0.88388,0.12627,1.0102,0.88388,1.2627,1.6415,0.50507,1.2627z","name":"Vologda Oblast"},"ar":{"path":"M391.06,151.03l-3.56,1.06-2.16,0.91-3.56,0.19-1.59,0.87s-1.26-1.07-1.97-1.25c-0.72-0.18-0.91,1.1-0.91,1.1l-1.78,2.65-2.69,1.63-3.03,0.87-2.31,1.78s-2.15,0.37-3.22,0.72c-1.07,0.36-2.5,0.19-2.5,0.19l-1.59,0.72,1.06,1.78-2.16,1.25,0.38,0.72,1.25,1.44,1.78,1.59,1.78,1.78,0.91,1.63,1.4-0.72,0.91-1.97,2.16-0.72,1.25-0.53,1.93-0.19,0.91-1.59h1.97l1.25,0.87,1.59-1.25,1.1-1.25,2.65-0.15,0.72-0.57,3.41,0.72,1.78-1.06,0.34-1.44,2.69-0.34s1.07-0.01,2.5-1.44l0.72,1.06,2.84-0.68s1.98-0.19,2.69-0.19,3.03-0.38,3.03-0.38h2.31l2.35,1.25,1.78,0.91,1.25-0.72,0.72-0.87,4.28,1.06,1.97-1.44,3.22,0.19,4.09-0.72,1.25-1.59,1.97-2.88s-1.26-0.89-1.97-1.25-2.69-1.44-2.69-1.44l-3.22,0.57-4.43,1.59-4.32-0.91-2.5-0.15-3.18-0.72-1.63-0.91-1.59-1.78-1.44,0.72-1.97,1.06-2.5-0.15-3.22-0.91-2.5-0.72zm-35.53,14.47l-2.5,0.53-1.78,1.63-2.5-0.38s-1.44-1.06-1.44-0.34v1.78l0.72,1.59-2.12,1.25-2.88,1.1-1.06,1.25h-2.16l-0.72-1.1-1.59-0.87-2.69,2.12-0.15,3.03,1.93,2.69,1.44,2.16s1.26,2.14,0.91,3.03c-0.36,0.89-4.28,2.5-4.28,2.5l1.06,2.5,1.25,1.59v1.97l2.31,0.53,2.88,1.97,2.12,2.31,1.97,0.38s1.06-1.07,1.06-1.78c0-0.72-0.15-4.48-0.15-5.38,0-0.89,1.59-8.37,1.59-8.37l0.34-1.44,4.13-2.69s0.88-1.07,2.31-1.97c1.43-0.89,4.66-3.03,4.66-3.03l1.78-1.4s0.71-1.64,0-1.82c-0.72-0.17-1.62-0.53-2.16-1.25-0.53-0.71-3.03-2.65-3.03-2.65l-1.25-1.44zm-132.28,14.34l-0.63,0.63-2.28,0.25-0.87-0.13-1.78,0.91v1.38l-0.63,1.65-1.15,0.75-0.13,1.38,0.91,0.78,0.87,0.87-0.12,1.25-1.25,1.28-1.66,1.5-1.65,0.13-1.38-1-0.62-1.53-1.41-2-1.25-1.03-2.03,0.53h-1l-2.41-1.66-1,0.38-1.66,2.15-1.37,2-1.66,1.78-1.25,2.66,0.38,1,1,1.28,1.78,0.25,0.12,1-0.12,1-2.78,2.41-2.16,0.87-1.87,3.03-2.53,2.53-2.91,0.5-1.13,0.13-0.5,0.91-0.28,1.87-0.87,2.16-1.75,2.03-0.13,1.87,1.25,2.79,1.5,1.28,2.04,3.53,3.78,4.15,1.28,0.75,3.15,0.38,0.38,0.65,1.37,1.38,1.66,2.53,1.38,0.5,0.5,1.66,0.9,1.5,3.28,0.5,1.63,0.25,0.78,1.4,0.37,2.13,0.75,1.15,2.41,0.88,1.5,0.75,1.28-0.5,1.13-0.25,1.37,0.75,0.91,1.66-1.03,1.25-0.13,1.53,0.66,1,1.25,0.75,1,1.03,1.03,0.62,0.75-0.37,1.25-0.25,1.41,0.5,1,1.37,0.5,0.91,0.24,2,0.26,1.03h0.65l0.88-0.16,0.87-0.5,0.63-0.37h1.03l0.75,0.75,0.62,0.91,0.88,0.25,1.4,0.25,1.88-0.5,1.41-0.5,1.37-1.79v-0.87l-0.37-0.66-0.26-0.5,0.26-1,0.5-0.5,2.78-1.28,2.4-1,1.66-1.12,1.87-0.78,0.5-0.75,0.13-1.38-0.75-1.53-1.13-0.87-2.15-0.13h-1.5l-1.53,0.5-1,0.75h-1.28l-0.63-0.12-1-1.13-1.53-0.37-0.75-0.38,0.25-1.53v-1.13l1.66-0.5,0.74-0.78,0.76-0.87,0.62-1.63,0.53-0.37,1.5-0.53,1.78,0.25,1-0.5-0.12-1.38-0.5-0.87-0.5-1.66,0.25-0.88,0.87-0.62,1-0.53,1.41-0.63,1.37-0.75,0.38-0.75v-0.5l-0.88-1.9-0.75-1.41-0.9-1.62-1-0.75-0.63-1.28,0.38-1.88,0.62-0.5h1.28l0.88,0.38,1,0.87,1.41,2.16,2.65,2.37,1,0.91s1.65,0.49,2.28,0.75c0.63,0.25,1.38,1,1.38,1l0.5,0.62,0.37,1.03,0.53,1,1,0.63,1.38,0.37h1.41l1.12,0.53,0.88,0.88,2.03,0.5h1.37l0.28,0.88,1,0.53,1,0.25,0.88-0.54,0.78-0.74-0.13-1.26-1.03-1.03,0.38-0.87,0.78-1,0.37-1.53-0.25-1-1.15-0.75-0.13-1.28,0.91-0.88,3.15-3.28,1.88-1.12,1.91-1.79,0.25-1.25-0.63-0.5-1.65-0.9-1.63-1-2.16-0.25-1.25,0.62h-1.4l-1.5-1.12-1.03-1.78-0.75-1.75-1.5-3.16-1.41-2.28-0.75-1.41-0.88-2.25-0.12-1.15-2.41,0.25-0.75-0.63-1.53-1.12s0.25-0.5,0.88-0.5,1.02-0.41,1.53-0.66c0.5-0.25,0.25-0.87,0.25-0.87s-0.37-1-0.88-1.76c-0.5-0.75-0.77-0.77-1.28-1.15-0.5-0.38-0.75-1.75-0.75-1.75l-1.25-0.41-2.03-0.5-1.66,0.13-1.5,0.53-1.9,0.12-0.88-0.65-1.62-1-2.03-0.13h-2.78-2.53l-1.63,0.75-0.91,0.75-0.37,1.66-1.13,1.37-1.12,2.04-1.28,0.87h-2.41c-0.63,0-1.75-1-1.75-1l-1.03-1c-0.51-0.51,0-2.03,0-2.03s0.13-1.53,0-2.16-1.5-1-1.5-1l-2.03-0.87s1.65-0.78,2.16-1.16c0.5-0.38,0.37-1,0.37-1v-2.28c0-0.63-0.25-2-0.25-2l-0.75-1.91zm110.16,1l-0.19,1.1,0.53,1.78,1.44,0.72,0.53-0.72v-1.63l-0.38-1.25h-1.93zm-28.22,6.19l-2.35,0.78-1.4,2.07-2.88,1.43-0.25,1.07,1.78,1.43,2.13,0.97,3.22-0.44,3.5-0.9,0.25-1.6-0.78-1.96-1.1-1.88-2.12-0.97z","name":"Arkhangelsk Oblast"},"tu":{"path":"m299.02,389.7,2.0536,0.80357,2.1428,1.1607,1.6072,1.3393,1.6071,1.5179,1.7857,0.71428,2.3214,0.17858,0.89286-1.0714,1.6071-1.875,0.53572-2.3214,0.625-2.1429,2.2321-1.7857,1.875-0.44643,1.25-2.5,1.6964-1.0714,2.9464,0.26786,1.6071-1.6072s0.625-2.3214,0.53571-2.6786c-0.0893-0.35714-0.80357-2.5893-0.80357-2.5893l-0.89285-1.875-0.625-3.3036-0.71429-2.2322v-1.7857l1.5179-1.9643,2.2321-2.5,1.4286-1.4286,3.125-0.26786,0.35714,1.4286-0.89285,1.6071-1.6964,1.6964-0.17857,1.25,2.5,0.35714,4.0178,0.35714,1.9643,1.6072,3.0357,1.7857,1.5179-1.25,2.9464-0.17857,2.1429,1.4286,3.3928,1.0714s2.5-0.98214,2.9464-1.1607c0.44643-0.17857,3.5714-0.44642,3.5714-0.44642l0.89286-0.98215-0.53572-1.0714-1.6964-1.25-2.9464-2.2321-1.0714-1.4286s-1.6964-0.44643-2.3214-0.44643-2.6786-0.80357-2.6786-0.80357l-0.17857-2.6786-0.26786-2.4107-1.3393-1.3393-0.44642-2.2321-0.53572-3.5714-0.35714-0.89286-2.4107-2.7679-1.1607-0.71428s-2.6786-0.26786-2.9464-0.26786h-5.0893l-0.98215-0.26786s-0.625-1.5178-0.625-1.875c0-0.35714-0.98214-1.5178-0.98214-1.5178l-1.875-0.35715-1.25,1.25-2.4107,1.875-2.1429,0.89286h-3.0357l-4.6428,0.0893-2.9464,0.26785s-1.4286,0.53572-1.7857,0.625c-0.35714,0.0893-4.375,0.0893-4.375,0.0893l-3.0357-0.0893-1.4286,0.35715-0.89286,1.5178-0.53571,2.3214-0.89286,1.3393-2.3214,0.71428-1.6071,0.53572-1.5179,0.35714-1.7857-0.17857-1.3393-0.625-1.4286,0.17857c-0.35714,0.17857-1.6964,1.0714-1.6964,1.0714l-1.1607,2.1429-0.35715,2.4107-1.6071,2.3214-2.1429,2.5893-0.98214,1.5179,0.26786,1.25,0.71428,1.3393,1.5179,1.25,1.25,1.6071,1.6964,1.875,1.0714,1.6964s3.0357,0.98214,3.0357,1.5179c0,0.53571,1.6964,2.9464,1.6964,2.9464l0.625,1.875,1.6071,1.4286,1.875,0.71428,1.0714,0.80357,1.4286,2.3214,1.0714,1.4286v1.6072z","name":"Tyumen Oblast"},"ne":{"path":"m260.27,198.54,1.6071-0.89286,1.4286-1.1607,2.0536-1.0714,1.1607-1.25,0.625-3.3929,1.1607-1.6071s1.4286-0.80358,2.4107-1.0714c0.98215-0.26786,2.3214-0.26786,2.6786-0.26786,0.35714,0,1.5178-0.98214,2.0536-1.5179,0.53571-0.53571,3.0357-2.5,3.0357-2.5l0.71429-1.0714v-2.2321l1.25-1.9643s0.89285,0.17857,0.98214,0.625c0.0893,0.44642,0.26786,1.5178,0.625,1.6964,0.35714,0.17858,1.875,1.4286,1.875,1.4286l1.6964,1.1607,0.98214,0.89286-0.0893,1.3393-0.625,1.4286-0.44643,1.7857v1.6964l-0.26786,1.0714-0.44643,0.80357-0.26786,1.25-1.25,0.71428-1.3393-0.625-1.25-0.98214-0.625-0.80357-2.3214-0.53572h-3.0357c-0.44643,0-2.1429,1.1607-2.1429,1.1607l-0.80357,1.4286,0.17857,1.0714s0.53571,0.89286,0.625,1.25c0.0893,0.35714-0.71429,1.1607-0.71429,1.1607l-0.89285,1.6072s-0.26786,1.1607-0.0893,1.4286c0.17857,0.26785,0.625,0.80357,1.1607,1.25,0.53572,0.44643,1.875,1.5178,2.1429,1.6964,0.26786,0.17857,1.875,0.89285,1.875,0.89285s2.3214,0.17857,2.8571,0.17857c0.53572,0,1.9643-0.26785,1.9643-0.26785s1.5179-0.98215,1.875-1.1607c0.35714-0.17857,1.9643-1.1607,1.9643-1.1607s1.0714-0.44643,1.4286-0.35714c0.35714,0.0893,1.3393,0.98214,1.3393,0.98214l2.3214,0.17857s0.35714-0.44643,0.71429-0.80357c0.35714-0.35714,0.53571-0.71429,0.98214-0.35714,0.44643,0.35714,1.875,1.3393,1.875,1.3393l1.7857,0.44643h5.0893l2.5893,0.0893s0.80357,0.80357,1.25,0.89285c0.44642,0.0893,3.3928,0.53572,3.3928,0.53572l1.5179,1.4286,0.71429,1.9643,1.1607,0.17858,0.71429-1.5179,0.89285-1.0714,1.875-0.17857,0.89286,0.53571,2.1429,0.17857,2.5893,0.44643-0.44643,0.80357-0.98214,0.80358-1.6964,0.625-0.80357,0.98214-0.71428,0.98214-1.6964,0.71429-0.26786,1.0714,1.3393,0.98214,1.25,0.53571,0.625,2.0536,0.71428,0.35715,1.6964-0.80357s1.3393-0.89286,1.6071-0.89286c0.26786,0,3.3036,0.53571,3.3036,0.53571l2.6786,1.3393,1.5178,1.3393,1.4286,0.89286,4.4643,0.17857,0.71429,0.71429,1.5178-0.26786,2.5893-0.35714,1.7857-1.3393,0.625-1.7857s0.53572,0.625,0.53572,1.1607c0,0.53572-1.6964,2.7679-1.6964,2.7679l-0.71429,1.7857v1.0714l-1.1607,1.1607-0.89286,0.625-0.44643,0.98214,0.44643,0.80357h1.4286l0.80357-1.6071,0.17858-0.53572,1.5178-0.0893,1.5179,1.25,2.3214,0.35714,1.1607-0.89286,1.3393-1.1607,0.53571-0.89286-0.71428-1.0714-0.35715-1.4286,1.5179-1.1607,0.71429-1.875-0.53572-1.6964-1.25-0.80357-0.71428-3.3929-0.26786-3.125s-0.26786-0.89286,0.0893-1.25c0.35714-0.35714,2.2321-1.6964,2.2321-1.6964l1.3393,0.17857,1.1607,1.4286,1.0714,1.9643,0.35714,2.1429-0.89286,3.3036,0.89286,1.0714,2.8571,2.4107,2.7679,2.8572,3.3929,2.5893,2.1428,3.3036,1.6964,3.3929,0.80357,1.875,0.17858,1.6071-1.0714,1.1607-0.98215,2.0536-0.98214,1.5179h-2.5c-0.44643,0-3.6607-0.17858-3.6607-0.17858l-2.1429,0.98215-2.7679,0.71428h-3.0357l-1.7857-0.17857-2.4107,1.875-3.0357,2.4107-1.6072,0.53571-2.7678-0.0893-2.0536-0.53571-4.2857-2.4107-23.036-13.929-7.6786-6.875-1.25-1.1607v-1.3393l-0.98214-0.625-2.4107,0.625-5.0893-0.44642-5.625-0.98215-5.1786-0.80357-3.125-0.26786-4.1071-2.3214-2.0536-0.44643-1.7857,0.625-1.7857-0.26786-1.5179-1.7857-4.2857-8.4822-0.98215-2.4107z","name":"Nenets Autonomous Okrug"},"om":{"path":"m358.39,368.89,0.71428,2.5-1.25,1.6071-1.25,1.9643,0.53572,1.6071,0.71428,1.9643-1.25,1.9643s-1.0714,1.25-1.0714,2.1429c0,0.89286,0.17857,3.0357,0.17857,3.0357l1.7857,1.6072,0.35714,2.3214-0.53571,3.3929-1.9643,0.89286-1.25,1.6071,0.71429,2.3214-0.35715,1.9643-3.9286,0.17857s-1.4286-0.89286-2.3214-1.0714c-0.89285-0.17857-3.3928,2.8571-3.3928,2.8571l-2.5,2.1429-0.89286,4.2857,0.53571,0.89286,1.9643,2.1429,0.35714,2.6786-1.6071,2.6786-1.0714,1.7857-0.17857,3.0357-2.5,2.1429s-2.3214,1.0714-3.0357,1.0714h-4.8214l-1.6072-0.71428c-2.1428,1.4286-3.75,0-3.75,0l-1.6071-0.71429-1.9643-0.35714h-1.0714l0.35714-1.7857,1.7857-1.0714,0.71429-1.4286-2.3214-1.25-2.1429-2.3214-1.9643,0.89285-0.89286-0.71428v-3.75l-1.4286-0.89286-2.8571,0.35714-2.8572-0.89285-0.89285-0.53572-0.17857-2.1428,2.1428-2.6786,0.71429-2.3214,0.35714-2.6786v-4.1071l0.71429-2.1429,1.4286-3.9286,1.6071-2.5,2.3214-0.53571,1.0714-1.25,1.0714-1.7857,1.6071-0.89285h2.6786l1.6071-1.4286,0.89286-3.9286-1.4286-3.2143-0.71429-3.0357-1.25-3.3928,0.35715-1.6072,4.4643-4.6428,1.0714-0.89286h2.6786l0.17857,1.6071-1.25,1.6072-1.7857,1.25-0.17857,1.4286,1.4286,0.35714,3.2143,0.35714,2.3214,0.17857,2.1429,1.4286,1.9643,1.4286,1.0714,0.35714,1.0714-0.71429,1.9643-0.35714,2.3214,0.35714,3.5714,1.6072h2.5l2.1428-1.0714h2.1429z","name":"Omsk Oblast"},"ht":{"path":"m329.64,260.32,0,3.75-0.53572,3.2143-1.6071,2.3214-2.3214,2.3214-0.89286,1.25,1.9643,1.9643,1.7857,2.3214,5,1.9643,4.8214,0.17857,3.5714,1.4286,2.3214,2.6786,0,1.4286-2.1429,1.7857,1.4286,1.4286,2.3214,2.8572,1.9643,1.0714,2.1428-1.0714,1.7857-0.89286s1.6071,0.71429,1.9643,0c0.35715-0.71429,0.89286-2.1429,0.89286-2.1429l1.6071,2.1429,1.4286,2.8571,1.9643,1.6072s0.35714,2.1428,0.35714,2.8571v4.6429l1.9643,3.3928s0.35714,0.17857,0.71429,0.89286c0.35714,0.71429,0,2.1429,0,2.1429l1.0714,1.25,2.5,0.53571,3.75,0.71429,1.4286,0.89285s2.8571,2.1429,3.5714,2.6786c0.71429,0.53571,1.25,1.6071,2.1429,1.9643,0.89286,0.35714,3.5714,0.53572,3.5714,0.53572l2.8571,0.35714,0.89286,1.0714s0.35714,1.6071,0.71428,2.6786c0.35715,1.0714,1.4286,1.7857,1.4286,1.7857l3.0357,0.17857,1.7857,0.53572,0.35715,1.9643,0.35714,1.4286,1.0714,2.5c1.9643,0.17857,2.5,0.17857,3.5714,0.17857s3.3928,1.0714,3.3928,1.0714l1.9643,0.71428,2.8571,0.35714,2.8572-1.0714,3.2143-1.9643,3.0357,0.53571,1.9643,2.6786s0.35714,1.7857,1.0714,2.1428c0.71429,0.35715,2.8571,0.53572,2.8571,0.53572l2.3214,1.6071,0.71429,2.3214,1.9643,0.71428,2.6786-0.89285,1.9643,1.6071,1.0714,3.0357v2.3214l-0.35714,1.6072-0.53572,1.9643,3.0357,1.9643,2.5,1.7857,0.35714,2.3214v1.0714l-3.75,1.7857-2.6786,0.53572-3.2143,0.17857-3,0.15-1.61-1.07-1.7857-0.71428-2.3214,0.35714-2.3214,1.6071-2.6786,1.0714-2.1429-1.9643s-2.8571-0.35714-3.5714-0.35714c-0.71429,0-2.3214-1.7857-2.3214-1.7857l-0.89286-1.25-3.9286,0.17857h-3.5714l-1.6071-2.5s-1.25-0.89286-2.1429-0.89286c-0.89286,0-4.4643-1.25-4.4643-1.25l-2.5-2.3214h-1.25c-0.71428,0-2.3214,1.25-2.3214,1.25l-2.5,2.1429-1.7857,2.6786-2.8571,2.5-1.6071,3.3929-4.4643,1.6071-3.5714,0.89286-0.35714,2.1429-0.71429,2.1428-2.6786,1.25h-2.8571l-5.8929-5.5357-3.9286-0.89286-1.0714-1.4286-0.53571-4.1071-1.0714-1.25-1.0714-5.3572-0.53571-1.7857-3.5714-3.2143h-5.5357l-3.0357-0.35714-1.9643-2.8571-1.6071-0.53572-4.4643,3.0357-3.3929,0.71428h-5.1786l-5,0.71429-4.2857,0.53571h-3.5714l-1.4286-0.17857-0.53571-2.8571-0.35714-3.2143,0.89285-3.2143-0.89285-3.2143-2.3214-2.1428-1.0714-0.89286-1.0714-1.0714,1.25-2.6786,1.4286-2.3214-0.17857-2.1429-0.71429-3.2143,0.71429-5.5357,1.4286-1.7857,1.4286-2.1429-0.71428-2.3214-1.0714-3.5714-1.9643-2.6786-2.3214-3.3928-3.3928-2.1429-1.7857-1.9643-1.0714-2.6786,3.3929-2.1429,1.6071-2.6786,2.3214-4.8214,2.1429-2.6786,2.5-1.9643,3.5714-3.3929,1.6071-1.7857,1.7857-3.3929-0.17858-1.7857,0.89286-1.0714,2.1429-1.0714,1.4286-1.9643,1.6071-1.0714,1.25,0.17857,0.89286,2.3214,0.35714,1.0714,1.4286,0.35714,2.5-0.71428,3.0357-1.6071,1.4286-1.25,1.25-1.0714,2.5-0.53572z","name":"Khanty–Mansi Autonomous Okrug"},"ya":{"path":"m366.25,234.25,1.4286,2.6786,1.6071,1.7857,1.6072,2.6786,1.0714,3.0357,0.89286,2.8572,3.0357,0.17857,1.7857-1.6072,1.4286-1.25-0.53571-3.2143s-0.89286-1.4286-0.53572-2.3214c0.35715-0.89286,1.7857-2.5,1.7857-2.5v-2.3214l-2.1429-1.6071-1.25-2.5s0.71429-1.6071,1.4286-1.9643c0.71429-0.35714,3.75-2.3214,3.75-2.3214s1.6071-3.75,1.9643-4.4643c0.35714-0.71429,0.35714-4.8214,0.35714-4.8214l0.89286-1.4286,7.5-2.1429,4.8214-3.5714,5.7143-6.0714,3.2143-2.1429,2.1428-0.71429,1.7857,2.3214,3.3928,0.35714,1.7857,1.25,1.0714,2.6786,0.17857,1.7857-0.89286,3.75-2.1429,2.6786-2.3214,2.8571-3.0357,1.6072-1.25,1.0714-0.35714,1.9643,1.0714,2.1429,0.17857,2.8571-0.89286,2.8571-2.1429,2.6786-1.7857,3.2143-2.6786,4.4643-1.25,3.5714-0.89286,2.1429-0.17857,2.5,0.35714,2.6786,0.71429,2.3214-0.71429,1.4286-3.0357,2.1429-1.0714,3.2143-0.89286,3.2143h-3.2143l-2.3214,1.25-2.1429,3.3929-3.5714,0.53571-2.3214,1.25-1.4286,1.4286h-3.5714l-1.4286-1.0714-1.0714-2.6786-0.71429,0.53572v1.6071l-1.9643-1.4286-0.71428-1.9643-1.0714,0.71429-0.17857,1.9643,1.7857,2.1428,2.5,2.1429,2.5,1.25,3.2143,1.0714,2.1429,1.25,2.1428-0.89286,3.5714-1.7857,3.0357-0.71429,3.75-1.0714,2.3214-3.0357,3.2143-2.6786,3.3929-1.6072,2.1428-1.7857-0.17857-2.1429-0.89286-2.3214-0.17857-1.7857,2.1429-2.1429,4.2857-0.89285h3.3929l1.4286,1.4286,1.25,3.0357v2.8571,3.0357l-1.6071,1.4286-1.25,2.5,0.17857,3.5714,1.7857,1.25,3.2143,0.71428,2.1429,2.8572,1.9643,3.2143,0.53572-0.71428-0.53572-4.1072-2.5-3.2143-3.75-1.0714v-2.8571l2.3214-3.0357s1.7857-0.35714,1.9643-1.0714c0.17857-0.71428,0.17857-3.5714,0.17857-3.5714l-0.89286-3.9286-2.6786-2.6786-2.6786-3.2143-0.89286-1.4286h-2.1428s-0.53572,1.25-1.4286,1.25c-0.89285,0-2.6786-1.25-2.6786-1.25l-1.6071-1.0714-0.53571-2.5,1.4286-3.75,2.3214-3.2143,2.1428-2.6786,3.0357-1.25,0.17857-4.4643-0.17857-3.0357v-3.0357l0.17857-2.3214,1.7857-2.3214,1.4286-1.4286,2.1429-0.35715,3.2143-0.53571,2.3214-2.5,1.7857-1.0714,1.25,2.1429-1.9643,2.3214-0.89285,1.4286-1.0714,4.4643-1.25,2.5,1.25,1.7857,2.6786,2.1429h2.8571l1.4286,2.1428,2.3214,2.5,1.7857,0.35715-1.4286-2.1429v-2.5s-1.25-1.25-1.9643-1.6071c-0.71429-0.35715-3.5714-2.8572-3.5714-2.8572l-1.25-3.5714-0.17857-1.4286s1.9643-0.71428,2.6786-0.71428c0.71429,0,3.2143,0.89285,3.2143,0.89285l0.89285,1.7857,1.6072,0.17857,1.25-0.71429-0.35715-1.9643,0.17858-1.9643,1.4286-0.35714,1.6071,0.71429,1.7857,1.4286,1.25,1.0714,0.89286,1.7857-0.35714,1.7857-2.3214,2.5-3.0357,1.25,1.0714,1.4286,2.6786,2.1428,0.35714,2.8572,0.17857,3.3928-0.71429,2.6786-2.5,1.4286-2.6786,1.4286-3.5714,1.7857-2.1428,2.1429,0.35714,2.6786,1.4286,2.5,1.25,2.5,1.6071,1.0714h3.3929,2.5l1.7857,1.6071,0.53571,3.0357,0.17857,3.3928v2.8572l-1.9643,3.2143-1.7857,2.5h-2.6786l-0.71429,0.53572,0.53572,1.9643,0.71428,1.7857-0.53571,2.5-0.89286,1.25,2.3214,3.3928,0.53572,1.7857,0.35714,1.7857-1.25,1.7857-1.0714,1.25,0.89286,2.1428-0.17857,2.5-1.6072,1.6072,1.6072,1.7857,2.1428,1.9643,1.6072,1.4286-0.17858,3.3928-1.4286,2.3214-0.17857,2.6786,2.3214,2.1429,4.6429,0.89286,0.89285,1.4286-1.4286,2.1429-0.53571,3.3928-0.89286,2.3214-2.6786,1.4286s-0.89286,0.53572-1.6071,1.0714c-0.71429,0.53572-1.7857,2.8572-1.7857,2.8572l1.9643,1.7857,0.17857,2.3214-1.4286,2.1429-1.25,2.5-2.6786,2.3214-2.8572,2.8572-0.89285-1.7857-1.6072-2.1428-1.7857-1.0714-1.9643,0.71428-1.9643-0.71428-0.71429-1.6072-1.25-1.25-2.5-0.89285-2.1428-0.89286-0.71429-1.6071-0.89286-1.7857-1.4286-1.4286-2.8571-0.17857-2.5,1.4286-2.5,1.0714-2.6786,0.17857-4.1072-1.6071-3.5714-0.35714-2.1429-0.17858-0.89286-1.9643-1.0714-2.3214v-1.4286l-3.3928-0.71429-2.3214-0.53571-0.89286-2.5-0.71429-2.3214s1.4286-0.17857-1.0714-0.35714-5.5357-1.0714-5.5357-1.0714l-1.4286-0.53572-3.2143-2.5-2.5-1.6071-2.8572-1.0714-3.2143-1.25-1.25-0.89285-0.17857-2.1429-2.8572-3.9286,0.17857-6.7857-1.25-1.7857-2.3214-2.8571-1.0714-2.1429-0.53572-0.53572-1.0714,1.25-0.53571,0.71429h-1.4286l-2.6786,0.89286-1.25,0.35714-1.6072-0.35714-2.1428-2.3214-1.7857-1.6071,0.53572-0.89286,1.4286-1.6071-0.35714-1.7857-2.5-2.3214-3.0357-1.4286-4.2857,0.35714-3.0357-1.25-2.6786-0.89285-3.3929-4.2857,2.3214-2.5,2.5-3.75,0.17857-5.3571,0.35715-1.4286,3.75-1.0714,2.6786-2.5,1.4286-1.4286h3.75,3.3929l3.9286,0.53571,1.7857-1.25,3.5714-1.6071,3.3929-0.53571,2.5-1.25,2.3214-1.25,0.35714-2.8572-2.1429-2.3214-0.71428-1.25,0.53571-1.6071,2.3214-1.4286,0.35714-1.25,1.92-2.87z","name":"Yamalo-Nenets Autonomous Okrug"},"kr":{"path":"M501.66,122.41c-0.45,0.04-1,0.37-1,0.37-0.9,0.72-1.25,0.77-0.94,1.13,0.31,0.35,0.19,0.55,0.9,0.78,0.72,0.22,0.91,0.49,1.44,0,0.54-0.49,0.77-1.24,0.41-1.69s-0.37-0.64-0.81-0.59zm11.56,0.65c-0.22,0.02-0.44,0.11-0.6,0.38-0.31,0.53-0.49,1.57-0.62,1.84s-0.2,0.74-0.78,0.88c-0.58,0.13-1.39,0.54-1.75,0.09s-1.03-1.51-1.25-1.69-1.04-0.74-1.13-0.03c-0.09,0.72,0.19,1.51,0.19,1.91s-0.18,0.99-0.4,1.12c-0.23,0.14-1.06,0.25-1.29,0.56-0.22,0.32-0.62,0.49-0.62,1.16s-0.27,1.67-0.31,1.94c-0.05,0.27-0.32,0.26-0.63,0.75s-1.09,1.87-1.09,1.87,0.89,0.62,1.15,0.85c0.27,0.22,0.42,0.77,0.38,1-0.05,0.22-0.13,1.05-0.53,1.19-0.4,0.13-1.43,0-1.78-0.13-0.36-0.13-1.01-0.48-1.5-0.44-0.49,0.05-1.01,0.23-1.19,0.63s-0.71,0.38-0.13,1.18c0.58,0.81,0.87,1.53,1,1.76,0.14,0.22,0.29,1.51,0.07,1.87-0.23,0.36-1,1.13-1.22,1.53-0.23,0.4-0.44,0.71-0.22,1.16,0.22,0.44,0.66,0.8,1.15,0.94,0.5,0.13,3.66,0.71,3.66,0.71s0.28-0.36,0.81-0.71c0.54-0.36,1.36-0.77,1.85-0.41s0.52,0.8,0.65,1.25c0.14,0.45,0.41,2.02,0.5,2.37,0.09,0.36,0.49,0.58,0.94,1.16s1.59,1.37,2.22,1.59c0.63,0.23,1.05,0.55,1.72,0.6,0.67,0.04,2.85,0.82,2.94,1.09s0.31,1,0.31,1,0.54,0.52,0.81,0.56c0.27,0.05,2.22,0.19,2.22,0.19,1.38-0.76,2.23-0.8,2.5-0.94,0.27-0.13,0.84-0.03,1.37-1.06,0.54-1.03,0.76-1.35,0.63-2.06-0.13-0.72-0.34-0.93-0.87-1.6-0.54-0.66-1.5-1.24-1.1-1.56,0.4-0.31,1.56-0.8,1.88-1.15,0.31-0.36,0.54-1.32,0.4-2.35-0.13-1.02-0.15-2.5-0.47-2.9-0.31-0.41-0.73-0.92-1.4-1.19s-1.23-0.67-1.81-0.53c-0.59,0.13-1.92,0.25-2.19,0.03s-0.62-0.83-0.85-1.5c-0.22-0.67-0.5-1.13-0.5-1.53s1.16-3.63,1.16-3.63,0.71-0.29,0.84-0.56c0.14-0.27,0.36-0.76,0.22-1.66-0.13-0.89-0.39-1.55-1.28-2.09s-2.09-1.72-2.09-1.72v-0.97c0-0.35-0.15-1.73-0.28-2-0.14-0.27-0.48-0.72-0.97-0.72-0.25,0-0.5-0.05-0.72-0.03zm17.72,22.91c-0.13,0.02-0.25,0.07-0.35,0.19-0.4,0.44-0.72,1.12-0.9,1.34s-0.51,0.09-0.91,0-0.89-0.43-1.16-0.03c-0.26,0.4-0.67,0.74-0.71,1.19-0.05,0.44,0.09,1.75,0.09,2.46,0,0.72,0.09,1.8,0,2.6s-0.2,1.3-0.78,1.66c-0.58,0.35-0.91,0.4-1.31,0.93-0.41,0.54-1.13,1.25-1.13,1.88,0,0.62,0.06,1.45-0.66,2.03-0.71,0.58-1.14,0.56-0.96,1.4,0.17,0.85,0.22,0.93,0.84,1.38s2.79,0.63,3.28,0.5,1.26-0.77,1.66-1.22,1.61-0.99,2.28-1.12c0.67-0.14,1.17-0.08,2.16-0.13,0.98-0.04,1.54-0.39,2.03-0.65,0.49-0.27,0.54-0.54,1.43-0.54,0.9,0,1.74,0,2.1-0.31,0.35-0.31,1.35-1.19,1.62-1.5s0.88-1.05,0.97-1.5,0.18-1.3,0-1.75,0.15-1.15-1.19-1.28-1.57,0.07-1.84-0.38c-0.27-0.44-1.03-0.88-1.03-1.37s0.08-1.02-0.19-1.37c-0.27-0.36-0.79-0.81-1.28-0.72s-1.31,0.58-1.53,0.62c-0.22,0.05-0.71-0.09-0.85-0.4-0.13-0.32-0.21-1.11-0.21-1.91s-0.25-1.63-0.25-1.63c-0.34-0.13-0.83-0.43-1.22-0.37zm5.22,20.03c-0.62,0.05-1.16,0.75-1.16,0.75s-1.62,1.95-2.16,2.84c-0.53,0.9-0.86,1.08-1.93,1.25-1.08,0.18-1.82,1.63-1.82,1.63s-0.51,1.23-0.68,2.12c-0.18,0.9-1.25,3.07-1.25,3.07v1.93l0.87,1.63s1.6,1.05,1.78,2.12c0.18,1.08-2.12-0.68-2.12-0.68s-2.14-0.73-3.03-0.91c-0.9-0.18-1.64,0.01-3.07,0.19-1.42,0.18-1.25,0.34-1.25,0.34l0.72,1.63s1.61,1.4,1.25,2.65c-0.35,1.25-1.4-0.53-1.4-0.53l-1.97-0.87s-1.98,0.16-2.88,0.87c-0.89,0.72-1.25,0.91-1.97,0.91-0.71,0-1.59-0.71-2.12-1.78-0.54-1.08-0.91-0.91-1.63-1.44-0.71-0.54-3.2,0-4.09,0s-2.32,1.79-3.75,1.97-1.78,0.53-1.78,0.53l0.34,2.12-1.97,1.1-2.12,0.53-2.16,0.53c-0.71,0.18-2.12-0.19-2.12-0.19l-1.97-0.34-1.44,0.87-0.53,0.57-2.84,0.15-2.16,0.91s-2.49,2.13-4.09,2.31c-1.61,0.18-0.19,0.53-0.19,0.53s1.06,0.91,1.06,1.63c0,0.71-0.7,0.87-0.87,1.4-0.18,0.54-1.45-0.33-2.35-0.68-0.89-0.36-1.25,0-1.25,0s0.2,1.04,0.38,1.93c0.18,0.9,1.06,1.28,1.06,2.35s-0.19,2.12-0.19,2.12,0.53,2.69,0.53,3.41v2.69c0,0.89-0.87,1.59-0.87,1.59s-1.25,0.72-3.03,0.72c-1.79,0-0.91-0.72-0.91-0.72l0.72-0.91-0.53-1.4-1.97-0.38-2.31,1.25-1.78-0.53h-3.22-3.94c-1.43,0-1.95-1.07-2.84-1.25-0.9-0.18-2.88-0.34-2.88-0.34s-2.14-0.02-3.03,0.34-1.97,1.06-1.97,1.06v3.07,3.03s-1.6,0.69-1.78,1.4c-0.18,0.72,0.01,2.68,0.19,3.75,0.18,1.08,1.05,0.72,2.12,1.25,1.07,0.54,2.16,1.25,2.16,1.25l0.53,0.57,0.34,1.78s0.57,1.94,0.57,2.65c0,0.72,1.25,1.97,1.25,1.97s0.68,1.63,0.68,2.35c0,0.71-0.51,1.22-0.87,1.93-0.36,0.72-0.73,1.61-0.91,2.5-0.18,0.9,0,2.16,0,2.16l0.38,2.84s-0.2,2.88-0.38,3.6c-0.18,0.71-0.89,1.42-1.78,1.78s-1.25,2.12-1.25,2.12,0.01,2.7,0.19,3.6c0.18,0.89,0.88,1.42,1.59,1.78,0.72,0.36,1.25,1.78,1.25,1.78l-0.87,1.78-1.78-0.34-1.44-1.78-0.91-1.82v-2.5s-0.54-1.76-1.97-2.65c-1.42-0.9,0.19-1.63,0.19-1.63s1.08-1.25,1.44-1.97c0.36-0.71,1.06-1.78,1.06-1.78s1.8-1.6,2.16-2.5c0.35-0.89-0.38-1.4-0.38-1.4l-1.06,0.68-1.78,1.82-1.78-0.91s0.69-1.25,0.87-1.78c0.18-0.54,0.54-1.79,0.72-2.5,0.18-0.72,0.35-1.6,1.06-2.31,0.72-0.72,2.35-0.19,2.35-0.19l1.25-1.25v-1.63l-1.1-1.59s-1.4-0.17-3.9-0.34c-2.5-0.18-0.72-1.25-0.72-1.25l-0.72-1.82s-0.72-1.76-1.44-2.12c-0.71-0.36-1.94-3.04-2.65-3.75-0.72-0.72-1.1-1.44-1.82-2.16-0.71-0.71-2.11-1.78-3.18-2.5-1.08-0.71-1.97-1.4-1.97-1.4l-1.63,0.34s-1.05,1.07-0.15,2.5c0.89,1.43,1.06,1.44,1.06,1.44l1.25-0.28,0.97,0.18,1.22,0.5,1.15,1.07,1.06,0.71,0.91,1.07,0.53,0.9,0.1,0.94-0.6,1.63-1.68,1.84-1.29,0.81-1.93,0.88,0.81,1.15s2.04,1.71,2.22,1.85c0.18,0.13,0.69,0.9,0.69,0.9l0.31,2.85,0.09,2.59s-0.33,2.1-0.37,2.28c-0.05,0.18-0.63,0.88-0.63,0.88l-7.09,3.97-1.44,0.9-1.25,0.94-0.66,0.81s0.3,2.37,0.35,2.6c0.04,0.22,0.64,1.18,0.69,1.4,0.04,0.23,1.28,2.69,1.28,2.69s1.15,1.2,1.46,1.69c0.32,0.49,2.16,0.31,2.16,0.31h3.44c0.4,0,1.34,0.5,1.34,0.5s1.3,0.98,1.35,1.16c0.04,0.17,0.37,1.31,0.37,1.31l0.38,3.34s0.09,3.42,0.09,3.69-0.5,1.56-0.5,1.56l-0.34,1.22c-0.04-0.01-0.07-0.03-0.1-0.06l-1.15,2.06-1.82,1.69-1.68,0.28-1.6,0.28,0.16,1.41s1,1.98,1,2.34-0.01,1.68-0.19,2.13c-0.18,0.44-0.81,1.68-0.81,1.68l0.47,1.19,1.15,1.69,0.88,2.41,0.47,1.68-1.16,1.97-1,1.63,0.72,1.93s0.08,1.53-0.09,1.97c-0.18,0.45-1.07,1.16-1.07,1.16l-0.43,1.19s4.1,3.63,5,4.53c0.89,0.89,0.15,1.52,0.15,2.06s-0.72,2.5-0.72,2.5l-1.25,2.22,0.1,1.87s1.54,1.46,1.72,1.82c0.17,0.35,1.68,0.78,2.22,0.87,0.53,0.09,2.78,0.38,2.78,0.38l1.25,1.31-0.19,0.81-1.16,1.63-0.72,3.28s-0.8,2.07-1.15,2.34c-0.36,0.27-1.44,1.16-1.44,1.16l-2.22,1.15-1.72,2.41,0.38,0.97,1.34,1,0.25,1.78-0.81,1.78-1.25,2.78-1.5,1.41-2.31,2.34-1.72,1.6-1.5,2.25s-0.9,2.92-0.81,4c0.08,1.07,0.96,0.72,0.96,0.72s1.62,1.07,2.16,1.34,1.51,0.99,1.78,1.34c0.27,0.36,1,1.24,1,1.69v1.53l-0.81,0.88-1.25,0.81-3.41,1.25-1.69,0.34-2.4-0.25s-1,0.43-0.91,0.78c0.09,0.36,0.72,1.63,0.72,1.63s0.45,1.24,0.63,1.69c0.17,0.44,0.27,0.88,0.72,1.06,0.44,0.18,0.09,2.97,0.09,2.97s-0.89,2.3-1.16,2.75c-0.27,0.44-0.46,1.25-0.37,1.87,0.09,0.63,0.72,1,0.72,1s1.7,0.69,2.06,0.78,2.94,1.1,2.94,1.1,3.13,0.72,3.84,0.72,2.58,0.06,3.56,0.15,2.5,1,2.5,1,1,0.87,1.53,1.41c0.54,0.53,0.25,4.64,0.25,5s2.88,0.19,3.5,0.28c0.63,0.09,2.32,0.81,2.32,0.81s0.43,1.33,0.43,1.69-0.43,1.88-0.43,1.88l-1.78,0.9-3.47,1.5-0.57,1.06s-1.13,4.74-1.4,5.19,0.53,1.88,0.53,1.88l1.5,0.62,2.25,1.06s3.47,2.25,4.09,2.79c0.63,0.53-0.09,0.96-0.09,0.96l-0.97,1.82-5.44,4.72-0.72,1.96-0.18,1.5s-0.44,3.58-0.44,3.94,0.34,1.53,0.34,1.53,1.81,1.15,2.25,1.5c0.45,0.36,1.88,1,1.88,1l0.72,1.41s0.79,1.54,1.06,2.34c0.27,0.81-0.72,0.97-0.72,0.97l-3.56,2.94-1.97,0.91s-1.35,1.33-1.44,1.87,0.81,0.97,0.81,0.97l0.97,1.44,1,1.34s1.95,0.73,2.75,0.91c0.81,0.17,1.63-0.57,1.63-0.57s1.42-1.95,2.4-2.22c0.99-0.26,0.53,0.46,1.07,0.72,0.53,0.27,1.96,0.61,2.59,0.88s2.22,1.34,2.22,1.34l0.81,2.06,1.78,7.41,0.82,2.5-1.26,4.13s0.1,2.05,0.19,2.4c0.09,0.36,0.8,1.24,1.07,1.6,0.26,0.35,0.43,2.15,0.43,2.15l-0.97,1.35-2.4,1.5-1.1,1.78s-2.3,3.32-2.65,3.59c-0.36,0.27-2.06,1.14-2.6,1.41-0.53,0.27-2.06,1.44-2.06,1.44s0.27,1.06,0.63,1.15c0.35,0.09,0.53,2.16,0.53,2.16l0.81,1.06,1.88-0.44,3.21,0.78,2.5,0.91s1.25,0.88,1.79,1.06c0.53,0.18,3.4-0.44,3.4-0.44s5.87-2.32,6.31-2.59c0.45-0.27,1.72-1.06,1.72-1.06s2.5-1.89,3.03-2.25c0.54-0.36,3.74-2.14,4.1-2.41,0.35-0.27,1.44-1.78,1.44-1.78l0.9-2.12s0.16-1.99,0.25-2.44,0.53-1.5,0.53-1.5l0.72-1.25,2.16-0.19,3.12,0.44,2.32,0.19s3.57,0.1,4.37-0.35c0.8-0.44,0.45-0.72,0.63-1.34,0.17-0.63-0.27-0.9-0.63-1.35-0.36-0.44-1-1.33-1.53-1.78-0.54-0.44-1.25-1.15-1.25-1.15s-2.31-4.22-2.31-4.75c0-0.54,0.81-1.15,2.15-1.69s3.91-0.97,3.91-0.97l2.06-1.19-0.09-2.65,0.47-1.78s1.16-2.8,1.25-3.07c0.09-0.26,1.51-2.93,1.68-3.56,0.18-0.62,0.62-1.79,1.07-2.59,0.44-0.81,1.62-1.68,2.15-2.03,0.54-0.36,1.68-1.91,2.13-2.44,0.44-0.54,1.09-2.22,1.09-2.22l-0.19-4.09s-2.13-2.42-2.4-3.22c-0.27-0.81,0.07-1.43,0.34-1.78,0.27-0.36,1.61-1.88,1.97-2.5,0.36-0.63,0.81-2.53,0.81-2.97,0-0.45,0.98-1.5,1.88-2.13,0.89-0.62,2.83-0.18,3.28,0s1.09,0.81,1.72,1.35c0.62,0.53,3.28,0.68,3.28,0.68s1.07-1.42,1.25-1.87,0.98-1.77,1.25-2.22,1.53-1.07,2.25-1.16c0.71-0.09,1.69,0.63,1.69,0.63s0.97,1.78,1.15,2.31c0.18,0.54,1.18,1.61,1.53,1.97,0.36,0.36,1.26,1.8,1.35,2.16,0.09,0.35,1.06,0.33,2.22,0.15s0.09-1.4,0.09-1.4v-2.16s-0.62-2.16-0.62-2.78c0-0.63,0.71-1.78,0.71-1.78s2.5-0.8,3.03-1.06c0.54-0.27-0.08-1.17,0.1-1.97,0.18-0.81,1.33-1.7,1.69-1.88,0.35-0.18,2.96-0.61,3.4-0.87,0.45-0.27,1.41-1.25,1.41-1.25l0.62-2.69,0.28-2.88s-0.02-0.11-0.03-0.12c0.09-0.06,0.32-0.22,0.32-0.22l1.31,0.19s0.6-0.58,1.31-0.94c0.72-0.36,0.79,0.03,0.97,0.03s0.68,1.11,0.81,1.47c0.14,0.36,0.36,1.26,0.41,1.53,0.04,0.27,1.38,0.68,1.56,0.72s1.55,0.47,1.81,0.56c0.27,0.09,1.66,1.08,1.97,1.44,0.32,0.36,1.04,0.45,2.38,0.94s1.53-0.28,1.53-0.28l0.65-0.63s0.23-1.4,0.32-1.94c0.09-0.53,0.72-0.87,0.72-0.87s1.51-1.22,1.87-1.63c0.36-0.4,0.5-0.87,0.5-0.87s0.34-2.99,0.16-3.13c-0.18-0.13-1.38-0.71-1.78-0.84-0.41-0.13-1.6-1.46-2-2.13-0.41-0.66,0.3-1.16,0.43-1.43,0.14-0.27,1.41-1.06,1.63-1.28,0.22-0.23,1.06-0.78,1.59-1,0.54-0.23,0.27-2.9,0.22-3.35-0.04-0.44-0.7-0.44-1.81-0.62-1.12-0.18-1.97-0.85-1.97-0.85s-1.52-1.52-2.19-2.28-0.22-2.76-0.22-3.03,0.17-4.1,0.13-4.9c-0.05-0.81,0.54-1.63,0.72-1.85s2.37-0.49,2.59-0.53,1.9-0.99,2.35-1.34c0.44-0.36,0.59-1.19,0.59-1.19s-0.37-1.3-0.5-1.75c-0.14-0.45,0.72-1.65,1.03-1.88,0.31-0.22,1.91-1.37,1.91-1.37s1.07-6.86,1.25-7.13c0.17-0.26-0.32-1.59-0.32-1.59s-1.19-3.62-1.28-3.84c-0.09-0.23-0.68-1.65-0.5-2.32s1.27-1.02,1.41-1.25c0.13-0.22,0.07-0.97-0.16-1.15-0.22-0.18-1.03-1.16-1.03-1.16s0.58-3.41,0.63-3.81c0.04-0.4,0.28-1.69,0.28-1.69l1.22-0.84s3.79-0.07,4.06-0.07,2.03-0.79,2.44-1.06c0.4-0.27,0.13-1.66,0-1.84-0.14-0.18-1.19-1.94-1.19-1.94h-2.28l-2.5,0.06-2.1-0.43-1.03-0.41s-2.49-0.25-2.72-0.25c-0.22,0-1.5-0.16-1.5-0.16l-0.65-0.25s-0.13-1.6-0.13-1.87,0.48-0.55,1.07-0.91c0.58-0.35,0.93-0.94,0.93-0.94s-0.17-0.98-0.43-1.34c-0.27-0.36-0.1-0.97-0.1-0.97s2.29-2.76,2.38-2.93c0.09-0.18,0.62-1.04,0.62-1.04s0.89-1.56,1.06-2.18c0.18-0.63-0.59-1.16-0.59-1.16s-3.42-4.04-3.78-4.44-1.14-1.64-1.31-1.9c-0.18-0.27-0.91-1.24-1-1.69s0.31-1.41,0.31-1.41l1.09-3.47-0.56-1.06s-1.07-0.96-1.16-1.09c-0.09-0.14-1-0.75-1-0.75s-0.63-0.55-0.5-0.91c0.14-0.36,1.36-0.56,1.63-0.56s2.31-0.69,2.31-0.69,1.39-0.56,1.56-0.78c0.18-0.22-0.03-1.16-0.03-1.16s-1.56-17.7-1.56-18.06-0.65-1.56-0.78-1.78c-0.14-0.22-2.19-2.34-2.19-2.34l-0.72-5.16h0.06s1.85,0.06,2.47,0.06c0.63,0,0.97-0.84,0.97-0.84l2.5-2.06,1.53-1.38s0.57-0.52,0.88-0.56c0.31-0.05,1.26,0.58,1.44,0.62,0.17,0.05,1.47,0.6,1.47,0.6s0.99-0.52,1.43-0.66c0.45-0.13,0.75-0.62,0.75-0.62l-0.31-5.94,4.16-2.16s0.93-1.1,0.93-1.28,0.57-1.87,0.57-1.87l4.47-3.1s1.78-2.23,2.18-2.5-0.03-0.62-0.03-0.62l-1.25-1.85s-1.07-1.29-1.78-1.47c-0.71-0.17-0.91-1.09-0.91-1.09l0.29-5-0.6-0.47-2.84-2.31-3.41-2.69-0.72-1.97-0.34-1.4-1.06-1.78,0.15-0.91,1.25-2.69-1.4-1.4-1.63-1.97-0.72,1.59s-1.43-0.53-2.5-0.53-1.06,1.44-1.06,1.44-1.95,0.71-2.84,1.25c-0.9,0.53-1.25,1.78-1.25,1.78s-1.45,1.25-2.16,1.25-2.14,0.01-3.03,0.19c-0.89,0.17-1.43,1.41-1.97,2.12-0.54,0.72-1.44,2.33-2.16,2.69-0.71,0.36-0.71,0.34-1.78,0.34s-0.16-0.7,0.38-2.31c0.53-1.61,1.95-1.79,2.31-2.5s0.72-1.78,0.72-1.78l2.5-0.91s0.54-3.02,1.44-3.37c0.89-0.36,3.75-0.53,3.75-0.53s1.22-1.63,1.4-2.35c0.18-0.71,1.44-1.58,1.97-2.65,0.54-1.08,0.72-1.79,0.72-2.5,0-0.72,0.91-1.82,0.91-1.82l2.5-2.12s1.58-1.6,1.93-2.31c0.36-0.72,2.16-1.97,2.16-1.97l2.16-1.97,2.31-2.5s0.19-1.44,0.19-2.16c0-0.71-0.72-1.78-0.72-1.78s-1.26-0.9-1.97-1.44c-0.72-0.53-1.78-0.7-1.78-1.59s0.16-0.72,0.34-1.44c0.18-0.71,0.72,0,0.72,0l1.44,1.1,0.15-1.25-0.15-2.35-0.53-1.97-2.69-0.68-1.78-1.1h-2.16c-0.71,0-0.52-0.69-0.87-1.4-0.36-0.72-0.37-1.62-0.91-2.69s-2.31-0.19-2.31-0.19l-1.78,0.91c-0.72,0.35-0.73,0.52-1.44,1.06-0.72,0.54-1.61-0.37-3.22-0.91-1.61-0.53-1.77,0.02-2.84,0.38-1.08,0.36,0.17,0.88,0.53,1.59,0.35,0.72,0,1.44,0,1.44l-2.35-0.19s-1.06-0.35-1.78-1.25c-0.71-0.89,0.19-1.06,0.19-1.06s1.25-1.43,1.25-2.5-0.72-1.25-0.72-1.25h-2.69c-1.25,0-1.96-0.17-3.03-0.34-1.07-0.18-1.25-0.37-1.97-1.44-0.71-1.07,0.57-0.53,0.57-0.53l1.4-1.25,1.25-0.72,2.69,0.34s0.9,0.56,1.97,0.38,0.19-0.72,0.19-0.72l-1.63-1.06s-1.77,0.34-2.84,0.34-2.16-0.72-2.16-0.72l-1.97-0.87s-1.41-1.45-2.12-1.63c-0.09-0.02-0.2-0.04-0.28-0.03zm-45.94,3.34c-0.85,0.32-1.23-0.03-1.5,0.82-0.27,0.84-0.34,0.96,0.16,1.18,0.49,0.23,0.87,0.53,1.4,0.44,0.54-0.09,1.24-0.47,1.06-1.09-0.17-0.63-1.12-1.35-1.12-1.35zm20.84,3.82c-0.33,0-0.47,0.12-0.94,0.56-0.62,0.58-1.62,1.37-1.71,1.9-0.09,0.54,0.12,0.96-0.19,1.54s-1.55,1.81-2,2.12-2.51,0.16-2.6,0.47c-0.08,0.31-0.37,0.52,0.04,0.87,0.4,0.36,2.91,0.63,3.72,0.54,0.8-0.09,3.3-0.3,3.74-0.35,0.45-0.04,0.71,0.28,0.66-0.43-0.04-0.72-0.72-1.36-0.4-1.85,0.31-0.49,0.6-0.65,0.78-0.97,0.17-0.31,0.49-1.06,0.31-1.47-0.18-0.4-0.72-0.95-0.72-1.53s-0.28-1.37-0.28-1.37c-0.18-0.01-0.3-0.04-0.41-0.03zm-45.53,6.62c-0.49,0-2.1,0.86-2.19,1.13-0.09,0.26-0.56,0.38,0.07,0.97,0.62,0.58,0.39,0.88,1.15,0.84,0.76-0.05,1.55-0.67,2.22-0.63,0.67,0.05,1,0.79,1.31,0.79,0.32,0,0.62-0.23,0.66-0.72s-0.42-0.89-0.59-1.07c-0.18-0.17-0.54-0.18-0.54-0.18-0.31-0.45-1.6-1.13-2.09-1.13zm-2.06,6.25c-0.54,0.18-1.01,0.45-1.5,0.63-0.49,0.17-0.81,0.17-1.13,0.43-0.31,0.27-0.72,0.46-0.72,0.82,0,0.35,0.15,0.5,0.6,0.81s0.52,0.62,1.19,0.62,1.89-0.5,2.03-0.81c0.13-0.31,0.48-0.94,0.53-1.25,0.04-0.31-1-1.25-1-1.25zm-51.31,9.13l-2.35,2.12-0.34,1.78,1.97,0.38,1.25,0.87h2.5l1.25-0.87v-1.78l-1.63-2.16-2.65-0.34zm59.09,4.4c-0.49,0.14-1.47,0.59-1.25,1.03,0.22,0.45,0.5,0.8,0.91,0.75,0.4-0.04,0.74-0.01,0.87-0.5,0.14-0.49-0.22-1.25-0.22-1.25l-0.31-0.03zm97.34,1.78c-0.09,0.01-0.18,0.07-0.28,0.22-0.38,0.6-0.53,1.69-0.4,2.1,0.12,0.41-0.42,0.87,0.12,1.31s0.62,1.22,1.53,1.25c0.92,0.03,1.9,0.47,2.63-0.06,0.72-0.54,1.43-1.69,1.65-2.19,0.22-0.51,0.32-1.22,0.07-1.53-0.26-0.32-0.62-0.81-1.13-0.88-0.5-0.06-1.19,0.16-1.19,0.16-1.07,0.31-0.99,0.66-1.78,0.31-0.59-0.26-0.92-0.72-1.22-0.69zm-135.37,0.22l-1.97,0.19-1.44,1.44,0.53,1.06,1.63-0.91,1.44,0.57,0.34,1.59,1.25,0.34,0.72-0.87-0.53-1.06-1.97-2.35zm27.09,1.13c-0.49,0.01-1.04,0.1-0.9,0.5,0.17,0.53,1.09,0.75,2.03,0.75s2.97,0.08,3.06,0.44c0.09,0.35,0.68,1.56,0.91,1.65,0.22,0.09,0.92,0.13,0.97-0.41,0.04-0.53-0.44-1.13-0.76-1.4-0.31-0.27-2.09-1.25-2.09-1.25-0.45-0.09-2.24-0.28-2.78-0.28-0.13,0-0.27-0.01-0.44,0zm10.31,1.12c-0.71,0.23-0.93,0.25-0.93,0.88,0,0.62-0.1,1.06,0.43,1.15,0.54,0.09,0.85,0.33,1.26,0.07,0.4-0.27,0.59-0.91,0.37-1.22s-1.13-0.88-1.13-0.88zm-44.71,1.16l-1.44,1.25,0.72,0.87,1.78-1.06-1.06-1.06zm6.4,2.31v1.78l2.35-0.53v-1.25h-2.35zm133.35,1.5c-1.05,0.29-1.25,0.28-2.07,0.6-0.82,0.31-1.49,0.24-1.87,0.74-0.38,0.51-0.44,0.28-0.66,1.29s-0.69,0.99,0.1,1.31c0.79,0.31,1.39,0.29,2.31-0.41,0.91-0.69,1.71-1.09,2.19-1.65,0.47-0.57,0.84-1.19,0.84-1.35s-0.84-0.53-0.84-0.53zm-122.41,0.5c-0.4,0.63-0.65,1.16-0.87,1.56-0.23,0.41-0.68,0.77-1.13,1.66s-0.81,1.32-0.81,2.03c0,0.72,0.24,1.18,0.68,1.41,0.45,0.22,0.34,0.5,0.57,0.5,0.22,0,0.82,0.09,1.31,0s1.03-0.19,1.03-0.5v-1.88c0-0.53-0.31-3.37-0.31-3.59s-0.47-1.19-0.47-1.19zm-16.47,0.69l-1.06,0.87v1.25l1.44,0.57,0.87-1.25-1.25-1.44z","name":"Krasnoyarsk Krai"},"tm":{"path":"m424.64,359.43,1.25,3.2143,1.25,2.3214s-0.53571,2.3214-0.71428,3.0357c-0.17857,0.71429-1.6071,3.0357-1.6071,3.0357s0.53571,1.25,1.6071,1.9643c1.0714,0.71429,5.8929,1.7857,5.8929,1.7857l5.3571,0.17857s3.75,0.89285,4.1071,1.6071c0.35714,0.71429,0.89286,1.0714,0.89286,2.1429,0,1.0714,0.35714,4.2857,0.35714,4.2857s1.25,0.35714,2.6786,0.35714,3.0357,0.35715,3.0357,0.35715,0.35714,2.1428,0.35714,2.6786c0,0.53571-0.89286,1.7857-1.9643,1.7857s-3.75,1.6072-3.75,1.6072-1.25,2.6786-1.25,3.75-0.89285,3.5714-0.53571,4.2857c0.35714,0.71429,4.4643,1.7857,5.1786,2.1429,0.71429,0.35714,3.2143,2.6786,3.2143,2.6786s-0.71429,1.6071-1.6072,2.6786c-0.89285,1.0714-4.1071,3.0357-5.3571,4.6429-1.25,1.6071-0.35714,2.8571-0.35714,2.8571l-0.71429,1.6071-3.2143,0.53572-3.2143,0.35714-1.4286-1.6071-1.9643-0.17857-4.66-0.57h-2.3214l-1.25,1.0714s-2.1429,1.0714-3.2143,1.25c-1.0714,0.17857-5.3571,1.25-6.0714,1.25-0.71428,0-6.4286,0.71429-6.4286,0.71429l-3.3928,1.4286h-2.3214l-0.35715-1.9643,0.71429-2.1429-0.35714-2.3214,1.7857-2.3214-0.53571-1.4286s-1.0714-0.17858-1.9643,0.53571c-0.89286,0.71429-4.4643,1.0714-4.4643,1.0714l-4.2857-0.17857-1.9643-2.3214-0.89286-3.0357s-1.25-1.0714-2.6786-0.71428c-1.4286,0.35714-1.6072,1.25-2.6786,1.25s-2.5,0-3.0357-0.89286c-0.53571-0.89286-0.89285-3.0357-0.89285-3.0357l-0.9-2.33s-1.6071-0.89286-2.5-1.6071c-0.89286-0.71429-3.2143-2.3214-3.2143-2.3214l-5.1786-2.3214-4.2857-1.9643-4.6429-1.7857-2.6786-1.0714-1.7857-2.5v-3.0357l1.6072-2.8572,0.35714-1.7857-0.53571-2.3214,1.25-3.0357,0.71428-3.3929,1.9643-1.0714,3.3928-2.8571s0-2.1429,0.71429-2.3214c0.71429-0.17857,5.7143-1.6071,5.7143-1.6071l1.9643-1.7857,1.25-2.6786,2.5-1.6071,1.6071-3.2143s1.0714-1.0714,1.7857-1.7857c0.71428-0.71429,2.1428-1.4286,2.1428-1.4286l1.9643-0.35715,2.1429,1.7857,2.1428,1.0714,2.5,0.35714,2.8572,1.4286,1.0714,1.6071,3.0357,0.89286h3.3929l2.1428,0.35714,1.25,1.6072,2.6786,0.71428,2.3214,0.71429,2.1429,1.7857,1.25-0.89286,1.7857-0.53571,2.1428-1.4286,2.1429-0.17857,1.6071,0.71428,1.7857,0.89286z","name":"Tomsk Oblast"},"nv":{"path":"m341.43,421.57,4.1071,0.71429l4.4643-0.17858c1.25-0.17857,2.1429-0.71428,2.1429-0.71428l-2.14,3.4h-3.0357l-0.89285,2.1428s1.0714,1.9643,1.7857,2.5c0.71429,0.53572,2.6786,3.0357,2.6786,3.0357l0.53572,2.1428,2.3214,0.35715h1.4286s2.6786,0.35714,3.3928,0.35714c0.71429,0,0.89286,0,1.9643-0.35714,1.0714-0.35715,3.2143-0.71429,4.6429-0.71429h3.5714s2.6786,0.17857,3.5714-0.35714c0.89286-0.53572,0.89286-1.0714,2.3214-1.25,1.4286-0.17857,3.0357-0.17857,3.9286-0.17857,0.89286,0,1.9643-0.17857,1.9643-0.17857s0,1.6071,0.89286,2.1428c0.89285,0.53572,4.1071,2.6786,4.1071,2.6786l0.71428,0.71429c0.17858,0.71429-0.17857,2.5-0.17857,3.2143,0,0.71428-1.0714,0.71428-0.17857,1.6071,0.89286,0.89286,1.9643,1.4286,1.9643,1.4286l2.3214-1.9643,2.3214-2.3214s2.1429-0.53572,2.8572-0.53572c0.71428,0,3.0357,0,3.75-0.17857,0.71428-0.17857,1.4286-0.71429,2.6786-0.17857,1.25,0.53571,2.3214,0.71428,3.3929,0.71428,1.0714,0,3.5714-1.25,3.5714-1.25s1.7857-2.1428,1.9643-2.8571c0.21-0.7-0.33-4.45-0.33-4.45v-3.75c0-0.71429,0.71428-2.3214,1.25-2.6786,0.53571-0.35714,1.7857-0.89285,1.7857-1.7857,0-0.89286-0.89286-1.6071-0.89286-1.6071s-0.89285-0.53572-0.89285-1.4286c0-0.89286,0.35714-3.2143-0.53572-3.0357-0.89285,0.17857-4.1071,1.7857-4.1071,1.7857s0,0.17857-1.4286,0.17857-2.5,0-2.6786-0.71429c-0.17857-0.71428,0.35714-5,0.35714-5l0.53571-2.6786,0.17858-2.1429-2.8572,1.4286s-1.6071,0.53572-2.5,0.71429c-0.9,0.18-4.47-0.71-4.47-0.71l-2.1429-0.71428-1.4286-2.1429-1.4286-2.8571s-2.5,0.53571-3.2143,0.71428c-0.71428,0.17858-1.9643,0.53572-1.9643,0.53572l-2.3214-1.25-1.0714-3.3929v-1.25l-3.0357-1.7857s-1.9643-1.6072-2.6786-2.1429c-0.71428-0.53571-3.3928-1.7857-3.3928-1.7857s-3.3929-1.25-4.1072-1.6072c-0.71428-0.35714-1.9643-1.25-2.6786-1.6071-0.71428-0.35714-3.9286-1.4286-3.9286-1.4286l-1.9643,0.17857s-0.35715,1.0714-0.53572,1.9643c-0.17857,0.89285-1.0714,2.3214-1.0714,2.3214l-1.4286,1.0714-0.89286,1.6072,0.17858,2.1428-0.71429,1.4286h-3.2143l-2.5-0.35714-2.1428,0.89286-2.1429,2.3214-1.4286,1.9643-0.71429,2.6786,0.71429,1.9643,1.7857,2.6786v1.7857l-2.1428,3.5714z","name":"Novosibirsk Oblast"},"al":{"path":"m351.25,435.14,1.7857,5,1.7857,5.1786,1.6071,6.7857,0.89286,8.5714,0.35714,8.2143,0.35714,2.8571,2.3214-0.53571,1.7857-0.53572,0.89285-0.53571,0.17857-1.9643,1.25-1.6071,1.25-0.35714,1.7857,0.53571,0.89286,1.9643,0.89285,2.8571,2.3214,2.8571,1.9643,1.6071,4.6428,0,3.3929-0.35714,2.5-0.89286,2.3214,0,3.3929,1.4286,1.0714,1.9643,2.3214,0.53572,2.3214-0.53572-0.17857-1.4286-1.6071-1.0714-1.0714-0.89286,0.35714-1.6071,0.71429-0.35714,2.5-0.35714,4.4643-0.71429,3.75-0.17857,2.6786-0.71429,2.3214-1.9643,1.0714-1.9643s0.53572-0.71428,1.25-0.71428c0.71429,0,3.3929-0.17858,3.3929-0.17858l1.9643-0.17857,1.0714-1.7857s0.53572-2.1429,1.25-2.5c0.71429-0.35714,0.89286-2.3214,0.89286-2.3214l0.71429-2.1429-0.35715-1.0714-0.71428-1.0714,0.71428-0.89286,1.25-0.53571-0.17857-1.0714-1.4286-1.6072-1.0714-1.0714c-0.17857-0.71429-0.89286-2.8572-0.89286-2.8572l-1.7857-1.7857-0.17857-0.89286-0.53572-2.1429-1.6071-1.4286-2.5-1.9643-1.74-1.79s-1.6072,1.0714-2.3214,1.4286c-0.71429,0.35715-1.7857,0.71429-1.7857,0.71429l-2.5,0.17857-2.5-0.35714-3.0357-0.17857-4.8214,0.71428-2.5,1.6072-1.6071,1.7857-1.0714,0.71429-0.89286,0.35714-1.4286-1.25-0.35714-0.89286,0.35714-0.89286,0.17857-1.7857-0.17857-1.4286-2.3214-1.6071-1.9643-1.25-1.0714-1.25-0.17857-0.89286-1.9643-0.17857-4.2857,0.17857-1.25,1.25-2.1429,0.53571-3.75-0.53571-4.2857,0.17857-2.6786,1.25h-2.5l-3.3929-0.17857z","name":"Altai Krai"},"km":{"path":"m442.14,414.79-0.71428,2.3214,0.89286,1.6072,2.5,1.4286,1.7857,1.6071,1.25,2.5,0.17857,0.89286s-0.89286,1.4286-1.6071,2.1429c-0.71429,0.71428-4.2857,2.3214-4.2857,2.3214l-1.7857,1.7857-1.7857,1.7857v1.6072l1.0714,1.7857,0.17858,1.7857-1.9643,2.5s-1.25,1.0714-1.0714,1.7857c0.17857,0.71428,1.0714,1.4286,1.7857,1.6071,0.71428,0.17857,2.8571,0.89286,2.8571,0.89286l-0.71429,1.4286-1.25,1.7857-0.53571,1.6072-1.7857,0.71428-1.4286,1.6072,0.71429,1.25,1.25,1.25-0.89286,2.5-1.25,1.6071,0.53572,1.25,1.7857,1.7857-0.35714,1.6072-1.6072,1.9643-2.5,2.1429h-1.9643l-0.71429-1.7857-1.9643-1.25-2.6786-0.35714-1.4286,1.0714-2.1428-1.4286-0.71429-2.3214-1.0714-0.71429,0.17857-2.5-0.53571-2.5,0.89286-1.9643,0.71428-1.6071-2.1428-2.6786-1.6072-2.6786-1.25-1.4286-0.71428-2.3214-0.89286-1.7857-2.3214-2.1429-1.7857-1.6071-0.71429-1.25v-1.7857l-0.35714-4.6428,0.17857-2.5,0.71429-2.3214,1.25-1.4286,0.71428-1.25-1.4286-1.9643v-0.89286l-0.35714-2.5,1.6071-0.35714,4.4643-0.53571,2.5-0.89286,3.0357-0.89286,1.0714-0.35714,0.71428-0.89286h1.6072,1.9643,2.5l1.7857,0.35715,1.4286,0.35714,0.89286,0.89286,1.9643,0.53571,1.6071-0.17857,2.5-0.71429z","name":"Kemerovo Oblast"},"lt":{"path":"m392.32,478.89-0.44643,2.1428s-0.17857,1.875,0,2.5893c0.17857,0.71429,1.1607,2.3214,1.1607,2.3214l3.3036,0.89286s0.98215,1.1607,1.0714,1.6071c0.0893,0.44643,0.0893,3.3036,0.0893,3.3036s0.17857,0.89286,0.53571,1.6071c0.35715,0.71429,1.25,1.875,1.7857,2.2322,0.53571,0.35714,1.6071,1.25,2.4107,1.3393,0.80357,0.0893,3.125,0.0893,3.5714,0.0893,0.44643,0,4.0179,0.0893,4.0179,0.0893s1.0714,0.53572,1.6071,0.89286c0.53571,0.35714,1.4286,1.25,1.7857,1.875,0.35715,0.625,1.5179,1.6964,2.0536,1.9643,0.53571,0.26785,1.1607,0.80357,1.7857,1.1607,0.625,0.35714,1.6964,0.71429,2.4107,0.80357,0.71429,0.0893,2.9464-0.44643,3.3929-0.71428,0.44643-0.26786,2.3214-0.89286,3.4821-0.89286s4.7322-0.35714,5-0.44643c0.26786-0.0893,3.5714-1.3393,4.1964-1.3393s1.4286-0.89285,1.6071-1.25c0.17858-0.35714,0.625-1.9643,0.17858-2.7678-0.44643-0.80357-0.80358-1.0714-1.4286-1.4286-0.625-0.35715-1.4286-1.25-1.25-1.7857,0.17858-0.53571,1.9643-1.1607,2.4107-1.1607,0.44643,0,2.5,1.0714,2.5,0.26785,0-0.80357-1.6964-2.2321-1.6964-2.2321s-0.98214-1.3393-1.25-1.7857c-0.26786-0.44643-1.875-1.9643-1.875-1.9643s-2.2321-2.7679-2.0536-4.1071c0.17857-1.3393-0.0893-3.3929-0.0893-3.3929s-0.625-1.3393-0.71428-1.6964c-0.0893-0.35714-1.3393-0.17857-1.3393-0.17857l-1.5179,1.5179s-1.4286-0.26786-1.5178-0.80357c-0.0893-0.53572-0.71429-2.5893-0.71429-2.5893s-0.35714-1.7857-0.44643-2.1429c-0.0893-0.35714-0.17857-1.9643-0.17857-1.9643l1.6964-1.3393,2.8571-1.3393,0.35715-1.1607-1.3393-1.6071-0.80357-0.625-2.1429-0.53571-1.9643,0.98214s-1.0714-0.625-1.4286-0.80357c-0.35714-0.17857-1.0714-0.89286-1.0714-0.89286l-0.89286-1.7857s0-1.0714-0.71429-0.89286c-0.71428,0.17857-0.89285,0.71428-0.89285,0.71428s-1.1607,1.1607-1.1607,1.5179c0,0.35714-0.625,1.4286-0.625,1.4286l-0.98214,1.0714s-1.6071,0.44643-1.9643,0.44643h-3.0357c-0.35714,0-1.1607,0.71429-1.5179,1.0714-0.35714,0.35714-1.1607,1.9643-1.1607,1.9643l-1.5179,1.0714-0.98214,0.625-2.3214,0.71429h-2.3214l-4.1071,0.71428-4.1071,0.625-1.0714,0.625-0.0893,0.98215s0.0893,0.89285,0.53572,0.98214c0.44642,0.0893,1.6071,0.80357,1.6071,0.80357l0.44643,0.89286-0.0893,0.89286-1.875,0.625z","name":"Altai Republic"},"tv":{"path":"m431.96,477.02,0.26786-1.6964s0.89286-0.625,1.6071-0.625c0.71429,0,1.6964,0.71428,2.4107,0.89286,0.71428,0.17857,2.7678,0.71428,3.0357,0.71428,0.26786,0,1.0714-0.80357,1.3393-1.25,0.26785-0.44643,1.9643-2.6786,1.9643-2.6786s0-1.25,0.625-1.6071c0.625-0.35715,1.875-0.35715,2.3214-0.35715,0.44643,0,1.6071-0.17857,2.3214,0.26786,0.71429,0.44643,1.1607,3.0357,1.1607,3.0357s0.89286,0.89285,1.1607,0.89285c0.26786,0,2.1429-0.80357,2.1429-0.80357s1.4286,0.17857,1.7857,0.44643c0.35714,0.26786,3.0357,0.89286,3.0357,0.89286s1.6964,1.6071,2.2322,1.6071c0.53571,0,1.6964,0.26786,2.6786-0.0893,0.98214-0.35714,2.8571-0.80357,3.3929-1.25,0.53571-0.44642,5.5357-1.9643,5.9821-2.5,0.44643-0.53571,7.0536-5.9821,7.0536-5.9821l2.1429-2.8571s-0.17857-1.875-0.17857-2.9464,1.0714-2.3214,1.4286-2.5893c0.35714-0.26785,2.8571,0.0893,3.3036,0.17858,0.44643,0.0893,4.375,0.89285,4.7321,0.80357,0.35714-0.0893,4.2857-0.44643,4.2857-0.44643l2.4107-2.2321s1.5179-0.35715,2.4107,0.0893c0.89286,0.44643,3.6607,2.5,4.1964,2.7679,0.53572,0.26786,3.75,2.3214,3.75,2.3214l1.6072,1.5178s1.25,0.71429,1.7857,0.44643c0.53571-0.26785,2.3214-0.89285,2.3214-0.89285l1.6071,0.53571,0.35714,1.25s0.53572,0.89286,0.53572,1.25-0.89286,1.6071-0.89286,1.6071-0.71428,0.53572-0.80357,1.1607c-0.0893,0.625-0.26786,4.1071-0.26786,4.1071s-0.0893,2.3214-0.0893,2.7679c0,0.44643-0.71429,2.1428-0.71429,2.1428l-1.4286,2.4107s-1.5179,1.3393-1.875,1.875c-0.35714,0.53571-2.2321,1.3393-2.4107,1.6964-0.17858,0.35714-0.71429,1.875-0.71429,1.875s-0.71429,1.875-0.71429,2.4107c0,0.53572-0.0893,3.3929-0.0893,3.9286,0,0.53572,0.53571,2.5,1.0714,3.2143,0.53571,0.71428,1.25,1.6071,1.25,2.0536,0,0.44643-0.80357,2.3214-1.1607,2.7679-0.35714,0.44643-4.8214,4.1964-4.8214,4.1964l-2.0536,1.25-2.1428,0.17857s-1.7857-0.98215-2.1429-0.89286c-0.35714,0.0893-2.3214,0.17857-2.6786,0.17857-0.35715,0-1.7857-0.89286-1.7857-0.89286s-1.6964-0.35714-2.1428-0.625c-0.44643-0.26785-1.7857-1.1607-1.7857-1.1607s-2.7679-0.26786-3.2143-0.26786c-0.44643,0-2.8572-0.17857-3.2143-0.53571l-2.0536-2.0536s-0.71429-1.4286-0.80357-1.9643c-0.0893-0.53571-0.17857-2.5-0.17857-2.5s-0.80358-0.80357-1.3393-1.25c-0.53571-0.44643-2.1429-0.89286-2.9464-0.89286-0.80357,0-3.9286,0.17858-3.9286,0.17858s-1.9643,0.53571-2.2321,0.625c-0.26786,0.0893-1.25,0.71428-1.875,0.80357-0.625,0.0893-2.0536,0.0893-1.9643-0.80357,0.0893-0.89286,1.25-1.6964,1.3393-2.0536,0.0893-0.35714-0.0893-1.0714-0.71429-1.3393-0.625-0.26786-2.1429-0.17857-3.0357,0.0893-0.89286,0.26786-2.3214,0.80358-2.8572,0.89286-0.53571,0.0893-3.3928,0.71429-3.3928,0.71429s-2.1429,0.89285-2.6786,1.0714c-0.53572,0.17857-3.8393,1.1607-3.8393,1.1607l-3.0357,1.5179-2.4107,1.1607-2.5893-0.26786-2.1429-0.98214-1.5179-0.71428-1.25-1.25c0-0.44643,0.35714-0.98215,0.35714-0.98215l2.4107-0.44643,1.7857,0.53572s1.25-0.35714,0.17857-1.0714c-1.0714-0.71429-4.4643-5.0893-4.4643-5.0893l-1.48-2.44s-1.0714-1.4286-1.0714-1.7857v-2.5893z","name":"Tuva Republic"},"hk":{"path":"m440.27,432.11c0.53572,0.35715,1.9643,1.875,1.9643,1.875l1.3393,1.6072s0.26785,0.625,1.1607,0.80357c0.89286,0.17857,2.0536,0.17857,2.0536,0.17857s0.35714-0.35714,0.80357-0.80357,0.625-0.98214,0.98215-1.25c0.35714-0.26786,0.89285-0.89286,1.3393-0.80357,0.44643,0.0893,0.71429,0.26785,1.3393,0.71428,0.625,0.44643,1.3393,1.25,2.2321,1.25,0.89286,0,2.5,0.80357,2.5,0.80357s0.44643,1.875,0.625,2.3214c0.17857,0.44643,0.53571,2.9464,0.53571,2.9464s0.35715,1.5179,0.71429,2.4107c0.35714,0.89285,0.98214,2.0536,1.0714,2.4107,0.0893,0.35714-0.0893,3.125-0.17857,3.3929-0.0893,0.26785-0.80357,1.875-0.89286,2.2321-0.0893,0.35714,0,2.5893,0,2.5893l1.5179,1.5179,0.625,1.875s-1.25,1.4286-1.4286,1.6964c-0.17858,0.26786-2.2322,1.3393-2.5893,1.875-0.35714,0.53571-1.4286,3.0357-1.4286,3.0357s-1.6071,1.9643-2.1429,2.2322c-0.53571,0.26785-2.8571,1.0714-3.125,1.5178-0.26786,0.44643-1.6964,1.6964-1.6964,1.6964l-2.7678,0.0893s-1.3393,0.17857-1.6072,0.625c-0.26785,0.44643-0.53571,1.4286-1.0714,1.875-0.53571,0.44643-1.0714,1.25-1.1607,1.6071-0.0893,0.35714-0.89286,1.0714-0.89286,1.0714s0.0893,0.71429-1.0714,0.625c-1.1607-0.0893-2.9464-0.35714-2.9464-0.35714l-1.7857-1.1607-1.6071,0.44643-0.625,0.80357-0.26786,0.89286-2.5,1.0714s-0.625,0.89286-1.1607,0.35714c-0.53572-0.53571-1.25-2.3214-1.25-2.3214l-0.625-2.5893v-1.5179s0.17857-1.0714,0.53571-1.25c0.35714-0.17857,2.5-1.6071,2.5-1.6071s1.3393-0.98215,1.6964-1.0714c0.35714-0.0893,2.1429-0.44643,2.1429-0.44643l1.9643-1.0714,1.5179-2.0536,1.3393-1.0714-0.44643-1.6071s-1.25-1.25-1.4286-1.6071c-0.17858-0.35715-0.44643-1.25-0.44643-1.25l1.6071-2.2322,0.0893-1.875s-1.0714-1.1607-1.1607-1.5178c-0.0893-0.35715-0.0893-1.25-0.0893-1.25l2.5893-1.5179,1.0714-1.875,1.1607-1.9643,0.53572-1.6964-3.5714-1.1607s-0.89286-1.25-0.71429-1.7857c0.17858-0.53572,1.7857-2.4107,1.7857-2.4107s0.89286-1.875,0.89286-2.3214c0-0.44642-1.0714-2.8571-1.0714-2.8571s0-0.71428,0.26785-1.1607c0.26786-0.44643,1.25-0.98215,1.25-0.98215z","name":"Republic of Khakassia"},"ir":{"path":"M569.41,325.78c-0.12,0.03-0.22,0.12-0.22,0.34,0,0.45,0.53,1.54,0.53,1.54l0.37,1.06s-0.26,0.88-0.62,1.06-1.78,0.63-1.78,0.63l-2.69,0.09s-1.61,0.26-1.88,0.44c-0.26,0.18-0.9,0.73-0.9,1.09s-0.44,1.96-0.53,2.31c-0.09,0.36-0.16,1.97-0.16,1.97s0.18,0.78,0.63,1.41c0.44,0.62,0.43,1.81,0.43,1.81l-1.25,1.16s0.26,1.67,0.35,2.03,1,3.4,1,3.4l0.43,2.5s-0.28,1.42-0.28,1.69-0.96,4.57-0.96,4.57-0.09,0.98-0.54,1.24c-0.44,0.27-2.06,1.88-2.06,1.88s-0.19,0.99-0.19,1.34c0,0.36,0.37,1.06,0.19,1.5-0.18,0.45-1.97,1.72-1.97,1.72l-2.59,0.72-1.31,0.88-0.29,3.84-0.09,2.22v1.81c0,0.36,0.27,1.34,0.72,1.78,0.45,0.45,2.16,1.97,2.16,1.97l2.21,0.53,1.16,0.78,0.1,2.25s-0.37,1.33-0.82,1.5c-0.44,0.18-2.75,1.82-2.75,1.82l-0.53,1.15,0.97,1.16,1.97,1.59s0.78,0.1,0.87,0.72c0.09,0.63-0.15,2.6-0.15,2.6l-0.47,1.43-1.25,1.07-1.41,1.43-0.19,1.6-1.24,0.81-2.79-0.28-1.59-1.35-1.78-0.68-2.25-0.63s-0.45-0.74-0.63-1.19c-0.17-0.44-0.34-1.68-0.34-1.68l-1.25-0.72-1.87,1-1.26,0.09-0.18,1.69-0.35,2.41-0.53,1.53-0.9,0.97-1.6,0.53s-1.89,0.28-2.25,0.37c-0.35,0.09-1.34,1.41-1.34,1.41s-0.53,0.8-0.44,1.15c0.09,0.36,0.19,1.25,0.19,1.25l-1.16,0.91-2.06,0.81s-0.44,0.9-0.44,1.25c0,0.36,0.16,1.97,0.16,1.97l0.37,1.5,0.1,1.63s0.7,0.7,0.43,1.06c-0.26,0.36-2.78,0.62-2.78,0.62l-1.93-2.78-1-1.5-1.07-2.34-1.06-0.69h-1.72l-1.59,1.69s-0.89,0.81-1.16,1.44c-0.27,0.62,0.01,1.78-1.15,1.78s-3.22-0.38-3.22-0.38l-1.25-1.15-1.97-0.44-1.34-0.19s-0.62,0.64-0.97,0.91c-0.36,0.27-1.35,1.25-1.35,1.25v0.62l-0.72,1.88-1.15,2.22-0.81,0.9-0.29,1.35,0.63,1.68s0.45,0.9,0.81,1.25c0.36,0.36,0.63,0.35,0.72,0.97,0.09,0.63,0.19,2.6,0.19,2.6l-0.38,2.4-0.97,1.88s-1.88,1.79-2.15,2.06-2.13,1.61-2.13,1.97-1.62,4.19-1.62,4.19l-1.25,2.25s-0.69,2.11-0.78,2.56-0.63,3.59-0.63,3.59-0.09,1.33-0.62,1.6c-0.54,0.26-3.69,0.81-3.69,0.81s-2.12,1.07-2.56,1.34c-0.45,0.27-0.72,0.63-0.72,0.63s-0.19,0.52-0.1,0.87c0.09,0.36,1.16,2.25,1.16,2.25l1.44,2.66,1.06,0.56,0.97,1.06,1.09,1.69v0.81l1.25-0.43s0.9-0.91,1.25-1c0.36-0.09,1.78,0.28,1.78,0.28l1.44,0.87s1.43,0.91,1.78,1c0.36,0.09,2.03,1.41,2.03,1.41l4.32,2.87s0.34,0.82,1.06,0.82c0.71,0,2.41-0.38,2.41-0.38l1.78-0.34,1.06,1.15,0.28,1.16,0.28,1.53,2.56-0.81,2.44-2.41s2.14-2.16,3.13-2.34c0.98-0.18,2.12,1.19,2.12,1.19s0.72,1.58,1.25,2.03c0.54,0.44,2.43,2.32,2.78,2.59,0.36,0.27,3.03,1.53,3.03,1.53l2.22,2.66c0.45,0.53,2.52,3.22,2.97,3.22s2.84,0.18,3.38,0.09c0.53-0.09,1.96,0.63,2.5,1.25,0.53,0.63,1.78,2.69,1.78,2.69s1.27,1.69,1.62,1.78c0.36,0.09,1.16,1.88,1.16,1.88s0.89,1.62,1.25,1.53,2.31-0.63,2.31-0.63,0.73,0.15,0.91,0.69c0.18,0.53,0.87,2.59,0.87,2.59s1.18,0.62,1.53,0.53c0.36-0.09,1.88-1.25,1.88-1.25s1.77-0.26,2.12-0.43c0.36-0.18,1.44-0.82,0.82-1.44-0.05-0.04-0.11-0.06-0.16-0.09,0.05-0.01,0.34-0.07,0.34-0.07l1.69-0.62,8.75-2.88s1-1.76,1-2.03,0.63-2.06,0.63-2.06l0.06-2.06,0.81-0.82,1.78-0.96,2.25-0.82,1.16-1.68,1.06-0.82,5.44-2.59,1.62-1.31,0.82-1.1,0.62-2.5,1.94-1.15s1.27-0.9,1.62-1.35c0.36-0.44,0.35-0.97,0.35-0.97l-0.63-0.81-1.25-1.25-0.34-0.81s0.18-0.96,0.62-1.41c0.45-0.44,0.71-0.63,1.07-0.72,0.35-0.09,1.25,0.35,1.25,0.35l1,1.09,0.87-0.47,0.63-1.78s0.81-2.14,0.9-2.5,0.25-1.69,0.25-1.69-0.25-3.05-0.25-3.5v-2.5s0.44-4.01,0.53-4.37,0.35-2.13,0.35-2.13l-0.1-1.87s-0.44-1.17-0.62-1.44-0.16-0.81-0.16-0.81,0.63-1.05,0.72-1.41c0.09-0.35-0.37-0.81-0.37-0.81s-0.54-0.71-0.72-1.06c-0.18-0.36-0.88,0.15-0.88,0.15l-1.44,0.91s-0.79,1.26-1.15,1.53-0.44,1.31-0.44,1.31l-0.28,4.38-0.81,1.34-1.53-0.09c-0.34-0.63-0.73-1.32-0.79-1.6-0.08-0.44-0.43-2.67-0.34-3.65s0.97-4.38,0.97-4.38l1.25-1.25s0.09-1.52-0.53-2.06c-0.63-0.53-1.87-1.07-2.41-1.34-0.53-0.27-1.72-1.35-1.72-1.97,0-0.63,0.92-1.77,1.19-2.13,0.27-0.35,3.93-1.51,4.28-1.78,0.36-0.27,3.57-2.15,3.57-2.15l3.65-1.07,2.78,0.25,2.13-0.34,1.34-2.5,2.88-0.81s1.87,1.25,2.4,1.25c0.54,0,2.22-0.72,2.22-0.72s1.07,0.64,1.25,1,1.63,1.34,1.63,1.34l1.93-0.37s1.35-0.44,2.07-0.35c0.71,0.09,1.7,0.98,2.06,1.07s2.75-0.72,2.75-0.72l1.09-1.5,2.5-1.16s1.35-1.08,1.35-1.53,0.15-3.22,0.15-3.22,1.25-0.61,1.88-0.97c0.62-0.35,2.15-0.18,2.15-0.18s0.17-1.34,0.35-1.79c0.18-0.44,1.33-1.34,1.78-1.43s2.44,0.37,2.44,0.37l1.15,0.97-1.34,1.44-0.72,1.15,0.72,0.72s2.31-0.45,2.94-0.72c0.62-0.26,2.24-0.44,2.78-0.53,0.53-0.09,2.84-1.15,2.84-1.15s0.91-1.08,0.91-1.44-0.2-1.71-0.38-2.16c-0.18-0.44-2.21-1.14-2.65-1.59-0.45-0.45-0.54-2.58-0.72-2.94s-0.9-1.9-0.63-2.44c0.27-0.53,1.06-1.78,1.06-1.78l-0.62-2.5s-0.01-2.48,0.34-2.84c0.36-0.36,2.07-1,2.07-1l2.93,0.81s0.9,1.15,1.35,1.06c0.44-0.09,2.15-0.53,2.15-0.53l0.25-3.56-0.87-1.16s-1.27-1.42-1.63-1.68c-0.35-0.27-1.25-1.25-1.25-1.25l-1.68-2.97-0.25-2.6-0.72-1.68-2.25-0.54-1.78,0.97-3.13,1.53-1.97,0.44-0.72-0.72-0.78-2.84-1-1.59-2.75-2.35-2.34-1.68-2.66-0.91-2.78-0.06s-2.49,0.8-2.84,1.15c-0.36,0.36-1.45,1.52-1.72,1.88-0.27,0.35-0.88,2.5-0.88,2.5l-0.28,2.12v2.5s-0.17,1.36-0.43,1.72c-0.27,0.36-3.94,2.03-3.94,2.03l-1.16,1.72-0.19,2.66-0.97,2.25-2.15,2.22s-0.6,0.63-0.69,0.09-0.62-2.22-0.62-2.22l-2.16-2.34s-0.44-1.23-1.06-0.78c-0.63,0.44-1.63,1.31-1.63,1.31l-3.28,1s-0.89,0.43-1.25,0.87c-0.36,0.45-2.97,0.72-2.97,0.72l-2.03,0.28-2.16,2.5s-0.62,1.26-1.24,0.82c-0.63-0.45-2.22-2.35-2.22-2.35l-0.82-1.59-0.53-2.94,0.16-5.56-0.06-2.56,1.5-2.6,1.87-3.03s0.44-1.61,0.44-2.06-0.53-3.03-0.53-3.03l-2.03-2.25-4.94-3.66s-0.63-0.71-0.63-1.25c0-0.53,0.1-2.31,0.1-2.31l1.15-1.97s0.63-0.35,0-1.06c-0.62-0.72-3.18-4.57-3.18-4.57l0.15-5.34s0.02-0.65-0.34-1.09c-0.36-0.45-2.59-3.28-2.59-3.28l-1.54-1.88s-0.24-0.62-0.68-0.62c-0.45,0-2.16,0.68-2.16,0.68s-1.17,0.82-1.44,0.29c-0.27-0.54-0.25-2.6-0.25-2.6s-0.29-1.16,0.16-1.25,1.62-0.44,1.62-0.44h1.5l0.29-1.43-1.79-1.97-1.53-1.35-1.4-0.06s-0.14-0.03-0.25,0z","name":"Irkutsk Oblast"},"br":{"path":"m513.39,476.39s1.6072,0.98214,2.3214,1.1607c0.71429,0.17857,2.8572,1.25,3.3929,1.3393,0.53571,0.0893,1.7857,0.71428,2.5,0.98214,0.71429,0.26786,1.875,0.98214,2.5893,1.3393,0.71428,0.35714,2.2321,0.53571,3.2143,0.625,0.98214,0.0893,2.8571,0.89285,3.4821,1.0714,0.625,0.17858,2.1429,1.0714,2.9464,1.1607,0.80357,0.0893,1.5179,0,2.7679,0.625s2.7679,1.3393,3.125,1.5179c0.35714,0.17857,0.71429,0.26785,0.80357,0.98214,0.0893,0.71428,0,2.6786,0.0893,3.0357,0.0893,0.35715,0.26785,1.6964,0.625,2.0536,0.35714,0.35715,1.6071,1.9643,2.5893,2.5893,0.98215,0.625,1.4286,1.6964,1.9643,2.1429,0.53571,0.44643,2.3214,1.875,2.8571,1.9643,0.53572,0.0893,2.3214,0.625,2.7679,0.625,0.44643,0,5.0893,0.44643,5.0893,0.44643s1.7857-0.80357,2.7679-1.25c0.98214-0.44643,4.0179-1.25,4.4643-1.5179,0.44643-0.26785,1.5178-0.98214,2.6786-1.0714,1.1607-0.0893,4.1964-0.0893,5.0893-0.0893,0.89286,0,4.1072,0.0893,4.1072,0.0893s2.3214-0.0893,3.125,0.44642c0.80357,0.53572,1.6071,1.6072,1.9643,2.1429,0.35715,0.53572,0.625,1.4286,1.0714,1.6071,0.44643,0.17858,1.4286,0.35715,1.875,0.35715,0.44643,0,2.1429-0.26786,2.5-0.35715,0.35714-0.0893,2.2321-0.44642,2.2321-0.44642l0.0893-2.6786s-0.0893-1.7857,0.53571-2.0536c0.625-0.26785,4.4643-1.5178,4.8214-1.6964,0.35715-0.17857,1.25-1.6071,1.25-1.6071s-2.5-0.625-3.3036-0.625c-0.80357,0-1.25-1.4286-1.25-1.4286l1.0714-1.5179,0.17857-1.9643,0.98214-1.0714,0.80358-1.3393s-0.625-0.98214-0.80358-1.3393c-0.17857-0.35715-0.0893-1.4286-0.0893-1.4286l2.2321-1.1607,3.125-0.35714,2.4107-1.1607,3.4821-2.4107,1.7857-0.625s1.4286,0.0893,1.875,0.26786c0.44643,0.17857,2.4107,0.53571,2.5893,0.17857,0.17857-0.35714,1.6071-1.9643,2.0536-2.3214,0.44643-0.35714,2.6786-2.1429,2.6786-2.1429l1.4286-1.1607s0.98215-1.25,1.4286-1.5179c0.44643-0.26786,1.875-1.0714,2.4107-1.0714,0.53571,0,0.98214,0,1.3393-0.26785,0.35715-0.26786,1.1607-1.25,1.3393-1.6072,0.17857-0.35714,1.0714-0.80357,1.6071-0.89285,0.53572-0.0893,5-1.3393,5-1.3393l2.6786-1.5179s1.875-1.5178,2.0536-1.875c0.17857-0.35714,1.6071-2.8571,1.6071-2.8571l0.98214-1.875s-0.26786-1.4286-0.71428-1.7857c-0.44643-0.35715-2.1429-1.6072-2.1429-1.6072l-2.5-1.25s-1.25-0.80357-1.1607-1.6071c0.0893-0.80357,7.5-5.625,7.5-5.625s0.98215-1.6964,1.0714-2.0536c0.0893-0.35714,0.89286-1.9643,1.25-2.3214,0.35715-0.35714,2.5-2.0536,2.5-2.0536s1.4286-0.625,1.875-0.71429c0.44643-0.0893,3.5714-1.5178,3.5714-1.5178l1.25-0.98215s0.44643-2.0536,0.44643-2.5893c0-0.53572-0.80357-3.8393-0.80357-3.8393s-1.0714-0.53571-1.4286-0.89285c-0.35715-0.35715-1.25-0.80358-2.1429-0.80358-0.89286,0-2.6786,0-3.125-0.625-0.44643-0.625-1.3393-1.25-1.6964-1.875-0.35714-0.625-1.1607-1.7857-1.25-2.2321-0.0893-0.44643-0.80357-2.4107-0.98214-2.7679-0.17857-0.35714-1.0714-2.3214-1.0714-2.3214l-2.0536-3.5714-1.0714-2.7679,0.26786-2.0536,1.0714-0.625,0.80357-1.25,1.4286-1.875,0.625-0.98214-2.3214-1.25s-1.875,0.44642-2.2321,0.71428c-0.35715,0.26786-0.98215,1.3393-0.98215,1.3393s0.35715,0.625,0,0.80357c-0.35714,0.17857-2.3214,0.44643-2.3214,0.44643l-1.25,0.89285-0.71429,1.9643v1.6071l-0.98214,0.98215-2.0536,1.0714-1.3393,0.98215-1.1607,1.3393s-1.6964,0.0893-2.0536,0.0893c-0.35714,0-2.0536-0.625-2.0536-0.625l-2.6786,0.17857-2.3214-0.0893-1.9643-1.4286-1.4286,0.26786-2.0536-0.35714s-0.80357-0.71429-1.1607-0.71429c-0.35714,0-2.1429,0.625-2.1429,0.625l-1.5178,1.3393-0.98215,1.0714-2.6786,0.26785-1.9643-0.0893-2.3214,0.44643-2.2322,1.1607-3.3928,1.7857-2.3214,0.98215-1.3393,0.89285-0.89285,1.1607s-0.0893,0.35714,0.0893,0.71428c0.17857,0.35715,0.98214,1.4286,0.98214,1.4286l1.6072,0.80357,0.98214,0.89285,0.83,0.91,0.0893,1.1607-1.6071,2.1428-0.35714,2.2322-0.35715,1.875v2.6786l0.80358,1.6071,1.1607,1.4286s0.26786-0.44643,0.71429-0.80357c0.44642-0.35714,1.1607-2.3214,1.1607-2.3214v-2.0536l0.0893-2.0536,0.98214-1.875,1.6964-1.25,1.1607-0.17857,0.89286,1.1607s-0.0893,1.25-0.26786,1.6964c-0.17857,0.44643-0.53571,0.98214-0.35714,1.3393,0.17857,0.35714,0.89286,1.4286,0.89286,1.4286l-0.17858,2.7678s-0.35714,2.3214-0.35714,2.6786c0,0.35714-0.26786,2.5893-0.26786,3.0357v2.5893c0,0.89285,0,1.5178,0.0893,2.1428s0.0893,1.6964-0.0893,2.1429c-0.17857,0.44643-0.44642,1.25-0.71428,1.9643-0.26786,0.71428-0.35714,1.25-0.44643,1.9643-0.0893,0.71429-1.0714,1.6964-1.0714,1.6964s-0.71428,0.26786-0.98214-0.625-1.6071-0.98214-1.6071-0.98214-0.71429,0.44642-1.0714,0.98214c-0.35715,0.53571-0.89286,1.25-0.35715,1.6964,0.53572,0.44643,1.5179,1.6071,1.5179,1.6071s0.625,0.35714,0.26786,1.1607c-0.35714,0.80358-1.1607,1.0714-1.6964,1.4286-0.53571,0.35714-1.5179,0.89285-1.6964,1.25-0.17857,0.35714-0.71428,1.4286-0.71428,1.7857,0,0.35714-0.44643,2.0536-0.44643,2.0536l-1.3393,0.98214-1.875,1.3393s-2.2321,0.71429-2.6786,0.98214c-0.44643,0.26786-2.5,1.4286-2.8571,1.7857-0.35715,0.35714-0.53572,1.25-1.4286,1.6071-0.89286,0.35714-3.125,1.3393-3.125,1.3393l-0.98215,0.26785s-0.35714,0.80357-0.35714,1.1607c0,0.35714-0.26786,2.2321-0.26786,2.7678,0,0.53572-0.26785,0.98215-0.625,1.6964-0.35714,0.71429-0.98214,1.6964-1.6071,1.7857-0.625,0.0893-2.7679,0.71428-3.2143,0.89285-0.44642,0.17858-2.5,0.89286-3.0357,0.98215-0.53571,0.0893-2.8571,1.0714-2.8571,1.0714l-0.71429,0.80357-1.5179,1.1607-2.0536,0.71429-1.4286,0.80357-1.6964-1.0714-0.35714-0.98214-0.44643-1.25s-0.35714-0.35715-1.25-0.26786c-0.89286,0.0893-2.0536,0.44643-2.0536,0.44643s-1.3393-1.4286-1.6071-1.875c-0.26786-0.44643-1.875-3.125-1.875-3.125l-1.54-1.99-1.34-1.61s-1.1607-0.71429-1.6964-0.71429c-0.53571,0-2.6786-0.17857-3.0357-0.17857-0.35715,0-1.6072-0.89285-1.7857-1.1607-0.17857-0.26786-3.4821-4.2857-3.4821-4.2857l-1.875-0.89285-2.8571-1.9643-1.9643-2.2321-1.0714-1.6964-0.89286-0.625s-0.89285-0.26786-1.25,0.0893c-0.35714,0.35714-0.80357,0.53571-1.3393,0.89285-0.53572,0.35715-1.875,1.4286-1.875,1.4286l-1.3393,1.25-1.9643,1.1607-1.4286,0.89286s-0.89286,1.0714-0.98215,1.6071c-0.0893,0.53571-0.26785,1.1607-0.26785,2.0536,0,0.89286-0.35715,3.3036-0.35715,3.3036z","name":"Buryat Republic"},"zb":{"path":"m588.41,500.07s1.1364,1.1364,1.6415,1.5152c0.50508,0.3788,1.6415,1.6415,2.2728,1.894,0.63134,0.25254,2.6516,1.6415,2.6516,1.6415s2.9042,1.0102,3.4093,1.0102h5.5558c1.1364,0,3.283,0.75762,3.283,0.75762s0.88388,0.63134,2.0203-0.25254c1.1364-0.88389,2.3991-1.6415,2.3991-1.6415s0.75762,0.25254,1.6415,0.63135c0.88388,0.3788,1.5152,1.2627,2.1466,1.2627,0.63135,0,3.4093-1.7678,3.4093-1.7678s2.6516-2.2728,3.1567-2.7779c0.50507-0.50508,2.5254-0.88388,3.5355-1.2627,1.0102-0.37881,5.4296-0.50508,5.4296-0.50508s1.894-1.2627,2.2728-1.894c0.37881-0.63135,1.7678-3.4093,1.894-3.9143,0.12627-0.50508,2.7779-2.3991,3.4093-2.9042,0.63135-0.50508,4.9245-2.5254,5.177-3.0305,0.25253-0.50508,2.0203-1.5152,2.0203-1.5152l3.1567,1.2627,2.9042,1.2627s2.2728,0.25254,2.9042,0.25254c0.63135,0,2.2728-0.50508,2.7779-0.88388,0.50508-0.37881,3.1567-1.7678,3.1567-1.7678s3.283,0.25254,3.7881,0.50508c0.50508,0.25253,1.7678,0.88388,2.3991,1.1364,0.63135,0.25254,3.9144,1.389,3.9144,1.389s3.6618,0.3788,4.4194,0.25254c0.75762-0.12627,2.5254-1.7678,2.7779-2.3991,0.25254-0.63134,0.75762-2.3991,1.6415-2.9042,0.88388-0.50507,4.2932-1.5152,4.2932-1.5152s1.389-0.12627,1.5152-1.6415c0.12627-1.5152,0.37881-2.9042-0.25254-3.5355-0.63135-0.63134-1.389-0.88388-1.7678-1.7678-0.3788-0.88389,0.88389-8.9651,0.88389-8.9651l1.6415-3.7881,1.2627-4.2932s1.389-2.2728,1.2627-2.9042c-0.12627-0.63134-0.37881-3.9143-0.37881-3.9143l-1-2.41s-1.1364-0.88388-1.5152-1.389c-0.37881-0.50507-1.0102-0.37881-1.5152-1.0102-0.50508-0.63135-1.7678-1.1364-1.7678-1.7678,0-0.63134-0.25254-1.5152,0.37881-2.0203,0.63134-0.50508,3.0305-3.0305,3.7881-3.4093,0.75761-0.37881,4.5457-2.5254,4.9245-3.0305,0.37881-0.50507,1.389-1.6415,1.7678-2.1466,0.37881-0.50508,0.88388-0.50508,0.63135-1.6415-0.25254-1.1364-2.6516-3.5355-2.6516-3.5355s-0.63135-0.88389-1.5152-0.88389c-0.88389,0-3.1567-0.3788-3.1567-1.0102,0-0.63134-0.37881-1.2627-0.12627-2.0203,0.25254-0.75762,2.0203-2.2728,2.2728-2.9042,0.25254-0.63135,0.37881-1.894,0.37881-1.894l-2.3991-1.6415-2.6516,0.12627s-0.25254-0.25253-0.25254-0.88388c0-0.63134,0.63135-2.7779,0.88388-3.283,0.25254-0.50507,0.50508-1.5152,0.63135-2.1466,0.12627-0.63134-0.25254-1.7678-0.75761-2.3991-0.50508-0.63135-1.5152-1.389-1.5152-1.389s-1.1364-0.50508-1.6415,0.12627c-0.50508,0.63134-1.1364,1.5152-1.1364,1.5152s-1.1364,0.12627-1.6415-0.25254c-0.50508-0.37881-0.88388-4.1669-0.88388-4.1669s-0.88389-1.2627-1.6415-1.389c-0.75762-0.12627-1.6415-0.12627-2.1466,0.50508-0.50507,0.63134-1.0102,1.0102-1.7678,1.5152-0.75762,0.50508-1.2627,1.1364-1.894,0.75762-0.63134-0.37881-1.389-0.75762-1.2627-1.389,0.12627-0.63135,0.75761-1.6415,0.88388-2.1466,0.12627-0.50507-1.7678-2.1466-1.7678-2.1466l-3.283-0.12627-1.1364-1.1364c-0.12627-0.75761,0.25254-2.5254,0.25254-2.5254l-1.389-1.5152-2.7779-4.0406-1.2627-1.894-3.1567-0.3788-1.1364-2.0203-0.25254-2.9042-1.2627-0.3788h-1.2627l-1.6415,0.63134-1.6415-1.0102-3.0304-0.63135-1.894,0.75762-0.37881,1.0102-0.12627,1.894,0.37881,1.894-0.25254,1.5152-0.50507,2.0203,0.75761,2.0203,0.50508,1.389,1.7678,1.5152,0.88389,0.88388,0.25254,1.894s-0.25254,1.0102-0.75762,1.389c-0.50507,0.37881-3.0305,1.2627-3.0305,1.2627s-2.3991,0.63134-2.9042,0.75761c-0.50508,0.12627-3.4093,0.75762-3.4093,0.75762l-1.389,1.5152-0.25254,1.6415,0.75762,2.5254,1.7678,3.283,1.6415,3.7881,0.75762,2.9042,2.0203,2.2728,1.2627,1.1364,2.1466,0.25254,2.2728,0.50507,1.7678,1.389,0.50507,1.6415,0.12627,1.894v2.3991l-1.894,1.6415-3.0305,1.2627-2.5254,1.2627-2.1466,2.0203-1.0102,1.7678-0.75761,2.1466-2.6516,1.6415-1.894,1.389-2.0203,1.5152-0.88388,0.88388v0.75762l0.88388,0.88388c0.50508,0.12627,2.1466,1.2627,2.1466,1.2627l1.894,1.0102s0.75762,0.88389,0.88389,1.389c0.12627,0.50508,0,1.5152-0.12627,2.1466-0.12627,0.63134-2.0203,3.6618-2.0203,3.6618l-1.894,1.6415-3.6618,2.0203-3.1567,0.63135-2.1466,1.0102s-0.75761,0.37881-1.1364,1.0102c-0.3788,0.63135-1.6415,1.2627-1.6415,1.2627l-2.2728,0.50507-1.0102,0.88388s-1.2627,0.88389-1.6415,1.389c-0.37881,0.50508-3.5355,2.9042-3.5355,2.9042l-0.88389,1.389s-0.75761,1.1364-1.389,1.2627c-0.63134,0.12627-2.2728,0.12627-2.2728,0.12627l-2.3991-0.88388-1.6415,1.389s-1.6415,0.37881-2.1466,0.88388c-0.50508,0.50508-2.7779,1.7678-2.7779,1.7678l-2.3991,0.63134s-1.894-0.25253-2.5254,0.12627c-0.63134,0.37881-1.2627,1.5152-1.2627,1.5152l0.63135,1.5152,0.25254,0.88388-0.88389,1.894s-1.0102,0.75762-1.0102,1.2627-0.88388,2.0203-0.88388,2.0203-0.50508,0.88388,0.25253,1.389c0.75762,0.50507,2.5254,0.88388,2.5254,0.88388s1.389-0.12627,1.5152,0.50508c0.12627,0.63134-1.1364,1.6415-1.1364,1.6415l-2.6516,0.75762-2.0203,1.2627-0.88389,1.6415z","name":"Zabaykalsky Krai"},"am":{"path":"m662.32,397.46,4.6429-0.17857,2.3214-0.17858,3.5714-1.7857,2.6786,0.35714,3.5714,1.0714,2.1429,1.0714,2.6786,0.53571,4.4643-0.53571,3.0357,0,2.3214,0.53571,2.8571,2.1429,2.1429,0.89286,2.8571,0.35714,2.3214-1.7857,2.3214-0.71429,1.9643,0,2.1429,1.4286,2.1429,0.71429,2.5-0.71429,1.7857-1.9643,1.7857-1.25,4.1072,0,2.5-1.4286,2.1428-0.89286,3.75,0,1.4286,0,1.25-0.71429,0.53571-2.5,1.6071-1.0714,4.2857-2.3214,2.3214-0.89286,3.5714-1.9643,2.8572-1.4286,5-0.89286,3.0357,0,1.6071,1.4286l-0.37,3.2s-1.25,1.6071-1.9643,2.6786c-0.71429,1.0714-1.6072,2.6786-1.9643,3.3929-0.35714,0.71429-1.25,2.1429-1.25,2.1429s-0.53571,2.8571-0.71429,3.5714c-0.17857,0.71428-1.0714,2.8571-1.0714,2.8571s-1.25,1.7857-1.0714,2.5c0.17857,0.71428,1.25,1.25,1.25,1.25l0.89285,0.71428,3.2143-0.71428s1.7857-0.17857,2.6786-0.17857c0.89286,0,2.5,0.89285,2.5,0.89285l0.53572,1.9643,0.89285,2.6786s0.17857,0.53572,1.6072,0.53572,2.6786-1.4286,2.6786-1.4286l0.17857-2.3214s1.0714-0.89286,1.9643-0.89286c0.89286,0,2.5-0.53572,2.5-0.53572l1.25-2.1428,0.35715-2.5,1.9643-1.7857,2.3214,0.17857c0.71,0.19,3.03-1.6,3.03-1.6l1.4286-1.4286s0.89285-1.0714,1.9643-0.35714c1.0714,0.71428,2.3214,2.5,2.3214,2.5v2.8571l0.53572,1.6071,1.9643,1.7857s1.6071,0.71428,1.25,1.6071c-0.35714,0.89286-2.8571,1.9643-3.5714,1.9643-0.71428,0-3.5714,0.89285-3.5714,0.89285l-1.6071,0.17857-1.96,0.89s-0.71429,0.17857-0.17858,1.0714c0.53572,0.89286,1.9643,1.7857,1.9643,1.7857l1.25,0.89286,0.35714,1.9643-3.2143,2.3214-1.6072,3.0357-0.17857,2.1429-1.6071,2.3214-2.6786,0.89285-1.6071,1.4286,1.9643,1.9643,0.35714,1.7857-2.3214,2.3214-1.25,3.5714,1.6071,2.8571s3.5714,1.4286,4.2857,1.6072c0.71429,0.17857,4.8214,0.71428,4.8214,0.71428s1.4286,0.71429,1.9643,1.25c0.53571,0.53572,0.71428,3.2143,0.71428,3.2143l0.35715,2.5s0,0.53571,0.71428,1.0714c0.71429,0.53571,0,3.5714,0,3.5714l-0.71428,2.8571-0.53572,1.7857-1.25,1.7857-3.2143,0.35714-4.1072-0.17857-2.8571-1.4286-1.77-0.53-3.04,1.07h-3.3929-2.5l-3.2143,0.89286s-2.6786-0.35714-3.5714-0.53572c-0.89286-0.17857-3.5714-2.1428-3.5714-2.1428l-3.22-2.67-1.07-2.15-1.43-2.14-1.7857-1.0714-1.0714-1.9643s0-1.0714-0.71428-1.6072c-0.71429-0.53571-2.6786-0.71428-2.6786-0.71428l-0.89286-1.25-1.7857-2.8571-1.9643-2.5s-1.25-1.4286-1.9643-1.6072c-0.72-0.18-1.79-0.36-2.15-1.43-0.35715-1.0714-2.3214-2.6786-2.3214-2.6786l-2.8572-1.4286-2.6786-1.4286-3.0357-0.17857-2.6786-0.17858s-0.71429,0.89286-1.6072,1.0714c-0.89285,0.17857-4.4643-0.35714-4.4643-0.35714l-3.5714-1.25-2.3214,0.35714-1.9643,0.89286-1.6072,1.4286-3.75,0.71429s-3.2143,0.71428-3.3928,0c-0.17858-0.71429-2.8572-4.1072-2.8572-4.1072l-1.7857-1.4286h-1.6071l-1.0714-1.0714v-2.1428l2.1428-2.1429,0.17858-1.4286-0.89286-1.4286-1.25-0.89286-2.1429-0.17857s-0.71428,1.0714-0.71428,0,0.71428-3.3929,0.71428-3.3929l0.89286-2.3214-0.35714-1.9643-1.25-1.7857-1.7857-0.71428-1.25,0.71428-1.25,0.71429-1.25-0.17857s-0.35714-0.71429-0.35714-1.4286c0-0.71429-1.25-2.6786-1.25-2.6786l-0.71429-0.71428-1.7857-0.17857-0.89286,0.89285-1.4286,0.89286-2.5,0.53572s-0.35714-0.35715-0.17857-1.0714c0.17857-0.71429,0.71428-2.5,0.71428-2.5l-1.25-1.4286-0.51-0.52-1.79-0.18h-2.1429l-0.35714-1.0714v-2.1429z","name":"Amur Oblast"},"ch":{"path":"M876.72,53.094c-0.34,0-0.66,0.094-0.66,0.094l-1.78,2.124-4.47,1.969s-6.05,2.853-7.12,3.031c-1.07,0.179-1.44,1.969-1.44,1.969s0.37,2.514,0.19,3.407c-0.18,0.892-1.44,1.406-1.44,1.406s-2.32,1.428-2.5,2.5c-0.18,1.071,0.91,2.156,0.91,2.156s2.66,0.906,3.37,0.906c0.72,0,2.85-0.375,3.56-0.375,0.72,0-0.34,1.625-0.34,1.625l-0.91,1.782-2.31-0.907-3.03-0.719s-2.14,0.554-3.03,0.376c-0.89-0.179-2.31-1.438-2.31-1.438l-2.69,0.531-2.88,0.375h-1.06s-0.53,2.656-1.25,2.656c-0.71,0-2.12,1.782-2.12,1.782l-3.41,0.187-2.84,2.875s-2.86,2.496-3.75,3.032c-0.9,0.535-1.61,0.531-2.5,0.531-0.9,0-2.5,1.062-2.5,1.062l-4.85,3.219-5.15,1.062-3.07,0.907s-1.04,2.861-1.93,3.219c-0.9,0.357-2.88,1.968-2.88,1.968l-3.22,1.938-2.12,1.966-2.16,3.03-1.25,1.97-1.06,2.5v3.22s-0.91,0.72-1.63,0.72c-0.71,0-2.84,1.25-2.84,1.25s-0.9,2.51-1.44,3.41c-0.53,0.89-2.85,1.76-3.56,2.12s0.34,1.25,0.34,1.25l2.35,0.53,0.53,2.16,2.69,0.53h2.65,3.75s1.44,1.07,1.97,1.78c0.54,0.72,1.63,1.78,1.63,1.78l-1.82,2.5-2.5,1.1-2.31-0.72s-1.6,1.25-2.31,1.25c-0.72,0-2.16,1.59-2.16,1.59s-1.42-0.71-2.31-1.25c-0.89-0.53-1.96,0-3.03,0s-1.26,1.26-1.44,1.97-0.87,2.84-0.87,2.84-1.09,1.79-1.63,2.5c-0.53,0.72-2.66,2.69-3.37,3.22-0.72,0.54-1.81,0.54-4.13,0.72s-1.07,1.26-1.25,2.16c-0.18,0.89-1.06,3.03-1.06,3.03s-2.15,1.24-2.69,2.31c-0.53,1.07-0.53,2.67-0.53,3.56,0,0.9,0.53,1.82,0.53,1.82h1.06l0.19-0.72,0.19-1.97,0.72-1.06,0.72,0.53,3.9,1.59,5,3.41,0.38,0.87-0.38,5.19-1.06,2.84-4.09,4.47-2.88,3.94-0.34,2.5,1.25,0.19h1.59s-0.17,1.42-0.53,2.31,0.34,1.59,0.34,1.59l2.88,1.25,3.75,0.38,4.62-0.19,2.69,3.41,2.16,1.78h4.47c1.25,0,1.06,2.5,1.06,2.5l1.06,1.59,3.94-0.34s5.36-1.44,6.25-1.44,3.2-0.53,3.56-1.25c0.36-0.71,2.69-1.59,2.69-1.59l1.97-0.91h3.75s2.66-1.24,3.37-1.59c0.72-0.36,0.74-1.98,1.1-2.69,0.35-0.71,0.87-3.03,0.87-3.03l1.25-2.5h1.63l1.78-1.06,1.06-1.63,1.44-0.34,2.31-1.44,1.06-1.25s0.91-0.89,1.63-1.78c0.71-0.89,0.87-1.6,1.4-2.31,0.54-0.72,2.51-1.44,3.22-1.97,0.72-0.54,2.15-2.14,2.5-3.03,0.36-0.9,1.63,0,1.63,0l4.09,0.68s3.22-1.04,5.72-1.93c2.5-0.9,1.08,1.06,0.91,1.78-0.18,0.71,0,3.2,0,4.09s0.88,3.22,1.78,4.47c0.89,1.25,3.9-1.44,3.9-1.44s3.05-1.78,3.94-2.5c0.89-0.71,3.94,0,3.94,0h6.06v-2.84c0-0.72,1.43-3.23,1.97-4.13,0.54-0.89,1.25-3.56,1.25-3.56l0.72-2.5-0.19-4.81s1.79-1.97,3.22-1.97,2.69,1.59,2.69,1.59l4.28,0.91,1.44-0.53s-0.19-3.22-0.19-3.94c0-0.71-0.19-2.84-0.19-2.84l-0.53-3.22s-0.54-2.51-0.72-3.41c-0.18-0.89-0.87-2.12-0.87-2.12l-2.5-1.63,1.25-0.87,4.09-0.38s1.96-2.66,2.5-3.37c0.54-0.72,2.84-2.35,2.84-2.35v-2.5s-1.04-2.13-1.93-3.03c-0.9-0.89-2.35,0.18-3.07,0.53-0.71,0.36-3.03-0.34-3.03-0.34s-1.41-0.88-2.12-0.34c-0.72,0.53-1.63,1.06-1.63,1.06l-1.4-1.06-1.97,1.78-1.44-0.72s-2.84-1.79-4.09-1.25c-1.25,0.53-1.97-0.72-1.97-0.72h-2.5s-0.56,1.25-1.1,1.97c-0.53,0.71-3.03,0.87-3.03,0.87l-2.84,0.91-2.69,3.75-2.69,0.53,1.25-2.5,0.19-1.59-3.03-0.38s2.13-0.88,2.84-1.06c0.72-0.18,3.41-1.06,3.41-1.06l1.97-0.91,0.34-1.59s1.78-3.41,1.78-4.13c0-0.71-0.68-3.22-0.68-3.22l-0.91-2.31s-2.5-4.63-3.22-5.34c-0.71-0.72-1.05-1.78-2.12-1.78-1.08,0-3.07,0.68-3.07,0.68l-1.4,0.91-1.25-1.06s-2.17-1.98-3.6-2.159c-1.42-0.178,0.38-0.719,0.38-0.719l0.87-1.593s-0.16-1.973,0.38-2.688c0.53-0.714,1.97,1.25,1.97,1.25s2.67,1.438,3.56,1.438,1.78,0.531,1.78,0.531,3.41-0.371,4.13-0.906c0.71-0.536,0.68-2.313,0.68-2.313l0.19-2.687,0.72-1.25,1.25-1.782s0.36-1.964,1.25-2.5c0.89-0.535,1.79,0,2.69,0,0.89,0,2.31,1.626,2.31,1.626l1.59,0.718,2.5-1.437s1.28-2.139,1.82-3.031c0.53-0.893,2.84-1.782,2.84-1.782l2.84-2.156,1.44-3.219s2.14-1.973,2.5-2.687c0.36-0.715-0.34-1.782-1.59-1.782h-1.78l-1.82-1.062-1.93-0.188-3.07-1.781-3.18-0.187h-3.75c-0.9,0,0-0.875,0-0.875l2.5-1.625,0.68-2.5-1.06-1.25-2.5-0.532,1.78-1.25,0.53-1.25-2.31-0.531v-2.5s-0.35-1.785-0.53-2.5c-0.09-0.357-0.45-0.437-0.78-0.437zm-77.19,16.062c-0.22-0.01-0.48,0.081-0.78,0.282-1.61,1.071-3.94,2.312-3.94,2.312-1.07,0.357-1.79,1.42-1.97,2.312-0.17,0.893-0.53,2.88-0.53,3.594,0,0.715,0.2,2.496,1.1,3.032,0.89,0.535,3.03,1.598,3.03,2.312s-0.56,2.321,0.15,2.5c0.72,0.179,1.44-0.522,1.97-1.594,0.54-1.071,0.36-3.419,0.72-4.312s1.45-2.491,1.63-3.563c0.17-1.071-0.19-5.187-0.19-5.187s-0.24-1.644-1.19-1.688z","name":"Chukotka Autonomous Okrug"},"ha":{"path":"m779.82,276.93c0.53572-0.71428,1.4286-1.4286,1.9643-2.3214,0.53571-0.89285,1.7857-2.5,1.7857-2.5s1.7857-0.17857,4.1072,0.17858c2.3214,0.35714,4.4643,1.4286,5.7143,2.1428,1.25,0.71429,2.6786,1.25,3.0357,2.3214,0.35714,1.0714,1.6071,2.1429,1.6071,3.3929s-1.4286,3.5714-1.4286,4.2857c0,0.71429-0.17857,2.5,0.71428,3.3929,0.89286,0.89286,0.71429,1.6071,1.7857,1.4286,1.0714-0.17857,3.9286-1.0714,5-1.25,1.0714-0.17857,3.3929,0,5,0.53572,1.6071,0.53571,2.8571,0.89285,3.2143,1.6071,0.35715,0.71428,1.0714,1.4286,0.89286,2.5-0.17857,1.0714-2.5,2.8571-2.5,2.8571l0.17857,1.4286,0.89286,1.6072s1.6071,0.71428-0.35714,0.89285c-1.9643,0.17857-3.0357-0.71428-3.0357-0.71428s0.17857-0.17857,0-1.0714c-0.17857-0.89286-0.71428-1.7857-1.7857-1.4286-1.0714,0.35714-2.3214,1.9643-3.0357,2.5-0.71428,0.53571-2.8571,3.0357-2.8571,3.0357s-1.9643,0.71429-2.8571,1.7857c-0.89286,1.0714-4.1071,4.6428-4.1071,4.6428s-0.17858,1.25-1.0714,2.5c-0.89286,1.25-2.3214,2.3214-2.5,3.5714-0.17857,1.25,0,4.1071,0,4.1071s1.4286,1.0714,1.6071,2.3214c0.17857,1.25-0.89286,1.9643-1.25,2.8572-0.35714,0.89285-1.4286,0.53571-1.4286,1.7857s0.17857,5.7143,0.17857,5.7143l-0.35714,4.8214-0.35715,4.1072s-1.0714,1.9643-1.25,3.2143c-0.17857,1.25-0.35714,2.6786-0.35714,3.3929,0,0.71429-0.17857,3.0357-0.17857,3.75,0,0.71429-0.71429,1.9643-0.89286,2.6786-0.17857,0.71429-1.0714,1.25-0.17857,1.9643,0.89286,0.71428,1.9643,1.9643,1.9643,1.9643l-1.7857,3.3929-0.17857,1.9643-1.7857,3.3928-1.25,3.75-0.35715,4.1072-0.71428,1.6071-3.2143,4.1071,0.35715,2.6786s2.1428,1.0714,2.8571,1.0714c0.71428,0,3.3929,0.53572,4.4643-0.17857s2.5-1.4286,3.2143-1.7857c0.71429-0.35715,1.6071-0.89286,2.8571,0.35714s2.5,4.4643,2.5,4.4643,0.17857,1.4286,1.4286,1.0714c1.25-0.35714,1.9643-2.1428,1.9643-2.1428l-1.0714-2.1429,0.53572-2.6786-0.53572-1.7857-1.6071-2.5s-1.7857-1.4286-2.5-1.4286c-0.71429,0-3.75,1.4286-3.75,1.4286s-1.9643,2.3214-1.6071,1.4286c0.35714-0.89285,1.9643-3.3928,1.9643-3.3928l1.6071-0.35715,1.25-1.7857s0.89286-0.71429,1.9643-0.71429,3.2143-1.25,3.2143-1.25,1.25-2.6786,1.0714-0.89285c-0.12,1.78-1.72,4.28-1.72,4.28l1.0714,2.1429,1.9643,2.1429,0.53572,1.7857-0.17857,2.6786,2.3214,1.4286v1.6072,2.8571l1.7857-0.71429c0.71429-0.71428,2.1429-4.2857,2.1429-4.2857l0.89285-3.2143v-2.1428s-1.6071-1.7857-0.89285-1.9643c0.71428-0.17857,4.6428-2.1429,4.6428-2.1429s2.1429-0.53571,3.0357-0.53571c0.89286,0,4.1071,0.17857,4.8214,0.35714,0.71428,0.17857,4.4643,1.6071,4.4643,1.6071s4.4643,1.25,5.1786,1.25c0.71429,0,1.9643,1.7857,1.9643,1.7857s-0.89286,1.9643,0.53571,2.8571c1.4286,0.89286,4.8214,3.0357,4.8214,3.0357l3.75,2.1428s1.4286,3.3929,1.4286,4.2857c0,0.89285-0.17857,4.6428-0.17857,5.7143,0,1.0714,0,5,0.53572,5.7143,0.53571,0.71428,1.0714,2.3214,2.1428,3.2143,1.0714,0.89286,3.2143,4.2857,3.2143,4.2857l2.5,1.25,3.0357,6.9643s1.4286,1.4286,1.6072,2.3214c0.17857,0.89286,1.6071,3.0357,1.7857,3.75,0.17857,0.71429,1.6071,5,1.7857,5.7143,0.17857,0.71428-0.53572,8.5714-0.53572,8.5714l0.53572,3.3928s0,1.25-0.89286,1.9643c-0.89286,0.71429-3.5714,1.6071-3.5714,1.6071l-1.4286,0.17857-1.4286-1.7857-0.53572-2.6786-3.0357-3.0357s-1.9643-1.25-2.6786-0.71428c-0.71429,0.53571-2.3214,1.9643-2.3214,1.9643s-0.89286,1.7857-1.25,2.5c-0.35714,0.71429-1.4286,1.25-0.89286,2.3214,0.53572,1.0714,1.9643,2.6786,1.9643,2.6786s0.35714-0.71428,2.1428-0.53571c1.79,0.18,2.14,2.68,2.14,2.68l-0.89286,3.2143s-1.9643,1.25-2.6786,1.6071c-0.71428,0.35714-2.8571,1.25-1.7857,2.1429,1.0714,0.89285,2.3214,1.25,2.3214,1.25s0.71428,1.25,0,1.9643c-0.71429,0.71429-2.3214,2.1429-2.3214,2.1429s-1.7857,0.35714-3.0357,1.25-3.2143,1.4286-4.2857,1.6071c-1.0714,0.17857-2.8571,1.25-4.1071,0s-2.1429-0.89285-2.5,0.17857c-0.35715,1.0714-1.6072,0.89286-1.7857,1.9643-0.17857,1.0714,0,2.8571,0.35715,3.5714,0.35714,0.71428,0,3.0357,0,3.0357s-2.3214,1.9643-2.5,1.25c-0.17858-0.71428,0.17857-2.3214-0.35715-3.2143-0.53571-0.89286-2.3214-2.5-2.3214-2.5s-2.8571-1.4286-1.7857-2.3214c1.0714-0.89286,2.8571-2.6786,3.2143-3.2143,0.35714-0.53571,0.35714-3.0357,0.35714-3.0357s-2.1429-0.89286-2.6786-1.7857c-0.53572-0.89285-1.0714-3.3928-1.0714-4.1071,0-0.71428-0.71429-3.3929,0.17857-3.75,0.89286-0.35714,2.8571-1.9643,2.8571-1.9643l0.53572-1.9643s-0.53572-0.35714-2.1429-0.35714c-1.6071,0-2.5-0.17857-3.9286,0.89285s-1.4286,1.0714-2.5,2.5-2.1429,2.6786-3.2143,3.2143c-1.0714,0.53571-2.6786,0.71429-2.6786,0.71429s-4.1071-0.71429-4.2857-1.4286c-0.17857-0.71428-1.6072-1.9643-2.5-1.9643-0.89286,0-2.1429,0.35714-3.2143,0.89286-1.06,0.55-1.95,0.73-2.84,0.73-0.89286,0-4.2857,1.0714-4.2857,1.0714s-2.1428,1.7857-3.2143,1.7857c-1.0714,0-2.1014,0.40945-2.28-0.66198-0.17857-1.0714-1.0823-3.4216-1.0823-3.4216l-1.5332-4.3507s-2.6677-0.69261-3.7392-0.87119c-1.0714-0.17857-3.8221-0.85138-3.8221-0.85138l-2.4892-1.1525s-2.1249-2.2078-1.7678-2.9221c0.35714-0.71428,1.7028-4.0044,2.4171-4.5401,0.71428-0.53572,1.2608-1.4069,1.2608-1.4069l-1.25-2.3214s-1.7965-1.2085-0.90368-1.7442c0.89286-0.53571,3.7608-2.0058,3.7608-2.0058l2.0906-4.0892,1.5025-3.2341,3.5498-2.6767-0.89285-1.9643-2.4171-1.7118-0.11357-1.6288,2.5306-1.1237,4.1071-0.71428,2.6786-0.89286,1.0714-1.25-0.53571-1.6071-1.986-1.47-1.0083-2.5108-0.0631-2.4477-1.47-2.0058-1.7226-0.67282-2.2583,1.7442s-1.6703,1.0823-2.3846,1.4394c-0.73,0.34-2.87,0.19-2.87,0.19l-2.3214,1.25-0.44008,2.5-0.80992,2.3214-2.5,1.0714-2.1429,0.53571-0.53571,2.4585-1.4809,1.4286-2.3431-0.17857-0.99746-2.4585-1.0714-2.5s-1.2608-0.51404-1.9751-0.69262c-0.71428-0.17857-4.4534,0.51405-4.4534,0.51405l-1.7857-0.17857-1.7857-1.25,1.9643-5.5357,0.89286-4.1072s1.25-2.3214,1.9643-3.0357c0.71428-0.71429,3.0357-5,3.0357-5l0.35714-2.6786s-0.53571-1.25-1.6071-1.6072c-1.0714-0.35714-5.3571,0.17858-5.3571,0.17858l-2.6786,0.53571s-3.3424,2.5325-4.0567,1.8182c-0.71428-0.71429-1.1219-3.9611-1.1219-3.9611s-3.0376-1.6288-3.0376-2.5217c0-0.89286,1.9662-1.5855,1.9662-1.5855s0.53571-1.0714,0.71428-2.1429c0.17857-1.0714-0.20024-2.8138-0.20024-2.8138l-2.6281-0.77741s-1.4069-0.89472-2.1212-1.0733c-0.71428-0.17857,1.1996-2.2998,1.1996-2.2998l0.89286-1.6072-0.35714-1.0714s-2.2493-0.54655-2.2493-1.2608c0-0.71429,1.6505-3.3604,1.6505-3.3604l-1.5873-1.6703-2.5415-0.82971-0.80806-1.618s0.69262-0.73594,1.5855-1.0931c0.89286-0.35714,1.0498-0.61866,1.0498-0.61866l-1.3852-0.89286v-2.4062c0-0.71429-0.074-2.3304-0.074-2.3304s-1.2718-1.1078-1.4502-2.345c-0.1894-1.3131,2.6371-1.7532,2.6371-1.7532l-0.93619-0.82972-0.49238-1.4917,0.2417-2.1339,2.7525-0.86037,2.9094-0.89285,2.4477,0.1371,0.70345-1.8922,3.2034,0.21106,2.9203,0.0108s0.35715-1.7749,0.35715-2.4892c0-0.71428-1.8705-1.618-1.4286-2.2691,0.40112-0.59101,1.5657-0.89285,2.4585-1.0714,0.89286-0.17858,3.9286-0.71429,4.1072-1.4286,0.17857-0.71428,2.5829-6.1562,2.5829-6.1562s0.96683-1.0083,1.6811-1.1869c0.71429-0.17857,3.9286-0.93432,3.9286-0.93432l-1.764-2.794-3.0051-2.8246-1.6378-4.8539-2.3214-2.1428-1.4286-1.7857v-5.3571l3.0357-6.7857-1.0714-3.2143-0.72512-5.8585,0.81889-2.85s3.5498,0.11543,4.264,0.29401c0.71428,0.17857,7.7634,0.22004,7.7634,0.22004s0.95599-4.0152,1.3131-4.7295c0.35714-0.71428,1.3871-0.826,2.28-1.0046,0.89286-0.17857,3.3495-0.62051,3.3495-0.62051l2.5433,1.1562,1.6071-1.0714z","name":"Khabarovsk Krai"},"eu":{"path":"m781.96,462.82c0.98214,1.875,1.1607,1.875,1.875,2.5893l2.6786,2.6786s0.80357,1.1607,1.0714,1.7857c0.26786,0.625-0.0893,1.6964,0.625,1.9643,0.71429,0.26785,2.3214,0.53571,2.7679,0.625,0.44643,0.0893,1.4286,1.0714,2.3214,1.1607,0.89285,0.0893,1.6071,0.0893,2.1428-0.35714,0.53572-0.44643,1.0714-1.25,1.6964-1.7857,0.625-0.53571,2.5893-1.4286,3.125-1.6964,0.53572-0.26785,1.875-0.625,2.3214-1.0714,0.44643-0.44643,1.1607-0.98215,1.1607-2.0536s0.26785-2.7678,0.71428-3.125c0.44643-0.35714,2.9464-1.9643,3.5714-2.5,0.625-0.53571,1.6964-2.2321,2.1429-2.8571,0.44643-0.625,1.875-2.6786,2.2321-3.2143,0.35714-0.53572,2.1429-2.0536,2.1429-2.0536l2.0536-2.3214,0.98214-1.0714,2.6786-1.875,0.71429-0.80357,0.17857-1.1607,0.0893-0.35714-1.5179-0.17857-1.875-0.0893-1.6964,0.44643-1.6964,1.1607-1.3393,1.25-0.80358,1.0714-1.25,1.6072-1.4286,0.98214-1.7857,0.625s-1.25,0.17857-1.7857,0c-0.53571-0.17857-2.1428-0.71429-2.1428-0.71429l-1.4286-0.625-0.80358-0.98214-0.89285-0.625s-0.80357-0.26786-1.1607-0.17857c-0.35714,0.0893-1.7857,0.625-1.7857,0.625l-2.0536,0.71429-2.4107,0.17857s-1.0714,0.44643-1.7857,0.625c-0.71429,0.17857-2.4107,0.80357-2.4107,0.80357l-1.4286,0.89285-1.875,0.26786-0.80357,0.17857-0.35714,0.98215-0.0893,1.4286s-0.44643,1.1607-0.44643,1.5178c0,0.35715-0.53571,1.875-0.53571,1.875l-0.53571,1.1607-0.71429,1.4286z","name":"Jewish Autonomous Oblast"},"pr":{"path":"m822.68,473.71c0,0.53571,0.53571,1.25,0.53571,1.25l1.4286,1.4286s0.35715,1.0714,0.44643,1.4286c0.0893,0.35714-0.625,2.0536-0.625,2.0536l-1.1607,2.7679s-0.0893,2.2321,0,2.5893c0.0893,0.35715,0.625,1.0714,0.89285,1.5179,0.26786,0.44643,0.80358,1.1607,0.80358,1.5179,0,0.35714-0.80358,1.9643-0.80358,1.9643v1.9643c0,0.44643-0.44642,1.9643-0.44642,1.9643s-0.17858,0.0893-0.17858,1.0714v2.7679c0,0.71429-0.26785,3.0357-0.35714,3.3929-0.0893,0.35714-1.9643,0.53571-2.3214,0.53571-0.35714,0-1.3393-0.98214-1.3393-0.98214s-0.98215-1.6071-1.1607-2.0536c-0.17857-0.44643-1.3393-1.5179-1.3393-1.875,0-0.35715-0.26786-1.6072-0.89286-1.7857-0.625-0.17857-1.5179,0.26786-1.5179,0.26786s-0.53571,0.89286-0.625,1.25c-0.0893,0.35714,0,0.98214-0.0893,1.4286-0.0893,0.44643-0.71429,2.5-0.71429,2.5s-0.625,0.625-1.1607,0.89286c-0.53572,0.26786-2.2322,1.0714-2.2322,1.6071,0,0.53572,1.0714,0.71429,2.1429,2.0536,1.0714,1.3393,3.125,4.6429,3.125,4.6429l2.5,4.2857,1.4286,4.9107s0.44643,1.6071,0.625,2.1429c0.17857,0.53571,0.89286,1.1607,0.98215,1.9643,0.0893,0.80357,0.53571,2.5-0.35715,2.8571-0.89285,0.35715-4.0178,1.0714-4.0178,1.0714l-0.71429,0.625,1.1607,0.71429s0.625,0.44643,1.0714,0.53571c0.44643,0.0893,0.53572,1.4286,0.98215,1.4286,0.44642,0,1.875-0.35714,2.4107-0.71428,0.53571-0.35714,1.3393-0.625,2.1429-0.625,0.80357,0,1.4286-0.44643,1.4286-1.0714,0-0.625-0.625-3.3929-0.625-3.8393,0-0.44642,1.5179-2.5893,1.5179-2.5893v-2.1429c0-0.35714-0.17858-1.4286,0.35714-1.5179,0.53571-0.0893,2.9464-0.71428,2.9464-0.71428s0-1.1607,1.0714-0.26786c1.0714,0.89286,1.5178,2.9464,1.5178,2.9464s1.875,0.35714,2.2322,0.17857c0.35714-0.17857,0.98214-0.625,1.5178-0.98214,0.53572-0.35714,2.5893-0.53572,3.3929-0.53572,0.80357,0,2.1429-0.44642,2.1429-0.44642l-0.26786-1.1607s2.0536-1.25,2.5-1.5179c0.44643-0.26785,2.2321-1.1607,2.8571-1.7857s1.5179-1.4286,1.9643-2.4107c0.44643-0.98215,1.3393-3.125,1.5179-3.4822,0.17857-0.35714,1.1607-2.5,1.4286-3.2143,0.26785-0.71429,0.89285-2.3214,1.3393-3.125,0.44643-0.80357,1.5179-2.8572,1.5179-2.8572s-0.0893-2.3214-0.0893-2.8571c0-0.53571-0.26785-1.875-0.625-2.8571-0.35714-0.98214-0.53571-1.1607-0.44642-2.1429,0.0893-0.98214,0.98214-1.6071,1.6071-2.0536,0.625-0.44643,1.0714-1.4286,1.0714-1.9643,0-0.53571-1.25-2.9464-1.25-2.9464s0.0893-1.1607,0.35714-1.6964c0.26786-0.53572,1.5179-1.7857,1.5179-1.7857l0.17857-2.9464s0.80357-2.2321,0.80357-2.6786c0-0.44643,0.26786-3.9286,0.26786-3.9286l0.89285-2.1429s0.26786-3.3928,0.26786-3.9286c0-0.53571-0.53571-5-0.53571-5.5357,0-0.53572-0.17857-4.1071-0.17857-4.7321s-0.71429-2.1429-0.71429-2.5893c0-0.44643,0.0893-2.1429,0.26786-2.5893,0.17857-0.44643,0.98214-1.9643,0.98214-1.9643s-0.0893-2.0536-0.0893-2.5893c0-0.53571,0.17858-1.6964-0.44642-1.7857s-2.3214,0.80357-2.3214,0.80357l-1.7857,0.71429-1.5178,0.17857-0.71429-0.44643-1.0714-1.4286s-0.26786-1.4286-0.26786-1.7857c0-0.35714-0.53571-1.1607-0.53571-1.1607l-1.25-1.3393-1.3393-1.3393-1.4286-0.71429-1.0714,0.17857s-0.98214,0.17858-1.0714,0.53572c-0.0893,0.35714-0.53572,0.44643-0.80358,0.80357-0.26785,0.35714-1.1607,1.3393-1.1607,1.3393l-0.53571,1.0714-0.44643,1.0714-0.80357,0.80357-0.17858,0.71429,0.35715,0.80357,0.89285,0.98214s0,0.71429,0.53572,0.80358c0.53571,0.0893,1.0714,0.0893,1.0714,0.0893h1.3393l1.25,0.625,0.71429,0.80357,0.0893,1.3393-0.26785,1.4286-0.44643,1.25-0.53572,0.71429-1.5178,0.89285-1.7857,0.89286-0.89285,0.89286,0.26785,0.80357,1.9643,0.80357,0.80357,0.98214-0.0893,0.71429-0.80357,1.0714-1.0714,1.0714-1.875,0.89286-1.7857,0.98214-3.64,1.44-1.6964,0.44643-1.9643,0.26786-0.89286-0.44643-1.25-0.71429s-0.53571-0.26786-0.89285,0c-0.35715,0.26786-0.625,0.98214-0.625,0.98214l-1.5179,1.0714-0.53571,1.6964,0.0893,1.3393s0.35714,0.71428,0.44643,1.1607c0.08,0.44,0.08,1.33,0.08,1.33l-0.0893,1.6071-0.98214,1.0714z","name":"Primorsky Krai"},"ma":{"path":"m829.64,182.46s1.0714,0.71428,2.1429,1.25c1.0714,0.53571,3.0357,2.1429,3.2143,2.8571,0.17857,0.71429,0.17857,2.3214,1.0714,2.8571,0.89286,0.53572,3.5714,1.0714,3.5714,1.0714l1.9643,0.89286,1.0714,1.7857,3.0357,1.6072s0.71429,1.0714,0.17857,1.9643c-0.53571,0.89286,0,2.6786,0,2.6786l2.5-0.35714,2.8572,0.35714,1.6071,2.3214,1.9643,2.6786,2.1429,1.0714,1.9643,2.1429,1.0714,1.9643,0.17857,2.5s-0.35715,2.5,0,3.2143c0.35714,0.71429,1.0714,3.75,1.0714,3.75l1.0714,1.7857s0.53572,1.0714,0.53572,1.7857c0,0.71428-0.89286,2.1429-0.89286,2.1429l0.17857,1.7857-1.9643-0.53571-0.35715-1.9643s0.35715-0.71429-0.53571-0.35714c-0.89286,0.35714-1.7857,1.4286-1.7857,1.4286s-0.35715,0.89286-1.0714-0.53572c-0.71429-1.4286-1.7857-1.9643-1.7857-1.9643s-1.6071-0.71429-1.6071-1.9643-1.7857-2.3214-1.7857-2.3214l-1.6072-1.4286s-0.35714,1.7857-0.35714,2.5c0,0.71429,1.4286,1.4286-0.35714,1.4286s-4.1072,0.71429-4.1072,0.71429l-0.89285,1.0714-0.35715,2.6786-1.25,1.25-2.6786,2.8571-0.35714,2.3214-1.0714,1.9643,0.53572,2.3214,1.4286,1.4286s0.53571,0.71428,0.53571,1.4286v2.6786l0.17857,1.6071,1.6072,1.4286,0.17857,4.4643v4.4643l0.17857,3.0357,1.7857,2.6786,1.0714,3.0357,0.35714,0.89285,1.9643,0.35715,1.0714-1.25,1.9643-1.0714s1.6072-0.17857,2.3214-0.17857c0.71429,0,1.6072,0.89285,1.6072,0.89285l0.17857,0.89286-1.7857,1.4286-1.7857,0.71429v1.0714l-0.71429,0.89285-1.7857,0.89286-1.25,0.53571-0.53572,0.71429-0.17857,2.6786v2.3214l-0.89285,0.71429-1.7857-0.89286-0.71428,1.4286-0.53572,2.5-1.0714,1.25-3.2143,0.71429-1.25-0.17858-0.53572-1.6071,2.5-1.6071,1.25-1.9643s1.9643-1.7857,0.53572-1.7857-2.6786,1.0714-2.6786,1.0714l-0.89286,1.25-0.89286,0.53571s-0.89286,0.35714-1.7857-0.17857c-0.89286-0.53571-2.3214-0.71429-2.3214-0.71429s-1.25,0.89286-1.25,1.4286c0,0.53571,0.35714,1.4286-0.53572,1.4286-0.89285,0-3.2143,0.17857-3.2143,0.17857l-2.5,1.6071-2.5,0.89286-1.0714,2.1429,0.35714,1.7857,0.53572,1.9643,0.35714,0.89285,1.6071,1.0714s0.17857,0.89286-1.7857,0.89286h-4.4643l-1.0714,2.1429-1.0714,1.25-2.5,0.35714-2.1429-2.8571-2.6786-1.25s-1.9643-0.71429-2.6786-0.71429c-0.71429,0-3.3929,0.17857-3.3929,0.17857l-2.1429,0.89286-1.7857,0.17857-1.25-0.89286-1.0714-1.7857-0.17857-2.3214,1.25-1.9643,0.17857-2.5-2.5-3.9286-2.3214-1.4286-2.3214-1.25-2.6786-0.71428-2.6786-0.71429-2.1429,0.71429-1.0714,1.4286-1.0714,1.9643-0.89285,1.25h-1.25l-1.25-1.9643-0.17857-0.89286,1.25-0.71429,0.35714-1.4286v-1.25l-1.25-1.25-5.7143-6.7857s-0.35714-1.0714-0.35714-1.7857v-3.2143l-1.78-0.88-0.89286-0.35714-0.17857-3.0357-0.53572-1.4286-1.0714-0.35714-0.35714-1.25,1.6071-1.4286,2.1429-0.17857,1.0714-0.53572,1.0714-1.0714,2.1429-0.17857,1.9643,0.17857,0.53572-1.0714-1.25-1.9643-1.4286-1.25-0.35714-2.1429s1.25-0.53571,1.9643-0.53571c0.71428,0,3.5714-1.0714,3.5714-1.0714l-0.17858-2.6786s0.53572-0.35714,1.25-0.35714c0.71429,0,3.9286,0.35714,3.9286,0.35714l2.1428-1.7857,4.1072-6.4286-0.17858-3.0357-1.4286-1.4286-2.6786-2.8572s-1.25-0.89285-1.4286-1.6071c-0.17857-0.71428-0.35714-1.7857-0.35714-1.7857l2.1428-2.3214,0.17858-1.6071-1.25-1.25-2.5,0.17857-0.71429-0.53572-1.0714-1.0714v-0.71429l3.06-0.86,1.25-1.0714-0.53572-1.4286-1.25-0.89285-0.17857-1.6072,2.1429-3.0357,3.75-1.25,2.1428-1.25-1.25-2.5s0.17858-0.35714,0.89286-0.35714c0.71429,0,3.3929,0.71428,3.3929,0.71428l1.0714-0.17857-0.53572-3.5714v-1.6071l1.4286-0.53572,0.2-2.66-0.17858-0.53571h2.5l1.6072,0.53571,0.53571,1.9643,1.0714,1.0714s0.53571,0.53571,1.25,0.53571,3.75-0.71428,3.75-0.71428l3.5714-0.71429,2.3214-0.35714,2.6786-1.0714,2.3214-1.4286,2.3214-0.89286,1.9643-0.17857,2.8571-0.35714,2.5-1.6072z","name":"Magadan Oblast"},"sh":{"path":"M943.16,321.59c-0.45,0.19-0.81,0.37-1.19,0.94s-0.31,1.53-0.5,1.85c-0.19,0.31-1.53,1.12-1.53,1.12-0.51,0.51-0.87,1.06-2,1.25-1.14,0.19-2.59-0.23-2.85,0.66-0.25,0.88,0.06,2.12,0.69,2.25,0.63,0.12,1.53,0.44,2.1,0.25,0.56-0.19,1.56-1.25,1.56-1.25s0.62,0.3,1,0.93c0.38,0.64,0.97,1.78,0.97,2.03,0,0.26,0.19,1.06-0.07,1.57-0.25,0.5-0.81,2.78-0.56,3.03s1.24,0.9,1.94,0.9c0.69,0,1.09,0.17,1.78-0.78,0.69-0.94,0.93-1.74,1.25-2.56s0.78-1.9,1.09-2.16c0.32-0.25,0.48-1.02-0.22-1.65-0.69-0.63-0.93-1.75-1-2.06-0.06-0.32-0.56-1.09-0.24-1.53,0.31-0.45,1.12-1.31,1-1.69-0.13-0.38-1.38-1.09-1.82-1.47s-0.96-1.82-1.4-1.63zm2.15,20.44s-0.43,0.15-0.69,0.85c-0.25,0.69-0.5,1.74-0.31,2.31s0.56,1.4,0.81,1.78c0.26,0.38,0.75,1.31,0.88,1.62,0.13,0.32,0.53,0.72,1.03,0.91,0.51,0.19,1.12,0.07,1.25-0.44,0.13-0.5,0.19-1.4,0.19-2.03s-0.19-2.15-0.19-2.53,0.07-0.87-0.31-1.31-2.66-1.16-2.66-1.16zm2.53,9.22c-0.56,0.19-1.9,0.5-2.15,0.69-0.26,0.19-0.63,0.52-0.5,1.03,0.12,0.5-0.2,1.24,0.5,1.69,0.69,0.44,2.15,0.96,2.53,1.09s0.55,0.44,1.19,0.13c0.63-0.32,1.09-0.59,1.03-1.41-0.07-0.82-0.59-1.62-0.78-1.88-0.19-0.25-1.5-1.34-1.5-1.34h-0.32zm-117,4.5l-1.87,1.25s0.5,1.12,0,1.12h-1.78s-1.26,0.78-0.5,1.29c0.76,0.5,2.4,0.87,3.03,1,0.63,0.12,1.52,0.65,2.16,1.15,0.63,0.51,1.49,0.87,1.74,1.63,0.26,0.76,0.63,2.28,0.63,2.28l0.91,1.62-0.54,2.16-1.74,0.13s-0.91-1.14-1.41-0.13c-0.51,1.01-0.5,1.77-0.5,2.41,0,0.63,0.27,1.24,0.91,1.37,0.63,0.13,1.48,0.4,2.74,1.41,1.27,1.01,2.03,2.9,2.29,3.53,0.25,0.63,0.24,2.65,0.5,3.41,0.25,0.75,1.4,2.02,2.03,2.53,0.63,0.5,2.03,2.52,2.28,3.03,0.25,0.5,1.25,2.4,1.5,2.9,0.25,0.51,1.78,1.75,1.78,1.75s1.24,1.15,2,1.66,3.8,1.37,4.56,1.37,3.03,0.66,3.28,1.16c0.26,0.51,2.78,5.66,2.78,5.66l5.57,8.34s2.52,2.15,3.15,2.66c0.64,0.5,2.4,3.9,2.91,4.65,0.51,0.76,2.12,4.44,2.5,4.94,0.38,0.51,3.69,5.06,3.69,5.06s2.77,1.88,3.4,2c0.64,0.13,3.41,1.91,3.41,1.91s2.65,2.9,2.78,3.41c0.13,0.5,0.75,3.53,0.75,3.53l2.16,3.4,3.15,2.66,2.5,5.19,0.53,2.25s0,2.15,0.5,2.53c0.51,0.38,5.29,4.06,5.29,4.06l1.65,0.88,1.78,0.25v-2.54s-0.9-1.65-1.15-2.15c-0.26-0.51-0.88-3.03-0.88-3.03s-0.5-0.74-0.5-1.63c0-0.88,0.75-2.4,0.75-2.4s1.53-0.25,2.16-0.25,1.24-0.12,2.25-0.63c1.01-0.5,2.41-0.37,2.41-0.37l2.28,2,1.37,0.78s0.5-1.4,0.5-2.03c0-0.64,0.01-1.53-0.62-2.41-0.64-0.88-1.63-1.88-1.63-1.88l-2.03-1.65s-0.99-1.38-1.75-1.25-1.15,0.24-1.41,0.75c-0.25,0.5,1.52,2.66,0,2.28-1.51-0.38-2.4-0.9-2.78-1.41-0.38-0.5-1.62-1.87-1.62-1.87s-2.4-1.28-3.03-1.53c-0.64-0.26-2.4-0.88-3.04-0.88-0.63,0-4.06-1.15-4.06-1.15l-2.12-2.38-2.41-6.31s-1.12-1.65-1.25-2.41-1.03-3.15-1.16-3.65c-0.12-0.51-0.37-2.28-0.62-2.78-0.25-0.51-1-2.29-1-2.29l-0.53-3.28,1.78-1.62s2.77-1.03,3.41-1.03c0.63,0,5.06-0.13,5.06-0.13l2.4,0.63s2,0.25,2.5,0.25c0.51,0,1.03,0.51,1.16-0.5s-1.53-2-1.53-2l-3.53-0.53-3.66-1.26-2.4-1.78-18.57-15.25-1.5-1.28-1.78-0.12s-0.87,0.13-1.25-0.63-0.4-1.27-1.15-1.9c-0.76-0.64-2.5-1.88-2.5-1.88s-1.52-0.25-2.66-0.5-3.66-1.4-3.66-1.4l-0.4-2.79-1.38-1.25-0.62-1.28,1.25-1.62-0.25-1.91-2.53-2.12-3.54-0.79s-2.4-0.99-2.65-1.5c-0.25-0.5,0.12-2.15,0.12-2.15s-0.62-1.12-1.12-1.5c-0.51-0.38-4.28-1.91-4.28-1.91l-2.91-1.9-1.03-2.63s0.01-1.91-0.63-1.91c-0.63,0-2.78-0.87-2.78-0.87zm119.16,7.94c-0.88,0.25-1.53,0.4-1.72,0.97-0.19,0.56,0.06,1.24,0.31,1.43,0.26,0.19,0.84,0.69,1.47,0.57,0.63-0.13,1.56-0.19,1.82-0.57,0.25-0.38-1.13-1.46-1.32-1.78-0.19-0.31-0.56-0.62-0.56-0.62zm1.75,4.06c-0.51,0.25-1.19,0.56-1.37,1.06-0.19,0.51,0.36,1.37,1,1.75,0.63,0.38,1.05,0.63,1.56,0.06,0.5-0.56,1.09-1.62,1.03-1.93-0.06-0.32-2.22-0.94-2.22-0.94zm0.19,6.97c-0.18,0.01-0.34,0.06-0.5,0.16-0.63,0.37-0.82,1.18-0.82,1.56s0.88,3.09,0.88,3.47-0.87,2.4-1,2.9c-0.13,0.51-0.01,1.33,0.62,2.6,0,0,1.13-0.25,1.38-0.25s1.72-0.94,1.84-1.19c0.13-0.25,0.44-2.28,0.44-2.91s-0.06-2.02-0.12-2.47c-0.07-0.44-0.63-1.4-0.63-1.78s-0.31-1.43-0.69-1.69c-0.28-0.18-0.87-0.44-1.4-0.4zm-4.41,14.53s-1.28,0.03-1.53,0.16c-0.25,0.12-0.69,0.49-0.81,0.75-0.13,0.25-0.57-0.07,0.06,0.62,0.63,0.7,1.02,1.38,1.66,1.38,0.63,0,2.06,0.65,2.31,0.65s1.03-0.21,1.22-0.47c0.19-0.25,0.75-0.49,0.31-1.18-0.44-0.7-0.97-1.06-1.22-1.19s-2-0.72-2-0.72zm1.81,6.47c-0.19,0.31-1.37,1.18-1.43,1.44-0.07,0.25-0.32,0.74-0.38,1.25-0.06,0.5-0.31,1.77-0.31,2.09s-0.53,1.59-0.78,2.16c-0.26,0.56-0.5,1.49-0.44,2.12s-0.07,1.09,0.19,1.66c0.25,0.57,0.24,1.18,0.56,1.37s-0.04,1.29,1.09,0.6c1.14-0.7,1.63-1.34,1.82-1.79,0.19-0.44,0.53-2.09,0.72-2.34,0.18-0.25,0.56-1.43,0.68-1.81,0.13-0.38,0.63-1.9,0.63-2.22s0.06-1.59-0.25-2.22c-0.32-0.63-1.19-1.31-1.19-1.31l-0.91-1zm-4.9,15.4c-0.26,0.07-0.97,0.19-1.28,0.44-0.32,0.26-0.63,0.56-0.69,0.75s-0.5,0.94-0.5,1.19,0.06,1.15,0,1.41c-0.06,0.25,0,0.56-0.56,0.81-0.57,0.25-1.22,0.43-1.6,0.56s-0.81,0.44-1.06,0.69-0.94,0.72-0.94,0.72-0.53,0.18-0.53,0.5c0,0.31,0.41,0.99,0.53,1.25,0.13,0.25,0.75,1.22,0.75,1.22l-0.18,0.75s-1.04,0.74-1.1,1.06c-0.06,0.31-0.12,1.59-0.12,1.97s0.06,1.74,0.06,2c0,0.25,0.19,1.84,0.19,2.09s0.15,1.34,0.28,1.97c0.12,0.63,0.12,1.06,0.43,1.44,0.32,0.38,0.56,1.03,0.88,1.22s0.5,0.68,0.88,0.62c0.37-0.06,1.71-1.03,1.71-1.03s0.63-0.62,0.75-1.06c0.13-0.44,0.44-2.16,0.44-2.16s0.19-1.37,0.13-1.69c-0.07-0.31-0.69-0.65-0.75-1.22-0.07-0.56-0.07-0.8,0-1.68,0.06-0.89,0.87-2.09,1.06-2.35,0.19-0.25,0.84-1.18,0.97-1.93,0.12-0.76-0.07-1.84,0.19-2.16,0.25-0.32,0.8-0.75,1.06-1.06,0.25-0.32,1.06-1.65,1.18-2.03,0.13-0.38,0.13-1.4,0.13-1.91s-0.31-1.37-0.56-1.56c-0.26-0.19-1.75-0.82-1.75-0.82zm-8.35,23.69c-0.31-0.01-0.62,0-0.75,0.03-0.25,0.07-0.56,0-0.81,0.32-0.25,0.31-0.78,0.71-1.22,0.84s-0.87,0-0.93,0.31c-0.07,0.32-0.26,0.87-0.26,1.13,0,0.25,0.06,0.74,0.32,1,0.25,0.25,0.62,0.21,0.75,0.78,0.12,0.57,0.19,1.18,0.12,1.44-0.06,0.25-0.31,1.12-0.37,1.43-0.07,0.32-0.19,0.4-0.38,1.03-0.19,0.64-0.31,1.38-0.31,1.76v1.15c0,0.38-0.06,1.19,0.13,1.44,0.18,0.25,0.62,0.56,0.87,0.81s1.47,0.47,1.72,0.47,0.5-0.28,0.75-0.66,0.56-0.99,0.56-1.56-0.12-2.96-0.06-3.28,1.12-0.84,1.19-1.41c0.06-0.56,0.03-1.74,0.09-2,0.06-0.25,0.31-1.15,0.31-1.15s0.75-0.44,0.88-0.81c0.12-0.38,0.25-1.13,0.25-1.5,0-0.38-0.19-1.54-0.19-1.54h-1.84c-0.19,0-0.5-0.02-0.82-0.03zm7.85,1.88c-0.57,1.01-0.72,0.99-0.78,1.75-0.07,0.76-0.88,1.53-0.88,1.53s-0.31,0.31-0.44,0.62c-0.12,0.32-0.69,0.81-0.06,1s1.72,0.19,1.97,0.07c0.25-0.13,0.75-0.69,1-0.82,0.25-0.12,0.44-0.49,0.44-1.37,0-0.89-0.19-1.9-0.31-2.16-0.13-0.25-0.94-0.62-0.94-0.62z","name":"Sakhalin Oblast"},"ka":{"path":"M888.56,146.75l-1.65,0.84c-0.26,0.13-1.25,0.88-1.25,0.88l-0.13,1,0.13,2.78,0.25,1.16-0.88,2.43-1.72,4.69-0.93,1.56-0.44,1.41-0.06,1.81s-0.22,1.03-0.47,1.22c-0.26,0.19-0.82,0.13-0.82,0.13h-1.81-2.59l-1.6-0.19-1.68-0.31s-0.53,0.25-0.85,0.25c-0.31,0-0.68,0.56-1,0.75-0.31,0.19-1.37,0.74-1.56,1-0.19,0.25-1.28,0.78-1.59,0.9-0.32,0.13-1.38,1-1.63,1.19s-0.78,0.56-1.22,0.63c-0.44,0.06-0.94-0.32-0.94-0.32s-0.62-0.99-0.74-1.25c-0.13-0.25-0.97-1.72-0.97-1.72s-0.07-1.31-0.13-1.62c-0.06-0.32-0.06-1.47-0.12-1.72-0.07-0.25-0.13-1.06-0.13-1.06s0.25-1.22,0.31-1.66c0.07-0.44,0.38-0.75,0.38-0.75s0-0.56-0.19-0.87c-0.19-0.32-0.81,0.06-0.81,0.06l-1.75,0.44-1.97,0.81-1.66,0.5-1.18,0.19-2.04-0.25s-1.62-0.38-1.87-0.57-1.03-0.12-1.03-0.12l-0.63,0.56-0.87,1.16-0.63,0.81-0.84,0.88s-1.31,0.74-1.56,0.87c-0.26,0.13-0.94,0.59-0.94,0.59l-1.22,1.32-1.44,2.28s-2.27,2.28-2.59,2.47-1.18,0.87-1.44,1.12c-0.25,0.25-1.34,0.38-1.72,0.44s-0.74,0.62-1,0.94c-0.25,0.31-1.15,1.28-1.15,1.28l-0.81,0.56s-0.75-0.31-1.13-0.31-0.44,0.31-0.44,0.31l-0.97,1.91-1,2.18s-0.5,1.59-0.5,1.91,0.63,0.44,0.88,0.63c0.25,0.18,1.65,0.8,2.03,1.06,0.38,0.25,1,0.84,1.31,1.15,0.32,0.32,1.41,1.32,1.41,1.32s-0.13,0.43-0.06,0.68c0.06,0.26,0.37,1.15,0.68,1.66,0.32,0.51,0.94,0.81,0.94,0.81s4.09,1.16,4.35,1.28c0.25,0.13,1.09,1.32,1.09,1.32l0.37,0.68s1.13,0.85,1.44,1.04c0.32,0.18,1.22,0.31,1.22,0.31l0.62,0.62,0.44,1.19s-0.31,1.59-0.37,1.97c-0.07,0.38-0.07,0.99,0,1.37,0.06,0.38,1.12-0.06,1.12-0.06s1.4-0.31,1.97-0.25,1.56,0.25,1.56,0.25,1.22,0.4,1.35,0.66c0.12,0.25,0.75,1.18,0.75,1.18l1.15,1.5,1.25,1.72,1.85,1.32,2,1.65,1,1.31s0.84-0.99,1.03-1.31c0.19-0.31,0-0.74,0-1.19,0-0.44-0.37-0.71-0.75-0.96-0.38-0.26-0.97-1.19-1.35-1.63-0.37-0.44-0.56-0.84-0.56-0.84s-0.81-1.06-1.06-1.31c-0.25-0.26-1.09-0.94-1.34-1.19-0.26-0.26-1.25-1.34-1.69-1.97s0-0.75,0-1.06c0-0.32,0.87-1.04,0.87-1.04s0.94-1.3,1.19-1.62,0.44-1.21,0.5-1.59,0.47-1.31,0.85-1.5c0.37-0.19,1.18-0.38,1.68-0.44,0.51-0.06,1.84,0.5,1.97,0.81,0.13,0.32-0.62,0.69-0.75,0.94-0.12,0.25,0,1.59-0.06,2.16-0.06,0.56,0.12,1.71,0.12,2.28,0,0.56,0.75,1.37,0.75,1.37s1.13,1.4,1.44,1.72c0.32,0.32,1.28,0.93,1.59,1.19,0.32,0.25,1.57,1.65,1.57,1.65l3.34,2.32,0.97,0.59s0.75,1.25,0.81,1.69c0.07,0.44,0.44,0.93,0.44,0.93s1.03,0.22,1.34,0.47c0.32,0.26,0.63,1.31,0.63,1.69s-0.12,1.03-0.44,1.47c-0.31,0.44-1.21,0.93-1.53,1.25s-0.69,0.75-0.69,0.75-0.06,5.68-0.06,6.25,0.75,1.78,1,2.16,1.21,2.14,1.72,2.9c0.5,0.76,0.69,1.12,0.69,1.44s0.25,1.66,0.25,1.66,0.56,10.46,0.62,11.09,0.59,1.03,0.78,1.41,0.75,0.93,1,1.18c0.26,0.26,0.75,0.84,0.88,1.16,0.12,0.32,0.97,1.62,0.97,1.62s0.74,2.78,0.87,3.54c0.13,0.75,0.13,1.72,0.13,1.72s1.31,3.96,1.31,4.4v1.47s-0.81,1.75-1.13,2.13c-0.31,0.37-0.06,1.77-0.06,2.09,0,0.31-1.34,2.46-1.84,2.84-0.51,0.38-1.31,1-1.44,1.38s0.25,1.03,0.25,1.03l1.81,0.87,2.28,0.94s1.09,2.15,1.47,2.66c0.38,0.5,0.56,1.59,0.56,1.9,0,0.32,0.32,3.47,0.44,4.16,0.13,0.69,0.38,1.65,0.56,2.09,0.19,0.45,1.79,1.5,1.79,1.5s2.21,3.94,2.34,4.25c0.13,0.32,0.81,1.69,1.06,2,0.08,0.1,0.29,0.25,0.53,0.41,0.62,0.78,3.07,1.94,3.07,1.94l0.93,0.62s4.63,4.25,4.69,4.5c0.06,0.26,2.78,2.32,2.78,2.32s2.34,0.84,2.6,1.03c0.25,0.19,1.68,0.75,1.68,0.75l14.91,10.22,2.03,1.21,3.03,0.94s1.19,1.59,1.44,1.72,3.15,1.19,3.59,1.19c0.45,0,1.47,1,1.47,1s2.59,2.78,2.97,3.03,2.56,1.91,2.56,1.91,2.09,1.18,2.47,1.18,2.85-0.5,2.85-0.5l0.68-0.62v-2.03s-0.06-1.69-0.06-1.88,0-1.21-0.25-1.53-0.81-0.88-0.81-0.88,0.18-1.52,0.44-1.96c0.25-0.45,0.43-0.69,0.43-1.07s-0.31-1.15-0.56-1.4c-0.25-0.26-0.5-1.19-0.5-1.19s-0.06-2.34-0.31-2.66c-0.25-0.31-1.09-0.99-1.28-1.62s-0.5-1.03-0.63-1.41c-0.12-0.38-1.37-1.62-1.62-2.06-0.26-0.44-1.53-1.59-1.72-1.84-0.19-0.26-0.31-1.28-0.5-2.1s-1.02-0.75-1.78-0.75-1.12-0.06-1.38-0.25c-0.25-0.19,0.5-0.43,0.75-0.56,0.26-0.13,1.09-0.9,1.28-1.22,0.19-0.31,0.5-1.37,0.5-1.37l0.69-4.22,1.91-1.6c0.38-0.31,0.25-0.93-0.19-1.31s-1.09-0.25-1.41-0.31c-0.31-0.06-0.8-0.84-1.31-1.16-0.5-0.31-0.84-0.81-1.28-1s-1.24-0.31-2.06-0.56-1.4-1.03-1.91-1.47c-0.5-0.44-0.44-1-0.5-1.25s-0.06-1.96-0.06-2.84v-1.22s-0.97-2.78-0.97-3.1c0-0.31,0.03-1.05,0.16-1.43,0.12-0.38,0.49-0.69,0.75-0.94,0.25-0.25,1.43-0.78,1.43-0.78l1.47-0.88s0.38-1.71,0.38-2.59-0.5-2.25-0.63-2.56c-0.12-0.32-1.34-0.72-1.34-0.72s-1.5-1.19-1.94-1.19-2.46-0.56-2.9-0.69c-0.45-0.12-1.6-0.78-1.85-0.9-0.25-0.13-1.71-1.25-2.09-1.56-0.38-0.32-1.25-1.1-1.5-1.41-0.26-0.32-0.75-1.44-0.88-1.75-0.12-0.32-0.84-1.66-0.84-1.66s0-0.55-0.13-1.12c-0.12-0.57-0.18-1.65-0.18-2.41s1.02-0.62,1.28-0.62c0.25,0,1.68-0.25,2-0.32,0.31-0.06,1.03-0.74,1.22-1,0.19-0.25,0.37-1.77,0.31-2.09s-0.65-0.81-1.22-1-0.94-0.78-1.12-0.84c-0.19-0.07-2.16-0.88-2.16-0.88s-2.06-0.69-2.5-0.75-0.59,0.44-0.84,0.63c-0.26,0.19-0.5,0.37-1.32,0.37s-1.22-0.44-1.22-0.44l-0.87-1.18s-1.18,0.06-1.81,0.06c-0.64,0-0.91-0.59-1.16-0.91-0.25-0.31-1.06-0.56-1.06-0.56s-0.47-0.19-0.69-0.28c0-0.06,0.19-3.44,0.13-3.69-0.07-0.25-0.66-1.21-0.91-1.47-0.25-0.25-1.37-0.44-1.94-0.44s-1.4,0.6-1.84,0.85-1.06,0.75-1.31,0.94c-0.26,0.19-0.13,1.12-0.13,1.68,0,0.57-0.34,1.03-0.72,1.35-0.38,0.31-0.68,0.25-1.31,0.25s-1.12-0.19-1.63-0.31c-0.5-0.13-0.77-0.56-1.03-0.82-0.25-0.25-1.06-0.96-1.37-1.47-0.32-0.5-0.19-1.05-0.25-1.62-0.07-0.57-0.84-1.65-1.1-2.16-0.25-0.5-1.24-2.34-1.37-2.59s-0.56-1.28-1-1.91-0.9-1.99-1.28-2.62-0.74-1.09-1.5-2.1-0.78-0.56-1.35-0.68c-0.56-0.13-0.99-0.78-1.5-1.35-0.5-0.57-0.84-0.93-1.15-1.75-0.32-0.82-0.37-0.83-0.94-2.15-0.57-1.33-0.07-1.09,0.19-1.66,0.25-0.57,1.06-0.62,1.06-0.62l0.47-0.88s-0.38-1.59-0.31-2.09c0.06-0.51,0.36-0.56,1.06-0.75,0.69-0.19,1.56,0.75,1.94,0.75s1.59-0.5,1.9-0.82c0.32-0.31,0.32-1.08,0.32-1.71,0-0.64-0.62-1-1.13-1.13s-0.94-0.56-0.94-1.06c0-0.51,0.25-1.21,0.25-1.91,0-0.69,0-0.74-0.06-1.25-0.06-0.5-0.12-0.53-0.25-0.91-0.13-0.37,0.06-1.18,0.19-1.68,0.12-0.51,0.56-0.44,0.94-0.38,0.37,0.07,1.24,0.69,1.62,0.94s0.65,0.62,0.84,1,1,1.09,1.63,1.16c0.63,0.06,1.15-0.38,1.15-0.38s-0.09-0.52-0.34-1.09-0.81-1.44-1-1.81c-0.19-0.38-0.5-1.22-0.75-1.6s-0.44-0.5-0.44-0.75,0.69-2.09,0.69-2.41v-3.78c0-0.82,0.19-1.4,0.38-1.72,0.19-0.31,0.87-1.24,1.25-2.06s0.84-1.15,1.09-1.9c0.25-0.76,0.87-1.4,1.44-2.16s0.77-1,1.15-1.12c0.38-0.13,2.91,0.06,3.29,0.06,0.37,0,1.96-0.44,2.65-0.56,0.7-0.13,2.71-0.31,3.41-0.57,0.69-0.25,0.25-0.59,0.18-0.84-0.06-0.25-1.27-0.94-1.65-1.06-0.38-0.13-1.12-0.69-1.38-0.94-0.25-0.25-0.5-1.16-0.5-1.16s-0.59-2.96-0.65-3.28c-0.07-0.31-0.75-1.56-0.75-1.56s-0.13-5.18-0.13-5.63c0-0.44-0.68-2.02-1.37-2.34-0.7-0.32-0.91-0.99-0.91-1.5s0-0.96-0.12-1.59c-0.13-0.64-0.75-1.37-1-1.88-0.26-0.5,0.12-0.78,0.12-1.22s-0.12-1.18-0.5-1.5c-0.38-0.31-0.68-0.49-0.94-0.75-0.25-0.25-0.46-0.9-0.46-1.53s0.28-1,0.34-1.31c0.06-0.32,0.06-1.09-0.06-1.53-0.13-0.44-0.35-1.06-0.41-1.31-0.06-0.26-0.37-1.22-0.37-1.22s-0.5-0.44-0.69-0.44-0.94-0.19-0.94-0.19l-1.78-0.31s-1.69-0.44-1.81-0.69c-0.13-0.25-1.04-0.69-1.04-0.69l-1.56-0.59zm7.25,70.22c-0.88,0.44-1.12,0.43-1.06,1s0.37,1.09,0.63,1.47c0.25,0.38,0.44,0.93,0,1.44-0.45,0.5-1.45,0.52-1.19,1.15,0.25,0.63,0.49,1.06,0.75,1.31,0.25,0.26,0.81,0.9,0.94,1.41,0.12,0.51-0.01,1.06,0.31,1.56,0.31,0.51,0.31,0.69,0.69,0.69,0.37,0,0.59,0.32,0.65-0.5s-0.06-0.95,0-2.84c0.06-1.9,0-2.84,0.06-3.41,0.07-0.57,0.26-1.37,0-1.75-0.25-0.38-1.28-0.9-1.4-1.22-0.13-0.31-0.38-0.31-0.38-0.31zm58.91,12.47c-1.07,0.71-1.16,0.62-1.16,1.15,0,0.54-0.18,0.9,0.53,0.72,0.72-0.18,0.91-0.18,1-0.62,0.09-0.45-0.37-1.25-0.37-1.25zm-10.97,4.53c-0.63,0.45-1.08,0.2-0.81,1.09,0.27,0.9,0.44,1.16,1.15,1.25,0.72,0.09,0.73,0.1,2.07,0.1s2.31,0.06,3.03,0.06c0.71,0,0.99,0.36,1.43,0,0.45-0.36,0.63-0.07,0.54-0.78-0.09-0.72-1.24-0.9-2.22-0.81-0.98,0.08-1.52,0.34-3.13-0.19-1.6-0.54-2.06-0.72-2.06-0.72z","name":"Kamchatka Krai"},"in":{"path":"m33.393,395.68,0.08929,5.2679,17.946-8.5714-1.3393-1.25-2.9464-1.25-1.5179-1.9643-2.4107,2.4107-4.1071-2.6786-1.875,1.0714,0.08929,5.8929-1.5179,1.0714z","name":"Republic of Ingushetia"},"cc":{"path":"m33.482,401.04,1.0714,2.5,3.125,1.6964,3.4821,0.44642,2.1429-1.9643,2.1429,1.7857,2.5-1.5178-0.08929-1.6072,1.875-2.1428,2.8571,0.44642,3.8393-2.8571-0.625-1.9643-4.4643-0.53572,0.44643-2.7679z","name":"Chechen Republic"}}});
diff --git a/js/vmap/dist/maps/jquery.vmap.tunisia.js b/js/vmap/dist/maps/jquery.vmap.tunisia.js
new file mode 100644 (file)
index 0000000..599df4f
--- /dev/null
@@ -0,0 +1,2 @@
+/** JQVMap merc map for tunisia  */
+jQuery.fn.vectorMap('addMap', 'tunisia',{"insets": [{"width": 900, "top": 0, "height": 1954.3544733545057, "bbox": [{"y": -4519725.417185229, "x": 838669.3845975221}, {"y": -3535818.4871775922, "x": 1291768.476435734}], "left": 0}], "paths": {"tn-za": {"path": "M544.74,259.86l2.72,1.39l7.19,-0.8l12.57,4.89l6.58,1.79l1.94,4.02l3.89,5.26l1.57,2.68l1.05,2.92l2.21,1.45l2.38,0.61l2.1,2.54l3.23,1.77l2.82,-0.07l1.77,0.4l1.82,-0.2l1.09,0.44l0.38,1.26l-2.85,10.19l0.32,2.67l0.5,0.33l4.18,-1.24l3.47,-2.95l1.84,-0.52l0.98,-1.62l1.84,-0.95l9.62,-3.95l0.71,3.78l-1.2,9.68l-0.23,8.98l2.32,4.63l0.5,1.8l2.33,1.82l-1.15,3.44l0.08,3.65l2.92,5.28l0.62,2.65l-0.45,2.65l0.69,2.7l0.0,2.42l-0.92,1.17l-1.87,0.04l-1.82,0.73l-1.15,1.42l0.62,1.7l3.05,0.6l1.01,0.73l0.85,1.72l0.09,1.82l-1.76,2.6l-2.33,1.81l-5.25,0.52l-2.5,0.81l-5.24,-1.44l-2.52,-0.35l-4.58,1.11l-1.65,2.57l0.35,2.41l0.91,2.29l0.05,2.24l-1.14,5.1l-2.41,7.18l-1.25,0.98l-4.44,0.92l-1.96,1.11l-0.85,0.84l-2.61,-0.32l-4.42,1.35l-3.22,-0.6l-3.46,0.36l-2.5,-0.52l-0.46,0.25l-1.15,3.09l1.7,2.38l-0.08,2.79l-1.54,3.16l-0.56,3.15l-2.52,2.28l-2.88,1.77l-3.17,0.53l-1.96,-0.71l-2.25,-2.38l-1.39,-2.04l-0.55,-0.11l-2.14,1.4l-0.45,2.56l2.11,4.25l-1.67,3.27l0.21,4.88l-0.93,3.06l-1.56,2.42l-2.45,0.93l-2.88,-0.85l-2.14,-1.51l-1.79,-2.1l-1.35,-3.0l-2.16,-0.47l-2.46,-1.63l-1.9,-0.72l-2.99,0.47l-2.21,-0.75l-7.12,1.17l-3.09,-1.56l-1.98,-2.19l-2.79,-5.16l-8.94,-2.95l-2.99,1.11l-3.85,2.31l-1.36,1.35l-1.59,2.31l-0.89,0.01l-10.27,-3.61l1.51,-4.78l1.43,-2.07l1.29,-2.72l1.08,-2.45l0.76,-2.85l1.16,-2.28l1.09,-4.14l-0.48,-3.05l-2.29,-1.99l-9.72,-2.97l-1.94,-3.36l-1.89,-4.26l-6.23,-3.31l-2.06,0.47l-2.04,1.41l-1.3,0.16l-0.78,-2.44l0.05,-4.75l-0.54,-1.89l-4.85,-1.61l-3.66,-5.44l1.71,-0.74l5.26,0.79l4.1,-0.73l2.57,-0.86l5.41,-5.28l4.59,-2.74l1.75,-1.7l1.41,-3.49l2.34,-3.85l0.54,-2.47l1.25,-2.91l1.87,-13.37l0.16,-3.05l-0.37,-3.78l-0.96,-2.98l-2.4,-4.03l-1.82,-1.99l0.78,-2.14l9.8,-4.82l2.01,-2.76l2.1,-6.42l1.03,-2.19l1.53,-1.95l4.75,-3.74l4.27,-4.42l2.6,-1.02l3.86,0.23l2.81,-1.34l3.64,-4.82l1.81,-5.19l0.83,-4.15l3.28,-6.96l1.83,-1.71l2.48,-0.51l4.59,2.4l2.42,2.68l1.76,3.79l1.18,4.24l1.56,2.47Z", "name": "Zaghouan"}, "tn-bz": {"path": "M346.87,111.96l2.64,-1.16l1.34,0.62l1.78,-0.39l0.58,-0.71l0.29,-1.37l0.84,-0.23l1.77,-1.7l1.3,-0.46l2.92,-2.33l2.09,-2.55l1.05,-1.91l0.58,0.0l0.4,-0.4l0.55,-1.85l-0.31,-0.56l1.54,-1.3l1.23,-1.91l5.52,-4.48l0.32,0.0l-0.18,0.99l0.61,0.94l-0.18,1.37l0.68,0.4l-0.06,0.53l0.47,0.42l-0.59,0.89l0.65,0.71l2.52,0.46l3.5,-0.14l1.29,0.45l1.26,-1.23l2.61,-0.23l1.6,-1.54l1.54,0.0l0.58,-0.93l0.83,0.0l0.57,-0.62l2.14,0.39l2.66,-0.54l2.44,0.23l1.97,-0.77l2.78,-1.78l0.72,-0.15l0.63,-0.7l0.6,0.0l3.07,-1.39l3.23,-2.72l0.68,-0.77l-0.12,-0.6l1.34,-0.54l1.52,-0.16l1.8,-1.24l4.76,0.23l2.21,0.46l2.11,1.16l1.72,-0.23l5.71,-1.93l2.05,-1.85l2.13,-0.77l1.9,-1.16l1.66,-1.31l0.4,-0.4l-0.17,-0.25l1.45,-1.28l1.66,-0.62l1.15,0.0l1.29,-0.93l2.66,-1.0l0.94,0.59l0.92,1.64l0.83,0.71l1.66,0.0l1.06,-0.69l1.64,-0.16l3.64,-2.39l3.24,-1.39l6.21,-4.64l0.89,-1.16l1.14,-0.16l1.51,-1.34l1.63,0.65l2.34,0.0l0.76,-0.86l0.7,-0.15l1.43,1.16l0.52,-0.33l0.59,0.56l0.86,0.0l0.69,-0.46l2.57,-0.15l2.27,-1.24l1.47,-1.29l1.01,-0.02l2.72,0.62l0.37,0.5l-0.12,0.96l2.55,2.18l1.15,0.0l2.84,0.93l5.13,-0.15l0.52,0.31l0.82,-1.78l2.03,-0.93l2.26,0.15l0.37,-0.37l1.72,0.83l1.18,-0.31l1.4,0.31l1.5,-0.22l0.25,0.41l-0.06,2.89l0.86,1.2l-0.25,4.05l1.29,2.3l0.06,2.18l1.32,1.84l-0.46,0.4l0.33,1.83l-2.49,2.04l-0.52,-0.33l-2.89,0.39l-0.46,0.48l0.06,0.77l0.4,0.4l1.38,0.28l-2.12,0.39l-0.65,0.56l-0.7,-0.25l-0.65,0.63l0.45,0.99l-0.54,-0.23l-0.68,0.36l-0.48,-0.52l-0.43,0.0l-1.2,1.54l-1.38,-0.08l-0.46,0.49l0.68,0.98l-0.32,0.23l-1.37,-1.23l-0.61,0.0l-1.11,0.46l-0.63,0.7l-1.52,-0.08l-0.75,0.62l-2.01,-0.15l-1.01,1.25l-0.06,3.16l0.89,0.68l-0.63,0.15l-0.66,-1.0l-1.21,-0.23l-0.6,-1.68l-0.89,-0.55l-0.58,0.55l0.86,1.41l-1.26,0.28l-0.46,0.55l1.63,1.4l0.55,-0.3l1.76,1.77l0.31,0.77l-0.98,1.84l0.4,0.48l1.35,-0.08l1.14,-1.42l0.18,1.04l-1.35,3.76l0.06,2.01l2.0,2.33l2.44,0.93l-0.08,0.45l1.23,0.79l0.74,1.42l-0.55,0.88l-0.37,2.54l2.24,2.33l0.56,-0.13l2.86,0.59l0.39,0.39l1.71,-0.31l3.21,1.16l2.4,-0.23l2.89,-1.85l1.83,-2.16l1.67,-0.08l0.94,-1.16l1.21,-0.08l2.09,-0.85l2.0,-2.87l1.41,-2.78l1.84,-5.63l0.55,-3.78l-0.31,-2.55l-1.57,-1.79l-1.72,-0.39l-1.98,0.23l-3.06,-0.15l-1.4,0.39l-3.87,-1.16l-0.87,-0.62l-2.46,-0.46l-2.41,0.69l-1.77,0.0l-1.94,1.77l-1.18,-0.08l-0.51,-0.54l-0.77,0.15l0.18,-0.62l1.38,0.03l2.03,-1.31l0.65,-1.02l-0.43,-0.68l1.81,-0.7l1.78,-1.39l1.41,-0.08l2.06,-2.56l0.18,-1.76l1.82,-1.52l0.48,0.52l0.74,0.15l0.52,-0.34l0.49,0.41l0.18,0.99l0.65,0.79l1.54,0.69l1.28,0.16l0.94,0.69l1.21,-0.16l10.46,2.16l2.95,0.23l0.69,-0.23l1.83,0.16l3.09,-1.16l2.75,-0.16l4.87,-2.63l3.61,-0.85l3.35,-1.64l0.0,0.53l-0.68,1.09l0.43,1.08l2.03,1.94l-0.06,0.99l2.37,2.79l1.29,0.54l3.92,-0.23l1.06,0.46l1.34,-0.08l6.81,2.93l0.58,0.93l0.92,0.09l1.41,1.6l0.29,-0.08l1.25,0.93l0.97,0.16l0.57,0.69l0.66,0.0l1.12,1.08l0.95,-0.08l-0.25,0.29l0.18,0.46l0.65,0.63l2.73,1.39l0.12,1.45l1.14,1.33l1.29,0.77l3.07,0.39l3.35,-0.46l1.37,0.23l0.94,0.85l3.86,-0.39l1.03,0.59l-1.69,0.16l-4.12,1.46l-0.75,1.22l-0.3,-0.3l-3.75,0.15l-0.46,0.79l0.56,0.48l-0.52,0.2l-0.85,1.13l-0.41,-0.29l-0.06,-1.6l-0.58,-0.86l-1.54,0.08l-0.62,-0.46l-2.27,-0.08l-1.8,0.85l-2.4,0.23l-5.15,-0.15l-1.41,0.39l-1.69,1.79l-0.43,1.48l-2.09,3.53l0.8,0.62l-0.18,0.7l0.86,0.83l0.06,0.58l-2.9,0.03l-2.01,-0.69l-2.71,-0.23l-5.35,2.57l-4.12,4.26l-1.95,-0.71l-0.49,0.19l-0.93,2.21l1.75,3.86l-0.26,2.64l0.16,6.08l-2.07,4.82l-3.88,7.05l-6.47,5.23l-0.31,3.74l-3.24,8.4l1.5,2.44l-2.35,2.37l-1.93,0.85l-3.68,0.74l-2.3,1.13l-1.8,-0.14l-1.07,-1.18l-0.82,-2.56l-2.19,-4.03l-1.82,-1.4l-4.53,-1.71l-3.37,-0.31l-2.89,-0.76l-10.52,0.15l-5.27,-3.59l-0.49,0.05l-1.94,1.96l-0.63,4.19l-3.57,3.8l-1.23,2.42l-1.45,4.57l-1.67,1.69l-1.95,1.16l-3.14,0.5l-2.89,-1.28l-2.49,0.1l-3.34,3.09l-2.7,0.82l-3.78,0.51l-5.66,6.42l-1.49,-2.59l-4.66,-0.26l-2.6,1.13l-2.84,3.11l-3.42,4.85l-2.47,1.86l-4.34,4.47l-5.25,6.86l-2.02,1.67l-1.88,2.1l-7.6,5.25l-7.73,7.22l-4.26,0.9l-2.52,-0.65l-1.58,-1.83l-2.36,0.12l-0.48,-0.47l-0.68,-4.29l-1.84,-4.36l-0.46,-2.3l3.43,-7.04l0.84,-3.12l2.42,-5.56l-0.86,-2.7l-2.87,-4.34l-2.97,-2.6l-3.39,-0.8l-3.81,0.17l-2.4,0.45l-4.57,-4.17l-1.57,-2.57l-4.7,-2.87l-1.62,-1.5l-0.26,-6.49l-0.69,-2.8l-7.1,-8.59l-0.52,-2.48l-0.11,-5.41l-0.72,-5.28l-5.48,-9.5l-5.71,-0.18l-2.76,0.76l-2.34,1.25l-1.79,1.58l-2.84,1.08l-3.32,0.4l-1.61,-0.39l-0.0,-2.43l-0.96,-4.86l-1.7,-4.95l0.06,-1.91l4.06,-7.1l0.34,-2.85l-1.28,-2.27l-0.44,-1.97l1.75,-0.08ZM596.93,112.81l0.9,-0.86l0.62,0.4l-1.06,0.73l-0.46,-0.26ZM498.79,95.3l-0.28,-0.46l0.59,-0.4l-0.25,-0.86l1.97,-1.6l0.42,-0.91l1.06,-0.88l0.71,0.73l0.83,0.0l-1.78,2.53l-0.37,1.3l-1.01,-0.15l-1.31,1.06l-0.57,-0.34ZM506.78,89.05l0.06,0.0l0.0,0.06l-0.06,-0.06ZM303.01,11.56l0.17,-0.7l2.29,-1.48l0.29,-0.92l0.78,0.15l2.08,-0.78l2.16,0.08l1.57,-1.72l0.0,-0.76l1.1,0.16l0.0,1.31l2.21,2.62l-0.68,0.79l-0.65,1.6l-0.5,-0.14l-1.77,-2.09l-1.53,0.46l-1.24,1.16l-1.35,-0.15l-2.17,1.32l-1.98,-0.08l-0.8,-0.82ZM315.36,0.56l0.01,-0.08l0.2,0.2l-0.02,0.03l-0.18,-0.14ZM296.55,17.42l0.57,-0.52l0.66,0.31l0.25,0.59l-1.47,-0.39ZM298.75,18.27l0.02,-0.06l0.12,0.13l-0.1,-0.08l-0.04,0.0Z", "name": "Bizerte"}, "tn-bj": {"path": "M304.73,149.07l2.7,-2.82l1.04,-0.63l0.38,-0.92l6.45,-5.94l1.23,-2.76l0.55,-0.55l0.06,-0.92l0.43,-0.68l2.52,-2.48l1.91,-3.16l0.12,-0.92l-0.46,-0.48l-0.43,0.0l0.19,-0.19l0.37,0.14l2.72,-2.39l1.46,-0.31l1.94,-2.17l0.29,-1.22l1.09,0.08l0.83,-0.63l0.06,-0.93l1.31,-1.84l0.57,0.15l0.39,-0.39l1.4,-0.08l1.57,-1.62l1.64,-1.0l2.32,-0.39l1.78,-0.93l0.63,-0.69l1.52,0.23l1.01,-0.62l0.53,2.31l1.24,2.2l-0.36,2.39l-4.0,6.94l-0.13,2.32l1.73,5.08l0.96,4.83l-0.01,2.58l0.31,0.39l1.99,0.48l3.58,-0.4l3.05,-1.14l1.86,-1.62l2.26,-1.2l2.57,-0.7l5.05,0.04l5.25,9.15l0.67,5.03l0.12,5.42l0.56,2.69l7.1,8.6l0.66,2.66l-0.04,3.94l0.44,2.9l1.85,1.69l4.58,2.79l1.52,2.52l4.76,4.34l6.58,-0.55l2.96,0.67l2.78,2.42l2.81,4.25l0.76,2.13l-2.37,5.42l-0.83,3.09l-3.51,7.4l0.52,2.55l1.81,4.26l0.7,4.38l0.83,0.92l2.32,-0.14l1.73,1.88l2.73,0.71l4.81,-1.02l7.81,-7.29l7.66,-5.3l1.89,-2.11l2.04,-1.7l5.23,-6.85l4.3,-4.44l2.31,-1.73l0.5,1.06l2.84,3.51l1.49,1.35l-0.58,2.65l0.24,1.44l1.59,0.83l2.26,-1.06l0.59,1.16l0.42,2.37l1.1,2.29l1.64,2.08l4.36,2.29l2.38,0.79l4.16,0.58l11.62,8.22l1.56,1.64l1.75,0.31l1.78,-0.13l2.42,-2.13l2.43,-0.66l0.28,0.64l-0.91,7.11l1.69,6.94l3.56,6.62l1.77,2.04l2.56,1.81l3.08,6.55l4.94,6.17l1.44,2.63l0.55,1.88l-2.17,0.89l-4.28,4.43l-4.84,3.83l-1.58,2.02l-1.11,2.33l-2.11,6.44l-1.86,2.52l-9.91,4.94l-0.84,2.94l1.91,2.07l2.26,3.81l-1.16,2.08l-3.72,0.64l-9.31,-1.12l-1.55,1.54l-0.98,2.05l0.02,1.83l-2.83,0.94l-2.37,-1.72l-3.49,-0.13l-4.09,0.63l-4.82,-0.92l-2.06,-2.21l-2.28,-3.43l-4.53,-4.0l-2.19,-1.24l-4.47,1.28l-1.85,1.03l-3.43,-0.81l-4.41,0.22l-2.81,-0.37l-4.12,0.27l-6.64,1.09l-8.24,3.03l-2.4,2.71l-0.8,3.33l-0.1,4.26l0.82,2.91l-0.4,2.46l-2.23,2.42l-4.78,2.61l-3.34,0.96l-2.16,-1.22l-2.48,-2.3l-1.16,-1.96l-1.27,-1.32l-2.5,-1.11l-2.78,-0.76l-3.61,-0.45l-4.75,-0.04l-5.96,-0.74l-1.28,0.59l-5.56,4.12l-7.53,2.57l-2.1,-0.82l-3.2,-3.13l-2.29,-0.16l-0.42,-1.28l0.68,-3.9l-1.24,-1.96l-3.66,-2.52l-1.64,-4.36l-2.17,-1.55l-2.11,-0.29l-2.99,0.26l-1.89,-0.3l-2.53,-2.89l2.7,-0.15l4.48,-1.05l3.48,-1.18l0.27,-0.38l-0.21,-5.31l0.52,-5.99l0.78,-2.5l4.61,-7.57l0.44,-2.77l0.28,-6.79l-0.18,-3.23l-1.48,-3.19l-7.91,-9.79l-2.61,-5.95l-0.23,-3.2l0.91,-3.56l1.92,-5.18l1.7,-3.14l-4.13,-9.63l-1.47,-2.4l-2.59,-1.74l-3.06,-1.12l-14.79,-1.07l-0.59,-1.22l0.14,-2.27l0.95,-2.62l0.24,-5.73l0.48,-1.63l4.43,-2.45l4.38,-3.72l1.31,-2.54l2.24,-3.28l1.14,-6.32l-2.0,-2.02l-4.69,-2.89l-2.17,-0.65l-2.77,-1.85l-1.28,-2.23l-0.82,-2.84l0.05,-2.3l0.63,-1.52l3.12,-4.66l0.35,-2.36l-0.04,-2.64l-3.39,-3.47l-6.51,-4.08Z", "name": "Beja"}, "tn-ba": {"path": "M555.79,232.61l2.34,0.88l2.91,0.49l4.38,-0.1l2.91,-0.65l2.08,-1.0l3.0,-3.29l0.67,-2.14l1.23,-1.68l2.37,0.23l2.18,1.08l3.24,0.01l4.53,-1.1l2.68,-0.31l1.69,-1.5l0.71,-1.53l0.4,-2.04l-0.28,-2.9l0.6,-0.27l0.4,0.4l0.68,-0.08l2.23,-1.76l0.6,-0.15l0.46,-0.48l-0.13,-0.37l1.17,0.24l0.06,0.9l1.11,1.02l-0.19,0.36l0.68,1.3l2.06,2.01l1.72,0.08l1.94,-1.47l0.37,-1.99l-0.43,-0.68l0.06,-4.01l-0.52,-0.63l-0.95,-0.44l-0.51,-1.59l1.28,-0.3l0.98,1.14l1.15,0.31l-0.63,0.75l1.2,0.71l1.51,-1.55l-0.12,-1.83l1.98,-0.15l1.09,0.61l-1.14,0.5l-1.32,1.87l-0.97,0.89l-0.41,-0.08l-0.46,0.63l0.49,1.29l-0.12,1.09l1.84,2.36l0.12,0.81l-0.37,0.43l0.18,1.61l0.71,0.63l0.4,-0.4l-0.18,-0.84l3.56,4.76l6.05,5.15l5.96,3.14l4.18,1.23l-1.41,6.39l-1.41,0.61l-1.46,1.32l-1.11,7.0l-1.95,5.62l-4.4,5.59l-0.83,1.48l0.44,1.79l0.35,0.28l4.7,0.46l1.52,1.23l0.21,2.04l-0.58,2.18l-3.53,7.21l-0.18,2.07l-2.48,5.12l-0.37,1.98l0.16,0.4l1.36,0.87l4.46,0.09l0.45,0.65l-1.14,1.14l-14.01,5.69l-1.96,1.02l-0.88,1.55l-1.89,0.57l-3.38,2.9l-3.61,1.08l-0.26,-1.98l2.86,-10.19l-0.47,-1.8l-1.79,-0.84l-1.85,0.2l-1.73,-0.4l-2.56,0.12l-3.07,-1.68l-2.02,-2.48l-2.54,-0.71l-2.03,-1.33l-0.89,-2.69l-1.62,-2.77l-3.88,-5.26l-1.97,-4.08l-6.94,-2.03l-12.67,-4.93l-7.32,0.78l-2.15,-1.11l-1.42,-2.22l-1.2,-4.27l-2.07,-4.2l1.48,-1.75l2.23,-1.7l2.43,-1.3l6.49,-7.08l0.84,-2.07l1.65,-2.13ZM596.34,213.83l0.02,0.02l-0.04,0.0l0.02,-0.02Z", "name": "Ben Arous"}, "tn-gf": {"path": "M133.61,830.47l0.8,-1.16l1.16,0.04l1.76,-0.46l0.33,-0.56l-0.32,-1.07l0.93,-1.91l1.16,-0.41l0.15,-0.9l0.96,0.06l0.76,-0.33l0.27,-0.74l-1.14,-2.07l0.32,-0.25l-0.34,-0.84l1.67,0.63l0.51,-0.38l-0.29,-2.36l1.23,0.07l2.14,0.86l2.62,-0.79l1.14,0.08l0.63,-0.79l1.08,0.33l1.97,-0.08l0.59,-0.35l0.23,-0.81l-0.36,-0.66l-1.25,-0.41l-2.03,-1.59l0.7,-0.18l0.29,-0.43l0.52,-3.27l1.76,-0.23l1.14,-1.1l0.8,0.08l0.23,-0.55l-0.3,-0.71l0.58,-0.3l1.22,0.58l2.89,-0.37l0.04,-0.71l-1.48,-1.94l-0.23,-2.14l1.2,-1.14l2.63,-1.19l1.11,-0.93l0.87,0.28l1.27,-0.8l0.12,-0.86l1.4,-1.69l0.05,-1.08l-0.43,-0.77l-0.49,-0.4l-1.24,-0.22l-0.58,0.5l-2.44,0.09l-3.5,-2.34l-1.01,-2.23l0.96,-2.59l4.66,-0.42l0.8,-0.69l1.96,-2.72l0.3,-1.17l3.34,-4.44l0.62,-2.25l0.79,-0.29l1.59,0.75l1.28,0.22l1.85,-1.04l-0.07,-1.16l-2.27,-0.37l-1.69,-1.35l-1.1,-1.46l17.14,7.42l7.58,4.37l5.03,0.14l3.6,2.33l8.72,6.88l3.87,3.69l4.13,2.58l6.13,1.85l4.98,-0.37l0.36,-0.29l0.82,-3.07l-1.64,-6.19l7.86,-3.15l13.91,-7.44l4.35,-2.86l3.52,-1.46l5.86,-1.25l5.77,-2.99l3.84,-3.9l5.5,-2.77l2.08,2.02l2.29,1.58l2.78,0.9l5.6,2.81l2.67,0.68l5.84,0.82l1.93,1.1l2.41,2.27l2.9,1.18l3.1,0.71l3.27,2.61l2.39,1.11l15.01,-4.09l5.13,-3.02l7.96,4.08l5.28,0.76l5.09,-1.1l2.81,1.81l3.79,0.41l3.1,2.24l5.13,-0.35l3.91,6.67l1.6,0.92l3.06,0.16l3.74,-3.22l1.51,-2.45l1.27,1.51l-0.0,3.15l-2.23,2.78l-2.14,1.59l-1.42,1.62l-1.25,2.25l0.86,3.09l1.65,2.49l0.53,2.05l-0.69,2.42l-0.23,7.43l0.41,2.4l1.27,1.99l2.4,1.71l2.18,0.02l1.92,-0.82l2.27,0.63l3.17,2.3l2.61,1.98l1.16,1.98l-0.11,3.11l1.55,1.81l5.44,-0.34l9.87,1.23l10.13,5.95l4.35,4.11l2.27,4.19l2.38,3.57l2.9,1.45l4.76,1.53l6.29,1.32l3.29,1.9l3.18,1.17l1.41,2.34l-1.0,3.28l-1.87,3.16l-1.01,4.68l-1.02,7.52l-2.34,6.23l0.79,2.41l1.78,1.45l-1.41,4.17l-2.32,4.94l-4.41,3.92l-4.88,2.33l-10.86,4.15l-6.85,0.63l-19.19,-3.68l-6.46,0.82l-4.36,2.19l-4.73,1.47l-4.53,3.42l-4.32,2.55l-4.08,1.08l-6.92,0.42l-4.36,0.74l-3.69,-0.1l-3.08,1.72l-2.7,1.07l-2.56,-0.72l-2.71,-1.62l-2.63,-0.99l-6.78,2.04l-5.01,2.02l-3.7,2.0l-2.35,2.58l-1.38,2.46l3.23,6.81l0.17,2.64l-1.33,2.87l-3.07,2.79l-5.95,0.5l-5.63,-0.64l-5.22,-1.24l-3.26,-1.72l-4.14,-3.38l-3.26,0.77l-2.94,2.6l-5.31,1.56l-7.89,-1.12l-6.49,-0.26l-9.93,0.77l-5.74,1.12l-4.49,1.07l-5.86,2.79l-0.52,1.4l-4.63,-1.82l-5.08,-1.25l-2.89,-1.14l-6.75,0.33l-5.52,-0.3l-8.27,1.2l-9.65,0.19l-10.23,-0.26l-8.04,2.23l-4.61,0.59l-2.42,-0.21l-0.3,-1.83l2.29,-5.07l0.2,-3.43l-2.87,-2.73l-2.4,-1.41l-0.81,-3.5l-1.66,-2.49l-3.63,-1.93l-10.87,-4.61l-5.77,-1.91l-9.43,-1.0l-3.25,-3.34l-2.1,-4.61l-2.5,-4.41l-6.93,-6.39l-11.74,-8.06l-5.12,-4.87l1.34,-3.97l2.96,-3.37l5.02,-7.72l1.26,-4.02l2.38,-0.83l3.95,-0.19l5.12,-1.42l3.85,-2.53l0.15,-0.48l-1.22,-2.94l-10.12,-5.98l-0.3,-2.38l1.11,-5.28l2.42,-3.16l2.07,-3.45l1.67,-4.43l-2.07,-3.64Z", "name": "Gafsa"}, "tn-ms": {"path": "M653.52,557.43l0.84,-1.3l2.94,-1.27l5.72,-3.87l1.88,-2.39l0.68,-3.27l-2.8,-4.92l0.21,-2.67l1.74,-1.99l3.09,-0.96l6.3,-0.37l2.84,-1.43l1.47,-2.52l0.32,-2.91l1.2,-2.85l5.43,-5.67l0.21,-2.71l-1.62,-3.15l-0.13,-4.72l0.65,-5.6l1.24,-2.72l-1.12,-3.02l4.39,-0.23l1.49,-2.59l0.61,-3.82l-0.6,-2.73l2.61,-2.87l5.13,4.71l2.46,0.99l6.33,4.24l1.41,0.38l1.9,0.23l2.77,-0.3l1.78,-0.76l1.63,-1.14l1.26,-0.08l1.72,-1.94l0.53,-0.1l0.95,0.6l0.6,-0.29l0.75,0.14l1.66,-0.76l0.81,-0.83l1.0,0.15l1.63,0.91l0.97,-0.15l1.8,0.3l0.58,-0.49l0.46,0.51l-0.52,0.94l1.97,1.46l0.04,0.7l-0.78,1.93l0.0,0.89l-0.55,0.38l-0.59,-0.23l-0.8,0.3l-0.46,0.55l0.06,0.58l-0.74,0.7l0.13,0.66l-1.12,2.89l-0.12,1.97l0.37,1.51l-1.23,1.67l1.3,1.73l-0.01,0.69l0.92,1.59l1.32,1.61l2.95,1.45l1.04,1.2l0.48,0.0l1.55,1.13l2.99,0.23l0.82,1.21l0.68,0.38l0.54,-0.15l0.93,1.13l1.09,-0.15l1.8,0.76l3.86,0.76l1.24,0.76l2.94,0.61l2.29,1.13l1.35,0.15l1.03,-0.68l0.23,0.89l0.71,0.63l4.58,0.53l1.14,2.12l1.96,0.85l0.93,1.19l0.98,0.68l1.89,-0.08l3.5,0.53l1.89,0.68l2.37,1.77l-0.77,0.93l-0.06,3.72l-0.31,1.06l-1.72,3.39l-0.8,2.83l-11.14,1.71l-0.36,0.43l1.35,2.62l-1.47,1.31l0.18,1.52l-0.3,0.34l-1.2,-0.3l-2.78,1.36l-2.14,-0.3l-1.5,1.15l-0.06,-1.36l-0.4,-0.4l-0.85,0.08l-0.97,-0.92l-0.06,-0.72l-0.4,-0.4l-0.8,-0.04l-3.87,2.28l-5.35,4.16l-7.33,4.54l-5.34,5.75l-2.95,2.72l-0.19,5.12l-1.31,1.09l-2.33,0.46l-3.3,0.2l-7.3,-1.67l-3.1,-3.05l-2.66,-4.49l-0.81,-3.13l-0.32,-0.29l-2.26,-0.41l-4.25,0.82l-2.84,0.15l-5.42,-0.84l-2.42,-0.7l-10.07,0.43l-3.07,-2.68l-2.8,-1.61l-4.92,1.07l-1.71,1.0l-0.99,1.97l-0.48,2.24l-0.82,1.67l-2.11,-0.34l-1.86,-1.34l-2.07,-0.45l-1.72,-1.64l-1.2,-2.2l-0.85,-2.82l-0.09,-2.03ZM729.78,500.25l-0.04,0.04l-0.04,-0.04l0.0,-0.0l0.07,0.0ZM730.77,489.62l0.07,-0.07l-0.06,0.3l0.0,-0.23l-0.01,-0.01ZM776.66,530.1l-0.03,-0.03l0.04,0.03l-0.01,0.0ZM773.24,488.32l-0.73,-0.9l1.11,-1.43l0.49,-1.19l1.13,-0.53l1.1,0.08l1.09,1.81l-1.21,1.25l-2.97,0.91ZM768.51,494.0l-0.06,-0.41l0.94,0.15l0.66,1.19l-0.58,-0.63l-0.95,-0.3ZM730.34,506.27l0.12,-0.14l0.12,0.37l-0.31,-0.0l0.06,-0.24Z", "name": "Monastir"}, "tn-to": {"path": "M0.85,1023.06l5.17,-9.76l-2.66,-11.0l-2.9,-7.94l5.01,-7.93l-1.24,-10.33l3.52,-10.85l-5.84,-6.8l-1.51,-3.59l0.33,-2.14l1.02,-0.89l3.04,-0.86l1.6,-0.14l1.25,-1.57l3.86,-0.8l1.76,-1.36l0.53,-1.3l-0.79,-0.93l-0.47,-0.01l-1.1,0.73l-0.15,-0.47l1.65,-1.45l0.51,0.1l1.36,-0.78l0.44,0.18l0.53,-0.27l0.45,-0.86l2.71,-1.08l1.16,-6.92l9.08,-14.97l16.68,7.74l0.4,-0.04l17.21,-12.26l0.14,-1.59l-0.56,-6.62l1.12,-2.56l0.11,-1.59l8.31,-26.46l-0.44,-1.69l0.33,-1.01l-0.18,-0.49l0.41,-1.84l0.65,-0.53l0.24,-1.17l-0.22,-0.62l-0.64,-0.13l-0.39,-1.81l0.39,-0.87l0.15,-2.69l1.44,0.17l1.85,-0.53l1.24,0.18l1.97,-1.45l0.74,-0.94l0.83,-0.23l2.42,0.56l0.9,-0.3l1.66,0.16l1.8,-1.11l1.26,-0.25l0.49,-0.59l0.03,-1.56l0.7,-1.08l1.42,-1.8l1.29,0.09l0.89,-0.42l0.33,-1.76l1.05,-0.38l3.08,0.33l5.57,-2.45l2.8,-0.28l2.19,-4.24l5.07,-5.25l6.41,-0.88l0.26,-1.86l0.83,-0.42l0.24,-0.61l0.69,-0.45l0.47,-1.72l0.7,0.34l1.62,0.03l1.26,0.62l1.39,-0.54l2.15,0.28l0.59,-1.95l0.69,-1.03l1.33,-1.05l2.32,3.55l-1.56,4.15l-2.04,3.4l-2.49,3.3l-1.16,5.51l0.33,2.74l10.35,6.28l0.9,2.32l-3.41,2.27l-5.02,1.39l-3.99,0.19l-2.63,0.92l-1.5,4.32l-4.97,7.64l-3.03,3.47l-0.92,2.26l-0.43,2.49l5.37,5.09l11.69,8.02l6.87,6.33l2.38,4.24l2.1,4.63l3.48,3.61l9.69,1.11l5.68,1.88l10.86,4.6l3.34,1.73l1.5,2.21l1.02,3.85l2.45,1.43l2.56,2.26l-0.14,3.01l-2.32,5.14l0.34,2.47l0.36,0.33l2.86,0.24l4.67,-0.6l7.96,-2.21l10.17,0.26l9.7,-0.19l8.31,-1.2l5.46,0.31l6.68,-0.32l2.72,1.11l5.05,1.24l4.67,1.85l-1.83,8.35l-3.97,9.37l-5.56,5.72l-4.83,6.93l-4.52,7.52l-3.46,4.15l-13.35,10.93l-8.65,5.88l-10.79,8.74l-17.4,15.85l-2.64,1.17l-15.49,13.61l-8.52,6.31l-6.84,4.46l-8.12,6.54l-8.62,6.24l-14.17,13.29l-26.47,21.42l-13.56,9.69l-12.44,4.71l-8.0,2.17l-2.42,-2.95l-0.59,-1.87l-23.34,-36.31l-7.09,-18.14l1.29,-11.15l-0.84,-3.92l-0.23,-3.41l-1.56,-9.49l-5.5,-7.27l-8.43,-4.57Z", "name": "Tozeur"}, "tn-kb": {"path": "M50.05,1122.84l7.76,-2.11l12.52,-4.75l13.69,-9.77l26.52,-21.47l14.14,-13.25l8.61,-6.23l8.13,-6.55l6.83,-4.44l8.55,-6.33l15.48,-13.6l2.66,-1.18l17.42,-15.87l10.77,-8.72l8.65,-5.87l13.4,-10.98l3.59,-4.3l4.53,-7.53l4.79,-6.87l5.63,-5.84l4.0,-9.45l2.33,-10.19l5.66,-2.69l10.03,-2.14l4.55,-0.53l5.28,-0.23l6.38,0.25l8.12,1.12l5.48,-1.61l3.08,-2.67l2.79,-0.61l3.67,3.19l3.52,1.85l5.34,1.26l5.69,0.65l6.21,-0.51l3.47,-3.04l1.54,-3.35l-0.21,-2.95l-3.19,-6.37l1.2,-2.15l2.16,-2.41l3.58,-1.94l4.94,-1.99l6.38,-2.0l2.4,0.9l2.82,1.67l3.0,0.76l2.91,-1.15l2.79,-1.63l3.7,0.1l4.34,-0.74l7.01,-0.44l4.17,-1.11l2.75,-1.61l2.75,3.67l2.96,2.41l7.72,8.22l2.86,2.32l1.83,2.28l0.75,1.91l-5.46,7.42l-2.91,1.68l-3.02,2.91l-3.92,2.66l-2.38,2.59l-1.56,2.59l-0.56,3.56l0.88,5.24l-1.05,13.95l-0.82,3.56l-0.25,5.65l0.11,4.83l1.41,8.15l1.84,3.69l3.82,5.65l2.78,5.62l3.38,2.99l4.09,8.25l2.57,5.58l0.44,6.26l2.18,6.97l1.29,1.76l4.46,1.35l2.67,2.44l0.46,0.02l1.83,-1.17l2.97,-0.02l3.35,0.63l5.65,6.03l0.35,4.65l0.66,3.62l3.36,2.06l3.71,-0.89l5.98,-0.25l1.91,1.55l1.7,3.93l2.34,3.58l3.08,1.2l4.65,2.55l-4.41,4.03l-3.93,4.93l-0.19,3.56l0.37,6.28l-0.78,1.51l-2.94,1.9l-1.47,2.18l0.01,0.47l6.0,7.05l1.5,3.48l8.22,5.62l3.12,1.73l3.11,2.72l3.91,12.02l5.28,7.08l3.5,6.97l8.58,7.95l10.56,10.91l5.22,3.99l2.86,0.5l3.33,3.85l3.75,1.03l3.13,1.53l7.6,-0.75l6.27,0.79l3.56,2.61l0.17,6.82l-0.4,22.87l-1.94,2.16l-2.28,1.23l-1.03,2.99l-0.65,3.43l1.24,1.48l1.85,1.27l2.48,5.81l6.24,2.05l2.91,2.04l5.99,3.36l2.19,3.11l-0.59,1.19l-9.22,0.14l-2.13,0.59l-1.72,2.07l0.25,3.44l-0.14,6.09l1.1,3.05l0.57,7.66l1.09,2.13l5.18,2.81l0.77,1.49l-1.88,4.06l-2.63,1.03l-2.44,1.57l-1.18,2.63l-1.85,2.01l-2.83,1.24l-1.58,2.06l0.58,3.8l1.26,2.76l-0.07,2.46l-2.85,5.73l-2.05,0.92l-1.65,1.66l-0.09,0.43l1.25,3.1l5.11,4.27l3.03,3.15l2.28,2.95l2.67,2.52l1.67,2.37l-0.66,2.22l-2.3,0.42l-2.21,-1.26l-2.45,-0.77l-7.54,-1.47l-2.91,-2.81l-1.62,-3.92l-1.91,-3.52l-5.71,-3.02l-3.13,-0.72l-3.58,-1.47l-4.96,-2.89l-2.93,-5.25l-2.38,-5.07l-0.42,-3.11l-1.9,-3.41l-3.03,-1.44l-6.01,1.37l-3.0,1.08l-6.64,-0.96l-2.66,1.91l-2.93,1.3l-3.65,1.23l-7.8,1.6l-16.56,10.73l-27.73,7.88l-21.32,5.34l-20.95,7.29l-55.16,0.91l-70.86,18.66l-53.18,14.74l-6.41,1.4l-6.97,-77.21l-16.71,-26.63l-17.3,-21.24l-1.46,-0.88l-10.21,-10.95l-0.34,-0.62l0.01,-2.12l0.61,-6.59l-0.13,-3.96l-7.22,-3.85l-5.88,-2.72l-1.49,-0.33l-0.86,-0.92l-1.27,-0.3l-12.52,-6.11l-5.08,-2.11l-2.48,-1.21l-1.1,-0.88l-1.08,-0.18l-7.91,-3.81l-3.74,-0.61l-11.52,-0.69l-0.87,0.23l-6.55,-16.33l-3.33,-9.46l-4.07,-21.09l-0.96,-3.6l-2.28,-13.0Z", "name": "Kebili"}, "tn-ta": {"path": "M341.01,1475.73l-1.11,-0.12l-58.51,-38.82l-64.13,-45.95l-33.83,-23.72l-0.57,-6.3l6.54,-1.43l53.18,-14.75l70.81,-18.64l55.2,-0.92l20.96,-7.3l21.31,-5.34l27.8,-7.9l16.64,-10.77l7.66,-1.54l3.71,-1.24l3.02,-1.34l2.36,-1.81l6.75,0.94l3.01,-1.09l5.88,-1.33l2.49,1.28l1.63,3.07l0.41,3.09l2.42,5.17l3.14,5.51l5.13,2.99l3.64,1.49l3.05,0.68l5.61,2.98l3.28,7.15l3.15,3.08l7.79,1.57l2.32,0.72l2.29,1.31l2.95,-0.45l0.31,-0.28l0.73,-2.99l-1.86,-2.62l-2.68,-2.53l-2.26,-2.93l-3.06,-3.18l-5.08,-4.25l-1.01,-2.6l1.41,-1.42l2.17,-1.04l2.98,-5.98l0.11,-2.79l-1.29,-2.89l-0.61,-3.27l1.26,-1.71l2.94,-1.32l1.96,-2.12l1.09,-2.52l2.23,-1.45l2.94,-1.26l2.05,-4.43l-1.07,-2.25l-5.21,-2.83l-0.82,-1.76l-0.53,-7.54l-1.09,-2.96l0.14,-6.02l-0.32,-3.08l1.33,-1.71l1.83,-0.52l9.4,-0.14l0.37,-0.22l0.79,-1.98l-2.58,-3.6l-5.98,-3.35l-3.01,-2.09l-5.93,-1.84l-2.41,-5.68l-2.97,-2.41l0.61,-3.19l0.95,-2.75l2.12,-1.06l1.97,-2.19l10.23,0.67l5.95,-1.54l8.2,-1.39l4.92,-1.17l5.21,-2.09l1.96,-2.48l0.46,-3.73l1.82,-3.39l2.38,-3.08l2.66,-1.3l3.87,-0.85l4.14,-0.05l3.88,1.81l9.08,2.03l5.21,-1.76l4.41,-3.99l4.52,-6.65l2.88,-1.84l6.93,-0.27l3.74,-1.56l3.28,-0.89l10.29,-1.84l14.92,-9.83l7.76,-3.9l4.84,0.0l7.74,2.76l2.93,2.22l2.93,0.82l7.11,-1.98l2.77,-1.88l2.57,-1.09l0.4,2.06l-2.39,1.92l-1.4,2.71l-0.73,2.93l-1.25,1.53l-4.25,2.33l-0.02,0.69l15.28,9.37l0.54,-0.12l1.16,-1.73l9.05,3.71l60.41,28.92l0.89,5.43l1.41,5.41l2.3,4.53l2.88,4.31l5.61,4.83l4.15,1.97l7.84,7.92l2.23,2.53l1.0,2.05l-1.38,2.99l-3.75,3.55l-2.02,3.34l-1.62,4.13l-0.31,9.18l-0.45,2.6l1.38,8.01l-0.96,4.52l0.17,10.47l-1.16,2.3l-1.72,2.44l-0.36,4.68l24.88,19.46l23.11,19.35l14.16,10.84l10.72,-2.18l2.02,5.03l-37.6,22.73l-15.14,30.11l-4.0,10.36l-1.5,1.18l-8.24,2.86l-2.77,2.13l-3.22,0.27l-3.89,2.43l-1.62,1.77l-3.34,2.67l-3.92,1.56l-4.58,1.02l-3.1,1.45l-11.47,7.97l-3.49,3.41l-12.5,8.57l-1.08,5.39l-0.79,1.97l-2.73,5.37l-9.42,16.04l-5.85,1.16l-3.85,1.63l-1.95,1.64l-2.32,0.92l-2.71,0.3l-3.96,-1.33l-4.27,-0.41l-2.42,-0.69l-2.13,0.85l-1.59,1.96l-2.77,1.23l-0.76,1.48l0.33,5.75l-0.69,1.57l-2.05,1.84l-0.73,1.92l0.19,1.85l4.02,6.57l0.07,2.3l-1.54,3.14l-0.41,1.65l-4.21,4.35l-4.3,3.6l-1.09,0.44l-2.18,2.3l-1.86,3.33l-2.58,9.96l-2.12,2.85l-0.98,0.48l-1.26,1.41l-2.57,1.81l-8.27,2.95l-7.34,1.94l-3.79,0.26l-10.51,-3.43l-1.99,0.03l-2.48,0.62l-2.13,1.02l-11.49,7.48l-4.86,4.06l-0.56,1.48l-1.02,1.22l-1.14,3.35l-5.52,8.22l-0.17,1.05l-2.8,5.11l-3.78,5.25l-0.39,1.31l-2.45,3.51l-1.85,1.83l-0.48,1.65l-2.43,3.11l-0.98,0.31l-3.09,4.31l-0.55,1.6l-3.13,4.2l-0.99,0.67l-2.04,2.99l-0.76,2.19l0.0,5.94l1.53,3.49l0.48,2.81l-0.36,4.2l0.59,4.1l1.41,4.68l0.82,0.93l8.2,20.92l3.03,8.98l0.67,1.04l1.21,4.79l0.75,1.04l2.55,7.21l2.32,4.38l4.39,16.92l2.01,3.22l3.03,6.24l0.6,3.46l-2.66,9.47l-0.08,5.04l1.05,5.14l0.56,0.85l0.95,4.08l0.29,5.82l2.02,9.27l2.31,5.19l-0.28,1.07l-2.42,2.7l-0.27,2.0l0.52,1.88l-2.08,5.87l-0.68,3.77l-1.35,4.27l-6.91,13.44l-4.54,10.37l-2.78,4.78l-2.97,2.42l-1.09,0.4l-2.91,2.15l-1.58,1.91l-4.92,9.28l-8.37,10.61l-3.18,5.95l-4.26,5.02l-0.93,1.54l-4.64,4.24l-7.92,9.86l-2.89,7.82l-6.51,10.54l-1.44,1.48l-1.98,1.3l-3.26,7.59l-6.46,4.76l-6.35,6.53l-1.29,0.43l-2.63,-0.2l-9.96,1.08l-6.14,2.44l-1.28,1.1l-3.87,1.78l-6.73,1.84l-6.49,4.37l-1.84,1.72l-6.9,2.62l-5.94,3.33l-7.26,4.84l-5.32,2.04l-7.21,1.28l-34.88,-157.68l-7.9,-36.95l-0.73,-1.16l-28.19,-129.54l-14.48,-63.67l-8.86,-41.11l-6.22,-24.9l-1.26,-2.38l-4.8,-20.66l-0.44,-0.11Z", "name": "Tataouine"}, "tn-kf": {"path": "M161.61,454.97l1.41,-1.77l-0.23,-1.86l0.36,-1.08l0.03,-2.34l1.1,-1.19l0.26,-0.75l1.18,-0.32l0.35,-0.63l0.77,0.17l0.81,-0.88l0.89,0.02l0.49,-0.49l-0.21,-0.8l0.38,-0.43l0.61,-8.37l1.0,-6.98l-1.01,-5.88l0.55,-2.05l0.79,-0.65l1.39,-2.19l1.08,-2.45l0.1,-2.62l1.48,-2.13l0.6,-2.1l4.67,-4.02l-0.43,-3.22l-0.87,-2.01l0.42,-2.43l-0.6,-2.6l-0.9,-1.02l-1.65,-1.08l-0.56,-1.07l-1.11,-0.9l-0.51,-1.46l-0.91,-0.39l-0.62,-3.62l1.11,-1.45l2.72,-1.83l1.21,-1.72l1.91,-6.31l1.38,-1.23l0.14,-1.43l1.54,-2.04l-0.28,-1.8l0.22,-4.06l-1.25,-2.41l-2.15,-0.81l1.52,-2.19l0.42,-1.43l1.58,-1.96l0.68,-0.26l2.12,-2.06l0.83,-0.36l2.26,-0.07l0.43,-1.57l1.39,-0.39l0.25,-0.59l-0.79,-1.29l-1.66,-1.07l-0.91,-2.23l-0.1,-2.04l1.01,-2.7l-0.8,-3.75l3.46,-3.37l13.04,1.42l7.4,-5.77l3.39,-0.93l4.71,-0.7l4.94,-4.78l2.04,-1.26l5.1,0.09l2.94,0.69l3.12,-0.11l3.1,-1.14l9.2,-4.42l3.46,0.68l4.7,1.47l3.72,1.87l2.72,0.41l3.88,-0.34l3.85,-1.15l3.57,-0.24l9.69,-2.09l3.02,0.04l3.6,-1.49l5.65,0.03l2.55,-0.76l2.92,-1.61l4.95,-5.76l1.54,5.28l2.25,4.39l5.51,6.23l0.85,3.42l1.72,3.66l0.47,2.3l-0.83,2.27l-5.75,6.2l-0.01,3.32l1.72,3.56l4.24,6.79l1.09,2.12l1.06,3.16l1.48,2.33l2.34,1.38l6.06,2.38l1.68,2.28l-0.62,3.06l1.06,3.61l-0.18,2.42l-1.78,2.54l-1.39,2.67l1.19,2.82l2.33,9.08l0.37,0.27l3.17,0.07l2.31,0.65l1.02,1.2l1.14,2.94l0.81,1.16l2.96,0.01l2.03,-0.33l1.34,3.49l7.7,2.6l-0.67,5.51l-0.13,4.58l0.8,6.57l1.31,5.46l-0.23,1.6l-2.48,2.42l-3.81,1.9l-6.49,6.2l-1.11,3.04l0.64,6.1l-0.09,2.99l-0.88,2.86l-3.26,2.26l-3.34,0.49l-2.95,1.65l-3.53,3.8l-1.63,5.9l0.33,0.51l2.66,0.38l-0.5,1.72l-2.94,2.63l-0.12,0.4l1.27,4.65l0.49,5.32l-0.66,4.07l-4.21,6.57l1.43,3.51l3.5,5.61l0.05,3.17l0.63,3.03l-0.24,2.44l-1.92,-0.29l-3.87,-2.43l-4.2,-1.83l-11.74,-2.24l-9.82,-2.8l-4.1,-1.85l-4.69,-3.17l-4.89,-2.82l-6.03,-5.41l-3.03,-1.73l-4.1,0.55l-5.39,2.3l-3.27,-1.12l-5.4,-2.82l-5.34,0.53l-2.36,4.05l-1.82,2.3l-4.75,2.27l-4.43,3.98l0.57,3.72l-0.52,3.69l1.2,5.47l-0.54,3.65l-2.88,2.59l-4.25,4.83l-2.73,-0.13l-2.95,1.92l-5.65,-6.49l-4.0,-2.52l-3.47,0.34l-6.19,1.3l-9.33,0.27l-3.24,2.28l-3.69,3.8l-2.49,2.89l-1.53,3.07l-0.97,0.25l-2.94,-0.07l0.27,-2.55l-0.2,-1.11l-0.68,-1.08l0.4,-1.31l-0.55,-3.54l-0.52,-1.0l-3.36,-2.04l-0.82,-0.93l-1.19,-0.28l-2.6,0.09l-1.35,-1.8l-0.49,-0.26l-0.55,0.15l-1.12,-2.58l-4.71,-5.76l-3.18,-1.9l0.36,-2.11l-1.02,-1.97l-0.7,-4.73l0.25,-1.73l1.12,-2.4l0.28,-2.29l-0.33,-0.7l0.12,-1.78l0.32,-1.37l0.58,-0.91l0.1,-2.71l0.56,-0.54l0.09,-1.05l-1.24,-13.82l0.48,-0.77l-0.2,-0.54l0.35,-1.67l1.05,-0.9l0.39,-1.58l-0.34,-0.58l-2.78,0.07l0.24,-0.61l0.96,-0.82l0.56,-1.56l-0.5,-0.54l-2.65,-0.89l-0.02,-0.74Z", "name": "Le Kef"}, "tn-me": {"path": "M647.37,1061.54l1.7,0.74l0.8,-0.15l0.43,0.44l1.51,0.3l0.45,0.44l-0.33,0.34l0.31,0.78l-1.48,0.22l-1.32,-0.44l-0.83,0.77l-0.06,2.37l-0.58,0.92l-0.37,-0.07l-0.46,0.55l0.89,0.62l1.19,-0.98l0.65,0.1l0.65,-0.55l0.31,-0.81l0.74,-0.59l-0.45,-0.78l1.28,0.3l-0.84,0.85l0.23,0.71l-0.78,0.62l0.65,0.62l0.8,-0.37l1.17,1.55l0.46,-0.47l-0.26,-0.6l0.38,-0.55l1.26,-0.3l0.46,-0.47l-0.93,-0.84l0.18,-0.76l0.36,0.29l0.92,0.0l1.23,-0.29l0.55,-0.52l0.86,0.15l0.7,-0.52l1.14,0.44l0.79,-0.7l0.25,0.25l0.39,-0.26l1.89,0.12l0.86,-0.29l0.46,-0.47l-0.26,-0.33l0.36,-0.23l0.86,0.0l0.36,0.3l1.27,-0.63l0.33,0.33l0.68,-0.29l0.22,0.23l-0.77,0.15l-0.46,0.47l0.71,0.62l1.72,-0.52l1.29,-1.03l-1.14,2.48l-0.12,2.58l0.46,0.47l0.44,-0.22l0.42,0.29l1.03,-0.15l1.55,1.03l0.68,-0.37l1.17,0.37l1.63,-1.43l-0.06,-0.74l-0.77,-0.55l-0.93,1.18l-0.54,-0.59l-0.71,0.55l-0.53,-0.55l-0.48,0.07l-1.56,-0.81l-0.38,-1.09l1.06,-2.56l0.63,0.09l2.16,-1.03l2.94,-0.3l0.83,-0.77l0.0,-0.34l0.95,-0.44l0.75,-0.96l1.42,-0.37l0.72,0.3l1.04,-0.3l0.55,-0.59l0.8,0.07l3.56,-0.81l1.41,-0.81l2.98,-2.95l2.98,-2.22l2.33,-0.59l1.07,-1.11l0.97,-0.44l2.32,0.0l2.02,-0.44l2.43,1.4l0.93,1.04l1.84,5.12l-1.04,3.04l-0.55,3.48l-1.23,1.46l-0.37,1.18l0.31,4.94l0.98,3.23l-0.12,2.31l-0.43,1.17l-0.89,0.26l-0.95,1.15l-0.8,4.53l-1.44,0.0l-1.81,2.07l-2.43,1.4l-2.12,2.17l-0.86,1.77l-0.43,4.05l0.89,1.06l0.79,-0.29l1.34,0.66l1.16,0.91l0.74,1.18l0.12,2.31l-0.92,2.65l-0.55,0.58l0.31,1.99l1.63,0.99l0.37,0.0l0.63,-0.66l0.85,0.29l2.32,-0.07l1.22,0.37l2.08,1.81l0.95,1.8l0.97,0.15l0.75,0.59l3.45,-0.29l3.67,0.15l1.61,-2.06l1.03,0.07l1.54,-0.44l0.95,-1.06l0.76,-1.88l3.95,-0.29l3.75,-1.33l1.87,-2.36l3.11,-0.44l4.07,-1.7l2.88,-0.52l3.61,-1.16l0.32,0.2l1.14,-0.78l0.52,0.34l0.61,-0.44l0.62,0.8l0.95,-0.69l0.31,-0.66l-1.29,-0.97l1.05,-1.09l0.18,-0.97l1.78,-1.98l0.28,-0.93l0.83,-0.84l-0.06,-1.33l0.86,-1.03l0.25,-1.25l-0.31,-0.96l-0.98,-1.02l-0.92,-2.45l-0.98,-0.8l-0.98,-1.66l-0.55,-1.75l-1.01,-0.84l-1.41,-0.15l-0.89,-0.59l0.06,-1.96l1.52,-1.37l1.22,0.0l1.17,-1.11l1.07,-0.37l1.33,0.22l0.95,-0.92l0.18,-0.81l1.97,0.33l0.83,0.67l0.98,0.0l1.41,1.18l3.07,-0.22l0.44,-0.42l1.09,-0.17l1.01,-1.21l-0.18,-2.07l-0.65,-0.47l-0.58,0.74l-0.37,-0.1l0.06,-0.59l0.41,-0.28l1.46,0.59l2.0,-0.14l0.12,0.77l1.69,1.58l4.36,1.62l1.6,-0.15l1.2,-0.52l2.39,3.29l1.29,0.96l-0.37,0.37l0.25,0.89l1.2,1.51l1.26,0.77l2.46,3.04l0.49,1.33l3.99,5.52l0.74,2.14l0.49,3.04l0.55,0.65l-0.43,1.05l0.47,0.96l-0.29,0.29l0.06,1.25l0.68,1.76l-0.18,0.75l0.43,0.73l-0.43,1.26l0.25,0.65l-0.25,0.97l0.49,0.6l-0.85,0.81l-0.74,1.33l1.82,1.96l-2.93,2.39l-0.8,2.81l-2.15,4.33l-0.12,4.12l2.89,5.01l-0.25,2.36l0.77,0.4l0.95,-1.06l3.04,2.98l2.15,1.69l0.28,-0.15l0.06,0.48l-2.38,2.63l-1.56,1.14l-1.21,1.66l-2.19,0.3l-1.55,-1.03l-1.38,1.14l0.0,0.66l0.52,0.4l0.86,-0.69l0.18,0.18l-0.64,0.55l0.74,0.49l-0.06,0.39l0.4,0.4l0.54,-0.22l0.69,0.44l1.11,0.15l0.81,-0.59l0.66,0.15l0.43,-0.3l2.06,-1.94l0.18,-0.7l1.46,-0.67l3.17,1.85l3.85,4.12l1.23,1.66l0.06,2.57l0.77,0.92l2.41,0.66l0.79,0.51l0.49,-0.07l0.74,0.88l0.46,-0.15l3.17,1.47l1.59,0.37l4.46,2.13l5.94,4.12l3.19,1.55l-1.97,-0.44l-0.92,-0.73l-1.89,-0.29l-4.87,-2.28l-4.04,-1.03l-9.17,-3.9l-1.68,0.0l-2.49,-1.03l-2.03,-0.15l-0.86,0.15l-1.44,1.47l-1.33,-0.44l-1.04,0.15l-0.71,0.77l-0.49,1.32l-0.31,3.34l-0.32,0.28l-0.38,-0.34l-0.98,-0.07l-0.4,0.4l1.23,4.48l0.71,0.55l1.22,-0.75l1.46,2.48l1.57,1.8l2.99,1.4l1.53,1.76l-0.12,1.44l1.47,2.34l-0.18,4.13l2.27,4.11l2.67,1.21l1.97,-0.44l0.88,-0.88l2.19,-0.22l0.41,-0.38l5.43,1.48l6.07,-0.73l5.29,1.76l0.75,0.59l4.06,0.89l2.89,1.24l4.6,0.88l2.59,1.03l1.83,0.29l0.53,0.29l-0.06,0.55l0.52,0.55l0.62,-0.15l1.47,1.32l0.89,-1.13l1.04,-0.66l0.96,-2.84l0.73,0.67l1.26,0.26l1.85,1.5l1.01,1.32l0.68,0.07l0.6,-0.42l0.32,0.2l0.3,-0.3l1.94,-0.36l1.26,1.69l0.96,0.37l1.13,1.17l0.95,0.0l0.83,0.66l1.35,-0.22l1.69,-1.72l0.22,0.85l-0.65,0.55l0.4,0.77l0.48,-0.29l0.87,0.22l0.59,-0.59l1.07,0.73l1.35,0.15l1.57,-1.13l-0.46,-0.55l-0.52,0.1l-0.89,-0.77l-0.58,0.15l-0.01,-1.14l-0.4,-0.4l-0.58,0.36l0.06,-0.77l-1.32,-1.14l-2.64,-0.81l-1.32,1.32l-0.43,-0.07l0.37,-1.88l-0.12,-1.03l-0.58,-0.77l-1.41,-0.66l-4.49,-3.31l-1.03,-0.15l-1.18,-0.81l-1.04,-1.18l-6.13,-4.41l-2.95,-2.57l-1.61,-1.76l-2.06,-1.7l0.09,0.0l2.38,1.62l3.22,2.87l1.46,0.74l5.48,4.78l2.08,1.03l4.87,3.38l3.65,1.69l3.97,2.5l2.7,1.32l1.28,0.07l1.79,1.25l4.98,1.69l2.09,0.51l1.09,-0.07l1.3,0.66l2.41,-0.66l1.62,0.18l-0.89,2.44l0.31,2.18l-2.35,8.68l-4.15,7.48l-0.74,3.22l-0.66,5.34l-0.53,10.6l-0.49,1.95l1.56,1.53l0.29,2.87l-2.83,3.39l-2.94,12.22l-3.16,9.92l1.52,4.19l2.51,9.0l-1.46,4.44l-1.14,5.47l-1.55,10.37l1.95,8.81l0.2,3.61l-0.95,8.19l-1.21,5.32l0.29,3.03l1.04,3.5l3.05,7.82l2.64,2.75l2.51,1.17l2.36,2.06l4.99,6.87l2.75,2.29l2.77,4.16l1.78,4.15l-15.57,31.4l-13.16,9.77l-0.92,1.18l-2.84,1.17l-5.63,0.62l-7.19,5.2l-5.71,3.04l-2.38,0.87l-4.43,0.93l-4.54,1.88l-24.51,8.26l-11.81,5.25l3.49,-9.04l15.08,-29.99l37.64,-22.68l0.16,-0.49l-2.28,-5.66l-0.46,-0.24l-10.54,2.28l-14.01,-10.73l-23.11,-19.34l-24.71,-19.32l0.47,-3.99l1.64,-2.25l1.26,-2.59l-0.17,-10.55l0.96,-4.61l-1.38,-8.01l0.45,-2.51l0.31,-9.09l1.55,-3.92l1.94,-3.21l3.79,-3.6l1.5,-3.24l-1.11,-2.62l-10.24,-10.67l-4.18,-2.0l-5.46,-4.69l-2.81,-4.2l-2.24,-4.39l-2.54,-11.23l-60.62,-29.02l-9.34,-3.85l-0.51,0.14l-1.14,1.7l-14.37,-8.81l3.72,-2.03l1.47,-1.75l0.79,-3.04l1.33,-2.59l2.41,-1.89l-0.39,-3.17l-0.55,-0.29l-3.06,1.3l-2.72,1.85l-6.71,1.92l-2.61,-0.7l-3.0,-2.26l-7.9,-2.82l-5.29,0.02l-7.92,3.98l-14.74,9.74l-10.25,1.83l-3.38,0.92l-3.58,1.52l-7.14,0.32l-3.17,2.06l-4.55,6.68l-4.12,3.75l-4.8,1.68l-8.94,-2.0l-4.0,-1.84l-4.27,0.06l-4.12,0.91l-2.92,1.48l-2.46,3.18l-1.91,3.55l-0.42,3.64l-1.65,2.17l-5.03,2.02l-4.85,1.15l-8.23,1.4l-5.9,1.53l-9.86,-0.67l0.4,-22.65l-0.34,-7.35l-3.96,-2.85l-6.49,-0.82l-7.6,0.75l-2.9,-1.48l-3.67,-1.0l-3.14,-3.74l-2.99,-0.58l-5.09,-3.9l-4.76,-5.17l-6.46,-6.34l1.6,0.05l3.19,1.71l4.79,1.61l4.94,0.72l3.88,-0.41l6.21,-2.54l6.35,-0.72l2.3,1.19l4.14,-0.48l4.46,-1.09l2.96,1.13l4.32,0.07l3.88,-1.13l2.67,-1.89l2.29,-2.63l1.86,0.09l2.66,1.74l3.16,0.73l2.75,-2.79l5.69,-0.85l3.81,-1.63l3.31,-2.74l4.52,-2.88l0.35,-4.26l-0.43,-2.73l2.03,-1.65l3.39,-0.61l3.51,-1.83l2.31,-3.98l0.21,-2.74l7.09,-4.11l3.99,-1.65l3.94,0.04l4.73,0.86l4.87,-0.01l4.26,-3.62l1.3,-2.87l1.05,-3.9l5.28,-5.66l2.39,-3.51l1.58,-3.05l4.77,-6.78l0.94,-4.39l3.92,-6.9l2.19,-3.3l3.02,-3.72l2.15,-4.58l2.13,-2.98l5.11,-2.49l3.38,-2.67ZM649.72,1065.39l-0.01,-0.01l0.04,0.0l-0.01,0.01l-0.01,0.0ZM749.07,1056.14l-0.69,-0.2l-1.4,1.26l-0.44,-0.3l-1.23,0.15l-1.87,2.34l-0.56,1.76l-0.18,5.86l-0.37,1.08l-0.77,-0.62l-1.44,-0.19l-0.49,-2.73l-0.55,-1.32l0.74,-1.12l0.06,-2.38l1.17,-1.32l0.37,-1.33l-0.37,-3.4l-2.7,-2.84l-0.31,-0.92l-4.12,-4.72l-0.86,-1.42l-2.98,-3.13l-1.17,-0.22l-2.46,0.59l-1.92,1.85l-1.22,0.15l-1.84,1.4l-1.01,1.21l-0.31,0.89l0.0,3.66l-1.01,-0.67l-3.93,1.18l-1.81,-3.44l-2.52,-2.17l-0.12,-0.78l-0.9,-1.14l0.17,-0.86l-0.8,-3.03l-1.12,-1.98l0.14,-1.94l-0.59,-1.22l0.47,-0.7l-0.23,-0.55l0.72,-1.61l0.46,-0.03l0.46,-0.92l0.46,0.25l0.77,-0.84l-0.13,-1.0l1.54,-2.63l0.37,-1.63l-0.18,-2.97l0.25,-0.95l-0.43,-1.84l0.37,-0.38l-0.3,-0.39l0.23,-1.6l-0.31,-0.62l0.43,-1.9l-0.43,-1.48l-0.74,-1.17l0.06,-0.83l-0.43,-0.83l0.25,-0.7l0.71,0.15l0.58,-0.47l0.31,-0.89l-1.35,-1.17l0.18,-3.04l-0.66,-0.47l0.47,-1.94l1.57,-0.65l3.87,-0.83l0.46,-0.37l1.02,0.15l3.5,-0.74l0.65,-0.77l0.71,0.62l0.61,-0.38l0.37,0.3l0.73,-0.3l0.69,0.37l0.67,-0.07l1.6,0.81l0.79,-0.3l2.88,1.04l1.56,1.04l1.03,0.11l1.31,0.86l0.44,-0.38l1.41,1.34l2.58,1.26l0.92,0.0l0.89,-0.54l2.25,1.36l2.32,-0.07l1.98,0.37l3.27,-0.52l0.85,0.15l1.26,-1.21l0.18,-1.48l-1.29,-2.56l0.23,-0.2l3.15,2.68l0.25,0.68l2.18,2.4l2.21,1.78l3.59,2.07l1.23,2.19l3.96,3.95l2.58,1.55l1.41,0.44l0.75,-0.44l1.22,0.07l1.04,-0.74l0.43,0.59l1.33,0.44l1.35,1.01l0.06,4.96l0.92,3.15l-0.41,0.38l-0.57,-0.83l0.18,-0.33l-0.49,-2.66l-0.46,-0.47l-0.58,0.4l-0.06,0.89l0.18,1.92l1.84,2.44l0.06,0.81l0.38,0.39l-0.44,0.94l-0.83,-0.62l-1.54,0.22l-1.61,1.48l-1.89,1.03l-2.35,3.03l-2.45,0.22l-2.06,1.5l-2.94,4.88l-0.49,1.63l-0.18,3.62l-0.46,-0.4l-0.58,0.62l-1.04,7.83l-1.35,-2.5l0.68,-1.34l0.06,-1.93l0.37,-0.65l-0.74,-2.35l0.18,-2.3l-0.58,-0.84l-0.55,0.0l-0.81,0.74l-1.22,-0.07l-1.26,1.51l-1.17,2.81l-0.37,2.3l-1.11,2.03l-1.07,0.15l-0.74,0.52l-2.93,3.01ZM763.77,1048.35l0.0,0.6l0.12,0.59l-0.43,-0.58l0.31,-0.62ZM763.9,1049.92l0.0,0.08l-0.06,0.06l0.0,-0.08l0.06,-0.06ZM763.74,1047.59l0.04,-0.05l0.06,-0.06l0.0,0.09l-0.1,0.02ZM761.48,1055.5l-0.02,0.0l0.1,-0.12l0.0,0.04l-0.08,0.08ZM761.62,1055.31l0.0,0.01l-0.06,0.06l0.0,-0.01l0.06,-0.06ZM831.61,1162.48l-0.08,-0.08l0.12,0.08l-0.03,0.0ZM831.46,1162.33l-0.05,0.0l-0.38,-0.38l0.3,0.29l0.12,0.08ZM830.87,1161.89l-0.15,-0.15l-0.05,-0.01l0.08,0.0l0.2,0.15l-0.1,0.0ZM844.73,1168.72l-0.05,-0.0l-0.01,-0.01l0.05,0.0l0.01,0.01ZM840.49,1166.59l-0.37,-0.22l-0.17,0.0l-0.13,-0.08l0.35,0.07l0.32,0.23ZM839.73,1166.22l0.02,0.0l0.01,0.01l-0.02,0.0l-0.01,-0.01ZM840.98,1166.81l0.01,0.01l-0.04,-0.01l0.03,0.0ZM841.05,1166.88l1.09,0.29l1.73,1.04l-2.66,-1.18l-0.16,-0.16ZM843.94,1168.28l0.17,0.0l0.13,0.08l-0.22,0.0l-0.08,-0.08ZM844.54,1168.65l-0.23,-0.23l0.3,0.23l-0.07,0.0ZM870.95,1191.32l-0.12,-0.12l0.06,0.0l0.06,0.12ZM863.61,1189.36l0.06,0.0l0.46,-0.44l-0.23,0.45l-0.29,-0.01ZM763.94,1066.35l0.5,-0.6l0.8,0.56l-0.55,0.48l-0.76,-0.44ZM764.02,1062.94l0.06,0.57l-0.25,0.36l-0.49,-1.12l0.18,-0.28l0.49,0.47ZM763.53,1062.47l0.0,-0.01l0.06,-0.06l0.0,0.01l-0.06,0.06ZM761.99,1059.16l-0.25,-0.48l0.03,-0.38l0.58,0.25l0.0,0.52l-0.37,0.09ZM737.29,1077.98l-0.37,-0.39l1.01,-0.75l1.26,0.65l0.06,1.53l-0.49,1.24l-1.29,-1.55l-0.18,-0.73ZM716.64,1052.66l-0.17,-0.28l2.01,0.3l-0.37,0.63l0.28,0.48l-0.16,0.36l-0.95,-0.87l-0.64,-0.15l0.0,-0.47ZM703.24,1042.15l0.95,-1.06l1.05,-0.08l0.4,-0.4l0.0,-0.52l0.1,1.07l-0.47,0.92l0.37,2.41l-1.04,-0.74l-1.35,-1.61ZM705.64,1040.0l0.0,0.01l-0.04,-0.04l0.01,-0.01l0.03,0.03ZM653.53,1067.21l-0.12,-0.9l0.18,-0.07l0.18,0.38l-0.24,0.59Z", "name": "Medenine"}, "tn-ks": {"path": "M167.23,763.61l0.3,-5.31l0.63,-2.12l-0.1,-1.38l-1.15,-1.68l0.39,-1.74l-0.39,-2.44l-0.63,-2.32l-0.91,-1.0l0.6,-1.01l-1.08,-1.95l0.18,-3.08l-2.46,-3.38l-0.27,-1.94l0.45,-1.67l-0.14,-1.18l-1.06,-3.09l-0.06,-1.1l-0.96,-1.01l0.07,-1.0l-0.89,-1.03l1.67,-1.77l2.02,-1.17l1.14,-0.01l1.39,-1.68l1.09,-0.48l0.78,-1.02l1.57,-0.25l1.04,-0.54l0.45,-0.75l1.13,0.62l0.81,-0.33l1.32,0.22l0.48,-0.3l0.57,-14.31l-0.49,-2.32l6.07,-16.35l-0.1,-0.62l1.27,-1.77l0.78,-2.75l0.71,-0.64l0.37,-2.07l0.78,-1.01l3.4,-1.99l1.83,-1.85l1.2,-0.67l2.71,-2.77l3.17,-6.11l1.39,-7.26l0.87,-0.77l1.27,-2.46l3.5,-5.0l1.3,-2.83l5.2,-5.49l-0.05,-0.54l-0.54,-0.36l-2.64,0.93l-0.67,-0.25l-4.02,0.34l-2.14,-0.68l-2.01,-1.57l-2.2,-0.39l-1.56,0.29l-0.11,-0.72l-1.8,-0.64l-1.62,-1.99l-3.33,-2.4l-2.77,-1.01l-1.14,-1.33l-2.08,-0.67l-3.44,-0.39l-1.87,-2.62l0.02,-1.87l-0.61,-1.66l-1.98,-2.54l0.01,-2.95l0.84,0.05l0.42,-0.45l-0.13,-2.17l0.34,-2.6l-0.81,-4.28l0.31,-2.31l-0.47,-2.45l2.62,-5.29l0.66,-2.68l-0.61,-2.0l-1.94,-0.28l2.24,-1.56l1.97,-5.82l2.55,-2.84l0.75,-1.56l-0.11,-0.63l0.66,-0.48l1.84,-0.3l1.77,-0.83l2.49,0.2l0.56,-0.69l0.47,-4.77l-2.93,-2.92l-2.89,-7.68l0.75,-3.26l-0.04,-3.05l-1.95,-8.54l-0.19,-6.28l-0.58,-2.5l1.37,-2.58l0.31,-3.17l3.0,0.07l1.31,-0.33l1.79,-3.31l2.45,-2.85l3.64,-3.74l2.84,-2.07l9.23,-0.27l6.28,-1.31l3.26,-0.32l3.5,2.28l5.84,6.7l0.52,0.08l3.14,-2.04l2.9,0.04l1.8,-2.29l5.6,-5.53l0.58,-3.87l-1.21,-5.58l0.53,-3.58l-0.67,-3.33l4.21,-3.79l4.83,-2.34l1.94,-2.46l1.97,-3.68l4.83,-0.53l5.32,2.79l3.45,1.18l5.77,-2.35l3.56,-0.54l2.79,1.57l6.06,5.43l4.96,2.87l4.74,3.2l4.21,1.89l5.08,1.52l4.84,1.3l11.63,2.21l2.93,1.28l-2.33,1.72l-3.99,1.16l-2.5,1.21l-0.03,0.71l5.75,3.29l1.5,2.75l1.14,3.06l0.54,2.64l2.79,2.02l3.65,0.23l4.96,-2.08l1.65,2.27l1.02,2.39l1.8,2.92l2.7,1.67l5.12,-2.08l2.56,-0.1l2.6,0.69l3.89,0.06l2.14,-1.04l2.62,1.01l2.19,2.6l2.79,1.99l-0.1,2.14l-0.87,3.5l1.11,3.26l3.36,2.46l3.61,1.59l2.57,0.47l2.64,0.04l4.21,-1.33l1.46,3.97l3.16,0.53l1.98,1.29l2.87,3.23l1.87,4.7l0.5,2.13l-0.89,2.1l0.28,0.55l2.8,0.7l-6.38,4.7l-1.52,2.37l-2.65,1.72l-3.41,1.42l-3.01,2.25l-6.7,8.61l-4.84,8.12l-7.7,10.74l-1.72,3.24l-2.1,6.67l0.26,2.57l1.69,2.1l2.87,0.45l5.93,3.35l1.47,3.36l1.71,2.35l4.09,2.37l2.23,2.01l3.34,1.36l4.98,3.64l0.16,1.44l-4.95,2.73l-0.51,2.15l1.2,2.7l0.03,2.32l-0.83,2.43l0.86,3.15l-1.56,2.01l-0.87,2.15l1.35,4.97l2.01,3.56l-1.25,2.83l-0.42,3.04l1.6,2.72l1.87,2.08l2.23,1.38l-0.42,3.19l-2.13,4.18l-3.47,1.36l-4.85,0.33l-4.58,1.03l-7.94,0.67l-3.29,1.42l-2.88,2.29l-3.51,1.94l-3.47,0.53l-4.89,0.08l-1.82,2.4l-1.07,3.29l-7.53,8.26l-1.18,1.77l-0.65,3.1l-1.25,2.98l-0.39,3.16l1.33,1.68l3.21,1.39l1.53,1.46l-0.2,2.53l-8.68,4.11l-6.11,5.64l-8.5,3.11l-5.7,3.17l-9.17,2.95l-3.41,2.08l-6.11,5.01l-4.25,2.4l-4.55,1.48l-4.4,2.44l-3.83,3.89l-5.66,2.93l-5.74,1.21l-3.66,1.51l-4.39,2.88l-13.9,7.43l-8.1,3.23l-0.25,0.47l1.7,6.45l-0.71,2.48l-4.63,0.35l-5.86,-1.79l-3.95,-2.48l-3.83,-3.65l-8.74,-6.9l-3.74,-2.43l-5.06,-0.15l-7.55,-4.34l-16.61,-7.31l-1.52,-0.29l-2.57,-6.06Z", "name": "Kasserine"}, "tn-mh": {"path": "M586.17,630.73l0.75,-10.67l1.22,-5.15l0.45,-5.91l-5.77,-5.63l-0.9,-4.02l0.66,-3.86l1.7,-3.36l0.77,-2.77l-0.39,-2.15l0.8,-2.97l0.09,-2.12l1.72,-1.47l4.35,-2.28l1.37,-1.3l0.67,-1.71l0.4,-3.91l1.72,-1.86l4.44,-2.98l1.89,-2.46l-0.35,-2.41l-1.71,-2.89l-2.3,-2.81l-1.77,-3.06l-1.05,-3.28l3.85,-2.41l1.35,-1.6l2.19,-1.71l1.72,-0.83l6.11,-0.99l3.68,-1.4l0.87,0.09l-3.63,3.61l-0.65,2.6l0.98,4.07l1.62,2.87l1.9,2.23l2.21,1.71l1.19,2.45l1.37,1.41l1.8,1.12l1.06,1.27l0.5,1.92l1.39,2.0l2.14,0.11l0.39,-0.42l-0.09,-1.97l0.83,-1.13l1.43,-0.72l1.68,0.96l2.54,0.3l1.73,-0.71l1.2,0.69l2.1,2.41l1.85,1.06l2.8,-0.09l0.8,3.38l1.69,2.93l1.16,1.52l2.02,1.0l2.68,4.21l2.18,2.06l4.23,1.09l5.08,2.05l3.22,0.24l0.38,-0.21l2.96,-5.47l0.4,-2.24l1.19,-1.73l3.22,-1.76l3.74,-3.19l0.85,-3.38l-0.39,-3.79l9.79,-0.39l2.29,0.68l5.59,0.86l2.91,-0.16l4.1,-0.82l1.94,0.35l0.8,3.04l2.71,4.57l3.29,3.25l5.03,1.4l2.68,0.41l5.96,-0.69l1.85,-1.65l0.07,-4.86l2.83,-2.61l5.32,-5.73l7.26,-4.48l5.34,-4.15l3.54,-2.15l0.34,0.0l0.0,0.47l1.51,1.53l0.77,0.04l-0.06,0.92l0.95,0.93l1.55,-1.28l1.04,0.38l1.04,-0.08l2.53,-1.28l1.46,0.23l1.01,-1.08l-0.18,-1.51l0.56,-0.48l0.64,0.34l0.52,-0.55l-1.32,-3.02l10.23,-1.61l-0.37,3.51l0.31,4.99l0.43,2.34l1.78,4.3l2.8,3.19l2.58,1.51l1.04,0.15l2.61,-1.28l-0.37,0.63l-1.57,0.45l-0.73,0.97l-0.83,0.41l-0.06,0.51l-0.71,-0.08l-0.52,0.63l-0.37,1.78l-1.78,4.79l-0.18,1.83l-1.6,5.57l-0.61,7.32l0.49,2.71l0.74,2.11l0.49,0.59l0.34,1.56l-0.8,-0.21l-0.67,0.89l-0.44,-0.13l-0.74,0.45l-1.01,1.68l-0.18,6.63l1.11,6.03l0.68,2.18l2.95,4.74l5.53,6.48l4.12,3.98l0.68,1.14l1.75,1.3l1.38,0.6l0.12,0.43l2.98,2.81l2.79,1.81l1.09,1.05l2.08,0.3l1.07,0.9l-0.41,0.7l-0.68,0.4l-0.06,0.91l-0.66,0.42l-0.66,-0.75l-0.74,-0.3l-0.89,0.64l-0.46,-0.51l0.09,-0.63l-0.46,-0.4l-1.78,0.68l-0.57,0.68l-1.28,0.07l-0.65,0.55l0.0,1.14l-2.27,1.65l0.31,0.99l-0.55,0.96l0.0,1.13l0.49,1.37l-0.25,0.41l-0.71,0.0l-1.51,1.15l-0.37,0.75l0.06,0.98l-0.89,0.27l-0.89,0.93l-0.74,2.12l-0.8,1.04l0.0,0.53l1.46,1.3l-1.04,0.25l-2.23,-0.38l-1.34,0.38l-0.94,-0.38l-2.34,1.81l-0.52,0.62l0.18,0.44l-1.66,2.34l-3.56,6.54l-0.98,2.95l-11.73,-0.63l-4.44,-2.15l-3.76,1.3l-1.47,-0.59l-0.96,-5.95l-0.89,-2.94l0.58,-4.07l-2.13,-5.96l-1.39,-2.27l-2.0,-1.87l-2.12,-0.6l-0.44,0.16l-1.44,2.06l-0.83,2.55l-1.27,2.2l-5.96,2.67l-1.77,1.17l-0.87,-0.84l-0.47,-2.9l-0.87,-2.56l-1.88,-3.35l-3.42,-3.53l-2.01,-3.47l1.28,-11.44l-1.13,-2.64l-1.89,-1.93l-2.3,-1.25l-2.37,-0.45l-3.79,2.22l-3.26,2.61l-8.91,5.84l-4.06,0.34l-2.72,-0.71l-10.5,-4.45l-2.36,-1.32l-3.39,-0.35l-0.43,0.45l0.53,3.92l-3.3,4.94l-2.41,2.1l-0.41,1.48l3.93,4.31l1.4,2.63l-2.11,1.2l-4.24,1.16l-8.29,6.52l-4.82,5.15l-6.1,5.27l-4.35,4.45l-3.41,1.87l-3.61,-1.64l-5.48,-3.19l-2.39,-2.45l-3.5,-2.11l-2.46,-2.2l-5.68,-1.21l-11.68,1.1l-3.53,-1.5l-3.53,-2.05l-4.16,-1.13l-0.91,-2.69l-0.46,-2.91l0.39,-5.45l0.77,-2.11l0.49,-2.71l-1.35,-1.91l-6.1,-3.84l-1.82,-2.26l-0.31,-2.86Z", "name": "Mahdia"}, "tn-mn": {"path": "M454.12,207.27l-0.63,-0.35l-0.2,-1.02l0.49,-3.18l-1.58,-1.43l-2.81,-3.48l-0.57,-1.25l4.78,-6.4l0.92,-0.91l2.29,-1.03l2.57,0.0l1.67,0.22l0.82,1.96l0.76,0.75l0.59,-0.03l5.8,-6.61l3.43,-0.38l2.89,-0.87l3.46,-3.14l1.96,0.01l2.98,1.29l3.34,-0.53l2.2,-1.28l1.95,-2.02l1.46,-4.62l1.16,-2.27l3.59,-3.82l0.69,-4.31l1.51,-1.44l5.29,3.54l10.51,-0.16l2.93,0.77l3.24,0.28l4.43,1.67l1.49,1.13l2.13,3.92l0.8,2.53l1.58,1.64l2.28,0.12l2.35,-1.16l3.03,-0.6l1.5,2.42l0.01,1.62l-0.26,1.08l-1.25,1.6l-0.89,4.07l-1.97,2.37l-1.37,0.86l-2.08,0.4l-0.46,2.48l-1.65,0.9l-0.25,0.85l0.25,0.44l0.86,0.41l4.43,0.52l1.78,0.8l0.93,-0.02l0.71,-1.04l-0.28,-2.59l0.88,-0.9l2.32,0.34l1.78,-0.89l2.45,-0.23l1.14,-0.6l3.91,-3.52l3.53,8.51l2.5,4.39l3.71,3.4l1.92,0.9l0.58,1.28l1.1,0.82l0.2,1.35l-2.75,-0.28l-3.21,0.58l-2.53,1.32l-0.42,1.35l0.93,1.21l-0.06,0.63l-0.64,0.55l-2.36,0.13l-3.68,-4.12l-1.87,-0.4l-0.97,-0.94l-3.08,0.41l-1.64,1.03l-0.76,2.03l0.15,0.45l3.24,2.58l2.82,9.05l2.55,1.44l2.1,0.5l1.15,1.7l0.92,4.03l-0.34,1.83l-1.81,2.33l-0.82,2.05l-6.4,6.98l-2.33,1.22l-2.29,1.75l-1.52,1.75l-1.84,-2.02l-4.83,-2.52l-3.16,0.63l-2.04,1.95l-1.68,3.28l-1.67,3.83l-0.84,4.21l-1.77,5.07l-3.48,4.58l-2.49,1.14l-3.8,-0.25l-0.57,-1.94l-1.5,-2.74l-4.89,-6.08l-3.13,-6.64l-2.72,-1.98l-2.75,-3.74l-2.36,-4.65l-1.61,-6.71l0.93,-6.99l-0.46,-1.21l-1.5,-0.22l-1.92,0.72l-2.27,2.07l-3.05,-0.16l-1.36,-1.51l-11.68,-8.27l-4.45,-0.68l-2.24,-0.75l-4.18,-2.2l-1.44,-1.88l-1.01,-2.13l-0.39,-2.27l-0.8,-1.63l-0.47,-0.2l-1.22,0.35l-1.34,0.76Z", "name": "Manubah"}, "tn-kr": {"path": "M546.49,689.98l-0.53,-13.26l-1.0,-5.96l-1.5,-5.45l-0.39,-4.56l0.11,-5.45l-0.26,-0.38l-1.94,-0.54l-3.96,3.1l-3.6,0.96l-2.96,1.76l-4.16,1.8l-10.19,-5.67l-3.3,-2.55l-2.33,-0.82l-5.04,0.29l-5.63,-0.7l-4.39,-1.74l-4.96,0.83l-4.65,-1.15l-5.13,-3.38l-4.57,-2.37l0.78,-3.89l-1.88,-3.13l-3.33,-3.39l-2.48,-3.05l-2.3,-3.99l-3.02,-4.15l-3.81,-2.93l-2.99,-0.95l-3.59,3.1l-2.68,1.28l-2.6,2.01l-1.35,-2.51l-0.65,-2.38l-4.03,-7.04l-10.98,-6.17l-2.76,-2.22l-1.75,-2.84l-0.5,-3.15l3.88,-4.6l2.83,-2.72l2.67,-3.94l-0.03,-2.03l-1.66,-5.79l-0.87,-9.05l-4.05,-2.58l-5.06,-2.65l-1.88,-2.18l-1.53,-4.47l-1.26,-10.12l-3.77,-4.11l-5.17,-9.77l-3.4,-1.09l-2.85,-2.8l-2.76,-3.96l-3.24,-1.79l-3.5,-2.43l-6.15,-6.32l-1.99,-2.77l-1.24,-2.52l-0.52,-3.43l3.27,-4.51l2.53,-0.39l9.15,5.01l3.57,1.24l6.34,-0.43l2.94,1.58l0.45,-0.05l3.2,-2.78l5.19,-1.63l4.51,-1.84l2.55,-2.24l3.15,-1.41l4.88,-0.09l3.76,-0.64l2.29,-1.9l1.88,-2.01l-0.21,-0.66l-4.77,-0.97l-3.6,-3.37l-2.21,-2.68l-1.37,-2.79l-0.33,-2.82l4.43,-5.17l2.04,-2.95l-1.23,-3.85l1.28,-2.43l0.66,-3.59l-5.75,-9.59l-0.02,-2.05l7.39,-4.0l12.33,-10.51l5.61,-6.51l4.76,-6.92l4.2,-0.82l8.19,-8.62l3.91,-3.12l3.99,-4.0l2.57,-2.02l9.71,3.41l1.3,0.0l3.2,-3.82l2.03,-1.37l4.23,-1.88l8.61,2.84l2.58,4.96l2.18,2.37l3.27,1.65l7.4,-1.13l2.21,0.75l2.78,-0.49l1.67,0.63l2.48,1.64l2.16,0.5l1.08,2.73l1.95,2.26l2.36,1.63l3.33,0.9l2.89,-1.18l1.71,-2.68l0.96,-3.18l-0.19,-4.98l1.67,-3.49l-2.16,-4.37l0.27,-1.73l1.66,-1.09l1.23,1.79l2.34,2.48l2.3,0.88l3.7,-0.6l3.03,-1.88l2.77,-2.62l0.54,-3.12l1.59,-3.35l0.08,-3.03l-1.67,-2.19l0.95,-2.55l2.35,0.47l3.34,-0.36l3.25,0.61l4.63,-1.36l1.8,0.18l-2.37,3.08l-0.47,2.62l0.62,5.32l-0.17,2.43l-2.56,5.26l-0.08,2.53l0.37,0.41l9.49,0.88l1.72,1.26l1.92,4.9l2.24,8.41l0.24,5.92l-4.39,10.97l-3.03,4.98l-1.39,3.6l-0.84,3.33l-1.5,3.55l-3.59,5.96l-1.25,3.58l-2.63,2.58l-2.92,4.48l-0.64,2.81l1.97,3.03l6.03,7.76l1.09,2.36l1.29,4.63l5.97,5.01l4.58,13.86l1.8,2.73l2.61,5.21l2.05,7.02l3.68,3.65l-0.05,2.36l2.55,5.98l0.73,0.94l-2.81,1.08l-6.28,1.04l-1.88,0.91l-2.26,1.76l-1.32,1.58l-4.01,2.47l-0.21,0.48l1.2,3.73l1.81,3.12l2.33,2.87l1.62,2.76l0.33,1.72l-1.65,2.17l-4.42,2.97l-1.91,2.05l-0.51,4.21l-0.5,1.33l-1.19,1.13l-4.4,2.32l-1.89,1.62l-0.22,2.45l-0.81,3.01l0.39,2.14l-0.74,2.64l-1.69,3.33l-0.71,4.09l1.03,4.54l2.02,2.21l3.6,3.11l-0.43,5.63l-1.23,5.21l-0.75,10.67l0.33,3.14l2.03,2.62l6.16,3.89l1.11,1.6l-1.29,4.38l-0.4,5.6l0.47,3.06l0.81,2.22l-0.96,-0.18l-2.99,2.03l-5.64,0.3l-4.84,2.8l-5.31,6.6l-6.68,5.67l-4.77,4.93l-3.66,4.96l-4.84,7.93l-5.34,-0.64l-3.08,-1.58Z", "name": "Kairouan"}, "tn-an": {"path": "M531.89,193.29l1.75,-1.16l0.35,-2.34l1.74,-0.19l1.57,-0.95l2.23,-2.64l0.72,-2.24l0.23,-1.95l1.2,-1.48l0.35,-1.39l-0.05,-1.96l-1.4,-2.41l1.88,-0.84l1.78,-1.5l0.91,-1.28l0.0,-0.46l-1.5,-2.16l3.2,-8.28l0.31,-3.67l2.84,-1.97l3.52,-3.07l3.94,-7.14l2.12,-4.94l-0.13,-6.28l0.27,-2.69l-1.75,-4.05l0.68,-1.33l2.24,0.59l1.78,-1.55l2.44,-2.8l5.14,-2.46l2.35,0.24l2.08,0.7l3.36,-0.04l0.87,0.73l3.19,1.16l0.74,0.62l2.49,-0.08l0.18,0.83l2.74,2.56l4.64,-0.15l-0.48,0.97l-0.97,-0.15l-0.58,0.48l-0.31,0.69l0.46,0.48l0.52,-0.14l-2.46,2.13l-2.83,3.7l-0.43,1.79l-0.68,0.52l0.37,0.48l-0.12,1.0l-1.17,0.99l-0.37,0.77l-0.31,1.08l0.12,1.08l0.74,1.06l-0.25,1.02l0.72,1.19l0.14,1.36l0.61,0.39l0.18,1.31l0.8,0.52l0.74,1.62l-0.06,0.48l0.78,0.73l0.88,3.49l-0.55,1.48l2.09,4.23l3.69,5.08l2.81,2.4l0.01,0.64l1.42,2.23l2.27,2.29l0.64,1.24l2.19,1.07l3.08,3.07l0.21,2.32l1.42,1.44l0.0,1.06l-1.38,1.04l-1.71,4.28l0.96,2.24l1.44,1.13l-1.08,1.52l-7.06,-0.66l-2.77,0.14l-0.44,-0.3l-0.05,-2.15l-0.41,-0.43l-0.82,-0.03l-2.78,1.9l-1.35,1.84l-0.02,1.7l-4.38,-0.25l-3.04,0.53l-0.83,0.91l-0.65,0.07l-1.15,-0.13l-3.75,-2.77l-1.8,-0.67l-3.82,0.61l-1.29,1.14l-1.52,3.61l-1.5,1.91l-2.93,2.63l-1.67,-0.76l-3.54,-3.22l-2.43,-4.25l-1.98,-5.16l-1.67,-3.63l-0.38,-0.23l-1.01,0.26l-3.61,3.44l-1.0,0.51l-2.31,0.18l-1.67,0.87l-1.91,-0.37l-0.78,0.16l-1.2,1.36l0.29,1.87l-0.2,1.2l-2.29,-0.81l-2.14,-0.08l-2.72,-0.69ZM591.95,118.06l0.0,-0.57l0.92,-2.45l0.98,-0.6l-1.42,1.99l0.18,2.99l0.8,2.4l-0.92,-1.76l-0.55,-2.0Z", "name": "Ariana"}, "tn-gb": {"path": "M439.92,1103.68l1.26,-1.88l2.85,-1.8l1.03,-1.87l-0.23,-9.71l3.82,-4.8l4.74,-4.34l-0.07,-0.63l-5.16,-2.85l-2.83,-1.03l-2.25,-3.44l-1.7,-3.93l-2.21,-1.86l-2.78,-0.13l-3.7,0.3l-3.64,0.87l-2.76,-1.81l-0.92,-8.13l-1.97,-2.35l-2.08,-1.69l-1.76,-2.18l-3.77,-0.81l-3.2,0.01l-1.9,1.14l-2.59,-2.36l-4.26,-1.23l-1.16,-1.59l-2.08,-6.74l-0.47,-6.34l-2.6,-5.65l-4.13,-8.34l-3.38,-2.99l-2.75,-5.57l-3.84,-5.7l-1.78,-3.57l-1.35,-7.93l-0.1,-4.75l0.25,-5.57l0.82,-3.55l1.05,-14.03l-0.88,-5.31l0.48,-3.14l1.45,-2.42l2.32,-2.52l3.84,-2.59l2.98,-2.88l3.06,-1.8l4.05,-5.19l1.64,-2.89l-0.9,-2.26l-1.89,-2.36l-2.88,-2.34l-7.77,-8.26l-2.95,-2.4l-2.6,-3.49l5.44,-3.97l4.7,-1.46l4.26,-2.16l6.33,-0.81l19.05,3.68l7.17,-0.66l10.95,-4.18l5.06,-2.43l4.61,-4.14l2.37,-5.04l1.38,-4.09l15.11,-3.58l3.68,1.45l2.82,1.87l3.36,1.03l3.5,10.13l2.26,2.07l3.99,1.86l4.27,3.14l5.65,1.33l3.23,-0.65l2.79,-2.53l2.64,-1.02l7.39,3.47l1.64,2.1l1.05,3.88l1.75,2.81l2.15,1.35l2.5,3.79l3.2,2.03l3.32,0.98l5.0,-0.76l2.09,-1.58l1.45,-1.59l0.75,-1.74l-1.33,-2.29l-0.53,-2.17l1.15,-0.97l2.43,0.67l1.81,1.75l0.79,2.8l2.6,0.92l4.69,3.14l-0.16,1.26l-0.6,0.38l-0.49,1.11l0.68,1.11l1.29,1.1l0.0,1.65l0.37,1.25l-0.12,2.7l-0.49,1.47l0.06,1.79l-0.31,0.8l0.44,1.17l-0.31,0.46l0.65,0.64l-0.46,0.77l0.92,2.07l-0.49,0.98l0.18,2.57l-0.31,0.32l-0.06,1.04l1.11,3.03l0.06,2.91l0.37,0.73l0.61,6.02l0.37,0.58l1.84,7.58l0.38,0.53l-0.14,0.28l0.68,1.17l0.12,1.49l4.86,11.12l3.07,5.93l1.81,1.14l1.26,0.15l-0.86,0.79l0.25,0.81l0.65,0.55l1.08,-0.3l0.56,0.08l-1.43,1.15l-0.31,0.59l2.4,3.54l0.41,0.94l-0.16,0.48l0.52,0.47l1.0,-0.6l-0.42,0.72l1.54,2.81l13.64,15.48l3.53,3.34l11.04,7.76l1.35,1.51l-0.43,0.9l0.58,0.62l0.91,-0.59l2.75,2.22l2.45,3.13l-0.43,1.42l0.49,0.67l0.4,0.4l0.7,-0.36l1.06,0.87l8.63,9.01l4.98,3.18l0.49,0.0l1.17,1.03l3.61,2.07l0.75,0.81l0.87,0.23l0.42,0.58l0.58,-0.3l1.08,1.11l1.01,-0.37l1.57,1.62l0.49,0.0l0.58,-0.59l1.23,0.15l0.83,1.18l1.72,0.44l0.9,-0.22l0.64,1.11l1.11,-0.14l0.42,0.44l0.86,0.0l0.44,-0.68l0.81,0.45l-2.85,2.26l-5.16,2.51l-2.36,3.22l-2.18,4.63l-2.95,3.61l-2.23,3.36l-3.98,6.99l-0.92,4.36l-4.72,6.71l-1.6,3.07l-2.35,3.46l-5.3,5.68l-1.15,4.13l-1.12,2.55l-3.85,3.37l-4.66,0.01l-4.66,-0.85l-4.28,-0.02l-4.1,1.7l-7.32,4.23l-0.38,3.03l-2.05,3.64l-3.35,1.75l-3.5,0.66l-2.29,1.86l0.32,3.21l-0.15,3.69l-4.36,2.78l-3.23,2.69l-3.64,1.57l-5.98,0.98l-2.31,2.6l-2.85,-0.66l-2.76,-1.77l-2.16,-0.11l-2.71,2.88l-2.51,1.75l-3.52,1.02l-4.19,-0.07l-3.11,-1.14l-4.56,1.11l-3.94,0.46l-2.29,-1.18l-6.54,0.74l-6.35,2.57l-3.53,0.37l-4.78,-0.69l-4.72,-1.59l-3.36,-1.76l-2.64,-0.09l-6.92,-6.45l-3.44,-6.89l-5.21,-6.95l-4.03,-12.22l-3.3,-2.88l-3.11,-1.72l-8.1,-5.54l-1.41,-3.37l-5.83,-6.83Z", "name": "Gabes"}, "tn-sf": {"path": "M835.67,770.84l0.43,-1.82l1.5,-0.85l3.26,-0.38l0.46,-0.3l1.64,0.62l-2.53,-0.08l-2.03,0.9l-2.12,2.05l-0.55,0.12l-0.06,-0.26ZM836.23,750.94l-1.01,-1.33l0.27,-0.52l1.22,0.22l0.47,0.75l1.97,1.65l0.54,-0.08l0.68,0.15l0.52,0.22l-1.94,-0.05l-0.41,-0.37l-1.57,0.07l-0.73,-0.71ZM795.73,789.68l-0.52,-0.57l1.35,-0.38l0.4,-0.4l0.68,-0.97l0.49,-1.64l-0.74,-1.84l2.18,-0.52l0.74,-0.52l0.95,-1.07l1.54,-2.84l-0.06,-1.1l2.67,-0.75l1.26,-1.3l-1.35,-1.45l0.18,-0.72l-0.23,-0.42l1.8,0.15l0.83,-0.85l0.0,-0.6l-0.73,-1.77l-0.63,-0.68l-0.18,-1.43l-0.31,-0.35l1.25,-0.3l-0.45,0.65l0.0,0.67l1.04,1.03l0.06,0.61l1.51,1.3l0.58,0.04l0.4,0.55l0.55,0.0l0.8,0.75l0.69,-0.22l1.65,0.22l0.87,-0.45l0.79,0.67l1.17,0.37l0.74,0.0l0.65,-0.55l0.06,-0.75l-0.92,-1.73l0.52,0.04l0.52,-0.55l-0.37,-2.67l1.29,-1.07l0.0,-0.52l-0.89,-1.15l-0.44,0.0l-1.5,-1.31l-0.8,-2.31l2.37,0.75l0.68,-0.82l0.83,-0.22l0.12,0.8l0.52,0.4l0.71,-0.77l-0.06,-0.45l-0.58,-0.55l-0.73,-0.45l-0.16,-0.19l0.83,0.17l1.06,-0.54l1.03,0.31l0.46,-0.47l-0.18,-1.87l-0.86,-1.86l1.07,0.09l0.58,-0.62l-0.12,-1.57l-1.29,-1.19l-0.06,-1.4l0.71,-0.22l0.58,-0.7l-0.37,-0.72l0.89,0.37l0.58,-0.52l-0.25,0.72l1.72,1.18l0.37,1.74l0.74,0.88l0.0,0.76l1.01,1.22l1.23,0.75l0.55,0.0l0.4,-0.4l0.31,-0.9l-0.74,-1.27l-1.17,-0.7l0.17,-0.99l3.18,1.65l1.69,0.22l1.56,1.42l2.35,1.32l-0.35,0.35l-0.52,-0.6l-0.48,0.15l-1.55,-1.5l-0.61,-0.23l-1.85,0.23l-0.48,0.51l-0.37,-0.07l-0.71,1.07l1.27,1.4l-1.27,1.0l-0.06,0.75l0.68,1.5l1.36,1.53l-0.5,0.5l-1.84,-0.03l-0.31,-0.95l-0.89,-0.77l-0.43,0.0l-1.26,1.22l0.0,0.45l0.58,0.63l0.71,0.07l-0.37,1.55l0.18,0.9l4.95,3.93l-0.09,0.71l1.11,1.26l0.31,1.69l-0.19,0.41l-0.82,0.13l-0.65,0.86l-1.5,-0.64l-1.66,0.15l-1.08,1.27l-1.26,0.97l-0.61,0.0l-0.75,0.82l-0.77,0.07l-0.57,-0.52l-0.37,0.0l-0.46,0.6l-0.71,-0.23l-0.58,0.7l0.08,1.44l-0.76,0.78l-6.54,1.12l-2.12,1.3l-1.07,-0.33l-2.53,1.5l-0.54,-0.3l-1.08,0.92l-0.43,0.87l-1.38,0.45l-1.75,1.64l-0.77,0.0l-1.17,0.75l-1.54,1.42l-2.02,0.97l-0.68,0.75l-0.79,0.15l-1.36,1.35l-0.52,-0.04l-0.49,-1.57l0.43,-1.64ZM832.68,763.52l0.84,0.12l-0.18,0.9l0.31,0.51l-1.15,-0.99l0.19,-0.55ZM817.55,757.97l0.28,0.24l0.16,0.0l0.36,0.22l0.0,0.05l-0.45,-0.18l-0.35,-0.34ZM816.07,756.53l0.92,0.26l0.06,0.64l-0.94,-0.69l-0.04,-0.2ZM821.48,754.81l-0.06,-0.06l0.0,-0.0l0.06,0.06l0.0,0.0ZM821.36,754.6l0.0,-0.01l0.06,0.07l-0.06,-0.06ZM761.0,795.39l0.03,-0.1l0.32,0.32l-0.06,0.0l-0.29,-0.22ZM761.52,795.67l1.64,-1.3l1.6,-2.36l2.31,-0.94l1.71,0.79l2.46,0.0l2.1,-0.45l1.52,0.3l0.91,-0.6l1.07,0.23l1.77,1.12l0.8,-0.22l1.2,-1.0l0.4,0.4l0.61,-0.35l3.33,0.5l1.54,-0.3l0.67,-0.52l1.05,1.57l4.91,0.07l1.39,1.23l-0.22,0.58l-3.07,0.67l-4.13,3.36l-1.03,0.0l-1.01,1.45l-4.47,4.23l-1.78,-0.07l-1.19,1.59l0.54,0.94l-4.26,-4.26l-3.85,-1.12l-3.82,-2.32l-2.84,-2.61l-1.85,-0.62ZM543.99,918.65l-0.63,-2.61l-1.97,-1.91l-3.27,-0.77l-1.62,1.67l0.61,2.48l1.27,1.92l-0.56,1.36l-1.33,1.47l-1.79,1.42l-4.8,0.73l-3.01,-0.93l-2.99,-1.91l-2.39,-3.68l-2.15,-1.34l-1.62,-2.57l-1.13,-4.04l-1.89,-2.35l-7.94,-3.59l-2.96,1.16l-2.63,2.44l-3.02,0.61l-5.17,-1.22l-4.24,-3.11l-4.03,-1.89l-2.04,-1.89l-2.59,-7.32l6.88,3.3l4.12,-0.57l1.4,-3.09l-1.07,-2.48l-1.68,-1.84l-1.21,-2.92l-0.49,-2.8l-1.0,-2.62l1.43,-2.29l2.49,-1.82l4.35,-1.99l4.04,-1.28l6.72,0.6l7.91,-3.22l2.65,-3.02l2.8,-4.04l3.34,-5.93l0.64,-1.92l2.54,-3.55l1.61,-3.36l2.51,-1.48l1.85,1.06l4.06,0.57l1.64,-1.71l1.25,-2.02l4.2,-3.84l4.04,-1.55l5.23,-0.7l2.96,-1.38l1.76,-4.16l1.83,-2.2l1.36,-2.94l0.87,-6.74l-0.21,-0.42l-3.51,-1.84l-7.15,-4.59l-5.5,-2.64l-3.76,-4.38l-3.69,-1.99l-1.69,0.09l-6.37,2.34l-3.19,-0.16l-4.37,1.67l-6.04,0.36l-1.9,-4.21l-4.03,-5.76l-0.59,-3.21l2.14,-3.36l2.21,-4.34l1.51,-1.95l10.37,-17.43l1.69,-4.73l2.93,-6.58l6.36,-12.87l3.51,-3.35l-0.2,-2.75l2.81,-4.44l3.25,-3.18l2.64,-3.43l1.71,-4.35l2.47,-2.92l0.08,-3.43l2.31,-4.91l2.58,-8.2l1.26,-5.29l-1.18,-3.07l-2.22,-2.13l0.46,-1.49l4.57,-7.18l3.6,-4.88l4.72,-4.87l6.7,-5.69l5.3,-6.58l4.59,-2.64l5.47,-0.25l3.12,-2.04l5.46,1.59l3.46,2.02l3.81,1.58l11.73,-1.1l5.41,1.17l2.29,2.1l3.41,2.04l2.51,2.54l5.54,3.23l4.18,1.72l3.73,-2.06l4.36,-4.46l6.14,-5.3l4.77,-5.11l8.2,-6.44l4.07,-1.09l2.58,-1.46l0.15,-0.54l-1.61,-3.03l-3.78,-3.92l0.2,-0.93l2.4,-2.1l3.44,-5.15l-0.43,-3.83l2.64,0.25l9.65,4.54l6.25,1.99l4.44,-0.43l8.99,-5.89l3.24,-2.59l3.63,-2.13l1.77,0.41l2.2,1.19l1.7,1.76l0.98,2.34l-1.26,11.52l2.17,3.71l3.36,3.45l1.83,3.28l0.8,2.36l0.49,3.0l1.31,1.38l0.5,0.05l1.96,-1.3l6.08,-2.74l1.5,-2.5l0.81,-2.5l1.24,-1.78l1.75,0.49l1.72,1.66l1.28,2.11l2.04,5.74l-0.59,4.05l0.9,2.96l1.22,6.43l2.13,0.74l3.44,-1.31l4.48,2.14l11.7,0.63l-0.32,3.54l0.55,2.33l0.86,1.56l-0.55,0.54l0.12,1.67l-1.04,3.14l0.06,0.98l0.49,0.81l-0.0,1.8l-0.98,0.84l-0.12,0.84l-0.86,1.11l-0.26,1.09l-1.46,2.06l-0.07,1.93l-2.23,0.97l-2.55,2.24l-0.71,-0.36l-0.4,0.67l-1.01,-0.15l-0.87,0.82l-0.6,0.08l-1.84,1.2l-2.8,2.93l-2.1,1.59l-1.77,2.11l-0.18,0.69l-0.74,0.44l0.12,0.61l-0.68,1.11l0.21,0.36l-0.76,3.39l0.49,5.08l-0.49,3.24l0.8,3.36l-0.55,1.21l-0.18,2.4l0.22,0.64l-1.51,2.73l-2.34,3.02l-1.84,1.63l0.0,0.45l-1.97,2.02l-0.86,1.95l0.18,0.91l-0.25,0.97l-1.54,1.34l-1.29,1.94l-0.59,-0.55l-0.52,0.55l0.29,1.84l-0.23,1.08l1.62,2.61l-0.14,1.06l-1.57,0.34l-0.7,0.52l-2.92,0.22l-2.13,1.42l-2.05,0.9l-1.57,1.3l-1.63,2.97l-2.08,0.15l-0.71,0.7l-0.37,0.99l-0.83,0.26l-1.11,1.35l-2.21,0.67l-0.95,1.22l-0.12,0.65l-1.47,0.92l-0.8,1.42l0.25,1.42l1.99,1.47l-0.14,0.39l-1.27,-1.16l-1.38,1.24l-0.06,0.37l0.4,0.4l0.85,-0.46l1.07,1.16l-0.39,0.0l-0.52,0.77l-0.58,-0.85l-0.92,-0.15l-0.46,0.47l-0.12,0.37l0.68,0.44l0.31,1.56l-0.86,-0.06l-0.37,-1.56l-0.8,-0.47l0.0,-0.8l-0.83,-1.15l-1.32,0.7l0.0,0.42l-1.11,1.3l-0.37,1.19l-0.68,0.91l0.0,0.52l0.74,0.47l-0.31,0.87l1.33,0.87l-0.82,0.15l-0.67,-0.3l-0.65,0.7l0.12,2.39l0.37,0.4l0.0,1.17l0.43,0.52l-0.37,1.57l0.22,1.23l-2.74,3.33l-0.86,1.49l-1.57,-1.44l-0.54,0.0l-0.69,-0.67l-1.41,0.22l-2.06,1.15l-0.18,0.52l0.52,0.7l-0.67,0.76l-0.31,-0.07l-1.0,0.75l-0.6,-0.3l-1.05,0.07l-0.98,0.6l-0.52,0.9l-1.7,1.41l-0.55,0.2l-1.59,-0.58l-1.08,1.12l-1.48,0.92l-0.8,1.35l0.47,1.23l-0.16,0.35l-1.57,0.63l-0.95,0.92l-0.43,0.97l0.12,0.91l-2.4,3.66l-1.1,1.0l-0.59,-0.37l-1.2,1.22l-0.0,1.13l-0.74,0.81l-0.18,2.33l-0.37,0.73l0.06,1.04l0.37,0.5l-0.31,0.92l0.0,2.39l0.31,0.31l-1.75,2.42l-2.41,1.42l-6.58,2.91l-0.6,-0.97l-1.11,-0.07l-3.35,1.37l0.06,-0.53l-0.46,-0.47l-0.86,-0.15l-1.12,0.97l-3.0,-0.37l-1.2,0.77l-0.37,0.52l0.12,0.42l-0.52,-0.15l-1.3,0.82l-0.85,-0.37l-1.97,0.45l-0.43,0.45l-1.1,-0.07l-0.58,0.97l-1.63,0.37l-1.44,1.57l-2.24,1.42l-2.37,2.56l0.0,0.35l-0.98,0.7l-0.98,1.87l-3.44,3.8l-2.33,3.89l-2.15,2.15l-1.29,2.77l-1.17,0.96l-0.89,1.46l-2.12,0.37l-0.49,-0.22l-0.06,-1.24l-0.4,-0.4l-1.38,-0.45l-0.52,-0.52l-0.74,0.0l-0.58,0.47l-0.74,1.19l0.36,0.43l-1.16,0.91l0.49,0.88l-0.37,0.91l1.01,0.62l2.0,-1.45l-0.18,2.26l-0.47,0.85l-5.87,2.68l-0.87,-0.6l-1.32,0.03l-0.83,-1.07l-3.5,-1.56l-0.8,1.19l-0.55,-0.07l-0.52,0.55l0.52,0.57l-0.91,-0.22l-0.52,0.55l0.36,0.47l-0.3,0.44l0.58,0.61l0.51,0.0l-0.17,0.8l-0.18,0.36l-0.58,-0.55l-0.61,0.08l-0.95,1.0l-0.49,2.16l-1.12,1.61l-2.54,0.22l-2.22,0.89l-1.28,-0.22l-1.63,1.37l-1.22,1.68l-2.37,1.12l-0.65,0.92l-1.63,-1.97l-1.41,-0.74l-0.52,0.1l0.0,-0.52l-0.4,-0.4l-1.04,0.22l-0.58,0.62l0.18,0.91l-1.23,1.48l0.12,1.35l-1.35,2.87l-1.38,0.52l-0.4,0.46l-1.01,-0.54l-0.92,0.0l-0.77,0.55l0.18,1.97l-0.49,3.46l-3.23,-3.97l-2.07,0.28l-1.99,1.13l-2.12,2.56l0.06,0.39l-3.13,3.26l-0.74,1.26l-0.06,0.52l0.31,0.34l-0.71,-0.07l-1.44,1.96l-2.77,5.87l-2.4,7.3l-2.21,2.81l-1.66,3.51l-0.58,-0.41l-0.46,0.47l-0.12,5.47l-0.55,0.55l-0.31,2.17l-0.9,1.75l-0.54,-0.46l-1.54,-0.15l0.09,-2.02l-5.11,-3.43l-2.52,-0.9ZM711.21,783.49l0.89,0.3l0.06,0.96l-0.47,0.48l0.04,-0.95l-0.52,-0.8ZM612.54,873.73l0.31,-2.37l0.64,-0.15l0.99,-1.19l0.91,-0.45l0.34,1.39l0.92,0.82l0.18,0.73l0.25,1.44l-0.31,1.19l-0.57,0.26l-1.24,-0.37l-0.97,0.37l-1.09,-0.56l-0.37,-1.11ZM610.94,868.65l0.12,-0.52l0.18,0.01l0.12,0.4l-0.43,0.11Z", "name": "Sfax"}, "tn-sl": {"path": "M308.76,304.47l2.39,-1.55l14.04,-1.63l0.7,1.21l2.46,2.39l2.06,0.33l3.09,-0.25l1.87,0.27l1.8,1.33l1.65,4.35l3.75,2.61l0.96,1.6l-0.71,3.59l0.55,1.84l0.37,0.28l2.13,0.04l3.17,3.09l2.43,0.98l8.0,-2.63l5.67,-4.19l1.07,-0.48l5.65,0.76l4.8,0.04l3.51,0.44l2.66,0.74l2.34,1.04l2.25,3.14l2.55,2.36l2.74,1.42l3.62,-1.06l4.88,-2.66l2.46,-2.64l0.54,-2.87l-0.82,-2.99l0.09,-4.08l0.68,-3.01l2.27,-2.56l7.92,-2.86l6.49,-1.07l4.06,-0.26l2.8,0.37l4.39,-0.22l3.42,0.83l2.16,-1.1l3.95,-1.25l1.93,1.09l4.46,3.94l2.24,3.39l2.39,2.45l5.01,0.96l4.26,-0.63l3.25,0.13l2.58,1.75l3.31,-1.1l0.27,-0.39l-0.06,-1.85l0.86,-1.82l1.03,-1.2l9.27,1.1l3.97,-0.68l1.2,-1.85l0.63,1.97l0.35,3.63l-0.16,2.94l-1.86,13.24l-1.22,2.82l-0.51,2.39l-2.32,3.82l-1.33,3.37l-1.57,1.54l-4.7,2.82l-5.2,5.13l-2.41,0.81l-4.01,0.72l-5.39,-0.77l-2.28,0.99l-0.16,0.6l4.0,5.92l4.75,1.5l0.45,1.54l-0.04,4.84l0.91,2.83l0.43,0.27l1.72,-0.22l2.12,-1.44l1.55,-0.44l5.78,2.98l1.84,4.15l2.05,3.55l10.01,3.17l1.84,1.53l0.45,2.65l-1.06,4.01l-1.16,2.28l-0.76,2.87l-2.31,5.03l-1.46,2.11l-0.78,2.04l-0.87,3.22l0.34,0.51l-2.23,1.75l-3.96,3.97l-3.95,3.16l-8.13,8.55l-4.26,0.87l-4.82,7.01l-5.54,6.43l-12.27,10.46l-7.48,4.02l-0.23,0.37l0.07,2.59l5.69,9.32l-0.62,3.37l-1.32,2.75l1.26,3.46l-1.88,2.72l-4.53,5.3l0.26,3.36l1.51,3.1l2.29,2.77l3.7,3.46l4.37,0.95l-3.35,3.17l-3.56,0.61l-5.09,0.13l-3.28,1.47l-2.53,2.23l-4.4,1.79l-5.25,1.65l-3.19,2.74l-2.99,-1.55l-6.24,0.45l-3.36,-1.16l-9.52,-5.11l-3.09,0.6l-3.47,4.78l0.52,4.07l1.32,2.66l2.03,2.83l6.29,6.46l3.55,2.47l3.08,1.66l2.72,3.91l3.0,2.96l3.26,0.98l5.11,9.66l3.67,3.91l1.27,10.12l1.56,4.59l1.27,1.85l-3.08,1.51l-8.53,-1.75l-4.51,1.77l-8.61,0.88l-1.01,0.36l-2.23,-0.48l0.78,-2.02l-0.55,-2.35l-1.91,-4.8l-3.11,-3.51l-2.25,-1.42l-2.96,-0.49l-0.28,-1.64l-1.0,-2.23l-0.47,-0.22l-4.38,1.39l-2.53,-0.04l-2.43,-0.45l-3.36,-1.49l-3.23,-2.36l-0.88,-2.61l0.85,-3.43l0.12,-2.48l-3.02,-2.37l-2.39,-2.75l-2.89,-1.11l-2.35,1.05l-3.74,-0.05l-2.63,-0.7l-2.68,0.11l-4.8,2.07l-2.29,-1.37l-1.73,-2.81l-1.04,-2.42l-1.84,-2.54l-0.45,-0.15l-2.63,0.86l-2.63,1.31l-3.03,-0.19l-2.4,-1.62l-0.53,-2.57l-1.16,-3.12l-1.6,-2.93l-5.34,-3.12l1.73,-0.84l4.03,-1.17l2.84,-2.12l4.42,2.67l2.42,0.37l0.46,-0.36l0.28,-2.92l-0.65,-3.17l-0.05,-3.16l-3.6,-5.88l-1.3,-3.22l4.17,-6.25l0.69,-4.31l-0.5,-5.41l-1.22,-4.51l2.84,-2.55l0.78,-2.46l-0.33,-0.51l-2.66,-0.38l1.48,-5.4l3.32,-3.49l2.6,-1.46l3.53,-0.56l3.45,-2.39l1.11,-3.36l0.09,-3.13l-0.63,-6.02l0.92,-2.54l6.35,-6.08l3.85,-1.93l2.62,-2.56l0.37,-2.03l-1.33,-5.67l-0.78,-6.41l0.12,-4.48l0.71,-5.86l-0.32,-0.44l-7.77,-2.57l-1.15,-3.39l-0.44,-0.27l-4.67,0.52l-1.75,-3.8l-1.4,-1.59l-2.58,-0.72l-2.94,-0.06l-2.22,-8.76l-1.15,-2.75l3.15,-4.9l0.18,-2.76l-1.05,-3.38l0.56,-3.45l-2.04,-2.65l-6.11,-2.4l-2.06,-1.17l-1.4,-2.21l-1.01,-3.05l-1.13,-2.21l-4.27,-6.83l-1.64,-3.41l-0.04,-2.65l5.7,-6.14l0.98,-2.78l-0.5,-2.46l-1.75,-3.76l-0.84,-3.4l-5.58,-6.36l-2.18,-4.23l-1.77,-5.63Z", "name": "Siliana"}, "tn-ss": {"path": "M579.35,475.76l0.54,-2.45l2.85,-4.37l2.71,-2.7l1.23,-3.56l3.61,-6.0l1.52,-3.6l0.84,-3.35l1.36,-3.54l3.02,-4.96l2.46,-5.62l2.01,-5.65l-0.26,-6.13l-2.25,-8.48l-1.98,-5.08l-2.26,-1.65l-9.21,-0.85l0.03,-1.91l2.6,-5.38l0.18,-2.64l-0.61,-5.26l0.44,-2.38l1.14,-1.71l2.4,-2.42l1.84,-1.05l4.41,-0.9l1.66,-1.34l2.48,-7.38l1.15,-5.16l-0.04,-2.47l-0.95,-2.45l-0.3,-2.11l1.39,-2.02l4.0,-0.91l2.39,0.34l5.33,1.46l2.69,-0.83l5.32,-0.52l2.68,-2.0l1.95,-2.86l-0.03,-2.28l-0.97,-2.04l-1.47,-1.06l-2.64,-0.37l-0.44,-0.86l0.76,-1.0l1.65,-0.66l2.15,-0.17l1.21,-1.68l-0.01,-2.7l-0.68,-2.66l0.45,-2.64l-0.66,-2.79l-2.89,-5.16l-0.09,-3.34l1.18,-3.51l1.81,0.1l2.93,-0.92l5.25,-1.08l3.72,0.19l1.6,1.04l5.49,6.13l1.95,0.2l2.27,-1.86l0.63,-1.94l0.23,-2.24l1.05,-1.82l1.47,-1.3l1.41,0.38l9.71,11.45l-2.4,3.82l-1.9,3.89l-4.18,10.68l-3.81,12.73l-2.15,10.44l-0.86,7.23l-0.31,11.27l0.49,8.06l1.41,9.05l1.9,7.76l2.27,4.33l1.32,1.31l0.39,-0.27l1.49,0.12l0.86,0.53l0.71,0.99l0.56,-0.06l-0.04,2.47l0.37,2.28l0.48,0.4l-0.24,0.89l0.98,1.69l0.61,1.87l0.49,3.81l2.7,4.6l0.31,1.32l5.1,7.06l2.15,2.28l0.12,0.68l0.86,0.87l1.66,3.31l3.09,3.38l-0.32,0.33l0.06,1.21l0.74,3.11l3.07,3.7l0.8,2.67l1.23,2.12l3.38,3.02l0.46,1.02l1.24,0.75l-0.53,1.2l0.0,2.12l1.32,1.84l1.79,1.21l-2.65,2.95l0.55,3.04l-0.59,3.66l-1.29,2.2l-4.32,0.03l-0.39,0.49l1.2,3.46l-1.22,2.44l-0.66,5.74l0.13,4.84l1.66,3.31l-0.13,2.0l-5.45,5.74l-1.25,2.97l-0.3,2.85l-1.2,2.18l-2.5,1.29l-6.26,0.37l-3.34,1.03l-2.08,2.3l-0.29,3.35l1.29,2.62l1.46,2.06l-0.55,2.84l-1.71,2.19l-2.95,2.19l-2.64,1.59l-2.98,1.28l-1.21,1.89l0.11,2.3l0.88,2.9l1.28,2.36l1.92,1.86l2.15,0.49l2.04,1.41l2.5,0.4l0.42,-0.22l0.97,-1.98l0.49,-2.25l0.76,-1.64l1.41,-0.85l4.74,-1.02l5.06,3.64l0.6,4.39l-0.79,3.05l-3.48,2.87l-3.34,1.87l-1.3,1.88l-0.43,2.3l-2.8,5.18l-2.77,-0.19l-5.08,-2.05l-4.0,-0.98l-2.03,-1.9l-2.68,-4.23l-2.21,-1.17l-0.95,-1.3l-1.62,-2.82l-0.82,-3.54l-0.41,-0.31l-2.8,0.16l-1.68,-0.97l-1.99,-2.32l-1.53,-0.92l-1.97,0.7l-2.35,-0.28l-2.02,-0.98l-1.71,0.86l-1.11,1.44l-0.0,1.96l-1.18,0.04l-1.22,-1.76l-0.53,-1.96l-1.16,-1.39l-1.9,-1.21l-1.22,-1.27l-1.25,-2.51l-2.19,-1.69l-1.85,-2.17l-1.48,-2.62l-0.94,-3.92l0.59,-2.18l4.01,-3.99l-0.26,-0.66l-1.95,-0.14l-0.79,-1.0l-2.5,-5.86l-0.02,-2.55l-3.66,-3.58l-2.04,-6.97l-2.66,-5.31l-1.76,-2.65l-4.6,-13.92l-6.07,-5.15l-1.13,-4.32l-1.18,-2.58l-7.86,-10.36Z", "name": "Sousse"}, "tn-je": {"path": "M138.24,295.01l0.48,-0.75l1.18,0.23l1.36,-0.63l1.21,-1.05l0.79,-2.37l0.82,-0.2l3.26,1.72l3.13,-1.71l2.69,-0.46l0.58,-0.61l0.07,-0.71l1.42,-0.12l1.6,-1.27l0.52,0.06l0.75,-0.67l0.56,-0.03l0.83,-1.56l1.51,-0.9l1.79,0.54l2.24,-0.79l1.11,-0.21l1.06,0.22l1.46,-0.59l2.31,-2.24l1.07,-0.05l0.98,-0.5l1.0,-1.38l1.04,-0.74l0.22,-0.88l0.52,-0.48l-0.19,-0.86l0.85,-2.15l1.47,-0.61l1.0,0.02l1.52,-1.12l1.14,-0.14l0.53,-0.64l1.43,-0.61l0.79,-1.39l0.69,-0.52l2.96,-0.82l0.57,-0.52l1.47,1.01l1.86,-1.25l0.06,-1.25l1.01,-1.51l0.09,-1.16l0.88,-1.19l1.19,-0.03l1.27,-0.76l0.46,-0.65l2.94,0.87l3.88,-0.27l0.31,-0.56l-0.31,-0.78l0.84,-1.76l0.02,-1.22l0.94,-1.96l1.06,-4.31l-0.31,-0.73l-1.08,-0.59l1.29,-0.25l2.31,-1.33l1.36,-2.49l1.48,-1.25l0.5,-1.78l-0.33,-0.69l0.86,-1.19l0.0,-0.98l-0.23,-0.44l-1.25,-0.64l-0.26,-1.74l-0.85,-2.38l-1.47,-1.33l-0.62,-1.17l-0.33,-2.73l1.16,-1.82l-0.22,-0.55l-2.43,-2.08l-2.85,0.8l-1.51,-0.03l-0.36,-0.47l-0.74,-0.19l-0.73,-2.12l2.02,-0.38l4.24,-2.45l3.42,-0.73l1.4,-1.66l0.79,-0.33l3.78,0.26l5.1,-0.64l1.72,1.8l0.6,-0.29l1.79,0.46l1.94,-0.71l0.4,-0.42l1.66,1.12l1.55,-0.43l1.12,0.55l3.3,-4.6l1.63,-1.69l1.21,-0.78l1.78,1.82l0.98,0.17l1.68,-1.17l0.94,-1.74l1.55,0.09l4.6,-2.56l1.42,-0.46l2.91,-2.07l0.61,-1.82l1.11,-1.51l0.63,-2.1l-0.16,-0.64l-2.07,-1.12l-2.02,-2.58l-2.18,0.73l-2.16,-1.23l-0.98,0.1l-1.63,-0.72l-1.12,0.28l0.83,-1.8l-0.25,-1.56l0.57,-1.64l-0.35,-3.54l0.47,-1.56l-0.18,-1.22l0.68,-1.91l0.46,-1.08l3.86,-1.7l0.19,-0.51l-2.22,-3.87l-0.7,-2.94l2.59,-1.77l2.2,-0.85l1.23,-0.91l1.23,-0.09l0.51,-1.11l0.78,0.26l0.89,-0.69l1.03,-0.23l1.7,0.54l2.1,-1.77l-0.05,0.6l1.01,0.71l2.6,-1.08l2.14,0.23l1.06,-1.23l2.01,2.38l1.35,1.08l0.41,-0.11l1.67,1.65l3.5,-0.08l1.84,-1.21l3.01,-1.09l0.58,-0.72l0.71,0.18l3.55,-3.0l2.17,-0.38l5.16,-4.0l2.72,-2.54l0.84,-0.39l0.38,-0.69l6.3,-5.82l6.61,4.11l3.1,3.01l-0.24,4.49l-3.07,4.56l-0.76,1.87l-0.04,2.56l0.85,2.94l1.52,2.58l2.9,1.94l2.18,0.66l4.63,2.85l1.6,1.4l-1.02,5.9l-3.52,5.76l-4.17,3.5l-4.69,2.72l-0.55,1.92l-0.24,5.72l-0.92,2.49l-0.17,2.55l1.08,1.93l14.88,1.07l2.87,1.04l2.35,1.54l1.38,2.25l4.04,9.41l-1.62,2.7l-1.96,5.28l-0.93,3.64l0.22,3.45l1.24,3.37l1.52,2.94l7.89,9.77l1.35,2.86l0.18,3.08l-0.28,6.77l-0.42,2.63l-4.55,7.41l-0.84,2.66l-0.54,6.11l0.21,5.09l-7.58,2.12l-17.83,1.91l-2.69,1.76l-5.36,6.28l-2.74,1.49l-2.37,0.7l-5.55,-0.05l-3.75,1.52l-2.91,-0.06l-9.72,2.09l-3.61,0.25l-3.78,1.13l-3.79,0.33l-2.52,-0.39l-3.64,-1.85l-4.75,-1.48l-3.66,-0.72l-9.55,4.51l-2.99,1.1l-2.87,0.08l-5.36,-0.89l-2.86,0.12l-2.45,1.47l-4.84,4.68l-4.4,0.59l-3.54,0.97l-7.46,5.78l-12.23,-1.42l1.23,-1.92l-0.52,-2.27l0.88,-3.11l-0.86,-0.95l0.06,-0.36l2.84,-3.38l-0.44,-2.97l-0.88,-0.59l-4.25,-0.49l-2.34,-0.81l-1.21,-0.99l-0.62,-1.32l-2.29,-2.5l-0.98,-0.08l-2.3,2.94l-3.09,0.8l-0.13,-0.77l-0.69,-0.43l-0.56,0.15l-0.83,1.59l-0.33,-0.88l-1.23,-0.21l0.46,-0.96l-0.76,-1.15l-2.66,-0.62l-1.54,0.17l-1.3,-0.82l-5.05,1.9l-0.8,-0.88l-2.02,-1.15l-1.04,-0.13l-1.57,0.31l-2.89,-0.54l-3.03,0.11l-1.48,-0.84l-1.38,-2.32l-0.85,-0.61l-4.2,0.2l-1.08,-0.64l-0.47,-0.63l0.03,-0.71l-0.6,-1.5l-0.8,-1.19l0.27,-2.61l-0.2,-0.96l-1.71,-1.05ZM271.85,165.87l-0.18,-0.26l0.24,-0.25l0.06,0.64l-0.12,-0.14Z", "name": "Jendouba"}, "tn-sz": {"path": "M345.25,702.43l4.4,0.08l3.78,-0.59l3.6,-1.99l2.83,-2.26l3.18,-1.37l7.8,-0.64l4.55,-1.03l5.0,-0.36l3.86,-1.6l2.3,-4.53l0.46,-3.51l-0.19,-0.39l-2.31,-1.42l-1.75,-1.94l-1.5,-2.56l0.44,-2.57l1.26,-3.23l-2.04,-3.6l-1.3,-4.78l0.77,-1.71l1.67,-2.41l-0.88,-3.22l0.83,-2.28l-0.06,-2.63l-1.17,-2.65l0.44,-1.57l4.86,-2.57l-0.01,-2.25l-5.33,-4.06l-3.4,-1.39l-2.16,-1.97l-4.06,-2.35l-1.47,-2.06l-1.66,-3.62l-6.17,-3.49l-2.65,-0.34l-1.41,-1.67l-0.24,-2.36l2.05,-6.4l1.64,-3.07l7.69,-10.73l4.84,-8.12l6.65,-8.53l2.84,-2.11l3.31,-1.36l2.82,-1.83l1.53,-2.38l6.68,-4.93l-0.04,-0.69l9.05,-1.04l4.33,-1.76l8.55,1.75l3.84,-1.79l8.94,4.97l0.86,8.88l1.67,5.85l0.02,1.74l-2.5,3.57l-2.79,2.68l-4.01,4.76l0.45,3.73l1.88,3.11l2.93,2.39l10.81,6.01l3.96,6.91l0.64,2.36l1.6,2.96l0.6,0.13l2.94,-2.27l2.62,-1.24l3.18,-2.96l2.58,0.79l3.7,2.85l2.89,4.0l2.32,4.02l2.54,3.12l3.31,3.37l1.72,2.88l-0.85,3.74l0.21,0.44l4.79,2.48l5.29,3.46l4.8,1.18l4.88,-0.85l4.43,1.74l5.71,0.71l4.92,-0.3l2.08,0.71l3.34,2.56l10.39,5.78l4.71,-1.87l2.98,-1.76l3.53,-0.93l3.95,-3.08l1.11,0.41l-0.11,5.18l0.39,4.66l1.51,5.5l0.99,5.88l0.6,10.08l-0.08,3.35l0.22,0.36l3.5,1.77l5.27,0.63l-0.02,0.82l2.25,2.1l1.08,2.63l-1.23,5.14l-2.58,8.17l-2.31,4.89l-0.02,3.29l-2.48,2.97l-1.66,4.26l-2.55,3.32l-3.33,3.27l-2.91,4.6l0.25,2.62l-3.49,3.37l-6.4,12.95l-2.94,6.6l-1.67,4.66l-10.35,17.39l-1.52,1.96l-4.47,8.08l0.7,3.61l4.07,5.82l1.25,3.04l1.11,1.54l6.35,-0.37l4.46,-1.68l3.19,0.16l6.37,-2.35l1.2,-0.1l3.41,1.81l3.9,4.49l5.53,2.65l7.12,4.57l3.31,1.74l-0.79,6.32l-1.31,2.83l-1.85,2.23l-1.52,3.86l-2.76,1.29l-5.1,0.67l-4.35,1.67l-4.36,3.99l-1.29,2.09l-1.41,1.46l-3.42,-0.63l-1.86,-1.1l-3.23,1.66l-1.77,3.55l-2.56,3.57l-0.67,1.98l-3.31,5.88l-2.74,3.94l-2.41,2.82l-7.73,3.15l-6.68,-0.61l-4.18,1.33l-4.41,2.01l-2.66,1.94l-1.71,2.99l1.06,2.77l0.49,2.81l1.25,3.03l1.68,1.84l0.97,2.24l-1.21,2.39l-3.27,0.35l-7.4,-3.49l-0.8,-2.04l-3.51,-1.08l-2.78,-1.86l-3.84,-1.51l-7.19,1.81l-5.07,0.83l-2.95,0.93l-1.86,-1.43l-0.7,-1.86l2.32,-6.24l1.02,-7.55l0.99,-4.57l1.85,-3.12l1.06,-3.49l-1.61,-2.93l-3.42,-1.35l-3.44,-1.96l-6.29,-1.32l-4.71,-1.52l-2.72,-1.37l-4.43,-7.53l-4.5,-4.28l-10.33,-6.07l-10.11,-1.29l-5.35,0.33l-0.99,-1.35l0.13,-3.06l-1.36,-2.27l-2.67,-2.03l-3.36,-2.41l-2.48,-0.69l-2.23,0.86l-1.8,-0.04l-2.01,-1.5l-1.08,-1.75l-0.33,-2.06l0.23,-7.34l0.69,-2.59l-0.63,-2.34l-1.6,-2.37l-0.8,-2.86l2.36,-3.21l2.22,-1.67l2.35,-2.93l0.09,-3.69l-1.81,-2.31l-0.65,0.05l-1.67,2.76l-3.6,3.09l-2.49,-0.24l-1.12,-0.62l-3.96,-6.78l-0.37,-0.21l-4.99,0.42l-3.06,-2.21l-3.99,-0.49l-3.0,-1.85l-5.18,1.12l-5.0,-0.75l-7.97,-4.11l-5.56,3.08l-14.54,4.06l-2.13,-0.98l-3.3,-2.63l-3.25,-0.79l-2.8,-1.14l-2.27,-2.17l-2.11,-1.22l-8.6,-1.54l-5.51,-2.77l-2.81,-0.91l-3.81,-3.13l2.51,-0.82l4.31,-2.43l6.19,-5.06l3.29,-2.0l9.07,-2.91l5.73,-3.18l8.55,-3.13l6.23,-5.72l8.77,-4.15l0.32,-3.58l-1.84,-1.71l-3.18,-1.37l-1.0,-1.34l0.43,-2.63l1.22,-2.88l0.61,-3.0l1.06,-1.61l7.57,-8.31l1.18,-3.47l1.6,-2.07Z", "name": "Sidi Bou Zid"}, "tn-nb": {"path": "M620.65,291.8l3.67,-1.35l1.6,-1.53l0.05,-0.51l-1.05,-1.26l-4.58,-0.1l-0.81,-0.57l0.27,-1.54l2.49,-5.15l0.18,-2.08l3.52,-7.19l0.65,-2.51l-0.23,-2.28l-1.88,-1.68l-4.78,-0.54l-0.34,-1.05l5.2,-7.03l1.97,-5.7l1.11,-6.94l2.83,-1.8l1.47,-6.63l2.16,0.46l3.44,0.15l6.45,-2.22l1.6,-0.83l2.7,-0.47l0.69,-0.77l1.71,-0.69l0.65,-1.15l0.48,0.0l3.73,3.83l0.8,0.15l2.52,-1.23l1.2,-1.7l0.0,-0.54l-0.58,-0.55l-3.07,-0.46l-0.4,0.4l0.31,0.6l-0.49,0.29l-1.08,-0.52l-1.03,0.08l-1.13,-1.02l0.1,-0.36l1.44,-0.12l1.98,-1.0l1.4,0.0l1.06,-0.69l1.52,-0.31l2.64,-1.23l2.4,-1.38l0.95,-1.09l0.43,-1.44l0.71,-0.15l0.95,-0.86l0.98,-2.46l-0.18,-1.09l0.31,-0.91l0.0,-1.93l1.54,-1.14l0.49,-1.38l0.12,-2.85l0.74,-1.14l-0.12,-0.78l0.49,-0.68l-0.37,-0.69l0.37,-0.39l0.37,-1.76l0.12,-1.23l-0.3,-0.64l0.54,-0.67l-0.26,-0.44l0.55,-0.69l0.54,0.15l1.32,-1.63l0.31,-1.23l-0.34,-0.49l0.91,-2.03l2.29,-0.15l1.08,-0.86l0.35,-0.67l2.11,-1.17l0.06,-0.84l-0.74,-0.75l0.06,-0.31l1.67,0.15l1.24,1.38l0.8,0.0l1.04,-0.6l1.35,-0.02l0.81,-0.67l1.44,-0.18l0.77,0.31l1.58,-1.19l1.56,1.11l0.52,-0.4l0.58,1.17l1.49,-0.34l0.72,0.18l0.82,-0.62l0.72,0.62l1.29,0.0l0.51,-0.31l0.84,0.23l2.03,-0.69l6.47,-3.38l0.6,0.0l2.29,-1.77l1.7,-0.69l4.27,-5.26l2.38,-2.43l6.68,-4.0l2.72,-2.54l0.48,0.15l0.46,-0.62l1.38,-0.38l0.46,-0.63l-0.75,-0.68l0.97,-0.46l2.54,-2.62l0.81,-0.49l0.58,0.41l0.77,-1.08l0.89,-0.08l0.46,-0.48l-0.12,-1.99l0.71,0.23l2.18,-1.86l-0.04,-0.58l0.28,-0.25l0.35,-0.23l0.6,0.38l0.83,-0.86l-0.25,-1.28l0.71,-0.09l1.26,-1.55l-0.51,-0.75l1.4,0.92l1.11,0.23l0.4,-0.4l0.61,-1.77l0.06,-1.62l-1.26,-1.63l-0.41,-0.08l-0.75,-0.92l-0.52,0.0l0.06,-0.66l0.83,0.62l0.71,-0.63l0.12,-1.0l-1.17,-0.63l0.58,0.03l0.71,-0.94l-1.54,-1.14l1.11,-1.4l0.95,1.01l1.11,-0.15l0.34,-0.34l0.46,0.49l0.68,0.0l0.52,-1.0l1.55,-0.62l1.12,0.54l0.58,-0.49l0.77,0.34l0.88,-0.92l2.14,0.54l0.84,-0.62l0.88,1.15l1.11,0.23l1.01,-0.78l0.12,-0.45l0.89,0.15l1.25,-1.23l1.21,0.08l0.58,-0.92l1.01,0.08l3.99,-1.62l1.18,-1.54l0.68,-0.39l0.54,0.08l1.12,-0.92l0.6,0.08l0.95,-0.94l-0.8,-2.0l1.72,1.17l0.18,1.14l0.4,0.4l0.78,0.0l0.84,0.59l0.8,0.88l-0.12,1.52l0.31,0.54l3.11,3.5l-0.08,0.72l-0.45,0.47l0.28,0.55l-1.97,0.43l-1.44,2.56l-0.37,1.92l0.31,4.54l1.41,2.45l0.18,1.63l1.78,2.26l0.18,0.89l1.01,0.88l-0.4,0.81l1.29,1.37l0.65,1.26l1.03,0.08l0.72,0.89l0.37,1.86l0.49,0.52l-0.18,0.63l0.65,0.96l-0.16,1.19l0.55,2.86l-0.06,1.68l0.31,2.46l0.59,1.58l0.27,3.5l0.68,1.54l2.95,4.15l1.81,2.01l1.0,0.38l-1.21,2.44l-0.25,2.29l-0.92,1.02l0.17,0.88l-0.48,0.58l-0.68,2.76l-0.6,0.83l-0.26,0.18l-0.52,-0.57l-0.28,0.21l-0.46,-0.91l-0.92,0.0l-1.47,0.23l-1.38,1.08l-1.01,0.0l-4.76,3.99l-1.94,0.92l-3.05,3.16l-2.11,1.68l-3.41,3.78l-1.41,2.47l-2.03,2.59l-0.61,1.63l-3.26,5.06l-3.44,4.2l-1.54,3.16l-1.87,-1.11l-0.52,0.48l1.47,1.24l0.37,0.69l-5.96,9.1l-0.31,0.98l-1.29,1.47l0.27,0.44l-0.27,0.77l-1.84,2.77l0.0,0.78l-1.72,2.9l-0.31,1.09l-0.92,0.98l-3.26,5.82l-0.8,2.08l-1.72,2.74l-3.26,7.39l-0.68,0.64l-0.8,2.77l-1.23,1.36l0.25,0.4l-0.61,1.61l-1.78,3.43l-1.23,3.36l-0.37,2.17l-1.35,4.11l-1.35,1.82l0.16,0.5l-0.53,1.35l-0.46,-0.19l-0.4,0.4l-1.11,1.76l-0.43,1.68l0.64,0.62l-0.57,1.86l-0.43,0.49l-1.14,0.76l-0.59,-0.16l-0.48,0.62l-0.77,0.0l-0.58,0.61l-1.26,-0.84l-0.55,0.0l-2.41,1.22l-1.46,-0.31l-3.72,2.29l-2.66,0.23l-1.19,-0.54l-0.71,0.84l-2.12,0.31l-2.04,1.07l-0.35,-0.08l-1.38,0.99l-1.08,-0.15l-3.09,2.22l-2.01,0.61l-4.15,4.58l-1.58,0.53l-0.97,-0.08l-1.2,0.92l-0.89,-0.15l-3.89,2.14l-0.77,0.23l-0.04,-1.05l-2.67,-1.93l-2.95,0.23l-2.04,1.07l-0.78,0.0l-1.84,1.3l-2.98,2.84l-1.72,2.06l0.07,0.31l-2.03,2.85l-9.63,-11.34l-1.92,-0.58l-2.13,1.67l-1.12,1.95l-0.28,2.44l-0.56,1.71l-1.66,1.41l-1.37,-0.07l-5.4,-6.04l-1.99,-1.25l-3.98,-0.2l-8.25,2.01l-2.1,-0.15l-1.95,-1.44l-0.52,-1.81l-2.24,-4.37l0.22,-8.81l1.21,-9.74l-0.81,-4.18ZM747.43,149.99l-0.12,-0.12l0.12,0.0l0.0,0.12ZM747.55,142.0l-0.06,-0.06l0.0,-0.09l0.06,0.06l0.0,0.09ZM747.43,141.78l0.0,-0.01l0.06,0.08l-0.06,-0.06ZM747.43,141.77l-0.06,-0.06l0.0,-0.01l0.06,0.06l0.0,0.01ZM747.31,141.63l-0.12,-0.23l0.06,-0.38l0.12,0.12l-0.06,0.49ZM722.05,121.91l-0.78,-0.98l0.1,-0.48l2.46,-2.1l0.62,-0.77l-0.12,-0.94l0.4,-0.12l0.52,1.76l0.92,0.83l0.06,1.17l1.17,1.02l0.12,1.23l-0.65,0.36l-1.41,-0.47l-0.97,0.62l-0.94,-0.39l-1.35,0.52l-0.56,-0.55l0.41,-0.72Z", "name": "Nabeul"}, "tn-tu": {"path": "M575.35,193.7l1.2,0.41l3.83,2.81l1.51,0.2l1.15,-0.26l0.52,-0.74l2.97,-0.53l4.61,0.29l0.42,-0.42l-0.07,-1.74l1.22,-1.66l2.34,-1.64l0.27,0.0l0.06,2.03l1.11,0.87l2.77,0.1l0.23,-0.23l7.47,0.5l1.71,-2.21l-0.26,-0.68l-0.7,-0.06l-1.01,-0.84l-0.8,-1.57l1.58,-3.99l1.52,-1.3l0.0,-1.44l-1.44,-1.49l-0.33,-2.57l-3.23,-3.21l-2.06,-0.94l-0.68,-1.27l-2.83,-3.18l2.93,3.0l0.79,0.15l3.18,2.23l0.25,0.6l1.14,1.01l1.63,-0.08l1.63,1.23l2.09,0.92l1.78,0.17l0.49,0.52l0.49,-0.37l0.68,0.83l1.01,-0.11l0.43,1.26l-0.92,1.91l0.12,0.69l1.05,1.37l0.12,1.09l1.2,1.17l1.35,1.0l0.32,-0.17l2.44,2.17l1.01,0.54l0.86,1.35l-0.31,0.9l-0.58,-0.14l-1.93,1.01l-0.37,0.7l0.0,1.4l-1.78,1.44l-0.98,1.38l-0.25,0.54l0.18,1.68l-0.46,-0.01l-1.08,1.17l-1.04,2.82l-1.41,1.09l-1.04,1.61l0.0,0.46l1.14,0.72l-0.81,0.54l-1.77,-1.66l-0.45,0.27l-0.59,-0.27l-1.2,0.23l-0.29,-0.67l4.07,-1.9l1.08,-1.01l0.0,-0.61l-0.95,-0.63l-1.7,-0.08l-0.59,-0.42l0.05,-1.18l-0.65,-0.71l-2.27,-1.07l-1.84,-0.15l-1.11,0.54l-1.17,-1.15l-1.65,-0.19l-2.83,1.23l-2.74,-0.02l-1.5,1.44l-2.21,-0.0l-0.95,-0.5l-1.04,-0.0l-3.32,2.44l-1.09,1.08l-1.13,2.01l-0.09,2.81l2.42,4.15l0.92,0.19l0.25,1.34l0.52,0.48l-0.28,0.67l0.65,0.71l1.09,0.15l0.61,0.78l0.26,2.91l-0.32,1.78l-0.55,1.26l-1.52,1.35l-2.43,0.22l-4.38,1.08l-3.11,-0.01l-2.13,-1.07l-2.68,-0.25l-1.77,2.09l-0.64,2.09l-2.87,3.14l-1.77,0.83l-2.84,0.64l-4.13,0.1l-2.84,-0.48l-2.19,-0.84l0.31,-1.84l-1.01,-4.32l-1.52,-2.05l-2.12,-0.49l-2.16,-1.11l-1.87,-6.66l-0.95,-2.37l-3.25,-2.68l0.46,-1.4l1.32,-0.85l2.62,-0.41l0.95,0.89l1.77,0.31l3.55,4.16l3.16,-0.07l1.1,-1.05l0.03,-1.16l-0.89,-1.27l0.18,-0.41l2.18,-1.13l3.02,-0.58l3.35,0.33l0.28,-0.6l-0.31,-1.89l-1.18,-0.97l-0.47,-1.04l2.95,-2.65l1.58,-2.02l1.57,-3.69l0.78,-0.73l3.4,-0.61l0.41,0.17ZM590.4,214.39l0.38,-0.6l-0.18,-1.14l0.0,-0.38l0.18,0.0l0.25,2.07l-0.63,0.04Z", "name": "Tunis"}}, "height": 1954.3544733545057, "projection": {"type": "merc", "centralMeridian": 0.0}, "width": 900.0});
diff --git a/js/vmap/dist/maps/jquery.vmap.turkey.js b/js/vmap/dist/maps/jquery.vmap.turkey.js
new file mode 100644 (file)
index 0000000..31356f7
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Map of Turkey
+ * @author: Burak Özdemir <https://github.com/ozdemirburak>
+ * @source: https://upload.wikimedia.org/wikipedia/commons/2/2e/BlankMapTurkishProvincesRegions.svg
+ */
+jQuery.fn.vectorMap("addMap","turkey",{"width": 1052, "height": 744, paths:{"01":{path:"M 518.88945,536.62132 C 518.88945,536.07132 518.26346,535.62132 517.49836,535.62132 C 516.73326,535.62132 511.97173,533.17756 506.91718,530.19074 L 497.7271,524.76016 L 501.55827,523.69631 C 503.66542,523.1112 506.19107,522.62996 507.17083,522.6269 C 510.07497,522.61781 510.41243,519.58393 507.9795,515.35663 C 505.99039,511.90047 505.87157,511.07869 506.9756,508.41335 C 508.08759,505.72874 508.0129,505.26315 506.30864,504.25575 C 505.25309,503.63182 503.29662,502.89632 501.96094,502.62132 C 498.69356,501.94861 497.3983,497.30054 499.55919,494.0026 C 500.97835,491.83669 500.97132,491.39521 499.48141,489.12132 C 498.25083,487.24322 496.97309,486.62132 494.34496,486.62132 C 491.57224,486.62132 490.60734,486.09626 489.69325,484.09005 C 488.65658,481.81481 488.85957,481.28377 491.7001,478.84005 C 494.56985,476.37118 494.8846,475.52394 495.12487,469.62132 L 495.38945,463.12132 L 500.38945,462.59575 C 505.10181,462.10041 508.51769,460.80828 513.5626,457.61273 C 515.42541,456.43279 516.84105,456.47608 523.4757,457.91585 C 533.26028,460.03919 534.18,459.47061 533.72544,451.57937 C 533.37519,445.49913 534.72929,442.62132 537.94047,442.62132 C 538.93384,442.62132 540.40086,441.96705 541.20052,441.16739 C 542.00018,440.36773 544.84483,438.67919 547.52195,437.41509 C 550.58589,435.96833 552.95627,434.00597 553.9192,432.11902 C 557.78299,424.54754 561.3206,419.45051 564.07115,417.49194 C 567.03396,415.38223 567.09906,415.37974 570.6275,417.2412 C 575.02417,419.5607 577.57844,425.50888 575.66434,428.97063 C 574.35858,431.33217 572.9019,440.31251 572.55796,448.12132 C 572.43683,450.87132 571.67098,454.47132 570.85607,456.12132 C 569.54224,458.78151 568.75989,459.17796 563.9492,459.62132 L 558.52399,460.12132 L 555.80427,465.62132 C 554.30842,468.64632 552.54714,473.14632 551.8903,475.62132 C 551.23347,478.09632 550.28631,480.79632 549.7855,481.62132 C 547.00063,486.20892 546.53081,487.82921 547.52738,489.40909 C 548.23447,490.53007 548.23167,491.90371 547.51844,493.79327 C 546.11779,497.50402 546.97837,498.02883 551.42039,496.17284 C 556.13315,494.20372 557.88945,495.4026 557.88945,500.58873 C 557.88945,503.20394 556.75378,506.06835 554.07157,510.21825 C 548.46337,518.89522 545.2349,521.98503 540.59278,523.11814 C 536.68177,524.07279 536.43215,524.36322 535.43313,529.12132 L 534.38332,534.12132 L 528.71947,534.41874 C 525.30384,534.59811 522.5771,535.29276 521.85009,536.16874 C 520.46102,537.84247 518.88945,538.08271 518.88945,536.62132 z",name:"Adana"},"02":{path:"M 666.88945,476.95274 C 666.06445,476.67186 663.97144,475.80739 662.23832,475.03169 C 660.5052,474.25599 657.5228,473.62132 655.61077,473.62132 C 653.69873,473.62132 651.57414,472.94632 650.88945,472.12132 C 649.37398,470.29529 646.73637,470.18304 645.01481,471.87132 C 643.99109,472.87525 643.30454,472.57996 641.52725,470.37132 C 640.31014,468.85882 638.75289,467.62132 638.0667,467.62132 C 637.38051,467.62132 635.74671,466.91867 634.43603,466.05989 C 632.2339,464.61699 632.15764,464.29435 633.43156,461.80989 C 634.18978,460.33117 635.05624,457.99632 635.35704,456.62132 C 635.65783,455.24632 637.36318,453.21524 639.14669,452.10781 C 641.25068,450.80139 642.49811,449.15885 642.69885,447.43054 C 642.98999,444.92408 643.18743,444.82924 646.04233,445.82446 C 652.43377,448.05253 669.01974,444.05131 670.61399,439.89677 C 670.91365,439.11587 670.18127,437.15474 668.98649,435.5387 L 666.81414,432.60045 L 669.4169,431.61088 C 670.84841,431.06662 672.24538,430.62132 672.52127,430.62132 C 672.79716,430.62132 674.49784,429.49632 676.30056,428.12132 C 678.10328,426.74632 680.21076,425.62974 680.98384,425.64003 C 681.75693,425.65031 685.48113,427.22531 689.25984,429.14003 C 693.03856,431.05474 696.59609,432.62132 697.16545,432.62132 C 697.73482,432.62132 699.67562,433.74632 701.47834,435.12132 C 703.28106,436.49632 705.25099,437.62132 705.85597,437.62132 C 708.50398,437.62132 716.7703,432.46632 719.17241,429.31698 C 723.83428,423.20496 730.41515,424.18895 726.27539,430.37904 C 725.26671,431.88729 724.42974,433.57132 724.41544,434.12132 C 724.40115,434.67132 722.25195,435.53424 719.63945,436.03892 C 716.80857,436.58579 714.88945,437.49484 714.88945,438.28892 C 714.88945,439.02174 715.33945,439.62132 715.88945,439.62132 C 717.73094,439.62132 716.91458,442.47857 714.88945,443.12132 C 713.78945,443.47045 712.88945,444.57329 712.88945,445.57208 C 712.88945,446.57087 712.05043,447.60747 711.02495,447.87563 C 709.81346,448.19245 708.9153,449.67002 708.46047,452.09445 C 708.07548,454.14663 707.4965,455.5617 707.17384,455.23905 C 706.85119,454.9164 705.99452,455.43291 705.27013,456.38686 C 704.37561,457.56485 703.94285,457.69737 703.92125,456.79989 C 703.88536,455.30834 701.47729,452.62132 700.17649,452.62132 C 699.70578,452.62132 698.5048,451.24016 697.50762,449.55209 C 696.51045,447.86401 695.53454,446.6429 695.33892,446.83851 C 694.61971,447.55773 698.17937,458.17898 699.73193,459.9463 C 701.24572,461.66949 701.18301,461.7331 698.60768,461.08674 C 696.34834,460.51968 695.24712,461.01712 692.19148,463.98506 C 690.16267,465.95564 688.34717,467.41237 688.15704,467.22225 C 687.96692,467.03212 688.43937,465.05373 689.20694,462.82584 C 690.60417,458.77035 689.7533,454.20658 688.30408,457.98319 C 687.78523,459.3353 687.41399,459.47004 686.8265,458.51947 C 686.19356,457.49535 685.74198,457.49882 684.49059,458.53738 C 683.17521,459.62905 682.75827,459.42753 681.74888,457.21215 C 680.56958,454.62387 680.54133,454.61786 678.72396,456.56858 C 677.71498,457.65159 676.88945,459.00651 676.88945,459.57951 C 676.88945,460.1525 675.76445,460.62132 674.38945,460.62132 C 671.53457,460.62132 671.17773,461.78575 673.45374,463.67467 C 674.44666,464.49872 674.80495,465.82185 674.43468,467.29712 C 674.02052,468.94726 674.2817,469.62132 675.33521,469.62132 C 676.15134,469.62132 677.27887,470.48044 677.84083,471.53047 C 678.7041,473.14351 678.31293,473.76392 675.31885,475.53047 C 671.80966,477.60095 669.79288,477.94123 666.88945,476.95274 z",name:"Adıyaman"},"03":{path:"M 224.92847,443.31 C 224.30556,442.31377 222.21895,440.56825 220.29155,439.43105 C 217.1445,437.57425 216.8545,437.0452 217.44742,434.24237 C 218.1982,430.69335 222.15135,426.8825 225.97707,426.01979 C 227.40026,425.69885 230.66276,423.6429 233.22707,421.45099 C 238.2035,417.19726 238.86115,414.94511 236.38945,410.62132 C 235.60343,409.24632 234.94437,406.96226 234.92489,405.54563 C 234.88846,402.89813 232.18062,399.79632 228.03806,397.65683 L 225.68666,396.44242 L 228.28806,393.72715 C 229.85657,392.08997 230.90265,389.84247 230.9227,388.0666 C 230.95005,385.64339 232.38963,383.88053 239.04421,378.12132 C 249.67456,368.92127 250.87006,367.62651 251.4909,364.64122 C 251.77912,363.25527 252.22786,361.07862 252.48809,359.80421 C 252.74879,358.52753 254.37359,356.73144 256.10663,355.80421 C 257.83659,354.87862 260.27798,353.06194 261.53195,351.76714 L 263.81189,349.41296 L 266.77509,352.65726 C 269.26173,355.37978 270.2267,355.80387 272.7751,355.29419 C 274.44534,354.96014 276.08091,355.12209 276.40969,355.65407 C 276.73848,356.18606 278.99009,356.62132 281.41328,356.62132 C 284.83009,356.62132 286.06513,356.16158 286.91517,354.57326 C 287.69809,353.11036 288.59375,352.71008 290.05003,353.17228 C 291.37664,353.59333 294.35372,352.66975 298.57281,350.52825 C 305.76054,346.87995 308.13707,347.21351 308.70375,351.95018 C 309.01044,354.51376 313.04723,358.61576 315.27431,358.6269 C 315.88764,358.62996 318.07695,359.10112 320.13945,359.6739 C 323.64193,360.64659 323.88945,360.96909 323.88945,364.55992 C 323.88945,367.82682 324.2651,368.49879 326.38945,369.03196 C 329.33588,369.77147 329.6831,371.60102 327.00969,372.30013 C 325.69288,372.64448 324.96783,374.00031 324.58863,376.82746 C 324.23201,379.48622 322.99678,381.94711 320.96838,384.03988 C 317.23591,387.89082 317.11434,389.31104 320.38945,390.80327 C 321.76445,391.42977 322.88945,392.23045 322.88945,392.58257 C 322.88945,392.93469 320.97695,394.19091 318.63945,395.37418 C 316.30195,396.55744 311.63435,399.32153 308.267,401.5166 L 302.14455,405.50764 L 300.017,403.52552 C 298.84685,402.43536 297.88945,401.05169 297.88945,400.4507 C 297.88945,399.74387 296.40135,399.55758 293.67559,399.92318 C 290.69517,400.32294 288.90852,401.24781 287.57179,403.08285 C 286.53232,404.5098 284.26606,406.40137 282.53565,407.28633 C 280.80524,408.17129 277.66796,410.24843 275.56392,411.90219 C 273.45988,413.55595 268.73488,416.12015 265.06392,417.60042 C 259.99789,419.64323 257.6665,421.27208 255.38945,424.35961 C 253.73945,426.59689 250.63585,429.24418 248.49257,430.24247 C 245.69266,431.54659 243.42581,433.88341 240.43978,438.54379 L 236.28386,445.03004 L 231.17244,445.07568 C 227.28884,445.11036 225.78896,444.68622 224.92847,443.31 z",name:"Afyonkarahisar"},"04":{path:"M 909.70981,362.4615 C 908.21002,360.16428 907.88403,358.98236 906.08458,349.31747 C 905.44731,345.89471 904.15783,343.45099 901.59935,340.81747 C 899.6244,338.78459 897.5398,335.87575 896.96692,334.35339 C 896.39404,332.83102 894.76791,331.14541 893.3533,330.60757 L 890.78128,329.6297 L 893.33536,326.28112 C 896.61733,321.97824 896.75445,317.13456 893.63945,315.53971 C 891.10099,314.24005 882.88945,306.57728 882.88945,305.50813 C 882.88945,304.15935 891.70514,299.66507 896.51918,298.55963 C 904.77777,296.66324 915.26475,293.53323 917.88945,292.18134 C 922.6369,289.73609 929.29446,289.51535 933.72567,291.65628 C 935.96261,292.73705 938.23425,293.62132 938.77376,293.62132 C 940.31317,293.62132 941.05996,297.19551 940.33167,301.07761 C 939.68878,304.50452 939.76706,304.62132 942.70673,304.62132 C 944.37865,304.62132 946.39035,303.97756 947.17718,303.19074 C 948.40686,301.96105 949.15414,301.95489 952.4986,303.14684 C 954.63857,303.90952 958.21195,304.55329 960.43945,304.57743 C 962.66695,304.60157 964.94281,305.07468 965.49693,305.6288 C 966.05104,306.18291 971.43824,306.69762 977.46849,306.7726 C 985.88913,306.87731 989.17,306.5276 991.61136,305.26513 C 993.35968,304.36103 995.16279,303.62132 995.61826,303.62132 C 996.70935,303.62132 996.25132,311.4637 995.07291,312.95863 C 994.56883,313.59811 994.13649,316.29235 994.11215,318.94583 C 994.05445,325.23815 992.50056,326.33249 983.5439,326.38856 C 977.51786,326.42628 976.30801,326.74069 974.87412,328.64164 C 973.44515,330.53607 972.62434,330.75233 969.11399,330.15926 C 965.2749,329.51065 964.92292,329.65591 963.45487,332.49481 C 962.59389,334.15977 961.88945,336.12935 961.88945,336.87166 C 961.88945,340.12957 959.59331,340.63282 956.27538,338.10211 C 954.48651,336.73768 952.73784,335.62132 952.38945,335.62132 C 952.04106,335.62132 950.28106,334.49632 948.47834,333.12132 C 944.80329,330.31822 939.78144,329.84161 937.89327,332.11672 C 937.21068,332.93919 934.85874,334.14945 932.66673,334.80619 C 927.05854,336.48645 926.49069,339.21403 931.38945,340.94143 C 932.69885,341.40315 930.31575,346.08684 926.41681,350.71454 C 920.67697,357.52724 919.88945,358.64876 919.88945,360.01031 C 919.88945,361.90941 917.73676,363.50186 914.21824,364.20556 C 911.8196,364.68529 910.93934,364.34477 909.70981,362.4615 z",name:"Ağrı"},"05":{path:"M 522.9393,286.52818 C 523.55542,285.37695 523.8006,283.40344 523.48415,282.1426 C 523.12994,280.73134 523.48165,279.37473 524.39912,278.6133 C 525.2188,277.93302 525.88945,276.83497 525.88945,276.17319 C 525.88945,275.51141 527.01445,273.91307 528.38945,272.62132 C 529.76445,271.32957 530.88945,269.66979 530.88945,268.93291 C 530.88945,267.34178 524.91279,261.69268 523.1849,261.65063 C 522.5224,261.63451 520.80133,260.44229 519.3603,259.00126 C 517.06383,256.70479 516.132,256.43964 511.81542,256.85441 C 506.40335,257.37444 505.3449,256.69616 503.94355,251.80994 C 503.36525,249.79355 503.49434,248.00929 504.33587,246.38724 C 505.02568,245.05763 505.83157,241.82723 506.12673,239.20857 C 506.8781,232.54239 508.18885,231.57592 511.79397,235.02984 C 514.6054,237.72337 514.8988,237.78504 519.84978,236.72325 C 527.29327,235.12691 527.79254,235.23338 527.57771,238.37132 C 527.41543,240.7419 527.80336,241.1644 530.38945,241.43354 C 532.03945,241.60526 533.94765,242.47288 534.62989,243.36159 C 535.31213,244.2503 538.01213,245.27896 540.62989,245.64751 C 543.24765,246.01606 548.19693,246.92493 551.6283,247.66723 L 557.86715,249.01687 L 560.79739,246.20951 C 562.40903,244.66547 564.00789,242.28556 564.35042,240.92082 C 564.77908,239.2129 565.45318,238.62367 566.51311,239.0304 C 567.36006,239.35541 569.23122,239.62132 570.67124,239.62132 C 572.70762,239.62132 573.02278,239.88799 572.08945,240.82132 C 570.16542,242.74535 570.69531,244.53449 573.38945,245.21068 C 575.18432,245.66116 575.88945,246.51269 575.88945,248.22973 C 575.88945,249.95465 576.44696,250.62132 577.88945,250.62132 C 580.52696,250.62132 580.45952,252.23898 577.79294,252.93631 C 575.93232,253.42287 575.73541,254.09212 576.04294,258.88408 L 576.38945,264.28359 L 571.63945,263.82523 C 567.35615,263.4119 566.88945,263.57007 566.88945,265.43507 C 566.88945,266.57259 567.36744,267.7987 567.95164,268.15976 C 568.57467,268.54481 567.66746,269.80955 565.75736,271.21877 C 562.22978,273.82134 555.88945,274.53893 555.88945,272.33561 C 555.88945,271.44383 554.20426,271.04989 550.38945,271.04989 C 545.88369,271.04989 544.88945,271.35663 544.88945,272.74671 C 544.88945,275.22105 539.55738,279.30863 533.67031,281.34731 C 530.2447,282.5336 528.02443,284.03029 526.96851,285.865 C 525.03016,289.23295 521.14995,289.87161 522.9393,286.52818 z",name:"Amasya"},"06":{path:"M 431.49319,391.03108 C 431.15757,390.15644 431.13002,389.04109 431.43198,388.5525 C 432.02275,387.59663 428.00264,381.62132 426.76878,381.62132 C 426.35927,381.62132 425.72636,382.5598 425.36231,383.70683 L 424.70039,385.79234 L 422.29492,383.53252 C 419.85242,381.23791 418.80886,374.62132 420.88945,374.62132 C 422.26057,374.62132 422.0853,370.5788 420.60401,368.03805 C 418.52775,364.47675 415.14808,360.62132 414.10252,360.62132 C 413.55302,360.62132 412.84441,361.29632 412.52782,362.12132 C 411.65226,364.403 410.78757,364.03114 404.38945,358.62132 C 398.5272,353.6646 394.59272,352.34624 393.57526,354.99771 C 393.23983,355.87182 392.106,356.19421 390.46827,355.88114 C 388.51763,355.50825 387.88945,355.80069 387.88945,357.08167 C 387.88945,359.16148 382.59151,364.62132 380.57336,364.62132 C 379.7649,364.62132 378.85703,365.26343 378.55587,366.04824 C 377.98478,367.53646 369.67785,371.62132 367.22249,371.62132 C 366.4455,371.62132 363.96376,370.67955 361.70751,369.5285 C 358.72326,368.00605 356.62198,367.6052 353.99735,368.05769 C 352.01301,368.39979 349.03945,368.9136 347.38945,369.19949 C 344.79337,369.64929 344.08651,369.24333 342.13945,366.18432 C 340.90195,364.2401 339.88945,362.21542 339.88945,361.68503 C 339.88945,361.15465 339.15119,360.30755 338.24887,359.80259 C 336.86466,359.02794 337.21346,358.47325 340.48101,356.2529 C 342.611,354.80553 345.13343,353.62132 346.0864,353.62132 C 347.03938,353.62132 348.32347,352.67886 348.93994,351.52697 C 349.86686,349.79501 349.67136,349.01808 347.81011,347.03686 C 345.86936,344.97103 345.71985,344.28897 346.72443,342.08416 C 348.38498,338.43963 348.19434,336.56216 345.54733,330.49216 C 341.84491,322.00193 340.98644,320.2365 339.65868,318.38219 C 338.60904,316.9163 338.76501,316.39678 340.65142,315.07549 C 343.75043,312.90486 343.4507,311.14295 339.67106,309.31241 C 337.61216,308.31526 335.71621,306.1987 334.40849,303.43751 C 332.38805,299.17143 332.2909,299.11321 326.04105,298.42253 C 322.56325,298.03819 319.049,297.1687 318.23162,296.49033 C 316.45012,295.01182 301.23169,294.37598 296.95848,295.60152 C 292.50322,296.87927 290.00477,295.82396 289.03378,292.25423 C 288.2363,289.32242 288.41294,289.01067 291.78553,287.39754 C 293.76768,286.44947 296.10721,285.66197 296.98446,285.64754 C 299.29687,285.60953 301.88945,282.35625 301.88945,279.49258 C 301.88945,274.80457 305.02708,273.89801 309.11393,277.40521 C 310.34053,278.45784 311.99766,278.69973 314.85374,278.24302 C 318.13373,277.71853 319.25323,277.9851 320.96674,279.69861 C 322.73196,281.46383 323.88257,281.71112 328.22693,281.25893 C 341.8244,279.84363 345.50279,278.93809 350.33523,275.81631 C 353.05541,274.05907 355.68878,272.62132 356.18717,272.62132 C 357.89905,272.62132 370.87233,264.12102 370.88089,262.99376 C 370.8856,262.37361 370.17382,261.27229 369.29915,260.54638 C 366.54053,258.25692 370.30932,256.62075 378.33058,256.62551 C 383.87051,256.62879 386.44803,257.16674 390.30893,259.12551 C 393.01464,260.4982 396.14214,261.62132 397.25893,261.62132 C 398.83822,261.62132 399.02278,261.88799 398.08945,262.82132 C 396.04503,264.86574 396.75943,267.50273 399.78103,269.06526 C 401.3714,269.88767 403.13425,271.88481 403.69848,273.50334 C 404.85999,276.83524 410.48281,282.62132 412.5592,282.62132 C 413.31442,282.62132 414.46831,281.44497 415.1234,280.0072 C 416.21644,277.60825 416.68796,277.43783 420.85196,277.93674 C 423.34758,278.23576 427.24153,279.31295 429.50518,280.3305 L 433.62092,282.18059 L 430.72732,287.15095 C 427.9434,291.93292 427.62577,295.16464 429.46786,299.96505 C 430.03915,301.4538 424.43147,304.94765 420.38945,305.62132 C 418.11725,306.00002 417.30826,306.72782 417.05477,308.62132 C 416.8707,309.99632 416.3082,311.54882 415.80477,312.07132 C 415.30135,312.59382 414.88945,314.63617 414.88945,316.60988 C 414.88945,318.58359 413.98945,321.96373 412.88945,324.12132 C 411.78945,326.27891 410.88945,328.41708 410.88945,328.87282 C 410.88945,329.32855 412.69171,331.41588 414.89446,333.51131 C 418.39168,336.83813 418.81989,337.7191 418.2718,340.45957 C 417.85101,342.56351 418.17897,344.41424 419.26679,346.07446 C 420.15925,347.43653 420.88945,349.01679 420.88945,349.58614 C 420.88945,351.91086 436.61206,367.57567 438.97278,367.60299 C 442.04921,367.6386 441.83802,368.97175 438.38413,371.31872 C 434.67267,373.84073 433.92543,376.57637 436.38945,378.62132 C 438.41989,380.30643 438.2832,381.97947 435.6453,387.72954 C 433.2543,392.94143 432.46661,393.56776 431.49319,391.03108 z",name:"Ankara"},"07":{path:"M 358.69746,559.88281 C 355.56686,557.26399 352.97936,554.7297 352.94746,554.25105 C 352.88285,553.2817 349.1951,547.29935 343.88945,539.55694 C 340.92578,535.23212 339.39341,534.05619 333.88945,531.88296 C 330.31445,530.47138 326.31626,528.48504 325.00459,527.46888 C 323.69292,526.45272 322.21957,525.62132 321.73048,525.62132 C 321.2414,525.62132 318.59018,524.07287 315.83889,522.18031 C 313.0876,520.28776 309.83595,518.43604 308.613,518.06538 C 307.39005,517.69472 305.47495,516.55679 304.35722,515.53666 C 301.61782,513.03643 290.36605,510.51439 279.38945,509.94022 C 272.73687,509.59224 270.06646,509.05232 269.15109,507.87017 C 268.08302,506.49082 267.56826,506.45525 265.4077,507.61155 C 261.29423,509.81302 259.88467,513.02983 259.50113,521.09122 C 259.2772,525.79782 258.53963,529.50627 257.51707,531.06689 C 256.62188,532.43312 255.88945,534.24179 255.88945,535.08614 C 255.88945,535.93049 255.38838,536.62132 254.77595,536.62132 C 254.08247,536.62132 253.85349,537.84725 254.16891,539.87132 C 254.45716,541.72109 254.02613,544.52155 253.16846,546.37132 C 251.65269,549.64047 249.91059,550.69514 249.86485,548.37132 C 249.82911,546.55582 243.36717,543.62132 239.40505,543.62132 C 237.2289,543.62132 235.53196,544.28936 234.69615,545.4751 C 233.47386,547.20912 228.88053,548.65693 224.46392,548.70028 C 223.40487,548.71067 222.05487,549.36163 221.46392,550.14687 C 220.87296,550.9321 217.78272,551.8743 214.59673,552.24064 C 209.47698,552.82934 208.57209,552.65779 206.80777,550.76402 C 205.70984,549.58554 203.81657,548.60537 202.60049,548.58588 C 201.38442,548.5664 199.26445,547.90734 197.88945,547.12132 C 196.51445,546.3353 194.44669,545.67624 193.29444,545.65676 C 190.72361,545.61327 186.75637,541.55055 188.64104,540.89136 C 189.32942,540.65059 190.17519,538.68661 190.52053,536.52697 C 191.07944,533.0317 191.65599,532.37668 195.76893,530.56423 C 202.30055,527.68595 209.50755,520.28718 211.43643,514.47986 C 212.30332,511.8699 213.82299,508.69652 214.81346,507.4279 C 217.29018,504.25567 218.21035,500.93768 216.84704,500.09511 C 216.14661,499.66222 216.8737,498.70098 218.77714,497.54343 C 221.35035,495.97856 221.80925,495.10811 221.69289,492.01274 C 221.53169,487.72482 222.77531,486.55602 230.62318,483.61976 C 233.56753,482.51813 237.26968,480.66075 238.85018,479.49223 C 242.38818,476.87647 246.92224,477.45663 251.95399,481.16894 C 254.44046,483.00339 256.60603,483.68592 259.88216,483.66767 C 262.36117,483.65386 266.97695,483.90443 270.13945,484.22449 C 273.54186,484.56883 275.88945,484.41542 275.88945,483.84873 C 275.88945,483.322 276.81336,481.71647 277.94259,480.28089 C 279.70725,478.03749 280.26976,477.84188 281.94605,478.88874 C 283.48361,479.84897 284.26599,479.84323 285.64291,478.86164 C 288.64828,476.71914 292.21718,475.49442 297.17558,474.90404 C 301.41382,474.39942 302.45756,474.69027 306.29311,477.44475 C 311.71269,481.3368 317.47655,482.40332 321.59135,480.27547 C 324.52107,478.76046 324.67044,478.80095 327.664,481.92179 C 329.35199,483.68153 331.82433,487.59632 333.1581,490.62132 C 336.02495,497.12336 342.35065,503.7356 349.63945,507.84925 C 352.57698,509.50712 354.88945,511.52244 354.88945,512.42462 C 354.88945,513.31142 356.43133,515.63097 358.31586,517.57916 C 362.34144,521.74073 364.16879,528.37884 364.30187,539.32424 C 364.37466,545.31045 364.72728,546.77475 366.38945,547.99295 C 368.07429,549.22777 368.38945,550.61402 368.38945,556.79004 C 368.38945,563.36749 368.1838,564.14821 366.38945,564.38281 C 365.19907,564.53845 362.08526,562.71679 358.69746,559.88281 z",name:"Antalya"},"08":{path:"M 830.49644,257.03953 C 830.16259,256.16955 829.88945,253.49061 829.88945,251.08633 C 829.88945,246.86526 829.73427,246.64627 825.37764,244.71912 C 822.89614,243.62144 820.59372,242.01423 820.26114,241.14756 C 819.57255,239.3531 822.66825,234.56056 829.45824,226.90926 L 834.08358,221.6972 L 830.34708,218.27412 C 828.29201,216.39142 826.04174,213.19637 825.34648,211.174 C 824.09141,207.52325 824.1067,207.48536 827.48591,205.87393 C 829.35786,204.98126 830.88945,203.96604 830.88945,203.61789 C 830.88945,203.26974 832.29081,201.16156 834.00358,198.93305 C 837.39852,194.51584 837.67791,194.50082 846.67338,198.25193 C 851.29024,200.17715 852.45531,199.98831 854.66364,196.95675 C 856.30204,194.70759 857.44531,194.25706 861.99704,194.06687 C 873.19428,193.599 884.76253,196.76283 887.73933,201.10719 C 890.67372,205.38964 890.47788,206.795 886.13945,212.58823 C 884.07695,215.34234 881.03945,220.77818 879.38945,224.66786 L 876.38945,231.74001 L 867.87373,231.09305 C 857.14359,230.27784 855.68793,231.39546 855.45008,240.63161 C 855.3223,245.59299 854.8553,247.11002 852.83326,249.13205 C 850.62207,251.34324 849.99456,251.48913 846.6576,250.56775 C 842.14597,249.32203 838.53318,250.87253 835.10951,255.52385 C 832.55983,258.98779 831.39138,259.3717 830.49644,257.03953 z",name:"Artvin"},"09":{path:"M 83.81018,461.37132 C 83.766581,461.23382 83.654081,457.14728 83.56018,452.29011 C 83.399687,443.9884 83.239556,443.37596 80.88945,442.07555 C 79.51445,441.3147 77.60195,440.67624 76.63945,440.65676 C 75.67695,440.63727 74.88945,440.141 74.88945,439.55393 C 74.88945,438.96687 75.67695,438.72798 76.63945,439.02306 C 79.347196,439.8532 86.182473,437.93667 87.684021,435.92629 C 88.487514,434.85051 88.824457,432.79438 88.518058,430.83675 C 88.007195,427.57278 88.02538,427.55619 91.417328,428.19253 C 94.460114,428.76336 95.285412,428.38713 99.019205,424.7271 C 103.74971,420.09004 105.74602,419.71607 109.79379,422.70872 C 112.27251,424.54131 113.51874,424.72255 120.0033,424.19344 C 124.06568,423.86197 129.86445,423.45997 132.88945,423.30011 C 141.3862,422.85109 141.41508,422.83929 143.20472,419.08639 C 144.65082,416.05389 145.16526,415.69856 146.82419,416.58639 C 147.88777,417.1556 150.55826,417.62132 152.75861,417.62132 C 158.178,417.62132 160.64166,418.71927 165.63444,423.35956 L 169.87943,427.30485 L 167.38444,428.44165 C 165.31522,429.38445 164.88945,430.27783 164.88945,433.6768 C 164.88945,436.87097 165.53279,438.4185 167.80543,440.69115 C 169.40923,442.29494 170.30923,443.86188 169.80543,444.17324 C 169.30164,444.4846 168.88945,445.56878 168.88945,446.58251 C 168.88945,447.72852 167.76265,448.81847 165.91034,449.46419 C 162.22775,450.74795 155.88952,455.70525 155.88948,457.30177 C 155.88943,459.39676 151.47548,459.23899 148.38945,457.03371 C 144.67713,454.38087 137.94193,454.02805 133.27634,456.24202 C 128.54134,458.48892 113.59907,457.3248 109.90861,454.42148 C 106.44443,451.69618 101.20748,449.62132 97.793006,449.62132 C 95.645981,449.62132 94.563604,450.35076 93.41513,452.57166 C 92.576006,454.19435 91.88945,456.16759 91.88945,456.95665 C 91.88945,458.60256 87.705714,461.62132 85.424633,461.62132 C 84.580282,461.62132 83.853778,461.50882 83.81018,461.37132 z",name:"Aydın"},10:{path:"M 141.46624,347.76982 C 140.65523,346.20149 138.88495,344.19317 137.53229,343.30687 C 134.64135,341.41265 131.88945,336.32757 131.88945,332.87978 C 131.88945,330.60453 131.63487,330.48854 127.99208,331.10398 C 125.59855,331.50836 123.8394,331.34935 123.43306,330.69188 C 123.06915,330.10307 121.15295,329.62132 119.17482,329.62132 C 116.87917,329.62132 114.39265,328.71703 112.30056,327.12132 C 108.80148,324.45244 105.95898,323.95179 104.21379,325.69698 C 103.44623,326.46454 101.62355,326.32287 97.850526,325.2024 C 92.07415,323.487 86.237687,324.29187 83.883494,327.1285 C 83.20208,327.94955 81.879823,328.62132 80.945145,328.62132 C 80.010466,328.62132 77.478066,329.9588 75.317589,331.5935 C 70.580585,335.1777 70.118789,335.24512 69.709001,332.41231 C 69.51335,331.05981 68.420121,329.93114 66.88945,329.50135 L 64.38945,328.79938 L 66.63945,328.09372 C 67.87695,327.70561 68.88945,327.04514 68.88945,326.62601 C 68.88945,326.20688 70.23945,325.30477 71.88945,324.62132 C 73.53945,323.93787 74.88945,322.75827 74.88945,322 C 74.88945,321.24173 75.56445,320.62132 76.38945,320.62132 C 77.21445,320.62132 77.88945,319.94632 77.88945,319.12132 C 77.88945,318.29632 78.717218,317.62132 79.728935,317.62132 C 81.801855,317.62132 84.128399,313.40759 83.278437,311.19262 C 82.842679,310.05705 80.994307,309.8022 74.805275,310.02434 C 65.938717,310.34259 65.280293,309.71684 69.077508,304.58083 C 70.88161,302.14065 71.983174,301.62132 75.355002,301.62132 C 77.604192,301.62132 80.437188,300.92597 81.650549,300.0761 C 83.644259,298.67965 84.314676,298.68638 88.613831,300.14598 C 91.230274,301.03429 94.180181,302.62963 95.16918,303.6912 C 97.655126,306.35955 100.5256,306.09801 106.52611,302.65644 C 110.09632,300.60876 111.99503,298.7572 112.75232,296.58486 C 114.26515,292.24513 113.13163,281.75403 110.78878,278.41181 C 109.74415,276.92158 108.88945,275.4009 108.88945,275.03252 C 108.88945,273.73627 118.12599,265.7788 120.24486,265.2496 C 121.42438,264.955 124.13885,265.10969 126.277,265.59336 C 129.58662,266.34201 130.73876,266.11027 134.027,264.03449 C 136.1645,262.68515 137.88945,262.10611 137.88945,262.73794 C 137.88945,263.5435 139.67538,263.6776 143.95519,263.19339 C 149.69246,262.54429 149.96617,262.60944 149.00979,264.39647 C 148.45366,265.43561 147.30139,266.86447 146.4492,267.57173 C 144.40986,269.26424 145.36658,278.8271 148.01669,283.23935 C 149.04671,284.95427 149.89933,287.42927 149.91141,288.73935 C 149.92349,290.04944 150.77934,292.98435 151.8133,295.26139 C 153.25337,298.43278 154.53917,299.68064 157.30873,300.59468 C 159.62281,301.3584 161.48329,302.869 162.47736,304.79133 C 163.94093,307.62156 164.32682,307.77534 169.16915,307.45804 C 174.28162,307.12304 174.3129,307.13916 175.30677,310.62132 C 176.88213,316.14081 179.01964,317.87512 183.26529,317.07864 C 187.84674,316.21915 188.99747,318.39724 185.98516,322.22678 C 184.82613,323.70024 183.88945,326.35536 183.88945,328.16729 C 183.88945,331.81276 179.66393,336.22414 175.31238,337.12161 C 173.97977,337.39645 171.76445,337.85489 170.38945,338.14037 C 167.705,338.69772 167.24071,340.54061 168.97047,343.77271 C 169.56503,344.88366 169.84886,345.99524 169.60121,346.24289 C 169.35356,346.49055 164.9296,347.15944 159.77019,347.72933 C 154.61078,348.29921 149.96195,349.18305 149.43945,349.6934 C 148.91695,350.20376 147.24101,350.62132 145.71513,350.62132 C 143.67607,350.62132 142.55001,349.8656 141.46624,347.76982 z M 133.88945,259.94269 C 131.93243,259.35998 127.74982,252.82565 128.88483,252.12418 C 130.0351,251.41327 138.43378,253.31869 141.70516,255.03275 L 144.2796,256.38163 L 140.12436,258.50148 C 137.83898,259.66739 135.8387,260.56912 135.67929,260.50532 C 135.51988,260.44152 134.71445,260.18833 133.88945,259.94269 z M 121.23453,245.07819 C 120.90884,244.22947 120.87675,243.30069 121.16321,243.01423 C 122.17755,241.99988 127.99922,242.33109 129.13595,243.46782 C 130.00728,244.33915 129.76573,244.62132 128.14847,244.62132 C 126.97093,244.62132 125.72937,245.07132 125.38945,245.62132 C 124.44705,247.14615 121.90033,246.81325 121.23453,245.07819 z",name:"Balıkesir"},11:{path:"M 236.86925,316.25782 L 230.38945,314.02059 L 230.4832,308.57095 C 230.53476,305.57366 230.93513,301.40921 231.37291,299.31664 C 231.85808,296.99757 231.75645,294.65475 231.11263,293.31664 C 228.67771,288.25587 228.89804,286.42921 232.44293,282.28781 C 235.4485,278.77647 235.88945,277.57085 235.88945,272.8644 C 235.88945,268.23271 236.30392,267.05301 238.81253,264.5444 C 242.49878,260.85814 243.48962,260.87219 244.23945,264.62132 C 244.68083,266.82823 245.40271,267.62132 246.97009,267.62132 C 248.14195,267.62132 250.45125,268.7577 252.10187,270.1466 C 254.51988,272.18123 255.76101,272.54844 258.48965,272.03654 C 262.60019,271.2654 266.88664,272.21055 266.89715,273.89037 C 266.90139,274.56739 268.70139,276.14726 270.89715,277.40118 C 273.49968,278.88739 274.88945,280.38976 274.88945,281.71692 C 274.88945,282.83666 275.33649,284.58811 275.88288,285.60905 C 276.72162,287.17625 276.43161,287.56297 274.02039,288.09256 C 270.66116,288.83037 266.60161,293.08129 265.88053,296.61614 C 265.56308,298.17229 264.15307,299.68633 262.13294,300.64018 C 260.35168,301.48125 258.19268,303.17109 257.33516,304.39536 C 256.0939,306.16751 254.80379,306.62132 251.00706,306.62132 C 247.31507,306.62132 245.74705,307.144 244.06376,308.93577 C 241.69258,311.45978 241.14386,316.18837 243.13945,316.90108 C 243.82695,317.14662 244.15536,317.60571 243.86925,317.92128 C 243.58314,318.23685 240.43314,317.4883 236.86925,316.25782 z",name:"Bilecik"},12:{path:"M 782.63945,402.53939 C 781.67695,401.97979 780.88945,400.65467 780.88945,399.59468 C 780.88945,398.53469 779.76445,396.9303 778.38945,396.02936 C 775.58728,394.19331 775.12342,391.8525 777.38945,390.98295 C 778.21445,390.66636 778.88945,389.82494 778.88945,389.11311 C 778.88945,388.40128 780.46445,386.8896 782.38945,385.75382 C 786.63411,383.24941 786.84292,380.76392 783.02361,378.20528 C 781.20334,376.98584 780.32716,375.66352 780.61361,374.56814 C 780.86115,373.62153 780.60411,372.56301 780.04241,372.21586 C 778.92365,371.52442 779.47651,365.66024 781.05626,361.46205 C 782.29502,358.17005 780.66548,354.62132 777.91509,354.62132 C 776.86789,354.62132 773.93135,356.42132 771.38945,358.62132 C 768.84755,360.82132 766.17127,362.62132 765.44217,362.62132 C 764.64743,362.62132 763.85905,360.9043 763.4736,358.33389 C 762.63734,352.75735 764.96191,347.566 767.94581,348.34631 C 769.05098,348.63532 770.72792,348.22744 771.67233,347.43991 C 772.61675,346.65238 774.6729,345.45974 776.24156,344.7896 C 778.54948,343.80363 778.98124,343.12317 778.50441,341.22333 C 777.65751,337.849 783.94267,333.64873 790.79066,333.01262 C 795.72378,332.55439 795.88945,332.62259 795.88945,335.11155 C 795.88945,336.56485 796.5972,337.95568 797.51621,338.30833 C 798.41092,338.65167 803.6812,338.26717 809.22794,337.4539 L 819.31293,335.97521 L 821.46586,338.29827 C 822.64997,339.57595 824.46719,340.63934 825.50412,340.66136 C 826.98729,340.69285 826.80285,341.01963 824.63945,342.19329 C 821.24787,344.03326 821.24127,344.59715 824.53258,351.32435 C 826.49364,355.33261 828.171,357.23447 831.03258,358.69434 C 835.60071,361.02482 835.86313,362.24603 832.13945,363.84524 C 830.62695,364.49481 829.27007,365.09205 829.12415,365.17243 C 828.97824,365.25281 828.19074,367.88365 827.37415,371.01874 C 825.61234,377.7828 825.47213,382.24537 826.99191,383.18464 C 827.64543,383.58854 826.81806,384.48413 824.96009,385.38397 C 823.23624,386.21886 820.90949,388.1888 819.78954,389.76163 C 818.66959,391.33446 816.94048,392.62132 815.94708,392.62132 C 814.95368,392.62132 812.39683,393.22912 810.26518,393.97198 C 807.44487,394.95484 804.41137,395.10718 799.12548,394.53141 C 792.25529,393.78306 791.73071,393.87097 789.44866,396.15301 C 788.1216,397.48008 786.89039,399.55559 786.71263,400.76526 C 786.32962,403.37183 785.0385,403.9342 782.63945,402.53939 z",
+    name:"Bingöl"},13:{path:"M 908.88945,432.51896 C 907.51445,430.93174 903.84966,428.29807 900.74548,426.66635 C 897.64129,425.03462 892.97401,421.85824 890.37375,419.60773 C 886.3295,416.10746 885.19372,415.60718 882.51772,416.14738 C 880.79717,416.49471 878.23872,417.59275 876.83228,418.58747 C 874.5023,420.23538 873.92481,420.26742 870.33228,418.94809 C 868.16372,418.1517 864.99441,417.07485 863.28936,416.5551 C 858.73675,415.16732 857.2847,412.92082 855.89899,405.12132 C 854.2551,395.86868 854.18001,395.65282 852.41213,395.09864 C 847.31368,393.50041 847.27804,393.46381 849.8564,392.47313 C 851.21323,391.9518 855.93823,391.29314 860.3564,391.00943 C 872.46733,390.23176 872.2898,390.31241 873.7283,384.93402 C 874.8496,380.74163 874.80612,380.03356 873.36259,378.97802 C 871.87143,377.88765 871.90542,377.68314 873.74113,376.7007 C 874.85039,376.10704 876.81389,375.62132 878.10447,375.62132 C 879.79339,375.62132 880.76831,374.7806 881.58335,372.62132 C 882.29043,370.74804 883.42438,369.62132 884.60259,369.62132 C 885.64036,369.62132 887.0423,369.06847 887.718,368.39277 C 888.41549,367.69528 892.06819,367.07276 896.168,366.95265 C 906.55006,366.64849 917.66728,365.05059 919.39868,363.61366 C 920.2186,362.93318 920.88945,361.47643 920.88945,360.37643 C 920.88945,358.91607 921.22673,358.64306 922.13945,359.3646 C 922.82695,359.9081 924.73945,360.82767 926.38945,361.4081 C 928.33426,362.09224 928.7329,362.49119 927.52282,362.54237 C 926.08652,362.60312 925.7952,363.14004 926.25916,364.87132 C 926.5908,366.10882 926.86829,367.42893 926.8758,367.8049 C 926.88331,368.18087 928.12695,368.63703 929.63945,368.81861 L 932.38945,369.14874 L 929.18686,370.88619 C 926.96448,372.09187 923.10548,372.72346 916.57847,372.94978 C 908.97389,373.21346 905.9008,373.81647 900.53106,376.09863 C 895.09635,378.40842 893.88945,379.33767 893.88945,381.21232 C 893.88945,382.47235 894.33945,383.7814 894.88945,384.12132 C 896.35194,385.02519 896.11018,386.62132 894.51077,386.62132 C 893.7525,386.62132 892.5863,387.93899 891.91921,389.54946 C 891.25213,391.15994 890.07254,392.72082 889.29789,393.01808 C 888.52325,393.31534 887.88945,394.3062 887.88945,395.21999 C 887.88945,396.59532 888.65733,396.79487 892.3486,396.37881 C 895.14882,396.06319 896.94549,396.28945 897.17801,396.987 C 897.44344,397.7833 898.31771,397.74722 900.26592,396.85956 C 904.04106,395.13949 907.88945,395.27163 907.88945,397.12132 C 907.88945,398.05465 908.83389,398.62132 910.38945,398.62132 C 912.54434,398.62132 912.88945,399.07088 912.88945,401.87792 C 912.88945,403.66905 913.30804,406.59405 913.81964,408.37792 C 914.55946,410.95752 914.45713,411.62132 913.31964,411.62132 C 912.39721,411.62132 911.88945,412.6864 911.88945,414.62132 C 911.88945,416.81177 912.36169,417.62134 913.63945,417.6214 C 915.15314,417.62146 915.38945,418.65133 915.38945,425.24799 C 915.38945,431.78613 915.10403,433.05506 913.38945,434.13965 C 911.6362,435.24871 911.08102,435.04876 908.88945,432.51896 z",name:"Bitlis"},14:{path:"M 281.88945,287.07033 C 278.20841,286.15848 277.23155,285.42471 276.52182,283.03846 C 276.04463,281.43403 275.26634,279.35468 274.7923,278.41768 C 274.26028,277.36607 274.34134,276.46007 275.0041,276.05046 C 275.59463,275.6855 275.85423,274.21741 275.58099,272.78805 C 275.26032,271.11056 275.7878,269.29086 277.06884,267.65526 C 278.70385,265.56775 280.14017,265.03323 285.22147,264.62132 L 291.38945,264.12132 L 291.69695,259.87132 L 292.00445,255.62132 L 299.44695,255.62132 C 303.74195,255.62132 306.88945,256.04423 306.88945,256.62132 C 306.88945,257.90175 312.97963,257.91773 316.32435,256.64607 C 318.44571,255.83953 318.8933,255.01783 318.91169,251.89607 C 318.94279,246.61656 321.40533,243.99839 327.0121,243.28372 C 333.88275,242.40795 336.92332,240.70196 337.59447,237.34623 C 337.91312,235.75299 338.67234,234.2971 339.28164,234.11093 C 339.89094,233.92475 345.66654,233.48156 352.11631,233.12606 L 363.84317,232.47969 L 364.51844,236.70264 C 365.29331,241.54841 367.87332,244.62132 371.16694,244.62132 C 372.41957,244.62132 374.46918,245.33908 375.72164,246.21634 C 377.51322,247.47121 377.93387,248.59081 377.69415,251.46634 C 377.40724,254.90789 377.15587,255.15256 373.38945,255.65638 C 366.93884,256.51924 365.02819,258.83173 368.43191,261.65656 C 369.76206,262.76049 369.03941,263.53082 363.18191,267.25299 C 359.44606,269.62696 355.91505,271.581 355.33523,271.59531 C 354.75541,271.60961 352.05541,273.05907 349.33523,274.81631 C 346.03306,276.94953 342.3955,278.29113 338.38945,278.85333 C 323.23193,280.9805 324.15719,281.01326 321.60479,278.25917 C 319.42583,275.90804 318.94067,275.7928 315.5729,276.8264 C 312.55731,277.75191 311.59966,277.67734 310.15001,276.40414 C 305.58983,272.39903 300.88945,273.50789 300.88945,278.58878 C 300.88945,281.44142 298.23504,284.60582 295.81071,284.64328 C 295.02902,284.65536 292.58945,285.4572 290.38945,286.42515 C 287.02623,287.9049 285.67307,288.00761 281.88945,287.07033 z",name:"Bolu"},15:{path:"M 197.88945,502.68034 C 197.88945,502.1628 198.33945,501.46124 198.88945,501.12132 C 200.59038,500.07009 199.99425,497.16787 197.79533,495.79461 C 195.94866,494.64135 195.87028,494.28796 197.13203,492.80407 C 197.91898,491.87856 200.26375,487.97132 202.34264,484.12132 C 204.42152,480.27132 207.42,475.48156 209.00594,473.47742 C 212.46813,469.10224 212.62989,467.25734 209.66723,465.93536 C 207.76798,465.0879 207.4316,464.12098 207.35277,459.28255 C 207.26426,453.84972 207.364,453.62115 209.82499,453.61699 C 211.23544,453.61461 215.98945,451.78486 220.38945,449.55088 C 226.19075,446.60543 229.21396,445.61979 231.38945,445.96459 C 234.91105,446.52275 248.59571,444.84889 250.99094,443.56701 C 252.30875,442.86173 253.37194,443.77447 256.20787,448.04569 C 259.06493,452.34873 260.72138,453.76192 264.57956,455.18794 C 270.83916,457.50154 271.88945,458.37424 271.88945,461.26184 C 271.88945,462.57943 273.64408,466.54564 275.78863,470.07564 C 279.57332,476.30537 279.6328,476.54361 277.81416,478.18946 C 276.78365,479.12205 275.66042,480.76758 275.31808,481.84619 C 274.77499,483.55733 274.10255,483.72447 270.04255,483.15751 C 267.48334,482.80012 263.36901,482.51968 260.89958,482.53429 C 257.68264,482.55333 255.3644,481.83646 252.72267,480.00574 C 247.4622,476.36023 241.55519,475.753 237.86844,478.47873 C 236.27789,479.65467 232.56753,481.51813 229.62318,482.61976 C 221.93215,485.49734 220.59856,486.72678 220.44743,491.07893 C 220.27831,495.94896 217.73176,497.93694 212.74082,497.09516 C 209.60115,496.56562 208.43965,496.97787 204.41422,500.05055 C 199.67573,503.66752 197.88945,504.38748 197.88945,502.68034 z",name:"Burdur"},16:{path:"M 193.88945,318.92086 C 193.06445,318.62245 190.91957,317.70321 189.12306,316.87809 C 187.29081,316.03656 184.62196,315.62482 183.04453,315.9403 C 179.7279,316.60363 177.81542,314.80917 176.29594,309.60818 C 175.28515,306.14837 175.23742,306.12377 170.14303,306.43706 C 165.32151,306.73357 164.91487,306.57115 163.46652,303.77035 C 162.48325,301.86892 160.61376,300.35541 158.30873,299.59468 C 155.53917,298.68064 154.25337,297.43278 152.8133,294.26139 C 151.77934,291.98435 150.92349,288.98395 150.91141,287.59383 C 150.89933,286.2037 150.12141,283.9698 149.18269,282.62959 C 148.24397,281.28937 147.18562,277.92992 146.8308,275.16413 C 146.24299,270.58223 146.46036,269.77941 149.27721,266.12838 C 150.97755,263.92449 152.41581,262.0039 152.47335,261.8604 C 152.75914,261.1476 168.83332,264.05867 171.78331,265.35747 C 174.42856,266.5221 175.97261,266.61972 178.78331,265.80003 C 182.5115,264.71277 187.51012,265.19854 188.46324,266.74072 C 189.42381,268.29495 197.61591,267.77653 198.25108,266.12132 C 198.56766,265.29632 199.7408,264.62132 200.85807,264.62132 C 201.97533,264.62132 202.88945,264.24106 202.88945,263.77631 C 202.88945,262.36763 199.34407,259.62132 197.52553,259.62132 C 196.13812,259.62132 196.01603,259.25333 196.87249,257.653 C 197.68648,256.13205 198.43315,255.87263 200.15768,256.51161 C 201.38515,256.96642 207.89842,257.3572 214.6316,257.38002 C 225.2314,257.41594 227.20143,257.16376 229.31626,255.50023 C 231.74597,253.58902 231.78791,253.59325 237.32411,256.30846 C 243.32369,259.25093 243.98694,260.13822 240.91554,261.11304 C 237.20337,262.29124 234.88945,266.5009 234.88945,272.07618 C 234.88945,276.57077 234.41651,277.81385 231.33827,281.41007 C 228.17623,285.10421 227.86178,285.97316 228.46866,289.34007 C 228.84353,291.41976 229.59256,293.67889 230.13319,294.36036 C 230.67381,295.04183 230.81975,297.17933 230.45748,299.11036 C 229.80351,302.59633 229.76178,302.62109 224.59414,302.58952 C 221.61235,302.5713 218.5604,301.93065 217.44832,301.08952 C 214.15125,298.59574 211.88945,299.2139 211.88945,302.60878 C 211.88945,305.01596 211.09766,306.09606 207.81302,308.16957 C 205.28874,309.76308 203.15176,312.14761 202.20063,314.43211 C 200.12186,319.42508 198.18118,320.47322 193.88945,318.92086 z",name:"Bursa"},17:{path:"M 37.70422,313.12212 C 36.925933,312.32184 39.867496,305.62132 40.99711,305.62132 C 42.269906,305.62132 43.737719,299.3488 43.805194,293.62132 C 43.840831,290.59632 44.451435,286.11435 45.162091,283.6614 C 46.382966,279.44733 46.660376,279.19431 50.194444,279.07159 C 53.876077,278.94374 56.786379,276.67241 56.857647,273.87132 C 56.875138,273.18382 57.56445,272.62132 58.38945,272.62132 C 59.358976,272.62132 59.8897,271.64878 59.890156,269.87132 C 59.890743,267.58541 60.349095,267.09471 62.606176,266.96366 C 64.102532,266.87677 66.172962,265.75447 67.218201,264.46366 C 68.261391,263.17537 69.471095,262.12132 69.906432,262.12132 C 70.341768,262.12132 72.545412,260.46282 74.803418,258.43577 C 78.419643,255.18942 79.354606,254.81865 82.649167,255.32453 C 84.706323,255.6404 86.933518,256.3262 87.598491,256.84853 C 89.079884,258.01215 94.361865,256.96195 95.81119,255.21562 C 96.454752,254.44017 98.937077,253.98954 102.13029,254.06848 C 107.23335,254.19463 107.38084,254.27937 107.09947,256.92349 C 106.85591,259.21229 107.53117,260.08653 111.31786,262.38491 C 113.79747,263.88993 115.84046,265.43761 115.85784,265.8242 C 115.87523,266.21078 114.08945,267.97359 111.88945,269.74156 C 107.56123,273.21981 106.88968,275.85911 109.57726,278.82885 C 110.53095,279.88267 111.58264,283.3872 111.9952,286.88611 C 112.9917,295.33754 111.58546,298.38038 105.03567,301.94522 C 99.840846,304.7726 96.578907,304.8604 95.558142,302.20033 C 95.274303,301.46066 92.493601,300.05388 89.378804,299.07415 C 84.075186,297.40596 83.536621,297.39853 80.898202,298.95708 C 79.348667,299.87241 76.274499,300.62132 74.066717,300.62132 C 70.587767,300.62132 69.775039,301.07037 67.971009,303.98935 C 66.826152,305.84177 65.88945,308.00402 65.88945,308.79435 C 65.88945,309.80304 63.72864,310.58287 58.63945,311.41086 C 47.946961,313.15048 38.484048,313.92399 37.70422,313.12212 z M 47.907647,273.94624 C 47.917656,273.49254 49.267656,271.1411 50.907647,268.72084 C 53.868453,264.35135 54.57813,261.64333 53.13945,260.20465 C 51.530495,258.5957 52.513472,257.03832 56.369446,255.08723 C 58.580448,253.96847 61.28945,252.56091 62.38945,251.95931 C 67.13933,249.36155 72.167441,247.62132 74.923377,247.62132 C 76.554717,247.62132 77.88945,247.17132 77.88945,246.62132 C 77.88945,246.07132 78.67695,245.60701 79.63945,245.58952 C 84.587412,245.4996 86.553568,239.51814 82.38945,237.22345 C 81.28945,236.61728 80.212825,236.01969 79.996949,235.89549 C 79.781074,235.77128 80.173674,234.98378 80.869394,234.14549 C 81.652694,233.20167 83.813104,232.62132 86.54328,232.62132 C 91.907524,232.62132 93.161557,234.63832 89.933588,238.07434 C 88.610534,239.48266 87.858211,241.36716 88.05762,242.77346 C 88.348624,244.82571 87.572084,245.44776 81.889996,247.71408 C 78.314696,249.1401 75.50195,250.8276 75.63945,251.46408 C 75.77695,252.10056 75.203312,252.62132 74.364699,252.62132 C 73.526086,252.62132 72.403949,253.76809 71.87106,255.16969 C 71.314735,256.63293 69.438243,258.32973 67.464192,259.15454 C 65.573303,259.9446 63.715506,261.09375 63.335754,261.7082 C 62.956002,262.32265 61.131166,263.45803 59.280564,264.23126 C 56.753301,265.28722 55.974773,266.18191 56.152641,267.82588 C 56.33108,269.47514 55.341883,270.60084 52.13945,272.3929 C 49.80195,273.70095 47.897639,274.39995 47.907647,273.94624 z M 23.0294,267.28995 C 21.942416,265.98021 22.197542,265.51336 24.710383,264.21392 C 26.339735,263.37135 29.634078,262.55583 32.031145,262.40165 C 36.122471,262.13849 36.372815,262.27068 36.117889,264.55955 C 35.75289,267.83671 35.657021,267.89312 29.599006,268.3955 C 25.648575,268.7231 23.98671,268.44344 23.0294,267.28995 z",name:"Çanakkale"},18:{path:"M 442.38945,283.69166 C 440.18945,282.63121 436.81445,281.30884 434.88945,280.75305 C 432.96445,280.19727 429.58945,279.06001 427.38945,278.22582 C 423.12293,276.60805 414.88945,276.08398 414.88945,277.43019 C 414.88945,277.87507 414.29004,279.0588 413.55744,280.0607 C 412.30048,281.77968 412.04346,281.70446 408.99635,278.72582 C 407.22036,276.98973 405.29598,274.21733 404.71995,272.56492 C 404.14391,270.91252 402.3714,268.88767 400.78103,268.06526 C 397.79237,266.51976 397.15589,265.19272 398.88945,264.12132 C 400.57948,263.07682 399.99681,260.62132 398.05893,260.62132 C 397.05214,260.62132 394.01464,259.4982 391.30893,258.12551 C 388.60322,256.75281 384.70195,255.62781 382.63945,255.62551 C 379.05135,255.6215 378.88945,255.47633 378.88945,252.2629 C 378.88945,249.30287 379.53953,248.47285 384.36966,245.26582 C 387.73767,243.02959 390.09005,240.67024 390.47302,239.14437 C 391.01118,237.00018 391.37494,236.81078 393.14027,237.75556 C 396.01397,239.29351 402.48673,237.26933 403.18067,234.61568 C 403.62294,232.92444 404.54846,232.62132 409.27015,232.62132 C 414.54621,232.62132 414.92473,232.79169 416.49095,235.87132 C 417.40002,237.65882 418.32364,239.32089 418.54345,239.56481 C 418.76326,239.80873 420.25566,238.57123 421.8599,236.81481 C 424.68323,233.72366 425.03771,233.62132 432.92098,233.62132 L 441.06525,233.62132 L 440.41128,237.87132 C 440.0516,240.20882 439.51196,243.58382 439.21209,245.37132 L 438.66687,248.62132 L 443.55565,248.62132 C 449.45327,248.62132 452.34472,250.44074 453.89047,255.12442 C 454.52522,257.04772 455.35905,258.62132 455.74343,258.62132 C 456.12781,258.62132 456.27064,260.42132 456.06084,262.62132 C 455.80494,265.30467 456.07975,266.62132 456.89571,266.62132 C 457.7491,266.62132 457.91187,267.68827 457.44121,270.19712 C 457.03912,272.34042 457.2143,274.30781 457.87847,275.1081 C 458.68941,276.08521 458.68883,276.62727 457.87633,277.12943 C 457.26569,277.50682 456.35981,278.88417 455.86326,280.19021 C 455.35675,281.52244 453.35485,283.23568 451.30282,284.09307 C 446.76818,285.98776 447.1926,286.00688 442.38945,283.69166 z",name:"Çankırı"},19:{path:"M 458.13945,304.30261 C 456.90195,302.48483 455.88945,300.38236 455.88945,299.63044 C 455.88945,296.64789 453.25617,291.02108 450.88945,288.94641 L 448.38945,286.7549 L 452.18296,285.15651 C 454.26939,284.2774 456.25029,282.78484 456.58496,281.83972 C 456.91963,280.8946 457.89257,279.30865 458.74706,278.31538 C 459.89927,276.97604 460.03091,276.07175 459.25657,274.81538 C 458.68232,273.88365 458.41402,271.43382 458.66037,269.37132 C 458.96541,266.81731 458.71368,265.62132 457.87105,265.62132 C 456.98769,265.62132 456.81678,264.47727 457.27346,261.62132 C 457.63625,259.35253 457.50873,257.62132 456.97882,257.62132 C 456.46497,257.62132 455.52522,256.04772 454.89047,254.12442 C 454.25573,252.20113 452.7707,249.95113 451.59042,249.12442 C 449.52879,247.6804 449.52197,247.61751 451.41694,247.52443 C 452.50182,247.47114 455.11844,247.50854 457.23166,247.60755 C 459.34487,247.70656 462.43157,247.22519 464.09098,246.53784 C 466.84361,245.39767 467.06429,244.96152 466.60838,241.56248 C 466.33354,239.51338 465.1124,236.48932 463.89473,234.84233 C 461.01821,230.95164 461.77966,227.52575 466.79569,221.79037 C 470.28793,217.7973 471.04396,217.41843 476.48644,216.93414 C 481.98429,216.44492 482.91568,216.69359 490.05626,220.55709 C 495.69243,223.6066 497.98078,225.44455 498.69604,227.49634 C 499.27685,229.16246 500.90891,230.80096 502.74538,231.56165 C 505.69416,232.78307 505.79849,233.02852 505.26056,237.47862 C 504.95189,240.03211 504.05421,243.56654 503.26571,245.33291 C 501.73034,248.7724 502.17401,252.59453 504.55039,256.40019 C 505.82292,258.43809 506.48991,258.61055 510.85781,258.03113 C 515.24112,257.44966 516.01093,257.65189 518.36129,260.00225 C 519.80178,261.44274 521.5224,262.63451 522.1849,262.65063 C 522.8474,262.66676 524.90059,264.05387 526.74753,265.73311 L 530.10561,268.78626 L 527.67967,271.45379 C 523.71535,275.81291 521.67567,279.69582 522.23221,281.82405 C 522.51967,282.92327 522.27298,284.88021 521.68403,286.17282 C 520.82211,288.06453 519.71468,288.58138 516.00733,288.82217 L 511.40145,289.12132 L 510.39545,296.01278 C 509.32272,303.36136 509.16092,303.53888 502.13945,305.07104 C 499.46435,305.65478 498.88945,305.47805 498.88945,304.07194 C 498.88945,302.58988 498.1958,302.45568 493.65147,303.0585 C 490.77058,303.44066 486.93249,304.45612 485.12239,305.31507 C 482.11254,306.74334 481.36479,306.73007 476.37271,305.15987 C 471.04256,303.48334 470.83461,303.49209 467.53376,305.53213 C 462.85774,308.42207 460.75668,308.14708 458.13945,304.30261 z",name:"Çorum"},20:{path:"M 184.76463,500.8011 C 182.04115,498.36768 181.50748,497.22334 181.70794,494.24679 C 182.0552,489.0904 179.68384,485.28166 173.91684,481.73319 C 171.15178,480.03183 168.88945,478.18565 168.88945,477.63056 C 168.88945,477.07548 168.28419,476.62132 167.54444,476.62132 C 165.6156,476.62132 162.88945,473.30986 162.88945,470.96689 C 162.88945,469.86857 161.80738,467.9534 160.48485,466.71095 C 159.16233,465.4685 157.78176,462.86084 157.41694,460.91616 C 156.8258,457.76511 157.11466,457.07142 160.07154,454.54116 C 161.89639,452.9796 164.85195,451.19892 166.63945,450.58409 C 168.42695,449.96926 169.88945,448.82001 169.88945,448.0302 C 169.88945,447.24039 170.39278,445.78823 171.00795,444.80318 C 171.93145,443.32443 171.58275,442.46847 169.00795,439.89367 C 164.97949,435.86521 164.69881,431.12094 168.38945,429.43937 C 171.68377,427.93838 171.51957,426.72589 167.5364,423.14023 L 164.22482,420.15914 L 167.56879,415.50458 C 169.55699,412.73715 171.90799,410.65977 173.36747,410.38077 C 174.71756,410.12268 180.39371,410.29808 185.98112,410.77054 C 195.26979,411.55596 196.41786,411.45786 199.38279,409.62543 C 203.536,407.05861 204.11363,407.09763 207.79283,410.19348 C 209.6057,411.7189 211.77339,412.63453 213.11956,412.44348 C 215.00304,412.17616 215.54819,411.22759 216.32194,406.87132 C 216.83481,403.98382 217.78662,401.62132 218.43708,401.62132 C 219.08754,401.62132 220.79269,400.69867 222.2263,399.57099 C 224.40768,397.85512 225.2045,397.71238 227.11116,398.69596 C 231.06483,400.73551 233.88945,403.88828 233.88945,406.26171 C 233.88945,407.52217 234.67521,410.20121 235.63557,412.21513 L 237.3817,415.87679 L 232.53131,420.14491 C 229.8636,422.49237 226.49034,424.68084 225.03519,425.00816 C 220.51861,426.02414 217.05545,429.71349 216.32566,434.28656 C 215.70849,438.15387 215.86598,438.55782 218.52756,439.93418 C 220.10419,440.74949 222.20104,442.30814 223.18722,443.39786 C 224.94013,445.3348 224.85162,445.45175 219.23356,448.62239 C 216.07287,450.40617 211.83368,452.08737 209.81315,452.35838 L 206.13945,452.85113 L 206.13945,459.26794 C 206.13945,464.79763 206.43323,465.83734 208.26445,466.78849 C 209.4332,467.39555 210.5562,468.03552 210.76,468.21066 C 210.96381,468.3858 209.77873,470.23734 208.12649,472.32521 C 206.47425,474.41307 203.42152,479.27132 201.34264,483.12132 C 199.26375,486.97132 196.9664,490.82616 196.2374,491.68763 C 195.5084,492.54911 194.31026,494.99188 193.57486,497.11601 C 192.83947,499.24015 191.29872,501.60159 190.15098,502.36366 C 188.27005,503.61256 187.73867,503.45841 184.76463,500.8011 z",name:"Denizli"},21:{path:"M 765.88945,467.92092 C 761.30638,467.02037 760.59452,465.68898 761.1979,459.1463 C 761.89967,451.53681 760.86434,446.24017 758.58953,445.80208 C 757.64331,445.61985 755.34496,446.41275 753.48207,447.56407 L 750.09502,449.65739 L 744.74633,445.09183 C 741.58332,442.39194 737.65926,440.08855 735.14355,439.45508 C 732.80379,438.86593 730.88945,438.19648 730.88945,437.96742 C 730.88945,437.73836 731.66841,436.36212 732.62046,434.90909 C 734.32037,432.31471 734.31205,432.27755 732.15723,432.84104 C 729.19515,433.61564 727.39447,431.41471 728.81647,428.75768 C 730.68539,425.26557 727.88791,421.74294 724.79877,423.69853 C 721.8473,425.56695 721.12372,424.66119 722.76592,421.15389 C 723.66125,419.24169 725.1479,417.67184 726.08043,417.65389 C 727.01047,417.63597 728.04953,417.17132 728.38945,416.62132 C 729.28938,415.1652 732.95431,415.39348 738.7553,417.26699 C 743.83296,418.90689 743.86466,418.9035 747.8004,416.29895 C 749.97268,414.8614 753.80637,413.16743 756.31972,412.53456 C 760.42245,411.50148 760.88945,411.08944 760.88945,408.50261 C 760.88945,406.9179 761.22695,405.61567 761.63945,405.60877 C 768.72744,405.49016 786.49599,404.36449 787.09169,403.99633 C 787.53046,403.72515 787.88945,402.6503 787.88945,401.60776 C 787.88945,400.56522 788.95522,398.64646 790.25783,397.34385 C 792.47968,395.12199 793.06968,395.02285 799.79385,395.74132 C 805.11845,396.31026 808.01309,396.13616 811.0512,395.06425 C 813.30054,394.27064 815.81199,393.62132 816.6322,393.62132 C 817.45241,393.62132 819.8261,391.8669 821.90706,389.72261 C 826.32147,385.17386 831.29335,383.59665 833.6835,385.9868 C 835.47012,387.77342 838.88741,396.23239 838.88864,398.87132 C 838.88908,399.83382 838.32695,400.63093 837.63945,400.64267 C 835.72642,400.67535 830.83429,408.18639 830.20656,412.0546 C 829.7963,414.58276 830.2446,416.4599 831.89727,419.13397 C 833.66943,422.00138 833.9297,423.23391 833.12481,424.94713 C 828.2115,435.40514 826.27878,438.84638 824.24589,440.75619 C 821.30429,443.51968 821.11206,447.60527 823.88945,448.33157 C 824.98945,448.61923 825.88945,449.2121 825.88945,449.64906 C 825.88945,450.72655 820.02692,455.59387 818.56272,455.73201 C 815.15496,456.05351 812.09439,455.28665 809.57084,453.479 C 805.84381,450.80928 803.88945,451.68424 803.88945,456.02255 C 803.88945,459.96667 801.80407,461.20075 796.94327,460.13314 C 794.49789,459.59604 793.68742,459.97556 791.78512,462.54856 C 789.01168,466.29984 787.05358,467.03339 779.38945,467.19221 C 776.08945,467.26059 772.26445,467.56306 770.88945,467.86435 C 769.51445,468.16565 767.26445,468.19111 765.88945,467.92092 z",name:"Diyarbakır"},22:{path:"M 67.514349,238.91289 C 67.163412,238.56195 63.091855,238.17004 58.466445,238.04198 C 47.052527,237.72598 45.88945,237.27093 45.88945,233.12132 C 45.88945,230.63435 46.411411,229.59043 47.88945,229.12132 C 48.98945,228.77219 49.88945,228.01885 49.88945,227.44722 C 49.88945,226.06237 59.994244,216.62132 61.476454,216.62132 C 63.03967,216.62132 64.158182,210.65005 62.882818,209.11333 C 62.325175,208.44141 62.07271,205.91833 62.321784,203.50649 C 62.570858,201.09465 62.800477,198.3927 62.832048,197.50216 C 62.869904,196.43434 64.117452,195.68373 66.495862,195.29776 C 68.479389,194.97588 70.660209,193.9495 71.342129,193.01692 C 72.052809,192.04501 74.034711,191.27864 75.985717,191.22132 L 79.38945,191.12132 L 79.38945,181.37228 C 79.38945,174.75482 79.024082,171.62293 78.252012,171.62228 C 77.626421,171.62175 76.051421,170.2754 74.752012,168.63039 C 73.452603,166.98539 71.710196,165.63538 70.879997,165.63039 C 70.049798,165.6254 68.808484,164.72132 68.121523,163.62132 C 67.121901,162.02067 67.123789,161.20767 68.130976,159.54973 C 69.177497,157.82704 70.039852,157.57941 73.251213,158.07942 C 77.690502,158.77062 79.88945,157.45948 79.88945,154.12132 C 79.88945,150.55115 82.162752,149.52646 90.812158,149.1979 L 98.88945,148.89107 L 98.88945,157.17947 C 98.88945,164.56147 98.616057,165.79278 96.38945,168.43895 C 93.365207,172.03306 93.248456,173.44865 95.895511,174.42786 C 97.810095,175.13611 97.741694,175.41811 94.395511,180.61191 C 90.622421,186.46835 90.014633,190.56006 92.072474,196.25092 C 92.974297,198.74487 92.979144,200.12905 92.092866,202.07421 C 90.781252,204.9529 85.770114,208.40477 81.618641,209.28929 C 78.217572,210.01393 77.087455,211.593 79.145592,212.74479 C 80.365538,213.4275 80.50254,214.38003 79.809847,217.36311 C 78.559845,222.74624 78.692893,228.02476 80.114409,229.44628 C 81.081022,230.41289 81.081022,231.08492 80.114409,232.63271 C 79.440682,233.71152 78.88945,235.27529 78.88945,236.10775 C 78.88945,237.17619 77.840797,237.62132 75.323709,237.62132 C 73.362551,237.62132 70.946718,238.05549 69.955191,238.58614 C 68.963665,239.11679 67.865286,239.26382 67.514349,238.91289 z",name:"Edirne"},23:{path:"M 741.65956,417.05809 C 741.34978,416.74832 738.72235,415.86862 735.82081,415.10321 C 731.10962,413.86043 730.24565,413.88855 727.74435,415.3661 C 725.05283,416.95603 724.84492,416.92812 722.42168,414.6516 C 720.17193,412.53806 719.51958,412.39927 716.37353,413.36482 C 713.059,414.38208 712.62403,414.2367 709.13373,410.94492 C 705.68658,407.69384 705.25363,407.54388 703.09529,408.85348 C 701.052,410.09328 699.82041,410.01288 692.93178,408.19 C 688.62061,407.04918 684.14743,405.25978 682.99137,404.21356 C 680.31875,401.79486 680.29259,397.47144 682.93612,395.07908 C 684.06179,394.06037 685.66056,391.79858 686.48895,390.05289 C 687.92245,387.03201 688.21503,386.90369 692.55428,387.39279 L 697.11346,387.90667 L 696.41356,383.764 C 695.93182,380.91261 696.07038,379.62132 696.85809,379.62132 C 697.58766,379.62132 697.38398,378.57421 696.29622,376.73279 C 694.06547,372.95641 694.99701,370.07333 697.93918,371.64793 C 699.56711,372.51918 699.76951,373.06091 698.8714,374.14307 C 698.1786,374.97784 698.03055,376.43555 698.49761,377.82333 C 699.25629,380.07757 699.43117,380.86031 699.73714,383.37132 C 699.96376,385.23119 702.88945,384.88552 702.88945,382.99888 C 702.88945,381.62638 703.13545,381.58059 704.48623,382.70164 C 705.83053,383.81731 706.22937,383.7653 707.0087,382.37272 C 708.15099,380.33156 714.80386,380.86633 716.49969,383.13563 C 718.02811,385.1809 718.88945,384.99553 718.88945,382.62132 C 718.88945,380.18623 720.18695,380.06168 722.40877,382.2835 C 723.60374,383.47847 724.27283,383.61903 724.78917,382.78357 C 725.31787,381.92812 726.01959,382.00888 727.44842,383.08959 C 728.51599,383.89706 730.17695,384.57202 731.13945,384.58952 C 732.10195,384.60701 732.88945,385.06601 732.88945,385.60953 C 732.88945,386.15305 733.90049,386.49055 735.13622,386.35953 C 738.91912,385.95845 738.71959,390.28264 734.80437,393.55121 C 728.85227,398.52024 734.14593,399.8241 742.65641,395.48522 C 747.11488,393.21216 751.48752,393.08069 752.66475,395.1843 C 754.00924,397.58676 758.5673,396.04101 759.35146,392.91666 C 760.03222,390.20429 759.2319,388.5021 758.08508,390.22322 C 756.9498,391.92702 753.72788,392.73212 752.41272,391.64064 C 751.73995,391.08228 749.74362,390.79379 747.97644,390.99955 C 746.20925,391.20531 743.67026,390.86688 742.33422,390.24749 C 737.12278,387.83145 740.92866,382.42202 749.06808,380.67643 C 751.77398,380.09612 754.52824,379.61825 755.18867,379.61449 C 756.89925,379.60475 760.88945,373.41712 760.88945,370.77426 C 760.88945,369.55144 760.20431,367.5053 759.36692,366.22728 C 757.99952,364.14036 758.00383,363.77128 759.4093,362.60484 C 760.59463,361.62111 761.25501,361.58688 762.13183,362.4637 C 764.27427,364.60614 767.73932,363.64598 772.38945,359.62132 C 774.93135,357.42132 777.41789,355.62132 777.91509,355.62132 C 779.3979,355.62132 780.78008,359.05983 779.93531,360.64714 C 778.64204,363.07722 777.76428,372.42592 778.77097,373.0481 C 779.28287,373.36447 779.50299,374.41036 779.26013,375.37232 C 778.97302,376.5095 779.87938,377.82094 781.85113,379.12132 C 783.51904,380.22132 784.88499,381.474 784.88657,381.90505 C 784.88816,382.33609 783.31445,383.61804 781.38945,384.75382 C 779.46445,385.8896 777.88945,387.44942 777.88945,388.2201 C 777.88945,388.99077 777.45528,389.62132 776.92463,389.62132 C 776.39398,389.62132 775.43674,390.59869 774.79743,391.79326 C 773.78386,393.68714 774.02028,394.29526 776.64416,396.54326 C 778.29917,397.96119 779.8768,400.08607 780.14999,401.26521 C 780.61302,403.26368 780.14876,403.45575 773.30504,404.09706 C 769.26712,404.47545 765.4927,404.49415 764.91746,404.13863 C 762.70912,402.7738 759.88945,404.69808 759.88945,407.56999 C 759.88945,410.08109 759.39253,410.50902 755.2715,411.5467 C 752.73163,412.18625 749.02717,413.81467 747.03937,415.16542 C 743.24638,417.74282 742.57905,417.97759 741.65956,417.05809 z",name:"Elazığ"},24:{path:"M 695.36395,365.87656 C 693.25556,362.41176 689.15655,360.95478 684.18887,361.90441 C 682.71891,362.18542 681.03769,362.23175 680.45283,362.00739 C 678.94607,361.42935 679.19682,345.3522 680.72051,344.8443 C 682.44343,344.26999 682.14215,340.65552 680.31285,339.95355 C 677.98527,339.06038 676.68193,334.92648 678.04152,332.74943 C 678.82913,331.48825 678.85903,330.38938 678.14065,329.10571 C 677.0433,327.14484 679.60317,319.70086 682.46093,316.54258 C 684.58953,314.19014 684.19596,312.08201 681.38945,310.80327 C 678.58566,309.52578 678.16582,307.46677 680.34101,305.66152 C 681.47567,304.71984 682.56712,304.73691 685.34036,305.73973 C 688.10082,306.73792 689.15459,306.75618 690.0888,305.82197 C 690.74916,305.16161 693.0107,304.62132 695.11445,304.62132 C 698.55625,304.62132 698.99899,304.32364 699.53372,301.64997 C 700.0546,299.04559 700.37411,298.81033 702.12078,299.74512 C 703.21681,300.3317 705.23885,300.59652 706.61419,300.33361 C 708.97803,299.88173 718.68346,303.67347 728.15652,308.74981 C 730.2284,309.86007 733.1534,310.65687 734.65652,310.52046 C 736.15963,310.38405 738.88217,310.61833 740.70661,311.04109 C 743.09031,311.59343 744.49733,311.3944 745.70661,310.33381 C 746.63217,309.52205 748.28945,308.57771 749.38945,308.23527 C 750.48945,307.89284 752.41718,306.02268 753.67331,304.07937 C 754.92943,302.13606 756.98371,300.15578 758.23837,299.67876 C 764.93654,297.13212 780.61042,297.30035 778.0197,299.89107 C 774.87024,303.04053 779.38574,307.62132 785.63979,307.62132 C 789.1306,307.62132 790.88945,309.24023 790.88945,312.45329 C 790.88945,315.25134 794.26904,321.16927 796.31539,321.95453 C 797.0774,322.24694 797.99798,323.83898 798.36114,325.49241 C 798.8065,327.52012 799.89506,328.81841 801.70543,329.48103 L 804.38945,330.46343 L 801.88945,330.61538 C 800.51445,330.69895 796.97371,331.11063 794.02115,331.53022 C 789.23605,332.21024 788.35127,332.03935 785.87679,329.95722 C 782.42667,327.05413 773.81233,326.73672 768.40863,329.31356 C 765.05695,330.91187 764.58274,330.90612 759.86588,329.20996 C 754.2185,327.17919 751.40729,327.66953 752.16154,330.55379 C 752.5289,331.95859 752.00875,332.62555 750.18976,333.08208 C 748.83084,333.42315 746.65541,334.84982 745.35549,336.25247 C 742.81501,338.99369 740.88945,338.69612 740.88945,335.5623 C 740.88945,333.20891 739.60691,333.10512 736.41006,335.19977 C 735.08509,336.06792 731.83842,336.89367 729.19524,337.03477 C 726.55206,337.17587 723.12266,337.81557 721.57435,338.45632 C 720.02605,339.09707 718.12702,339.62132 717.35429,339.62132 C 716.58156,339.62132 714.95123,340.97132 713.73133,342.62132 C 712.51143,344.27132 710.92296,345.62132 710.20139,345.62132 C 709.47982,345.62132 708.88945,346.10164 708.88945,346.68871 C 708.88945,347.29417 708.04027,347.48658 706.92722,347.13331 C 703.99819,346.20367 700.70931,348.3438 701.07877,350.93898 C 701.29795,352.47858 702.19938,353.21451 704.13945,353.43774 C 707.89951,353.87038 707.59045,355.23838 703.38945,356.75748 C 701.46445,357.45357 699.88945,358.31337 699.88945,358.66815 C 699.88945,359.02292 698.22155,359.21193 696.18301,359.08817 C 693.66643,358.93538 692.20754,358.2602 691.63851,356.98496 C 690.71834,354.92279 684.88945,351.16021 684.88945,352.6284 C 684.88945,353.13114 685.60684,354.12271 686.48364,354.83189 C 687.36045,355.54108 689.13511,357.17219 690.42733,358.45658 C 692.05749,360.07687 693.4079,360.59155 694.83806,360.13763 C 697.32436,359.34851 698.1749,361.03339 697.68441,365.77612 L 697.33845,369.12132 L 695.36395,365.87656 z",name:"Erzincan"},25:{path:"M 847.97054,347.74073 C 843.44593,341.07795 841.39517,340.16434 833.24872,341.18217 C 829.57312,341.64141 827.88945,341.50141 827.88945,340.73654 C 827.88945,340.12317 827.15355,339.62132 826.25412,339.62132 C 825.35469,339.62132 823.53544,338.45237 822.21135,337.02365 C 820.53167,335.21124 819.13667,334.58611 817.59668,334.95569 C 809.89764,336.8034 798.66206,337.79393 797.58781,336.71968 C 795.77833,334.9102 798.09433,332.17076 801.7403,331.80796 C 805.52153,331.43171 805.99134,328.93598 802.44834,328.04674 C 800.77856,327.62766 799.80084,326.49437 799.35405,324.46012 C 798.99479,322.82445 798.0774,321.24694 797.31539,320.95453 C 795.26904,320.16927 791.88945,314.25134 791.88945,311.45329 C 791.88945,308.24023 790.1306,306.62132 786.63979,306.62132 C 783.63398,306.62132 777.88945,304.10979 777.88945,302.79564 C 777.88945,301.0846 780.46404,299.62132 783.47457,299.62132 C 788.57754,299.62132 800.88945,288.68806 800.88945,284.1565 C 800.88945,282.37928 798.78698,282.12379 797.20232,283.70845 C 796.41947,284.4913 795.92712,284.4913 795.4433,283.70845 C 795.07376,283.11053 793.68881,282.62132 792.36562,282.62132 C 791.01053,282.62132 789.50771,281.77655 788.92463,280.68706 C 787.47818,277.98434 787.63401,276.62132 789.38945,276.62132 C 791.1294,276.62132 791.39778,273.52965 789.79681,271.92868 C 789.00662,271.13849 789.03984,270.1835 789.9168,268.47868 C 791.69825,265.01556 797.06008,259.62132 798.72095,259.62132 C 800.46392,259.62132 804.88945,255.02996 804.88945,253.22167 C 804.88945,251.91705 810.67582,248.98164 814.38184,248.40622 C 815.47765,248.23607 816.93334,246.9303 817.6167,245.50451 L 818.85918,242.91216 L 823.87432,245.39412 C 828.72967,247.79701 828.88945,248.01279 828.88945,252.16692 C 828.88945,254.52687 829.16259,257.16955 829.49644,258.03953 C 830.47517,260.59006 833.65099,259.8637 836.10951,256.52701 C 839.49662,251.93006 842.40403,250.71077 847.12249,251.90844 C 850.71337,252.8199 851.28849,252.67682 853.691,250.27432 C 855.88834,248.07698 856.36586,246.61497 856.57674,241.43909 C 856.94515,232.39652 858.34097,231.30698 868.39042,232.21764 C 875.29405,232.84323 876.64722,233.30837 879.80594,236.14166 C 881.77687,237.90952 884.35178,239.65506 885.52796,240.02064 C 886.70414,240.38621 888.81748,241.75205 890.22427,243.05582 C 892.56698,245.22697 892.6932,245.74821 891.72516,249.25417 C 891.14385,251.35949 890.93765,255.37431 891.26693,258.176 C 891.81329,262.8247 891.62629,263.49044 889.12754,265.79228 C 884.55593,270.00363 881.59166,271.62066 878.41694,271.63497 C 870.88374,271.66895 869.06432,274.03133 872.85747,278.85354 C 874.11789,280.4559 876.26905,281.58631 878.84037,281.99748 C 881.5103,282.42442 883.37999,283.44034 884.42168,285.03016 C 885.28321,286.34503 887.74669,288.58461 889.89606,290.007 C 892.04543,291.42938 894.26905,293.46209 894.83743,294.52411 C 895.75598,296.24045 895.12287,296.82553 889.14111,299.7882 C 885.02719,301.82575 882.27313,303.84464 882.05573,304.9822 C 881.65291,307.08995 887.8096,313.95703 892.13945,316.22942 C 893.78893,317.0951 894.88945,318.50105 894.88945,319.74263 C 894.88945,322.70015 891.30295,327.3352 886.82925,330.15933 C 883.89475,332.01179 882.55829,333.80799 881.18672,337.74287 C 879.03423,343.91807 874.96582,348.61244 871.73824,348.64506 C 870.44641,348.65811 866.68945,349.78103 863.38945,351.14042 C 854.11526,354.96083 852.65496,354.63885 847.97054,347.74073 z",
+    name:"Erzurum"},26:{path:"M 326.88945,360.68457 C 326.06445,360.20281 322.75998,359.12326 319.54617,358.28556 C 312.94718,356.56548 309.88945,354.31124 309.88945,351.16633 C 309.88945,345.93439 305.52156,345.34358 297.60987,349.50537 C 294.12509,351.33847 291.20513,352.21316 289.59684,351.90572 C 287.74102,351.55095 286.76693,351.98173 285.94278,353.52166 C 284.7128,355.81992 278.57519,356.53988 277.33395,354.53151 C 276.93086,353.8793 275.31988,353.69319 273.3219,354.06801 C 270.49797,354.59779 269.73116,354.30937 268.34696,352.19682 C 267.44692,350.82319 265.81723,349.41579 264.72542,349.06926 C 262.21442,348.2723 258.3707,339.74007 259.85432,338.25645 C 260.42364,337.68713 260.88945,335.65577 260.88945,333.74232 C 260.88945,331.04364 260.10443,329.54428 257.38945,327.05745 C 255.17188,325.02624 253.88945,322.93258 253.88945,321.34344 C 253.88945,318.67875 252.28341,317.62132 248.23623,317.62132 C 245.49738,317.62132 242.88945,315.54628 242.88945,313.36706 C 242.88945,310.38761 247.34659,307.62132 252.1472,307.62132 C 255.79905,307.62132 257.10512,307.1515 258.33516,305.39536 C 259.19268,304.17109 261.3557,302.48116 263.14187,301.63997 C 265.2738,300.63595 266.50923,299.26308 266.73813,297.64363 C 268.06834,288.23249 286.43858,284.61697 288.19915,293.4198 C 288.89661,296.90714 292.41766,298.20343 297.38945,296.80324 C 301.7485,295.57563 315.50739,296.05935 317.24484,297.5013 C 318.05495,298.17364 321.56325,299.03819 325.04105,299.42253 C 331.2909,300.11321 331.38805,300.17143 333.40849,304.43751 C 334.73321,307.2346 336.60969,309.31406 338.74008,310.34584 L 342.0275,311.93799 L 339.45848,314.32012 C 336.38643,317.16868 336.35768,317.41153 338.77934,320.05687 C 341.3014,322.81188 346.18566,334.48521 346.12851,337.62132 C 346.10346,338.99632 345.75895,341.37459 345.36293,342.90636 C 344.84376,344.91446 345.12958,346.22917 346.38746,347.61912 C 348.65015,350.11937 347.79154,352.1909 344.19433,352.91034 C 342.61748,353.22571 339.24725,355.3147 336.70494,357.55253 C 332.1046,361.60191 329.74806,362.35387 326.88945,360.68457 z",name:"Eskişehir"},27:{path:"M 635.88945,523.62132 C 631.6241,521.28614 629.88945,521.14158 629.88945,523.12132 C 629.88945,525.9649 627.04207,524.6138 625.92936,521.24224 C 624.49761,516.904 622.38858,515.07332 617.24534,513.70432 C 613.98132,512.83552 612.95533,512.01937 612.41421,509.86129 C 612.03635,508.35431 610.80439,506.26103 609.67652,505.20957 C 607.09885,502.80653 604.60914,504.08878 603.88594,508.19184 C 603.4983,510.39107 602.61344,511.26902 600.04096,512.0068 C 598.20316,512.53387 595.41239,514.25222 593.83926,515.82535 C 591.10919,518.55543 590.82909,518.62215 587.68424,517.29147 C 585.87211,516.52471 583.57308,514.98042 582.57531,513.85972 C 578.2058,508.95192 585.15521,497.83699 595.72108,492.83429 C 599.07782,491.24495 601.4004,489.40762 601.98007,487.88297 C 603.26893,484.49302 605.00974,485.43537 607.68077,490.9689 C 610.72404,497.27361 612.22568,497.66705 616.71,493.33461 C 622.24459,487.98747 630.98613,482.62132 634.1621,482.62132 C 637.48166,482.62132 641.88945,478.65435 641.88945,475.66677 C 641.88945,474.36374 642.54278,473.62132 643.68945,473.62132 C 644.67945,473.62132 646.01882,473.09195 646.66582,472.44495 C 647.56765,471.54312 648.2745,471.65981 649.69456,472.94495 C 650.71337,473.86695 652.8615,474.62746 654.46819,474.63497 C 659.36659,474.65787 661.88945,475.72002 661.88945,477.75939 C 661.88945,478.81059 660.79112,480.16463 659.43857,480.7809 C 658.00142,481.4357 656.72873,483.07658 656.36163,484.74799 C 656.0173,486.31571 655.3202,487.8551 654.81251,488.16887 C 653.36043,489.06631 653.73383,497.00463 655.4177,501.03469 C 656.30351,503.15474 657.98501,505.08735 659.4177,505.63206 C 660.77716,506.14893 661.88945,507.20652 661.88945,507.98226 C 661.88945,508.75801 662.56168,510.68164 663.38329,512.25701 C 665.20909,515.75783 665.29807,517.62125 663.63945,517.62155 C 662.95195,517.62167 659.91445,518.95382 656.88945,520.58187 C 653.73074,522.28188 649.81824,523.55885 647.69847,523.58164 C 645.66843,523.60346 643.72937,524.07132 643.38945,524.62132 C 642.46412,526.11853 639.80256,525.76366 635.88945,523.62132 z",name:"Gaziantep"},28:{path:"M 702.38945,298.61617 C 701.28945,298.13779 698.21951,297.4608 695.56737,297.11177 C 692.7633,296.74274 689.90646,295.63833 688.7409,294.47277 C 687.56378,293.29565 685.01399,292.31831 682.56299,292.10476 C 680.26754,291.90476 676.36445,291.0958 673.88945,290.30706 L 669.38945,288.87298 L 669.71278,284.33929 C 669.90949,281.58102 669.41998,278.61415 668.46278,276.76312 C 667.59745,275.08976 666.88945,271.4768 666.88945,268.73434 C 666.88945,263.83971 666.8297,263.74228 663.63945,263.43468 C 660.87037,263.16769 660.33973,262.68441 660.05348,260.1687 C 659.86869,258.54475 659.07918,256.74475 658.29902,256.1687 C 657.08959,255.27568 657.17635,254.34494 658.88775,249.85333 C 662.1496,241.29253 662.72393,240.70582 667.56686,240.98719 C 669.91529,241.12363 672.14859,241.54713 672.52976,241.92829 C 672.91092,242.30946 676.00304,242.62132 679.40113,242.62132 C 684.29269,242.62132 685.9534,242.20814 687.37481,240.63749 C 688.63888,239.24072 689.89222,238.83489 691.61023,239.26609 C 693.26543,239.68152 694.97639,239.19382 696.92939,237.74991 C 698.51288,236.57919 700.41169,235.62132 701.14896,235.62132 C 701.88623,235.62132 702.91695,235.2241 703.43945,234.73861 C 703.96195,234.25313 706.71663,233.64758 709.56096,233.39295 L 714.73246,232.92999 L 715.18895,239.02565 C 715.44002,242.37827 715.81285,246.00403 716.01745,247.0829 C 716.27798,248.45668 715.49048,249.50679 713.38945,250.58729 C 709.09195,252.79738 699.06787,263.06224 698.32787,266.01067 C 697.48398,269.37297 698.28965,270.38272 702.78133,271.59221 C 704.87542,272.15609 708.01183,273.9774 709.75112,275.63956 L 712.91348,278.66168 L 710.45377,279.59687 C 707.09892,280.87238 704.73848,284.7811 704.14537,290.04312 C 703.74152,293.62608 704.0316,294.76261 705.71861,296.20707 C 709.01993,299.03375 706.89139,300.57404 702.38945,298.61617 z",name:"Giresun"},29:{path:"M 741.88945,309.63415 C 741.88945,309.05883 739.95177,308.84304 737.24498,309.11694 C 733.87519,309.45791 731.61097,309.05779 728.99498,307.65902 C 727.01194,306.59869 722.01445,304.18229 717.88945,302.28925 C 707.75342,297.63763 704.4948,294.44066 705.23572,289.87492 C 706.00687,285.12292 708.47687,281.66111 711.9635,280.44566 C 713.57277,279.88467 714.88945,279.19288 714.88945,278.90837 C 714.88945,277.3846 706.93735,271.44203 703.7497,270.58369 C 697.4118,268.87707 697.96403,266.39012 706.54009,258.01721 C 709.51307,255.11466 713.30507,252.0616 714.96676,251.23264 C 717.90848,249.76512 718.1687,249.84231 724.84988,254.16434 C 728.6239,256.60574 732.93549,259.06853 734.4312,259.63719 C 735.9269,260.20586 738.39886,261.55992 739.92443,262.64623 C 744.82627,266.13665 747.72171,264.59022 748.809,257.90104 C 749.13222,255.91254 750.00502,254.0828 750.74854,253.83496 C 751.78181,253.49053 751.93899,254.11929 751.41548,256.50283 C 750.82421,259.19486 751.00811,259.62132 752.7603,259.62132 C 753.87668,259.62132 755.19369,260.34255 755.68701,261.22406 C 757.02012,263.6062 760.44317,262.53753 760.15124,259.83033 C 759.80511,256.62058 761.49541,257.12507 763.31621,260.77496 C 765.35954,264.87091 765.35709,267.01475 763.30999,266.2292 C 756.53505,263.62941 748.95977,276.27864 752.89174,283.6256 C 753.7322,285.19602 753.08636,286.17944 748.89174,289.7164 C 744.58856,293.34489 743.88945,294.43977 743.88945,297.55045 C 743.88945,300.6574 744.38222,301.43189 747.38945,303.05139 C 751.51892,305.27525 751.79036,306.3571 748.43047,307.20038 C 747.07803,307.53982 745.44793,308.4484 744.80802,309.21943 C 743.45996,310.84375 741.88945,311.06691 741.88945,309.63415 z",name:"Gümüşhane"},30:{path:"M 1001.2037,487.37132 C 997.67738,481.88705 997.3506,477.62132 1000.4568,477.62132 C 1004.1355,477.62132 1000.8939,469.93895 996.42793,468.07295 C 989.75631,465.28537 983.97482,466.62627 982.48964,471.30566 C 981.69701,473.803 978.88162,474.59274 970.88945,474.5596 C 959.87631,474.51394 955.80503,473.40301 952.26441,469.47742 C 948.56938,465.38061 947.72487,463.0028 949.45492,461.56698 C 950.46292,460.73042 950.77807,459.3907 950.38637,457.60731 C 949.90036,455.3945 950.42946,454.35437 953.34191,451.7972 C 955.45285,449.94378 956.89097,447.75889 956.8932,446.40187 C 956.89808,443.43174 963.44482,440.62517 970.39996,440.61155 C 975.66798,440.60124 984.28972,437.26908 986.75276,434.29147 C 988.88457,431.71427 990.10343,433.39531 989.34743,437.87002 C 988.68799,441.77322 988.74624,441.88844 991.02687,441.19198 C 992.32629,440.79517 995.38014,440.05342 997.8132,439.54366 C 1000.2463,439.03389 1002.9463,438.00459 1003.8132,437.25633 C 1006.5624,434.88348 1011.5174,434.49945 1013.9517,436.47057 C 1015.8806,438.03256 1015.9835,438.49795 1014.8137,440.37104 C 1013.7094,442.13935 1013.7094,442.9163 1014.8138,444.97979 C 1015.6288,446.50269 1015.8964,448.7712 1015.5062,450.85073 C 1014.9775,453.66904 1015.3502,454.77711 1017.7192,457.43054 C 1019.286,459.18547 1020.9778,460.63343 1021.4787,460.64822 C 1021.9796,460.66302 1023.9645,462.00736 1025.8895,463.63564 C 1028.2218,465.60844 1029.0061,466.85058 1028.2403,467.35874 C 1027.6083,467.77816 1026.9333,469.24632 1026.7403,470.62132 C 1026.4395,472.76529 1025.8717,473.12132 1022.7535,473.12132 C 1019.7591,473.12132 1018.259,473.96382 1014.2535,477.89501 C 1006.452,485.55163 1003.0983,488.62132 1002.5345,488.62132 C 1002.2446,488.62132 1001.6458,488.05882 1001.2037,487.37132 z",name:"Hakkari"},31:{path:"M 562.76082,585.97743 C 562.36305,584.6209 560.98585,583.58177 559.01082,583.14798 C 556.76653,582.65505 555.88945,581.89229 555.88945,580.43346 C 555.88945,578.7243 555.46028,578.51222 553.1666,579.08789 C 550.48271,579.76151 550.4701,579.74217 552.28513,577.7366 C 553.61763,576.2642 553.93643,574.93081 553.43873,572.91161 C 552.64154,569.6774 546.30507,557.99622 544.8651,557.10627 C 543.18758,556.06951 543.78287,554.10497 546.85132,550.55143 C 548.48036,548.66487 550.16786,546.80435 550.60132,546.41694 C 555.72077,541.84146 559.95446,538.60501 562.56858,537.26856 C 566.23541,535.39392 566.7814,534.00014 566.54595,527.11517 C 566.31936,520.48909 563.19586,515.22318 558.48087,513.51822 C 554.33537,512.01918 554.22265,511.71417 556.79418,508.95396 C 558.40411,507.2259 559.4094,507.0173 563.28947,507.60615 C 565.81428,507.98932 568.76415,509.10294 569.84475,510.08086 C 571.27474,511.37499 572.70516,511.69087 575.10048,511.24151 C 577.99164,510.69912 578.72234,511.03873 581.11435,514.03654 C 582.61191,515.91338 585.42395,517.97265 587.36332,518.6127 C 591.36912,519.93473 591.48916,520.16447 589.3118,522.34182 C 588.4441,523.20953 587.94764,524.73584 588.20857,525.73363 C 588.4695,526.73141 588.04016,528.08128 587.25448,528.73333 C 586.45977,529.39289 585.86688,531.51663 585.91815,533.5201 C 585.96885,535.50077 585.70513,538.98718 585.33212,541.26767 C 584.63061,545.55651 586.12993,549.52181 590.17012,554.06286 C 593.0918,557.34675 591.95046,559.1133 586.86401,559.18 C 582.59366,559.236 580.20618,559.80531 576.88945,561.55851 C 575.8508,562.10753 575.37144,564.01862 575.33089,567.77209 C 575.26154,574.19247 574.5762,575.61367 571.88845,574.91081 C 570.49856,574.54734 569.88945,574.88066 569.88945,576.00469 C 569.88945,576.91951 569.07437,577.62132 568.01189,577.62132 C 565.35165,577.62132 564.08819,579.53585 563.71396,584.134 C 563.47021,587.12898 563.233,587.58776 562.76082,585.97743 z",name:"Hatay"},32:{path:"M 281.07356,475.87132 C 276.72711,469.74826 272.88945,462.3996 272.88945,460.19976 C 272.88945,457.37605 271.81547,456.49278 265.57956,454.18794 C 261.70196,452.75474 260.06672,451.35144 257.14295,446.94791 C 254.18021,442.48571 253.13845,441.60205 251.45283,442.12141 C 239.42608,445.82697 238.18344,445.39827 241.94046,438.83973 C 244.12225,435.03103 246.14052,432.97443 249.17772,431.46502 C 251.49417,430.31381 254.73945,427.55388 256.38945,425.33186 C 258.67527,422.25358 261.02866,420.63073 266.27522,418.51483 C 270.06239,416.98748 274.78739,414.43112 276.77522,412.83403 C 278.76304,411.23693 281.80524,409.19831 283.53565,408.30377 C 285.26606,407.40922 287.51606,405.54597 288.53565,404.16322 C 290.48176,401.52394 296.88945,399.47241 296.88945,401.48861 C 296.88945,402.10311 298.19607,403.7701 299.79306,405.19302 C 301.40274,406.62726 302.9769,409.27393 303.32553,411.13227 C 303.78689,413.59155 305.89144,416.30053 311.22685,421.30286 C 315.22671,425.05301 318.85084,428.70353 319.28047,429.41512 C 320.42526,431.3112 318.05135,433.62132 314.95813,433.62132 C 313.4806,433.62132 311.3982,434.28201 310.33058,435.08952 C 309.26296,435.89702 307.58783,436.57202 306.60807,436.58952 C 303.51207,436.64479 303.57476,439.45582 306.78349,444.45619 C 308.49177,447.11831 309.88945,450.08204 309.88945,451.04224 C 309.88945,452.00244 308.26602,454.36463 306.28182,456.29155 C 303.22041,459.26458 302.76651,460.2566 303.2839,462.84359 C 303.61924,464.52029 303.42533,467.63121 302.85299,469.75673 C 301.93671,473.15953 301.45166,473.62132 298.79373,473.62132 C 294.36583,473.62132 287.12432,475.63339 285.79724,477.23242 C 284.1436,479.22494 283.27683,478.97518 281.07356,475.87132 z M 283.88945,440.69275 C 283.88945,439.63203 284.65099,438.00264 285.58176,437.07187 C 286.72201,435.93162 287.27407,433.74199 287.27407,430.35965 C 287.27407,426.09606 286.86459,425.01323 284.55629,423.17266 C 283.06152,421.98077 282.14821,420.6959 282.52671,420.31739 C 282.90521,419.93889 283.36146,418.29047 283.54058,416.65424 C 284.02628,412.21763 280.99856,410.93559 277.37944,414.04541 C 274.9911,416.09765 274.71669,416.88691 275.30368,420.0158 C 275.6757,421.99883 276.52219,423.62821 277.18476,423.63663 C 277.84734,423.64505 279.01144,424.04588 279.77164,424.52735 C 280.94629,425.2713 280.94717,425.86963 279.77753,428.51204 C 279.02056,430.22214 278.06108,431.62132 277.64534,431.62132 C 277.2296,431.62132 276.88945,432.97132 276.88945,434.62132 C 276.88945,436.27132 277.3491,437.62132 277.91089,437.62132 C 278.47268,437.62132 279.44491,438.74632 280.0714,440.12132 C 281.41808,443.07695 283.88945,443.44683 283.88945,440.69275 z",name:"Isparta"},33:{path:"M 372.38945,568.09404 L 369.38945,566.61229 L 369.46502,556.87262 L 369.5406,547.13295 L 375.96502,545.33436 C 379.49846,544.34513 384.05812,543.55104 386.0976,543.56971 C 391.33125,543.61761 394.76984,542.06611 395.87555,539.15789 C 396.68607,537.02604 397.27153,536.74774 399.85761,537.26495 C 404.56195,538.20582 403.71308,535.40397 397.94268,530.94438 C 395.00307,528.67253 392.36569,525.59154 391.44268,523.35108 C 388.96827,517.34482 389.28507,516.62132 394.38945,516.62132 C 396.86445,516.62132 398.88945,517.07132 398.88945,517.62132 C 398.88945,519.76816 401.50741,518.47181 402.50402,515.83148 C 403.37314,513.52893 404.63147,512.74292 409.70816,511.33148 C 413.09126,510.39089 417.60536,509.62132 419.73949,509.62132 C 422.13728,509.62132 424.61557,508.83799 426.2263,507.57099 C 428.27048,505.96304 429.2563,505.74729 430.79542,506.57099 C 434.44294,508.52309 437.22242,507.63959 445.91837,501.76394 C 452.71445,497.17199 456.16607,495.55003 461.8952,494.25623 C 470.09601,492.40425 471.88886,491.32674 471.89077,488.24888 C 471.89175,486.65401 473.16388,485.55766 476.9716,483.87008 C 485.82022,479.94838 486.58402,479.95455 488.25811,483.96122 C 489.52378,486.9904 490.26186,487.53596 493.45998,487.80629 C 498.09756,488.1983 499.82662,490.50168 498.01888,493.87948 C 496.28504,497.11919 497.78603,503.00407 500.45262,503.42134 C 501.51788,503.58803 503.34555,504.19708 504.51412,504.77477 C 506.39333,505.70378 506.50999,506.16637 505.52389,508.77885 C 504.57571,511.29086 504.75056,512.32609 506.69313,515.70137 C 509.20065,520.05827 508.91512,521.59186 505.58043,521.67776 C 504.37539,521.70881 501.81445,522.28076 499.88945,522.94878 C 496.75946,524.03495 496.03111,523.92326 492.9999,521.89233 C 487.83209,518.42987 481.10468,518.99667 475.85846,523.33654 C 470.66288,527.63452 466.8577,530.53636 463.13945,533.0361 C 460.80195,534.60757 458.88945,536.17748 458.88945,536.52479 C 458.88945,536.8721 456.86445,539.26954 454.38945,541.85243 C 451.26471,545.11337 449.88752,547.40014 449.88313,549.33495 C 449.87843,551.40436 449.075,552.57772 446.76073,553.89506 C 443.90144,555.52263 443.54711,555.5354 442.46102,554.05009 C 440.82943,551.81876 436.69652,552.60378 435.30314,555.40969 C 433.58677,558.86602 430.79024,560.55424 426.72278,560.58952 C 424.70612,560.60701 422.88159,561.14489 422.66829,561.7848 C 422.40952,562.56112 418.1774,563.05673 409.9502,563.27419 C 403.01196,563.45758 397.04477,564.07745 396.30466,564.69169 C 395.58125,565.29206 392.49451,565.89973 389.44522,566.04205 C 385.98952,566.20335 383.21,566.92624 382.06652,567.96108 C 379.81098,570.00231 376.34932,570.04988 372.38945,568.09404 z",name:"Mersin"},34:{path:"M 210.10993,235.38932 C 208.9156,234.14192 205.90749,231.32132 203.42522,229.12132 C 200.94296,226.92132 198.90694,224.77488 198.90073,224.35145 C 198.89453,223.92802 199.98889,221.83996 201.33264,219.71131 C 202.6764,217.58266 203.50416,215.56936 203.17211,215.23731 C 202.84006,214.90526 203.38536,213.73082 204.3839,212.62745 C 206.8154,209.94068 211.35909,210.05385 220.22148,213.02191 C 224.16386,214.34224 230.65195,216.19072 234.63945,217.12963 C 238.62695,218.06855 241.88945,219.04287 241.88945,219.29478 C 241.88945,220.67795 239.64444,223.62132 238.58946,223.62132 C 237.91316,223.62132 235.69864,224.51167 233.6683,225.59986 C 230.21668,227.44982 229.79451,227.47381 227.1725,225.96898 C 224.53559,224.4556 224.15998,224.48505 220.87884,226.46242 C 218.51455,227.88725 216.90467,229.91818 215.88594,232.76114 C 214.06427,237.84489 212.94753,238.35303 210.10993,235.38932 z M 199.96203,233.98646 C 197.69977,231.11046 197.33386,229.62132 198.88945,229.62132 C 199.43945,229.62132 199.88945,230.041 199.88945,230.55393 C 199.88945,231.06687 200.78945,231.77219 201.88945,232.12132 C 202.98945,232.47045 203.88945,233.62577 203.88945,234.68871 C 203.88945,237.36701 202.41359,237.10312 199.96203,233.98646 z M 182.13945,224.86951 C 178.27874,224.61014 176.88945,224.11706 176.88945,223.0062 C 176.88945,222.12872 176.156,221.61166 175.13945,221.77251 C 174.17695,221.92481 172.23728,221.28225 170.82908,220.3446 C 165.04233,216.49154 154.60535,214.63824 149.53963,216.56422 C 147.6245,217.29235 146.92634,217.15983 146.47453,215.98243 C 145.3296,212.9988 145.93925,210.83785 149.84855,204.02299 C 157.13638,191.31851 157.40464,190.67592 156.21539,188.77163 C 155.40835,187.47935 155.44994,186.57529 156.37457,185.31078 C 157.54854,183.70528 157.71183,183.70387 159.0078,185.28807 C 163.27953,190.50982 192.89483,207.2103 200.07165,208.44454 C 204.00229,209.12051 204.00469,209.1238 202.07323,211.19533 C 201.00965,212.33604 200.13945,214.51372 200.13945,216.03462 C 200.13945,219.12818 196.97525,222.99952 196.18622,220.87132 C 195.4244,218.81651 193.6137,219.45885 194.1701,221.58653 C 194.90659,224.40288 191.01222,225.4656 182.13945,224.86951 z",name:"İstanbul"},35:{path:"M 91.220802,426.84727 C 90.578046,426.43838 89.903046,424.54866 89.720802,422.64789 C 89.432845,419.64453 88.96087,419.10503 86.116896,418.52831 C 84.316991,418.16332 81.655726,416.58216 80.202974,415.01461 C 78.091643,412.73645 76.692134,412.16019 73.228714,412.14292 C 70.207533,412.12786 68.894857,411.70038 68.892636,410.73085 C 68.890884,409.96609 67.909685,407.37859 66.712195,404.98085 C 64.728088,401.00806 64.205433,400.62132 60.820603,400.62132 C 57.692633,400.62132 57.007212,401.01598 56.478806,403.12132 C 55.741191,406.06021 51.902423,406.68465 51.868099,403.87132 C 51.844459,401.93377 44.407043,396.1834 43.027463,397.03602 C 42.548567,397.332 41.41025,396.74929 40.497868,395.74112 C 38.978711,394.06247 38.973874,393.79614 40.440437,392.579 C 41.735157,391.50448 42.193397,391.49508 42.832965,392.52992 C 44.387192,395.04472 52.88945,388.75332 52.88945,385.08845 C 52.88945,384.25795 51.821878,383.09202 50.517067,382.49751 C 49.065665,381.83621 47.706933,379.9555 47.017067,377.65293 C 45.480376,372.52391 45.596597,370.88459 47.575421,369.77718 C 50.217886,368.29839 53.601515,370.44443 55.293078,374.67207 C 56.124741,376.7506 57.27415,378.74104 57.847321,379.09528 C 59.366803,380.03437 59.122586,382.62132 57.51445,382.62132 C 56.71445,382.62132 56.13945,383.66677 56.13945,385.12132 C 56.13945,386.49632 56.5332,387.62132 57.01445,387.62132 C 57.4957,387.62132 57.88945,388.71976 57.88945,390.0623 C 57.88945,391.40484 58.33945,392.7814 58.88945,393.12132 C 59.452266,393.46916 59.88945,392.66737 59.88945,391.28733 C 59.88945,387.26123 64.803063,386.96599 64.874137,390.98782 C 64.882559,391.46439 67.92695,391.57459 71.63945,391.23272 C 75.35195,390.89084 79.51445,390.62277 80.88945,390.63699 C 83.989789,390.66907 87.88945,388.68919 87.88945,387.08305 C 87.88945,386.29459 85.780769,385.83508 81.743689,385.74382 C 75.087455,385.59336 73.533606,384.53367 72.349852,379.33744 C 72.001044,377.8063 70.629759,375.84204 69.302552,374.97243 C 67.555821,373.82792 66.88945,372.47679 66.88945,370.07963 C 66.88945,366.3555 68.833883,365.32827 72.711063,367.00412 C 75.375308,368.15571 77.215785,366.37279 76.489015,363.34433 C 76.156977,361.96072 77.039596,361.30603 80.476012,360.38693 C 82.903403,359.7377 84.88945,358.6766 84.88945,358.02893 C 84.88945,356.20798 80.287057,353.62132 77.047078,353.62132 C 75.445072,353.62132 73.592061,352.96791 72.929276,352.16931 C 71.352091,350.26892 72.473394,346.88815 74.940602,346.10508 C 77.670455,345.23866 77.366239,342.0072 74.262641,338.9036 L 71.635831,336.27679 L 75.012641,333.45032 C 76.869886,331.89575 79.51445,330.32423 80.88945,329.95805 C 82.26445,329.59186 84.51445,328.46831 85.88945,327.46126 C 89.079136,325.12515 92.214191,324.89235 98.14035,326.55158 C 102.19558,327.68697 103.15716,328.47097 104.82233,331.99957 C 105.97877,334.45013 106.94341,339.09811 107.20148,343.46314 C 107.78331,353.3041 106.04553,355.53004 96.819943,356.76095 C 91.586475,357.45922 89.971541,358.13106 88.144417,360.37013 C 85.268089,363.89495 85.312571,365.68242 88.38945,370.21646 C 89.76445,372.24263 90.88945,374.9922 90.88945,376.32661 C 90.88945,380.23258 92.593606,382.34324 96.310283,383.04049 C 98.221549,383.39905 101.60845,385.21559 103.83672,387.07726 C 106.06499,388.93893 109.26883,390.76537 110.95636,391.13602 C 112.64388,391.50666 114.28573,392.55498 114.6049,393.46562 C 115.62875,396.38678 119.94724,401.62132 121.33335,401.62132 C 122.82746,401.62132 123.88945,399.48451 123.88945,396.47826 C 123.88945,394.68826 124.34414,394.56369 128.63945,395.1769 C 133.9748,395.9386 134.5468,396.29039 135.0528,399.12132 C 135.3385,400.7197 136.41233,401.22258 140.40036,401.62556 C 145.54463,402.14538 151.07743,405.23553 152.87386,408.59219 C 154.40738,411.4576 152.16174,416.95208 149.76254,416.20476 C 148.73234,415.88387 147.00523,415.34796 145.92452,415.01386 C 144.38131,414.53678 143.59036,415.18066 142.2393,418.01386 C 141.29315,419.99796 139.81487,421.68943 138.95424,421.77268 C 138.0936,421.85593 134.91445,422.05886 131.88945,422.22364 C 128.86445,422.38842 123.5204,422.81313 120.01379,423.16744 C 114.49718,423.72483 113.25631,423.52934 110.80429,421.71648 C 106.40156,418.4614 102.846,418.99566 98.127115,423.62132 C 93.900486,427.76446 93.186707,428.09786 91.220802,426.84727 z",name:"İzmir"},36:{path:"M 896.08991,294.16195 C 895.4736,292.80929 893.17357,290.51418 890.97873,289.0617 C 888.78389,287.60923 886.29893,285.36901 885.45659,284.08345 C 884.48139,282.59511 882.41075,281.44659 879.75618,280.92163 C 875.77809,280.13492 870.6467,275.53073 872.11338,274.06405 C 872.43788,273.73956 875.14273,273.14303 878.12415,272.73844 C 883.46734,272.01336 887.59468,269.82319 891.25888,265.76853 C 892.77469,264.09121 892.99816,262.83191 892.44023,259.11141 C 892.06179,256.58775 892.03269,253.24563 892.37558,251.68448 C 892.973,248.96442 893.30606,248.81726 900.36105,248.15615 L 907.7231,247.46627 L 908.3592,242.29379 C 909.6435,231.85033 909.69328,231.75031 914.21506,230.52656 C 925.43996,227.4887 926.59065,226.69362 928.02894,220.98163 C 928.77013,218.03812 929.65693,216.63165 930.75816,216.65312 C 932.80973,216.69312 935.88945,218.97946 935.88945,220.46251 C 935.88945,221.0789 937.12695,221.87794 938.63945,222.23816 C 943.14291,223.31071 946.88945,225.92141 946.88945,227.98701 C 946.88945,229.05098 948.08558,232.28377 949.54752,235.17101 C 952.05218,240.11754 952.13048,240.68879 950.90422,245.06857 C 950.18846,247.625 948.31733,251.09277 946.74615,252.77473 C 943.50392,256.24554 943.21035,257.81283 945.45374,259.67467 C 946.45943,260.50933 946.80573,261.81877 946.42351,263.34165 C 945.85604,265.60263 948.46114,271.62132 950.00723,271.62132 C 950.38484,271.62132 951.14036,272.90233 951.68616,274.46801 C 952.58506,277.0466 952.39255,277.48363 949.64209,279.10837 C 947.81001,280.19061 944.48046,280.93275 941.24755,280.97948 C 936.3579,281.05016 935.88945,281.25646 935.88945,283.33913 C 935.88945,285.1068 935.32583,285.62132 933.38945,285.62132 C 931.88988,285.62132 930.88945,286.19278 930.88945,287.04936 C 930.88945,288.04065 929.13083,288.68987 925.13945,289.17206 C 921.97695,289.55412 918.26445,290.44626 916.88945,291.15459 C 913.30401,293.00161 901.61075,296.62132 899.22947,296.62132 C 898.05519,296.62132 896.74165,295.59235 896.08991,294.16195 z",name:"Kars"},37:{path:"M 440.22047,246.00424 C 440.52306,244.96863 441.07421,241.53382 441.44526,238.37132 L 442.1199,232.62132 L 432.95692,232.62132 C 424.39557,232.62132 423.63721,232.79045 421.40665,235.19726 L 419.01935,237.7732 L 417.42872,234.69726 C 415.94789,231.83365 415.46197,231.62132 410.38945,231.62132 C 405.37183,231.62132 404.82057,231.38881 403.42084,228.68202 C 402.58486,227.06541 400.93521,225.06635 399.75496,224.23968 C 397.9942,223.00639 397.71527,222.08209 398.20086,219.08974 C 398.95941,214.41533 400.39972,212.73509 405.63945,210.41201 C 410.31347,208.33974 410.8682,207.2155 407.97955,205.66954 C 406.83595,205.05751 405.80293,203.06869 405.40489,200.7127 C 404.6311,196.13267 403.41841,195.45001 397.49777,196.26153 C 392.2058,196.98687 390.77595,195.43549 393.78468,192.23284 C 396.38803,189.46171 396.39923,188.5409 393.88945,183.62132 C 391.19639,178.3425 391.34477,177.62656 395.13945,177.59005 C 396.92695,177.57285 400.63945,176.45196 403.38945,175.09919 C 406.13945,173.74642 408.89596,172.63549 409.51502,172.63046 C 410.13408,172.62543 413.1209,171.52441 416.1524,170.18374 C 421.51414,167.81252 421.83745,167.78667 428.02683,169.23419 C 431.52627,170.05261 440.68945,171.10711 448.38945,171.57754 C 456.08945,172.04796 463.11277,172.72378 463.99682,173.07934 C 466.26617,173.99208 468.15847,181.06952 467.37424,185.71133 L 466.71768,189.5975 L 473.76148,189.35941 C 479.26464,189.1734 481.17632,189.49097 482.50167,190.81134 C 484.07732,192.38107 484.08163,192.67907 482.56227,194.9979 C 481.66259,196.371 479.69683,198.08549 478.19393,198.80788 C 474.74188,200.46716 473.16487,206.10403 474.82244,210.85895 C 475.78203,213.61163 475.6925,214.29217 474.23004,215.36154 C 473.28247,216.05442 471.78849,216.62132 470.91008,216.62132 C 468.45825,216.62132 461.83367,225.19022 461.18228,229.20423 C 460.74586,231.89358 461.12911,233.4542 462.77148,235.67563 C 463.96185,237.28569 465.19223,239.8852 465.50565,241.45231 C 465.9933,243.89058 465.66245,244.4727 463.21218,245.48764 C 461.63734,246.13996 458.33298,246.62733 455.86915,246.57069 C 453.40531,246.51405 448.75264,246.78708 445.52988,247.17743 C 440.09655,247.83553 439.71032,247.75018 440.22047,246.00424 z",name:"Kastamonu"},38:{path:"M 525.38945,457.03474 C 522.63945,456.36296 518.8825,455.77011 517.04067,455.71732 L 513.6919,455.62132 L 515.7045,452.21021 C 517.40349,449.33064 517.64208,447.57758 517.2356,440.96021 C 516.66815,431.72201 515.16583,429.56111 508.7082,428.69459 C 505.03944,428.2023 504.3077,427.69755 503.52799,425.12132 C 501.23483,417.54455 500.66353,416.62132 498.26813,416.62132 C 494.26673,416.62132 495.47541,413.53496 501.63945,408.01263 L 507.38945,402.86125 L 506.01406,399.49129 C 505.25759,397.63781 504.4227,394.67459 504.15874,392.90636 C 503.89479,391.13813 503.1242,389.23111 502.44633,388.66852 C 501.28454,387.70432 501.68568,384.82081 504.50484,373.87132 C 504.8703,372.45192 508.88945,372.13674 508.88945,373.52748 C 508.88945,374.02587 511.17775,374.74837 513.97457,375.13303 C 518.55594,375.76313 519.32367,375.5806 521.72457,373.29048 C 523.19025,371.89242 525.62695,370.28107 527.13945,369.70969 C 529.9106,368.66283 530.92702,365.3806 528.87314,364.11124 C 527.00222,362.95495 528.89406,361.74304 533.66276,361.04303 C 536.99375,360.55405 539.4976,359.35588 542.14233,356.98525 C 544.20642,355.13509 546.27417,353.62132 546.73734,353.62132 C 548.19246,353.62132 550.88701,357.1941 550.94478,359.20006 C 550.97521,360.25675 552.41917,362.24632 554.15359,363.62132 C 556.82761,365.74121 558.57114,366.17507 565.62103,366.47487 C 570.48335,366.68164 574.45841,366.39402 575.19575,365.78207 C 575.99203,365.12123 576.99681,365.07743 577.92299,365.66321 C 580.30214,367.16794 584.15987,366.75382 587.66362,364.61758 C 592.17874,361.86471 594.17446,362.10902 595.72149,365.60399 C 596.66157,367.72779 598.15659,368.92068 600.91334,369.74662 C 605.70483,371.18219 606.60948,373.25408 603.89342,376.57182 C 602.74549,377.97405 601.03749,380.78576 600.09786,382.82008 C 599.15824,384.8544 597.37032,386.98527 596.12472,387.55535 C 594.87912,388.12543 593.35947,389.6904 592.74771,391.03305 C 591.8395,393.02636 592.00276,394.08402 593.63754,396.79778 C 595.73425,400.27835 595.58063,402.54159 593.15054,403.97265 C 592.11646,404.58161 591.88641,405.79158 592.34248,408.22265 C 592.95155,411.46928 592.84689,411.62132 590.00286,411.62132 C 586.73402,411.62132 584.30018,414.28622 581.55487,420.87132 C 579.6428,425.45775 577.4856,425.69115 576.26736,421.44341 C 575.33525,418.19334 570.98899,414.83084 567.54382,414.69441 C 563.43266,414.5316 558.63331,419.92166 552.9192,431.11902 C 551.95627,433.00597 549.58589,434.96833 546.52195,436.41509 C 543.84483,437.67919 541.00018,439.36773 540.20052,440.16739 C 539.40086,440.96705 538.02667,441.62132 537.14676,441.62132 C 536.26686,441.62132 534.73696,442.35433 533.747,443.25024 C 532.26213,444.59402 532.05043,445.86808 532.53757,450.52878 C 533.29502,457.77575 532.26405,458.7141 525.38945,457.03474 z",name:"Kayseri"},39:{path:"M 114.21348,198.00342 C 111.83937,195.48613 110.17556,194.61975 107.7066,194.61516 C 105.88217,194.61177 103.04328,193.90708 101.39796,193.04917 C 99.486478,192.05249 97.230043,191.71004 95.147955,192.10065 C 92.093767,192.67362 91.88945,192.53456 91.88945,189.88291 C 91.88945,188.32694 93.46445,184.60923 95.38945,181.62132 C 99.461058,175.30154 99.664686,174.05731 96.752021,173.29563 C 94.633154,172.74154 94.637496,172.70946 97.252021,169.60228 C 99.657998,166.74293 99.889557,165.70673 99.890671,157.7946 C 99.891737,150.22948 100.17921,148.79363 102.14067,146.55661 C 104.10732,144.31367 105.14221,144.0029 110.38945,144.0796 C 116.81673,144.17355 120.88945,146.00034 120.88945,148.78929 C 120.88945,149.71707 122.12695,151.40392 123.63945,152.53786 C 125.15195,153.67179 126.95203,155.07227 127.63963,155.65003 C 128.52143,156.39098 130.14206,156.29553 133.13963,155.32612 C 137.28825,153.98445 150.82271,153.84401 152.88922,155.12118 C 154.63131,156.19785 153.96982,159.36704 151.88945,159.91107 C 149.13027,160.63261 149.30384,164.41722 152.38945,170.81338 C 153.76445,173.66361 154.88945,176.78485 154.88945,177.74946 C 154.88945,178.71406 155.33945,179.7814 155.88945,180.12132 C 157.99127,181.42032 156.74526,182.62132 153.29575,182.62132 C 148.17277,182.62132 130.46043,188.33291 128.34935,190.66564 C 127.37266,191.74486 126.30056,194.30733 125.96691,196.36 C 125.40883,199.79336 125.04176,200.14391 121.38174,200.73883 C 117.76972,201.32594 117.10937,201.07395 114.21348,198.00342 z",name:"Kırklareli"},40:{path:"M 454.98447,378.62132 C 453.29238,375.87132 451.52601,373.62132 451.05921,373.62132 C 450.59241,373.62132 449.74158,372.59219 449.16847,371.33436 C 448.45307,369.76423 446.57172,368.62403 443.16622,367.69669 C 439.34991,366.65747 436.72811,364.89982 431.79772,360.07523 C 424.3265,352.76436 421.88945,349.97004 421.88945,348.71444 C 421.88945,346.85506 431.69984,339.62132 434.22153,339.62132 C 435.62651,339.62132 437.36406,338.81541 438.08275,337.8304 C 438.80143,336.84539 440.8407,335.02276 442.61445,333.78011 C 444.74361,332.28846 446.20501,330.16315 446.91527,327.52542 C 448.63656,321.13306 457.43305,317.03149 459.82717,321.50495 C 460.40076,322.57671 462.46323,323.68612 464.61235,324.07892 C 469.18405,324.9145 472.88945,327.15676 472.88945,329.08767 C 472.88945,329.8688 473.82257,331.1615 474.96306,331.96032 C 476.78615,333.23727 476.87676,333.67417 475.71306,335.57678 C 474.496,337.56662 474.74484,338.04563 478.80412,341.52693 C 483.12848,345.23558 483.18474,345.36165 481.55412,347.68968 C 480.63855,348.99684 479.88945,351.0912 479.88945,352.34383 C 479.88945,354.23934 480.42615,354.62132 483.08945,354.62132 C 485.57834,354.62132 486.02278,354.88799 485.08945,355.82132 C 484.42945,356.48132 483.88945,357.77957 483.88945,358.70631 C 483.88945,359.63305 482.75932,361.13179 481.37806,362.03683 C 479.42208,363.31843 479.00374,364.2285 479.48647,366.15184 C 480.00645,368.22361 479.74793,368.62132 477.88123,368.62132 C 476.18974,368.62132 475.775,369.07566 476.15166,370.51601 C 476.49391,371.82478 475.91149,372.74588 474.26829,373.49457 C 472.95993,374.0907 471.88945,375.19335 471.88945,375.94489 C 471.88945,376.69644 471.02688,378.09196 469.97264,379.04604 C 468.4699,380.40599 467.62001,380.54749 466.03838,379.70102 C 463.00333,378.07671 461.93496,378.37141 460.88945,381.12132 C 460.36668,382.49632 459.51641,383.62132 458.99998,383.62132 C 458.48354,383.62132 456.67656,381.37132 454.98447,378.62132 z",
+    name:"Kırşehir"},41:{path:"M 237.88945,255.07701 C 232.33314,252.15647 231.35417,252.11061 228.16232,254.62132 C 226.58898,255.85891 224.10554,256.62132 221.6476,256.62132 C 218.25683,256.62132 217.78092,256.36519 218.39591,254.87132 C 218.79216,253.90882 219.34188,252.33728 219.61753,251.379 C 220.3043,248.99143 226.74223,247.38554 236.38355,247.19685 C 243.0538,247.06631 244.43216,246.7573 244.70687,245.33086 C 244.98109,243.90697 244.22182,243.62132 240.16277,243.62132 C 237.48245,243.62132 234.76742,243.09929 234.12938,242.46125 C 233.41773,241.7496 229.4749,241.30734 223.92938,241.31713 C 218.95742,241.32591 214.88945,240.92 214.88945,240.4151 C 214.88945,239.91021 215.61062,237.29227 216.49205,234.59746 C 217.658,231.03277 218.9791,229.17596 221.34082,227.78251 C 224.36464,225.99842 224.76846,225.97732 227.23606,227.47457 C 229.72026,228.98189 230.14972,228.94713 234.13728,226.91594 C 236.47597,225.72465 239.18776,224.50599 240.16347,224.20781 C 241.13919,223.90962 242.31253,222.65186 242.77089,221.41277 C 243.54817,219.31158 244.10309,219.18071 251.01228,219.46905 C 257.34934,219.73352 258.81314,219.46918 261.13786,217.64056 C 263.11287,216.08702 264.31476,215.75996 265.5364,216.44362 C 267.03658,217.28316 266.91838,217.6833 264.43725,220.16443 C 260.64473,223.95695 259.56421,228.0917 261.42519,231.69044 C 263.38515,235.48058 263.2715,236.90163 260.88945,238.38925 C 259.53725,239.23371 258.88945,240.72127 258.88945,242.98191 C 258.88945,248.37601 255.15751,252.90861 249.86808,253.93874 C 247.40483,254.41847 244.71445,255.40303 243.88945,256.12665 C 242.63399,257.22784 241.65584,257.05672 237.88945,255.07701 z",name:"Kocaeli"},42:{path:"M 359.63945,517.07544 C 357.57695,514.78046 355.88945,512.20738 355.88945,511.35749 C 355.88945,510.5076 353.52695,508.47889 350.63945,506.84925 C 343.25428,502.68121 337.05846,496.13309 333.86533,489.12132 C 332.36252,485.82132 329.72875,481.80019 328.01251,480.18548 L 324.89207,477.24965 L 321.25345,478.98478 C 316.72593,481.14381 312.88198,480.4347 307.24578,476.40073 C 303.23219,473.5281 303.13306,473.32291 304.08802,469.86434 C 304.63026,467.90048 304.81328,464.99048 304.49472,463.39767 C 304.03892,461.11869 304.4722,459.98575 306.52829,458.08023 C 309.77449,455.07175 311.25818,455.84226 310.45571,460.11982 C 309.62068,464.57089 312.48955,465.83433 315.38383,462.29014 C 316.68309,460.69913 318.92285,459.58345 321.74336,459.12229 C 325.99148,458.42771 326.08205,458.33401 325.47071,455.26587 C 325.12611,453.53637 324.40435,451.97132 323.86681,451.78799 C 323.32926,451.60465 322.88945,450.81715 322.88945,450.03799 C 322.88945,449.25882 322.22302,448.62132 321.4085,448.62132 C 320.59398,448.62132 319.64375,447.49057 319.29689,446.10855 C 318.95002,444.72652 318.15395,443.26402 317.52784,442.85855 C 315.65919,441.6484 311.94836,435.89574 312.60975,435.23435 C 312.94692,434.89719 314.40778,434.62132 315.85612,434.62132 C 318.92893,434.62132 320.88945,432.97562 320.88945,430.39624 C 320.88945,429.39244 317.27164,425.09494 312.84988,420.84624 C 306.56049,414.803 304.68983,412.35578 304.25692,409.60475 C 303.71334,406.15055 303.83378,406.00576 311.04649,401.4423 C 315.08512,398.88706 319.62695,396.23479 321.13945,395.54835 C 324.62376,393.96703 324.66945,391.29774 321.23896,389.73471 L 318.58847,388.52706 L 321.81789,385.19515 C 323.98832,382.95583 325.22482,380.53982 325.58863,377.82746 C 325.96783,375.00031 326.69288,373.64448 328.00969,373.30013 C 330.8591,372.55499 330.41602,368.79158 327.38945,368.03196 C 325.47582,367.55167 324.88945,366.7551 324.88945,364.63575 C 324.88945,361.95802 325.03311,361.88319 329.25913,362.35952 C 331.91044,362.65836 333.8999,362.41343 334.31815,361.73668 C 335.52134,359.78989 337.69597,360.52829 339.13224,363.37132 C 343.05377,371.13376 345.18107,372.09174 352.56654,369.42112 C 355.45503,368.37663 356.47314,368.50637 360.41429,370.42112 C 362.90505,371.63123 365.99871,372.62132 367.28908,372.62132 C 370.486,372.62132 378.88083,368.80735 379.55587,367.04824 C 379.85703,366.26343 380.7649,365.62132 381.57336,365.62132 C 383.54343,365.62132 388.88945,360.1832 388.88945,358.17919 C 388.88945,356.97775 389.50517,356.73775 391.38013,357.20834 C 393.15324,357.65336 394.04837,357.37075 394.48712,356.22739 C 395.45548,353.70389 397.11624,354.28608 402.80762,359.14415 C 405.72187,361.63171 408.99557,364.14293 410.08251,364.72464 C 411.16945,365.30636 412.71814,367.3604 413.52404,369.28919 C 415.40932,373.80132 414.19626,375.34859 408.77347,375.34859 C 404.4109,375.34859 402.93032,376.61574 402.90476,380.37132 C 402.89634,381.60882 402.49191,382.62132 402.00603,382.62132 C 400.53193,382.62132 399.90108,388.03047 401.24796,389.12132 C 401.92705,389.67132 403.07879,391.58382 403.80738,393.37132 C 404.53597,395.15882 405.71603,396.62132 406.42973,396.62132 C 407.14343,396.62132 409.12712,397.40882 410.83792,398.37132 C 413.37145,399.79669 413.83819,400.57261 413.35402,402.55414 C 413.02708,403.89218 411.75275,406.1835 410.52218,407.64595 C 409.29161,409.1084 407.68258,412.81518 406.94656,415.88324 C 405.39988,422.33053 406.32624,425.60947 412.63311,436.01132 L 416.20435,441.90132 L 426.2969,441.17564 C 431.8478,440.77652 440.10748,440.26173 444.65174,440.03168 C 452.83689,439.6173 452.93025,439.63987 454.65174,442.44941 C 455.60748,444.00922 459.20195,447.88448 462.63945,451.06109 C 467.82964,455.85737 468.88945,457.3857 468.88945,460.07405 C 468.88945,462.04135 468.10485,464.0214 466.88945,465.12132 C 465.46187,466.41326 464.88945,468.20129 464.88945,471.36858 C 464.88945,474.29167 465.57194,476.6735 466.88945,478.34845 C 467.98945,479.74687 468.88945,481.73646 468.88945,482.76975 C 468.88945,483.80304 469.42488,485.50581 470.07929,486.55369 C 471.94331,489.53846 469.68349,491.28155 461.57051,493.11686 C 457.62093,494.01033 452.90399,495.61272 451.08843,496.67771 L 447.78741,498.61407 L 448.40373,491.13573 L 449.02006,483.65738 L 444.87737,481.99981 C 441.46659,480.63509 440.32052,479.43679 438.39049,475.2173 C 437.10118,472.39859 435.44851,468.14937 434.71787,465.7746 C 433.40449,461.50572 433.34681,461.46358 429.62396,462.05337 C 421.97789,463.26468 418.38947,465.41243 416.08431,470.15713 C 413.99009,474.46768 411.73226,475.79404 410.33561,473.5342 C 409.96608,472.93629 408.78699,472.67636 407.71542,472.95658 C 406.5689,473.2564 405.54249,472.88072 405.22129,472.0437 C 404.08802,469.09044 400.19255,470.58972 395.27629,475.87132 C 391.33023,480.11063 389.6194,481.21758 386.38945,481.62132 C 382.75356,482.07581 382.41458,482.36482 382.66554,484.79634 C 382.83572,486.44511 382.26026,487.98134 381.16554,488.80067 C 380.18869,489.53179 378.38294,491.56421 377.15275,493.31716 C 373.86978,497.99524 374.93606,501.76447 380.58122,505.4366 L 385.04002,508.33701 L 380.21473,512.49952 C 377.56083,514.78891 374.26445,516.93141 372.88945,517.26065 C 371.51445,517.58988 369.48945,518.40186 368.38945,519.06505 C 364.37963,521.48255 363.39991,521.25978 359.63945,517.07544 z",name:"Konya"},43:{path:"M 235.57867,372.88972 L 234.19663,368.12132 L 226.55126,367.21781 C 219.43097,366.37635 218.47607,366.49674 212.64767,368.97068 C 209.20565,370.43169 205.48945,371.64172 204.38945,371.65963 C 203.28945,371.67754 201.26445,372.3353 199.88945,373.12132 C 196.58106,375.01257 188.88945,375.10687 188.88945,373.25618 C 188.88945,372.50535 187.98945,370.74687 186.88945,369.34845 C 185.78945,367.95003 184.88945,365.85022 184.88945,364.68221 C 184.88945,363.5142 184.28116,362.32513 183.5377,362.03983 C 182.70226,361.71925 182.36856,360.56585 182.66404,359.02015 C 183.40277,355.15575 179.39827,351.43389 174.91566,351.81865 C 171.43279,352.1176 171.38212,352.06601 170.79284,347.62132 C 170.4647,345.14632 169.86128,342.35266 169.45192,341.41319 C 168.88046,340.10174 169.3093,339.57922 171.29853,339.16319 C 172.72354,338.86516 174.97977,338.39645 176.31238,338.12161 C 180.66393,337.22414 184.88945,332.81276 184.88945,329.16729 C 184.88945,327.36535 185.78945,324.74687 186.88945,323.34845 C 187.98945,321.95003 188.88945,320.36219 188.88945,319.81992 C 188.88945,319.17581 190.26718,319.18369 192.86324,319.84264 C 198.76154,321.33978 201.31347,320.3153 203.11595,315.72663 C 204.14566,313.10524 206.03693,310.92204 208.77593,309.19298 C 212.09652,307.09678 212.88945,306.02037 212.88945,303.60878 C 212.88945,300.26136 213.61933,299.94978 216.44832,302.08952 C 217.55987,302.93025 220.61181,303.57131 223.58955,303.58952 L 228.78964,303.62132 L 229.08955,309.33119 L 229.38945,315.04106 L 235.88945,317.30336 C 240.01659,318.7398 243.54414,319.35862 245.55251,318.99851 C 250.24839,318.15651 252.88945,319.31688 252.88945,322.22204 C 252.88945,323.70693 254.2819,326.08043 256.38945,328.18799 C 260.16231,331.96085 260.78805,334.97089 258.35776,337.65633 C 256.97994,339.17882 256.99693,339.68897 258.52696,342.73507 C 262.38372,350.4134 262.31537,350.85322 256.83064,353.65132 C 252.68329,355.76714 250.88945,358.18259 250.88945,361.65129 C 250.88945,364.99272 248.16443,368.72211 242.31231,373.38972 L 236.9607,377.65813 L 235.57867,372.88972 z",name:"Kütahya"},44:{path:"M 645.91768,444.50812 C 640.76471,442.45169 640.56384,438.47754 645.38945,434.05745 C 649.62134,430.1812 649.98123,426.10697 646.61649,420.16644 C 644.89906,417.13426 643.2836,415.82057 639.69228,414.5357 C 637.116,413.61397 633.84318,411.94348 632.41935,410.8235 C 630.99552,409.70352 628.00819,408.47928 625.78084,408.10297 L 621.73111,407.41877 L 623.73547,405.27005 C 624.83786,404.08825 626.94298,400.7174 628.4135,397.77927 C 630.10966,394.3903 632.33065,391.70354 634.48831,390.43049 C 638.11115,388.29296 638.72839,386.00365 636.67896,382.30558 C 636.01318,381.10424 635.40963,377.98382 635.33772,375.37132 C 635.20866,370.68224 635.24739,370.62132 638.35709,370.62132 C 640.08964,370.62132 642.3807,371.28201 643.44832,372.08952 C 646.5896,374.46546 648.51454,373.92138 649.5272,370.37132 L 650.45426,367.12132 L 661.10219,366.08936 C 669.01383,365.32259 672.27541,364.582 673.79426,363.20747 C 675.55708,361.61213 676.24465,361.52581 678.79021,362.58021 C 680.4137,363.25269 682.71431,363.4943 683.90267,363.11712 C 687.67082,361.92116 692.47693,363.42053 693.73651,366.18499 C 695.25115,369.50926 695.19132,370.62132 693.49786,370.62132 C 691.10542,370.62132 690.62087,375.42992 692.71179,378.42224 C 693.74909,379.90674 694.91065,382.41325 695.29303,383.99227 L 695.98827,386.86323 L 691.57238,386.20102 C 687.30086,385.56047 687.1046,385.64815 685.56964,388.88284 C 684.69687,390.72206 683.06179,393.06037 681.93612,394.07908 C 679.05799,396.68376 679.16588,402.62726 682.13945,405.27972 C 683.37695,406.38358 688.16776,408.27066 692.7857,409.47322 C 700.45609,411.47067 701.38542,411.52637 703.5357,410.11745 C 704.83026,409.26922 705.88945,409.01269 705.88945,409.54738 C 705.88945,410.08206 707.456,411.7144 709.37068,413.1748 C 712.4791,415.54571 713.19696,415.70977 716.07403,414.70682 C 718.87497,413.73041 719.56369,413.85129 721.3428,415.63157 C 723.32262,417.6127 723.33231,417.77922 721.63945,420.73148 C 720.67695,422.41004 719.88945,424.23996 719.88945,424.79799 C 719.88945,427.18786 715.34848,431.86176 710.77486,434.17939 L 705.83581,436.68219 L 702.51824,434.15176 C 700.69358,432.76002 698.73482,431.62132 698.16545,431.62132 C 697.59609,431.62132 694.03856,430.05474 690.25984,428.14003 C 682.08353,423.99701 679.6285,423.82024 675.37051,427.06797 C 673.60627,428.41362 670.93995,429.82153 669.44536,430.19664 C 665.77129,431.11878 665.27299,433.02215 667.84846,436.29634 L 669.99889,439.03017 L 667.72673,440.74406 C 662.38714,444.77172 651.35105,446.67646 645.91768,444.50812 z",name:"Malatya"},45:{path:"M 158.27138,417.23326 C 153.387,416.17209 153.1953,416.00824 154.07294,413.64483 C 155.44629,409.94651 154.29164,407.02987 150.22678,403.92945 C 147.75725,402.04585 144.94788,400.98194 141.526,400.63448 C 137.15781,400.19092 136.39313,399.7836 135.88819,397.63134 C 135.42824,395.67086 134.46248,394.99199 131.34673,394.43897 C 124.23393,393.1765 122.89093,393.40354 122.87414,395.87132 C 122.84289,400.46219 121.30981,401.04557 118.66561,397.47278 C 117.30139,395.62948 115.92407,393.37625 115.6049,392.46562 C 115.28573,391.55498 113.64388,390.50666 111.95636,390.13602 C 110.26883,389.76537 107.06499,387.93893 104.83672,386.07726 C 102.60845,384.21559 99.221549,382.39905 97.310283,382.04049 C 93.593606,381.34324 91.88945,379.23258 91.88945,375.32661 C 91.88945,373.9922 90.76445,371.24263 89.38945,369.21646 C 86.354127,364.74366 86.355506,364.78782 89.144417,361.37013 C 90.971541,359.13106 92.586475,358.45922 97.819943,357.76095 C 102.91396,357.08129 104.7224,356.35427 106.52132,354.26291 C 108.62723,351.81465 108.74874,350.98712 108.19389,342.87209 C 107.86482,338.05916 106.9867,333.23369 106.24251,332.14881 C 104.47297,329.56916 104.5187,326.70082 106.34052,326.00172 C 107.13861,325.69547 109.31858,326.60959 111.18491,328.03311 C 113.38166,329.70865 115.84648,330.62132 118.17482,330.62132 C 120.15295,330.62132 122.08131,331.12275 122.46008,331.7356 C 122.87161,332.40146 124.70628,332.64097 127.0191,332.33076 C 130.52048,331.86112 130.88945,332.02625 130.88945,334.06284 C 130.88945,337.34686 133.70167,342.45218 136.53229,344.30687 C 137.88495,345.19317 139.65523,347.20149 140.46624,348.76982 C 141.70667,351.16854 142.5625,351.62132 145.85611,351.62132 C 148.00953,351.62132 150.03007,351.20281 150.3462,350.69131 C 150.66232,350.1798 153.50138,349.49135 156.65521,349.16142 C 159.80904,348.83149 164.04701,348.34947 166.07291,348.09026 C 169.48453,347.65375 169.77974,347.82201 170.07291,350.37014 C 170.35348,352.80872 170.8022,353.12132 174.02208,353.12132 C 178.89306,353.12132 182.174,356.04927 181.37573,359.6838 C 180.95889,361.58164 181.24068,362.54212 182.33784,362.96314 C 183.19123,363.29062 183.88945,364.4909 183.88945,365.63043 C 183.88945,366.76996 184.83471,368.98084 185.99003,370.54349 C 187.98167,373.23733 188.00425,373.51648 186.42547,375.92601 C 185.31707,377.61763 183.47533,378.68444 180.91712,379.11665 C 174.96903,380.12157 173.85593,381.43525 173.26851,388.14355 C 172.98061,391.43132 172.04409,395.78689 171.18735,397.82259 C 169.67177,401.42378 169.70094,401.60858 172.26624,404.65726 C 175.07691,407.99755 174.95007,409.62132 171.87847,409.62132 C 170.76033,409.62132 168.71827,411.46322 166.88945,414.12132 C 165.18661,416.59632 163.70249,418.55919 163.59141,418.48326 C 163.48033,418.40732 161.08632,417.84482 158.27138,417.23326 z",name:"Manisa"},46:{path:"M 610.71397,493.48136 C 609.9628,492.18334 608.66744,489.77132 607.8354,488.12132 C 605.87038,484.22451 602.23989,483.56939 600.9796,486.88419 C 600.47742,488.20505 598.56465,490.01313 596.72902,490.90216 C 593.43829,492.4959 593.37224,492.4818 592.01738,489.89596 C 588.54858,483.27551 586.05226,481.36748 581.72835,482.03165 C 569.16528,483.96139 569.96271,483.99358 569.04761,481.51983 C 568.57755,480.24914 568.56393,477.61465 569.01735,475.6654 C 570.39575,469.73961 570.0756,465.90746 568.13945,465.15689 C 566.57931,464.55208 566.5571,464.35061 567.93475,463.2999 C 570.57353,461.28734 573.91089,452.84929 573.84235,448.36337 C 573.74949,442.2863 575.26685,432.49851 576.70567,429.89342 C 577.38244,428.66807 579.05066,426.55102 580.41281,425.18887 C 581.77496,423.82672 582.88945,422.12124 582.88945,421.39891 C 582.88945,420.67658 584.03067,418.40613 585.4255,416.35345 C 587.42049,413.41757 588.6106,412.62132 591.0037,412.62132 C 593.90113,412.62132 594.03024,412.44641 593.71765,408.9447 C 593.39174,405.29376 593.42437,405.2594 598.38945,404.02392 C 604.14587,402.59153 624.88945,400.7659 624.88945,401.69166 C 624.88945,402.03249 623.98945,403.12583 622.88945,404.12132 C 619.86681,406.85678 620.46531,408.37387 624.86001,409.11635 C 627.04382,409.4853 629.99552,410.70352 631.41935,411.8235 C 632.84318,412.94348 636.116,414.61397 638.69228,415.5357 C 642.2836,416.82057 643.89906,418.13426 645.61649,421.16644 C 648.78891,426.76743 648.50875,429.28432 644.28192,433.15595 C 640.70665,436.43076 640.68055,436.51337 641.36291,442.39264 L 642.05143,448.32497 L 637.97044,451.55718 C 635.61937,453.41926 633.88945,455.64212 633.88945,456.80106 C 633.88945,457.90748 633.10215,460.14553 632.1399,461.77449 C 630.41752,464.69025 630.42916,464.76606 632.8899,466.65655 C 634.26465,467.71271 636.16112,468.58685 637.10427,468.59908 C 639.06996,468.62457 640.88945,471.50963 640.88945,474.60103 C 640.88945,477.645 636.51265,481.62132 633.1621,481.62132 C 629.99188,481.62132 621.24763,486.98466 615.7346,492.31058 L 612.07975,495.84139 L 610.71397,493.48136 z",name:"Kahramanmaraş"},47:{path:"M 780.81376,505.04126 C 779.20985,503.3343 778.36215,501.21927 778.30876,498.79126 C 778.2533,496.26862 776.92467,493.11898 774.05876,488.71628 C 771.76564,485.19351 769.88945,481.75171 769.88945,481.06783 C 769.88945,480.38395 768.6002,477.37351 767.02446,474.37797 L 764.15947,468.93154 L 769.27446,468.78216 C 772.0877,468.7 776.86445,468.61516 779.88945,468.59364 C 786.74237,468.54487 790.02115,467.28703 792.68407,463.68524 C 794.27611,461.53189 795.35763,460.98816 797.30738,461.36088 C 798.70719,461.62847 800.98581,461.56297 802.37097,461.21531 C 804.42854,460.6989 804.88945,459.97666 804.88945,457.26893 C 804.88945,453.063 805.76468,452.19843 807.98673,454.20935 C 808.9545,455.08517 811.63029,456.22506 813.93294,456.74243 C 817.41886,457.52566 818.67865,457.35323 821.46002,455.71219 L 824.80047,453.74127 L 826.73708,456.9313 C 827.80222,458.68581 828.983,461.58382 829.36103,463.37132 L 830.04836,466.62132 L 839.03465,466.62132 C 848.71816,466.62132 850.04021,466.20569 855.08343,461.57592 C 858.44533,458.48962 866.81145,453.16716 867.3325,453.78316 C 869.09832,455.87074 869.93246,458.97831 868.98209,459.92868 C 868.38114,460.52963 867.88945,462.17307 867.88945,463.58077 C 867.88945,466.61357 865.48283,468.34289 860.05418,469.21097 C 856.28349,469.81393 856.10752,470.0137 855.51051,474.36934 C 855.16893,476.86146 854.88945,480.22341 854.88945,481.84035 C 854.88945,484.60809 855.07108,484.74034 857.99127,484.09896 C 861.07218,483.42227 861.08824,483.44027 860.37445,486.7695 C 859.9792,488.613 859.59589,490.13466 859.52263,490.15098 C 859.44938,490.16729 857.75453,490.92243 855.75629,491.82908 C 851.14138,493.92297 838.00841,494.3299 827.6326,492.7005 C 818.20478,491.21996 810.88059,492.43343 803.98823,496.61789 C 801.4589,498.15348 797.89654,499.72488 796.07188,500.10989 C 794.24722,500.4949 792.51507,501.43337 792.22266,502.19538 C 791.65808,503.66665 785.80769,507.62132 784.19573,507.62132 C 783.66902,507.62132 782.14714,506.46029 780.81376,505.04126 z",name:"Mardin"},48:{path:"M 182.76506,537.2068 C 180.3339,534.9525 180.21664,534.44104 180.99789,529.49889 C 181.84327,524.15105 181.2282,522.67447 178.13945,522.63663 C 176.19703,522.61284 176.66719,520.24122 178.88945,518.85339 C 181.35636,517.31278 181.48102,515.04219 179.13945,514.2996 C 178.17695,513.99436 176.17663,512.95262 174.6943,511.98463 C 172.31153,510.42864 171.69417,510.38787 169.36785,511.63288 C 167.44641,512.6612 166.85131,513.64149 167.16197,515.26657 C 167.39595,516.49057 167.21224,518.08362 166.75373,518.80667 C 166.15228,519.75514 165.91581,519.54713 165.90476,518.05988 C 165.88242,515.05235 162.56165,511.97001 158.52872,511.21342 C 155.46512,510.63869 154.97099,510.13842 154.70028,507.33742 C 154.44601,504.70656 153.93452,504.09376 151.88945,503.96986 C 150.51445,503.88656 148.82695,503.77406 148.13945,503.71986 C 147.45195,503.66566 146.88945,502.72132 146.88945,501.62132 C 146.88945,500.51021 146.22278,499.62132 145.38945,499.62132 C 144.55612,499.62132 143.88945,500.51021 143.88945,501.62132 C 143.88945,502.73243 143.22278,503.62132 142.38945,503.62132 C 141.56445,503.62132 139.98945,502.72132 138.88945,501.62132 C 137.78945,500.52132 136.44802,499.62132 135.9085,499.62132 C 134.42466,499.62132 133.47917,504.61104 134.72663,505.8585 C 135.51429,506.64616 135.22913,507.45942 133.7004,508.78528 C 132.53607,509.7951 131.08978,510.62417 130.48644,510.62764 C 129.8831,510.63112 128.65911,511.91799 127.76648,513.48735 C 126.07711,516.45746 121.28657,518.41844 119.66981,516.80168 C 119.096,516.22787 119.75503,515.87132 121.38945,515.87132 C 122.84695,515.87132 124.51545,515.39532 125.09723,514.81354 C 126.70071,513.21006 125.24439,510.63409 122.67083,510.52164 C 120.46976,510.42547 120.47745,510.39763 122.88945,509.73065 C 124.42463,509.30613 125.51277,508.18681 125.709,506.83033 C 125.99743,504.83645 125.59781,504.62132 121.60569,504.62132 C 119.17312,504.62132 114.43549,504.33417 111.07763,503.9832 C 105.32087,503.3815 104.91021,503.48137 103.88204,505.7332 C 102.92677,507.8254 102.03821,508.14971 96.711238,508.35042 C 89.535126,508.6208 88.517237,508.19019 90.150475,505.57496 C 91.073193,504.09745 92.48988,503.62132 95.96333,503.62132 C 98.489363,503.62132 100.85196,503.32547 101.21355,502.96388 C 102.33986,501.83758 113.13241,501.72819 118.71876,502.78646 C 124.69196,503.91802 125.87615,503.43093 124.09312,500.57584 C 123.28321,499.27897 123.23298,498.62132 123.94383,498.62132 C 124.53307,498.62132 124.87438,497.60882 124.70231,496.37132 C 124.42276,494.36084 124.81527,494.12132 128.38945,494.12132 C 131.20426,494.12132 133.05612,493.45465 134.63945,491.87132 C 135.87695,490.63382 137.78945,489.62132 138.88945,489.62132 C 139.98945,489.62132 140.88945,488.97228 140.88945,488.17901 C 140.88945,486.95643 137.49979,486.78443 118.63945,487.04994 C 101.82792,487.28662 96.022812,487.05529 94.88945,486.10354 C 94.06445,485.41074 91.95824,484.53994 90.208984,484.16843 C 87.613821,483.61726 86.825215,483.87283 85.9238,485.55714 C 84.361405,488.4765 83.189514,488.11915 82.667767,484.56425 C 81.817013,478.7677 89.931768,475.56177 93.41099,480.31989 C 94.444251,481.73296 94.816452,481.71526 97.222756,480.13859 C 98.689438,479.17758 99.88945,477.59815 99.88945,476.62875 C 99.88945,475.65935 100.56445,474.30601 101.38945,473.62132 C 103.33964,472.00281 103.3262,468.62132 101.36958,468.62132 C 100.53365,468.62132 98.017513,467.46471 95.778166,466.05107 C 91.992253,463.66113 91.818267,463.35746 93.298038,461.72233 C 95.164951,459.65941 95.347994,457.94083 93.757274,457.41059 C 92.014877,456.8298 95.602515,450.61701 97.66513,450.64328 C 99.807379,450.67057 107.82555,454.25518 109.87147,456.10026 C 110.79291,456.93125 115.2045,457.74824 121.09735,458.17919 C 129.00017,458.75715 131.43266,458.59143 134.17948,457.28798 C 138.48215,455.24623 144.22884,455.75679 147.95532,458.5119 C 149.97771,460.00711 151.63563,460.47215 153.38162,460.03393 C 155.57872,459.48249 155.97242,459.78618 156.5036,462.44208 C 156.83791,464.11361 158.18649,466.49119 159.50044,467.72559 C 160.8144,468.95999 161.88945,470.94676 161.88945,472.14065 C 161.88945,474.28843 164.67961,477.62132 166.47764,477.62132 C 166.98954,477.62132 167.95328,478.49389 168.61931,479.56036 C 169.28533,480.62683 171.4717,482.27831 173.47791,483.23032 C 178.32196,485.52897 181.13709,490.09951 180.36836,494.41737 C 179.86411,497.24968 180.28251,498.21438 183.34222,501.27409 C 186.30618,504.23805 187.36228,504.71946 189.64412,504.14676 C 193.03008,503.29694 192.79523,503.55174 194.43781,498.94573 C 195.18793,496.8423 195.82142,495.68382 195.84556,496.37132 C 195.8697,497.05882 196.56445,497.62132 197.38945,497.62132 C 199.25582,497.62132 199.2471,498.56436 197.35765,501.06245 C 195.29628,503.78781 195.52,504.62132 198.31285,504.62132 C 199.64573,504.62132 202.88466,502.9814 205.51049,500.97706 C 209.9907,497.55725 210.44149,497.42079 212.83002,498.76144 C 216.13737,500.61781 216.52139,503.00249 214.0242,506.17714 C 212.91782,507.58368 211.30332,510.8699 210.43643,513.47986 C 208.50967,519.28081 201.37867,526.53392 194.63945,529.54735 C 191.21835,531.07709 189.88945,532.24224 189.88945,533.71205 C 189.88945,536.437 188.11366,539.62132 186.59405,539.62132 C 185.92028,539.62132 184.19724,538.53479 182.76506,537.2068 z",name:"Muğla"},49:{path:"M 838.4379,392.51486 C 836.38316,386.08417 834.65543,383.9838 830.99158,383.4625 C 826.28373,382.79265 826.0461,380.31017 829.47235,367.5915 C 829.69901,366.7501 831.23558,365.55169 832.88696,364.92836 C 837.24775,363.28235 836.88579,360.17026 832.0464,357.70139 C 829.23288,356.26604 827.50124,354.32209 825.58248,350.44499 C 823.93642,347.11891 823.31318,344.79759 823.90686,344.20391 C 825.1761,342.93467 836.69287,341.53835 840.15907,342.23344 C 842.12229,342.62714 844.09847,344.51142 846.94633,348.70509 C 850.64111,354.14589 851.26233,354.62095 854.67671,354.61669 C 856.71872,354.61414 861.08945,353.49982 864.38945,352.14042 C 867.68945,350.78103 871.44641,349.65811 872.73824,349.64506 C 875.9637,349.61246 880.03386,344.91919 882.18238,338.75509 C 884.35549,332.52042 887.54858,330.01205 891.60741,331.35115 C 893.16062,331.86359 894.99587,333.56149 895.76237,335.19516 C 896.51748,336.80455 898.72265,339.78459 900.66274,341.81747 C 904.086,345.40446 904.58446,346.80552 906.55544,358.38059 C 906.86068,360.17319 907.51071,361.88724 907.99994,362.18961 C 911.18881,364.16043 905.62191,365.75296 894.6726,366.00215 C 890.8816,366.08843 887.41859,366.69218 886.7226,367.38817 C 886.04437,368.0664 884.64036,368.62132 883.60259,368.62132 C 882.42438,368.62132 881.29043,369.74804 880.58335,371.62132 C 879.76831,373.7806 878.79339,374.62132 877.10447,374.62132 C 872.304,374.62132 868.7122,378.57185 872.27103,379.9375 C 873.38866,380.36638 873.44292,381.25323 872.55505,384.57965 C 871.31337,389.23163 871.28452,389.2435 859.3564,390.00943 C 849.68637,390.63037 847.15691,391.46605 845.58531,394.55907 C 844.92759,395.85353 843.47333,397.24693 842.35364,397.65552 C 840.55825,398.31067 840.09581,397.70358 838.4379,392.51486 z",name:"Muş"},50:{path:"M 483.38945,417.70832 C 480.5344,417.37314 476.81246,416.05458 474.7134,414.63468 C 471.1848,412.24778 471.04441,411.93063 471.2134,406.7275 C 471.38767,401.36169 471.34906,401.28558 467.38945,399.18995 C 463.47047,397.11583 463.38945,396.96248 463.38945,391.6188 C 463.38945,387.35298 463.03067,386.09381 461.74275,385.83955 C 460.27114,385.54903 460.24723,385.2114 461.51792,382.66425 C 462.8307,380.03272 463.16417,379.89874 465.86452,380.91801 C 468.31218,381.8419 469.12365,381.71934 470.83935,380.16666 C 471.96691,379.14624 472.88945,377.69644 472.88945,376.94489 C 472.88945,376.19335 474.04447,375.05218 475.45616,374.40897 C 477.20829,373.61065 477.87272,372.66536 477.54978,371.43041 C 477.21551,370.15216 477.63608,369.62132 478.98307,369.62132 C 480.42958,369.62132 480.88945,368.90612 480.88945,366.6565 C 480.88945,364.71514 481.57985,363.3222 482.88945,362.62132 C 483.98945,362.03262 484.88945,360.72189 484.88945,359.70858 C 484.88945,358.69528 485.56445,357.30601 486.38945,356.62132 C 488.80281,354.61841 488.13809,353.62132 484.38945,353.62132 C 480.48004,353.62132 480.13658,352.70441 482.52896,348.65444 L 484.16846,345.87898 L 489.69474,349.75015 C 492.73419,351.87929 495.73105,353.62132 496.35443,353.62132 C 497.05394,353.62132 497.33633,354.91921 497.09206,357.01153 C 496.7655,359.80873 497.34154,361.11597 500.38524,364.48498 C 503.78752,368.2509 504.02292,368.90059 503.4142,372.84478 C 503.0512,375.19688 502.08316,379.53164 501.263,382.47758 C 499.92544,387.28197 499.93241,388.01131 501.33062,389.55632 C 502.18798,390.50368 502.88945,392.27822 502.88945,393.49972 C 502.88945,394.72123 503.62839,397.14959 504.53154,398.89609 L 506.17363,402.07155 L 500.53154,407.11778 C 496.83755,410.42165 494.88945,412.94207 494.88945,414.41742 C 494.88945,416.45336 491.25677,418.97771 489.07435,418.45832 C 488.69766,418.36868 486.13945,418.03118 483.38945,417.70832 z",name:"Nevşehir"},51:{path:"M 469.88945,482.25618 C 469.88945,480.95535 468.98945,478.74687 467.88945,477.34845 C 466.77049,475.92593 465.88945,473.29167 465.88945,471.36858 C 465.88945,469.20129 466.6284,467.26255 467.88945,466.12132 C 469.29271,464.85139 469.88945,463.04135 469.88945,460.05492 C 469.88945,456.10686 469.42971,455.37553 463.54335,449.95991 C 460.05299,446.74869 456.64857,443.08344 455.97797,441.81491 C 455.30738,440.54639 453.81582,439.15971 452.6634,438.7334 C 450.73875,438.02143 450.93905,437.67988 455.12265,434.53981 C 457.62766,432.65964 462.42496,429.43229 465.78333,427.36792 C 470.9078,424.21794 471.88945,423.16494 471.88945,420.81792 C 471.88945,419.27979 471.38866,417.52053 470.77658,416.90845 C 470.16451,416.29638 469.97999,415.28384 470.36654,414.65838 C 470.8474,413.88035 472.09795,414.30571 474.32606,416.00517 C 477.02109,418.06077 478.85952,418.52932 484.98609,418.72201 C 489.05794,418.85008 493.98471,418.61091 495.93447,418.19051 C 499.1393,417.49951 499.59513,417.67995 500.68447,420.07079 C 501.34721,421.52534 501.88945,423.50824 501.88945,424.47724 C 501.88945,427.61371 504.32222,429.74233 508.26433,430.05512 C 514.13654,430.52105 515.7816,432.87799 515.98813,441.12132 C 516.31497,454.16667 511.34857,460.28826 499.38945,461.58088 L 494.38945,462.12132 L 494.09641,468.75529 C 493.751,476.57459 492.28457,478.43207 485.44866,479.70916 C 482.96657,480.17286 479.04083,481.4678 476.72479,482.58679 C 471.27673,485.219 469.88945,485.1519 469.88945,482.25618 z",name:"Niğde"},52:{path:"M 639.57482,277.8148 C 637.13394,275.26708 637.02155,274.82908 638.35592,273.0648 C 641.48588,268.92646 640.40729,267.62132 633.85733,267.62132 C 625.78107,267.62132 621.35522,265.67183 619.53357,261.31201 C 617.69571,256.91339 617.53665,256.8303 608.5665,255.58266 C 601.83235,254.64603 600.63607,254.13497 597.21429,250.73292 C 595.11063,248.64139 592.71445,246.6873 591.88945,246.39048 C 590.6488,245.94413 590.73525,245.57713 592.38945,244.26788 C 593.48945,243.39725 595.34126,242.67062 596.50459,242.65312 C 599.6028,242.60654 603.60003,239.0637 605.03656,235.09104 C 605.73081,233.17112 606.98316,231.61857 607.84034,231.61516 C 608.69235,231.61177 610.67839,230.93677 612.25376,230.11516 C 615.54322,228.39958 619.48645,228.16023 620.38945,229.62132 C 620.72937,230.17132 622.01042,230.62132 623.23624,230.62132 C 624.46206,230.62132 627.023,231.95303 628.92722,233.58068 C 633.46932,237.46307 635.3952,237.36276 638.13026,233.10133 C 640.81324,228.92105 645.1577,228.49069 645.70632,232.35084 C 646.15114,235.48068 650.52591,238.21546 656.31042,238.97974 C 659.01695,239.33734 661.41541,239.81395 661.64032,240.03886 C 661.86524,240.26377 661.39584,241.49934 660.59721,242.78456 C 659.79859,244.06978 658.3085,247.52621 657.28589,250.46552 C 655.56662,255.4073 655.55052,255.90032 657.07206,257.0129 C 657.97705,257.67464 658.86869,259.54475 659.05348,261.1687 C 659.34118,263.69715 659.86499,264.16698 662.69971,264.43917 C 667.33417,264.88418 666.58011,267.72318 661.44475,269.16401 C 657.31693,270.32216 656.37699,271.37032 655.42996,275.87132 C 654.95854,278.11186 654.31004,278.62132 651.92941,278.62132 C 650.32235,278.62132 648.72937,278.17132 648.38945,277.62132 C 647.30196,275.86172 644.88945,276.55101 644.88945,278.62132 C 644.88945,281.43467 642.72873,281.10678 639.57482,277.8148 z",name:"Ordu"},53:{path:"M 786.00665,263.69375 C 784.66592,262.86514 784.39015,258.41437 785.42703,254.3391 C 786.42779,250.40582 783.2607,239.72116 780.09916,236.36473 C 776.92313,232.9929 777.85581,231.69316 784.01837,230.90311 C 789.63968,230.18246 795.41175,227.26269 799.30582,223.17004 C 801.42385,220.944 803.69416,219.72487 806.55601,219.27676 C 809.46452,218.82135 812.3149,217.26518 815.99624,214.12285 C 818.89676,211.64701 821.87056,209.62132 822.60468,209.62132 C 823.3388,209.62132 824.21271,210.98761 824.54669,212.65752 C 824.90038,214.42595 826.62851,216.90919 828.68544,218.60469 L 832.21695,221.51566 L 828.3032,226.12235 C 821.66581,233.93489 818.89252,237.85143 818.81636,239.51999 C 818.69085,242.2698 815.31744,247.10741 813.30854,247.41844 C 809.66741,247.98218 803.88945,250.92863 803.88945,252.22167 C 803.88945,254.05111 799.4549,258.62132 797.67977,258.62132 C 796.86558,258.62132 795.41099,259.49253 794.44735,260.55734 C 792.30277,262.92708 787.596,264.67603 786.00665,263.69375 z",name:"Rize"},54:{path:"M 270.13945,275.34616 C 268.90195,274.7794 267.88945,273.73978 267.88945,273.03589 C 267.88945,271.28838 264.88801,270.47748 259.45984,270.75846 C 255.94978,270.94016 254.38483,270.49589 252.58766,268.80753 C 251.30775,267.60511 249.28562,266.62132 248.09405,266.62132 C 245.98048,266.62132 245.7666,266.19999 244.43245,259.40809 C 243.97588,257.08377 245.56443,255.98171 250.86808,254.94335 C 256.14126,253.91096 259.88945,249.37674 259.88945,244.03014 C 259.88945,241.80438 260.57877,240.25191 262.01311,239.24726 C 263.74344,238.03529 264.01247,237.14503 263.46566,234.44055 C 261.5909,225.16831 261.5828,225.23883 264.92496,221.74157 L 268.12461,218.39345 L 273.12186,220.00739 C 275.87035,220.89505 278.72859,221.62132 279.47349,221.62132 C 280.2184,221.62132 282.52922,222.4908 284.60866,223.5535 C 286.68809,224.6162 290.52695,225.79229 293.13945,226.16704 C 295.75195,226.54179 297.94277,227.35981 298.00793,227.98486 C 298.30976,230.8799 297.55451,232.34831 294.23042,235.3294 C 291.394,237.87314 290.54721,239.47802 290.14129,243.0794 C 289.73267,246.70465 289.93674,247.62132 291.15241,247.62132 C 293.24358,247.62132 294.19358,250.54994 292.69008,252.36155 C 292.01145,253.17925 291.21618,255.93471 290.92283,258.4848 L 290.38945,263.12132 L 284.22147,263.62132 C 278.97188,264.04687 277.72864,264.53592 275.87173,266.90585 C 274.4075,268.77461 273.88403,270.46359 274.28004,272.04143 C 275.06018,275.14974 273.10968,276.70649 270.13945,275.34616 z",
+    name:"Sakarya"},55:{path:"M 549.38945,246.05119 C 546.63945,245.28598 542.94448,244.65122 541.17841,244.64061 C 539.32661,244.62949 537.21008,243.81158 536.17841,242.70843 C 535.19448,241.65634 533.03945,240.64384 531.38945,240.45843 C 528.76903,240.16397 528.43014,239.77337 528.71102,237.37132 C 528.99524,234.94068 528.70491,234.62409 526.21102,234.64518 C 524.65915,234.6583 521.59078,235.08598 519.3924,235.59558 C 515.83271,236.42075 515.1155,236.25401 512.83769,234.07173 C 511.43097,232.724 509.31331,231.62132 508.13178,231.62132 C 504.27632,231.62132 500.78538,229.308 499.30914,225.77487 C 498.08539,222.84602 498.07212,222.06315 499.22341,220.71558 C 499.97253,219.83874 500.86374,218.3364 501.20387,217.37704 C 501.78037,215.75099 507.46107,211.63342 509.13945,211.62506 C 509.55195,211.623 509.88945,212.15963 509.88945,212.81757 C 509.88945,213.47551 511.07565,215.72551 512.52545,217.81757 C 515.95915,222.7724 519.79365,223.00589 523.98824,218.51556 C 527.1148,215.16857 527.47937,213.5921 525.83663,210.52263 C 525.07922,209.1074 525.13914,207.51248 526.05018,204.83838 C 528.19189,198.55194 530.69162,195.62132 533.91206,195.62132 C 535.49958,195.62132 539.85644,194.46681 543.59396,193.05574 C 547.33148,191.64467 551.18486,190.24011 552.15704,189.93451 C 553.34586,189.56079 555.06488,190.58788 557.40704,193.07129 C 560.42133,196.26737 560.88945,197.43193 560.88945,201.73456 C 560.88945,205.76346 561.5053,207.54841 564.13945,211.15413 C 565.92695,213.60093 568.30586,215.85668 569.42592,216.16691 C 570.54599,216.47713 571.89599,217.71879 572.42592,218.92614 C 573.4341,221.22305 577.34326,222.24067 581.26028,221.22587 C 582.43132,220.92248 584.38381,218.91721 585.59915,216.7697 L 587.80884,212.86515 L 593.44857,214.17615 C 601.04235,215.94138 606.88945,219.85991 606.88945,223.18378 C 606.88945,225.09422 607.68928,226.05603 610.13945,227.09195 L 613.38945,228.46602 L 610.57435,229.54367 C 609.02605,230.13638 607.20395,230.62132 606.52524,230.62132 C 605.84653,230.62132 604.72663,232.1827 604.03656,234.09104 C 602.56063,238.17264 598.56574,241.62132 595.31361,241.62132 C 594.04524,241.62132 592.72835,242.07297 592.38718,242.62499 C 592.04602,243.17701 590.6774,243.35522 589.34582,243.02101 C 588.01424,242.68681 584.65887,242.95695 581.88945,243.62132 C 579.12003,244.28569 575.73841,244.54924 574.37475,244.20699 C 572.20856,243.66331 572.04811,243.34013 573.10456,241.64849 C 574.62954,239.20661 574.39713,239.02375 568.72234,238.20061 C 564.43984,237.57942 563.99794,237.71308 563.36,239.82248 C 562.42269,242.92175 557.88667,247.64257 555.95236,247.5319 C 555.09276,247.48272 552.13945,246.8164 549.38945,246.05119 z",name:"Samsun"},56:{path:"M 870.97959,454.12132 C 869.99393,453.02132 868.89601,451.29856 868.53978,450.29297 C 868.03639,448.87198 867.05628,448.53777 864.14077,448.79297 L 860.38945,449.12132 L 860.38945,444.68359 L 860.38945,440.24585 L 854.38945,439.12852 C 844.6494,437.3147 841.1033,434.18279 845.88945,431.62132 C 846.98945,431.03262 847.88945,429.89179 847.88945,429.08614 C 847.88945,428.20917 848.84658,427.62132 850.27444,427.62132 C 852.76487,427.62132 855.88945,423.98727 855.88945,421.09076 C 855.88945,420.21025 856.33533,418.65671 856.88028,417.63845 C 857.84081,415.84369 858.03201,415.84813 863.13028,417.78346 C 873.26265,421.62976 874.90726,421.91517 876.84308,420.16328 C 877.81701,419.28189 880.03258,418.15386 881.76656,417.65657 C 884.60711,416.84191 885.37318,417.14526 889.50412,420.72056 C 892.0258,422.90306 896.40659,425.86009 899.23922,427.29175 C 902.07185,428.7234 905.89618,431.48717 907.73774,433.43346 L 911.08603,436.97216 L 915.27689,434.68281 C 921.13989,431.48001 923.05783,432.12994 924.99925,437.97739 C 926.51136,442.53176 926.4977,443.05649 924.77422,446.62368 L 922.93939,450.42134 L 918.66442,449.38122 C 916.31319,448.80915 913.46045,447.50415 912.325,446.48121 C 907.88707,442.48303 900.1025,444.82039 895.43767,451.55173 C 892.20265,456.21988 893.07302,455.93786 881.58058,456.04172 C 873.97569,456.11044 872.52677,455.84796 870.97959,454.12132 z",name:"Siirt"},57:{path:"M 490.03647,219.04738 C 486.52557,217.10147 482.43996,215.62132 480.57963,215.62132 C 477.55993,215.62132 477.21354,215.28211 476.14202,211.27583 C 474.63654,205.64703 475.75225,201.49364 479.2226,199.80788 C 480.70973,199.08549 482.6304,197.42012 483.49076,196.10705 C 487.00784,190.7393 482.75707,187.19525 473.88945,188.10203 L 468.38945,188.66445 L 468.38945,183.39289 C 468.38945,180.49352 468.00374,177.05247 467.53232,175.74609 C 466.94134,174.10842 467.01181,173.57891 467.75924,174.04085 C 468.35548,174.40934 470.60801,174.23565 472.76487,173.65487 C 475.55833,172.90267 478.17821,172.91882 481.87214,173.71103 C 491.39476,175.75326 498.54611,173.11653 502.48603,166.11058 C 503.53537,164.24466 503.714,164.29203 506.63196,167.20999 C 508.97004,169.54806 509.56194,170.88376 509.16956,172.93637 C 508.70445,175.36942 509.65125,177.99725 513.21245,184.15726 C 515.30723,187.78073 518.31168,190.32994 521.88945,191.5195 C 523.81445,192.15953 526.2398,193.32734 527.27912,194.11463 C 528.97666,195.40053 529.02222,195.77864 527.7272,197.83369 C 524.80791,202.46629 523.47783,208.4225 524.7427,211.19857 C 525.73744,213.3818 525.59925,214.22013 523.83655,216.69561 C 520.71395,221.0809 517.23184,221.55917 514.29532,218.00608 C 512.98403,216.41946 511.63249,214.10882 511.29189,212.87132 C 510.9513,211.63382 509.93392,210.623 509.03104,210.62506 C 506.64057,210.6305 500.92697,214.34594 500.18565,216.37704 C 499.8355,217.3364 498.79952,219.10055 497.88347,220.29738 L 496.21793,222.47344 L 490.03647,219.04738 z",name:"Sinop"},58:{path:"M 596.46788,401.27752 C 596.80672,400.39453 596.10969,398.09571 594.91893,396.16902 L 592.75391,392.66595 L 595.1285,390.29136 C 596.43452,388.98534 597.92752,387.7378 598.44627,387.51905 C 598.96502,387.3003 600.17106,385.54632 601.12635,383.62132 C 602.08165,381.69632 603.82776,378.92299 605.00661,377.45837 C 608.14628,373.55758 607.00492,370.2721 601.98795,368.76898 C 599.15671,367.92072 597.66872,366.74394 596.72149,364.60399 C 595.09014,360.91853 591.65508,360.64703 586.33931,363.78341 C 583.08678,365.70244 582.28801,365.80561 579.23371,364.70116 C 576.56547,363.73631 575.4699,363.72463 574.35594,364.64913 C 573.43149,365.41635 570.31094,365.70971 565.60306,365.47197 C 559.65607,365.17166 557.69852,364.6364 555.14346,362.61192 C 553.41462,361.24209 551.97521,359.25032 551.94478,358.18577 C 551.91435,357.12122 550.96272,355.26376 549.83005,354.05809 L 547.77065,351.86596 L 552.58005,348.8943 C 556.78399,346.29673 557.80235,344.95515 560.66928,338.23756 C 563.68825,331.16372 563.85433,330.23614 562.75744,326.57503 C 562.10201,324.38743 560.96359,322.09781 560.2276,321.487 C 559.49162,320.87619 558.88945,319.07188 558.88945,317.47744 C 558.88945,315.3556 558.21926,314.27308 556.38945,313.43937 C 553.47196,312.11007 553.29838,311.35676 555.49038,309.53755 C 556.64927,308.57577 561.22758,308.1769 572.07142,308.093 C 588.8847,307.96292 588.34632,308.20581 589.43947,300.25764 C 589.88717,297.00244 590.94882,294.47104 592.52906,292.8908 C 594.68583,290.73404 595.49241,290.55274 600.27355,291.15011 C 604.18774,291.63915 606.40531,291.40592 608.59182,290.27523 C 611.28789,288.88104 611.72436,288.8848 613.15414,290.31459 C 614.62468,291.78512 622.1001,293.64318 627.88945,293.97712 C 629.90973,294.09365 630.44954,293.60016 630.70259,291.40534 C 630.90344,289.66327 632.42742,287.57128 634.95259,285.57131 C 637.11786,283.85638 638.88945,281.72607 638.88945,280.83729 C 638.88945,279.58042 639.15612,279.48799 640.08945,280.42132 C 640.74945,281.08132 642.32445,281.62132 643.58945,281.62132 C 645.29248,281.62132 645.88945,281.05031 645.88945,279.42132 C 645.88945,277.71021 646.15612,277.48799 647.08945,278.42132 C 647.74945,279.08132 649.95131,279.62132 651.98246,279.62132 C 655.7334,279.62132 656.88945,278.45293 656.88945,274.66198 C 656.88945,272.35137 658.58284,271.02474 662.63945,270.15734 C 665.65823,269.51185 665.88945,269.64946 665.88945,272.09152 C 665.88945,273.53754 666.56349,276.02409 667.38731,277.61719 C 668.23656,279.25945 668.77785,282.50608 668.63731,285.11468 L 668.38945,289.71563 L 673.88945,291.5503 C 676.91445,292.55937 680.82097,293.40718 682.57061,293.43431 C 684.36225,293.46209 686.62394,294.35581 687.74853,295.4804 C 688.84674,296.57861 691.80272,297.78569 694.31737,298.16278 C 696.83201,298.53988 698.88945,299.21051 698.88945,299.65308 C 698.88945,302.41998 697.40392,303.62132 693.98246,303.62132 C 691.95131,303.62132 689.84317,304.0676 689.29771,304.61306 C 688.64205,305.26872 687.21012,305.19117 685.07227,304.38422 C 681.0701,302.87357 678.52673,304.17444 678.07384,307.96373 C 677.83151,309.99137 678.35385,310.87579 680.32384,311.77338 C 683.24179,313.10289 683.48349,313.88342 681.48965,315.53816 C 680.71976,316.17712 679.1082,319.1185 677.90842,322.07458 C 676.20621,326.26855 675.96512,327.89418 676.81093,329.4746 C 677.59362,330.93708 677.5882,331.68947 676.79141,332.18191 C 675.10418,333.22468 676.62128,338.88779 679.08994,340.76198 C 681.14183,342.31976 681.16326,342.49037 679.51419,344.13944 C 678.10806,345.54556 677.90262,346.87855 678.43513,351.14064 C 679.20371,357.29215 678.40156,360.62132 676.1508,360.62132 C 675.26867,360.62132 673.69265,361.39444 672.64852,362.33936 C 671.30463,363.55556 667.65313,364.35883 660.14753,365.08936 C 649.58925,366.11701 649.54093,366.13385 648.5803,369.12132 C 647.30582,373.08484 647.43079,373.02213 644.5579,371.13973 C 642.94634,370.0838 640.50777,369.60945 637.72113,369.80983 C 634.01919,370.07604 633.43962,370.41208 633.73453,372.12132 C 633.92433,373.22132 634.0345,375.61692 633.97935,377.44488 C 633.9242,379.27283 634.55641,381.73546 635.38427,382.91738 C 637.60939,386.09419 637.26658,387.20126 633.34043,389.51774 C 631.27317,390.73745 629.17381,393.08983 628.31218,395.15201 C 626.48358,399.52848 624.82025,400.16139 612.88945,401.02048 C 607.66445,401.39672 601.69348,401.96969 599.62064,402.29375 C 596.43723,402.79143 595.94751,402.63358 596.46788,401.27752 z",name:"Sivas"},59:{path:"M 89.231551,243.07044 C 88.891608,242.18456 89.583572,240.51136 90.845312,239.1683 C 92.167883,237.76049 92.920835,235.87497 92.721825,234.46918 C 92.434736,232.44122 91.75334,232.08024 87.720735,231.81985 C 83.945594,231.57608 82.717634,231.00804 81.304938,228.85199 C 79.772651,226.51343 79.694618,225.38721 80.67024,219.69157 C 81.460502,215.07805 81.473055,212.82452 80.713591,211.90942 C 79.914419,210.94648 80.064175,210.62132 81.306843,210.62132 C 84.111129,210.62132 90.767623,206.73689 92.503663,204.08735 C 93.626251,202.37407 93.981459,200.34396 93.624413,197.68199 C 93.163034,194.24215 93.370653,193.71736 95.393787,193.20959 C 96.654435,192.89319 98.969179,193.30361 100.53766,194.12165 C 102.10615,194.93969 104.88217,195.61177 106.7066,195.61516 C 109.20827,195.6198 110.84905,196.49639 113.38082,199.18085 C 116.42174,202.40516 117.09818,202.68035 120.56367,202.10294 C 126.5368,201.10771 126.88945,200.86714 126.88945,197.78756 C 126.88945,193.6671 130.29736,189.86177 135.1931,188.51557 C 137.50109,187.88093 141.76883,186.5201 144.67696,185.4915 C 147.58509,184.4629 151.30141,183.62132 152.93544,183.62132 C 155.61416,183.62132 155.78853,183.81006 154.70809,185.54012 C 153.7664,187.048 153.78699,187.79293 154.80422,189.01862 C 155.88132,190.31645 155.75556,191.12762 154.05517,193.84983 C 146.80289,205.46026 144.76329,210.15031 145.18738,214.24131 C 145.9314,221.41859 143.11339,223.51583 138.06317,219.54333 C 135.73222,217.7098 134.59604,217.54442 128.40544,218.13752 C 121.24095,218.82392 117.96761,220.84682 117.91169,224.62259 C 117.88055,226.72448 108.16575,236.75071 103.58229,239.41133 C 101.48835,240.62682 98.76186,241.62132 97.523419,241.62132 C 96.284979,241.62132 94.398201,242.28201 93.33058,243.08952 C 90.82834,244.98212 89.963586,244.97809 89.231551,243.07044 z",name:"Tekirdağ"},60:{path:"M 553.8337,305.51715 C 553.31436,304.54676 552.88945,302.91322 552.88945,301.88706 C 552.88945,298.29344 550.94441,297.60815 542.44831,298.20833 L 534.38945,298.77762 L 530.63945,295.25045 C 524.70616,289.66973 526.17342,285.44083 535.17894,282.16693 C 540.7974,280.12438 545.88945,276.13817 545.88945,273.78243 C 545.88945,272.48037 546.86214,272.12132 550.38945,272.12132 C 553.32278,272.12132 554.88945,272.55651 554.88945,273.37132 C 554.88945,274.17234 556.39374,274.62132 559.07757,274.62132 C 565.36748,274.62132 572.36733,269.27077 568.88945,267.12132 C 567.14141,266.04097 567.81092,264.62132 570.06845,264.62132 C 571.2669,264.62132 573.73059,265.15763 575.54332,265.81312 C 579.48542,267.2386 580.84108,266.33034 578.54999,263.79871 C 577.63309,262.78555 576.88945,260.30865 576.88945,258.26783 C 576.88945,255.21451 577.33831,254.40116 579.47073,253.59042 C 582.46147,252.45334 582.22513,250.26734 579.06112,249.80177 C 577.76984,249.61176 576.88945,248.76413 576.88945,247.7109 C 576.88945,246.37179 578.28283,245.62775 582.59985,244.66165 C 586.93626,243.6912 588.40446,243.66634 588.70178,244.55831 C 588.91712,245.20433 589.7821,246.2703 590.62395,246.92711 C 591.4658,247.58393 593.92861,249.78956 596.09686,251.82851 C 599.56,255.08515 600.95396,255.66294 607.5665,256.58266 C 616.53665,257.8303 616.69571,257.91339 618.53357,262.31201 C 620.35522,266.67183 624.78107,268.62132 632.85733,268.62132 C 636.175,268.62132 638.88945,268.86215 638.88945,269.1565 C 638.88945,269.45085 638.13377,270.845 637.21017,272.2546 C 635.8661,274.3059 635.76629,275.19446 636.71017,276.70585 C 638.63176,279.78281 638.10634,281.28148 633.95259,284.57131 C 631.42742,286.57128 629.90344,288.66327 629.70259,290.40534 C 629.46539,292.46262 628.90439,293.05698 627.38945,292.85604 C 619.86197,291.85758 615.60535,290.67418 613.86002,289.09469 C 611.95257,287.36846 611.65896,287.36081 608.32566,288.95035 C 605.70671,290.19924 603.42954,290.46721 599.43006,289.99715 C 594.60311,289.42983 593.80279,289.61707 591.58803,291.83183 C 589.94755,293.47231 588.89313,295.95914 588.43947,299.25764 C 588.06432,301.98527 587.39427,304.8045 586.95047,305.52259 C 586.35233,306.4904 582.08594,306.88684 570.46075,307.05485 C 556.36131,307.25861 554.68262,307.10336 553.8337,305.51715 z",name:"Tokat"},61:{path:"M 769.38945,263.26309 C 766.70118,262.45356 764.96164,261.16704 764.08488,259.33994 C 762.37025,255.76677 758.88945,255.6203 758.88945,259.12132 C 758.88945,261.87131 757.43559,262.48693 756.52782,260.12132 C 756.21124,259.29632 755.11603,258.62132 754.09403,258.62132 C 752.58667,258.62132 752.32135,258.03865 752.68878,255.53524 C 753.09561,252.76332 752.9012,252.48337 750.77905,252.78524 C 748.9038,253.05199 748.28907,253.90896 747.79929,256.93923 C 747.4599,259.03907 746.47977,261.45958 745.62122,262.31812 C 744.20656,263.73278 743.77513,263.67611 741.01907,261.71361 C 739.34643,260.52259 736.4955,259.04088 734.68368,258.42092 C 732.87185,257.80096 731.16445,257.01516 730.88945,256.6747 C 730.61445,256.33425 727.96932,254.52406 725.01138,252.65207 C 718.00768,248.21966 715.89796,244.69772 715.89319,237.43034 C 715.88907,231.16062 716.77526,229.90855 719.85547,231.83217 C 721.5971,232.91984 722.53652,232.77515 726.14615,230.86327 C 731.34016,228.11221 732.09921,228.09064 734.39617,230.62875 C 737.25922,233.79238 741.82537,235.72598 743.86077,234.63667 C 745.10767,233.96935 746.74115,234.28202 749.50263,235.7166 C 752.33381,237.1874 754.44444,237.57541 757.2739,237.14524 C 760.12441,236.71188 761.64888,236.99862 763.00127,238.22252 C 765.35532,240.3529 771.28585,239.537 774.34649,236.66168 L 776.51673,234.62285 L 779.10621,237.37208 C 782.74978,241.24045 785.54018,251.63609 783.95936,255.45253 C 783.30751,257.02625 783.05812,259.44517 783.40516,260.82791 C 783.96149,263.04449 783.6577,263.41767 780.8378,263.98165 C 776.535,264.84221 774.13268,264.69143 769.38945,263.26309 z",name:"Trabzon"},62:{path:"M 732.23574,381.92154 C 730.5012,381.05701 728.55001,379.35559 727.89977,378.1406 C 727.04258,376.53893 726.05759,376.05768 724.31744,376.39034 C 720.55257,377.11003 714.88945,375.71988 714.88945,374.07601 C 714.88945,372.04148 710.91281,372.24759 709.19174,374.37132 C 707.91047,375.95235 707.8113,375.80338 708.1646,372.82837 C 708.46477,370.30082 708.2268,369.66163 707.14077,370.07837 C 706.36258,370.37699 705.51112,370.62132 705.24865,370.62132 C 704.98617,370.62132 705.04953,371.07132 705.38945,371.62132 C 705.72937,372.17132 705.30593,372.62132 704.44847,372.62132 C 703.59101,372.62132 702.88945,371.93049 702.88945,371.08614 C 702.88945,370.24179 702.17468,368.46007 701.30107,367.12678 C 698.83432,363.36204 700.19671,359.2736 704.42783,357.7436 C 708.65306,356.21574 709.36926,352.62132 705.44847,352.62132 C 702.22662,352.62132 701.12152,350.65601 703.40463,348.98656 C 704.82505,347.94793 705.54202,347.91802 706.66562,348.85052 C 707.80835,349.7989 708.36452,349.69211 709.35791,348.33357 C 710.04652,347.39183 711.0382,346.62132 711.56163,346.62132 C 712.08507,346.62132 713.51143,345.27132 714.73133,343.62132 C 715.95123,341.97132 717.58156,340.62132 718.35429,340.62132 C 719.12702,340.62132 721.02605,340.12917 722.57435,339.52766 C 724.12266,338.92614 727.5712,338.2739 730.23779,338.07823 C 732.90437,337.88257 736.1368,337.03405 737.42095,336.19264 C 739.61623,334.75423 739.77472,334.79543 740.07262,336.88184 C 740.52416,340.04437 743.60278,340.22269 746.36139,337.2461 C 747.65807,335.84696 749.91962,334.40087 751.38706,334.03256 C 753.36574,333.53595 753.9288,332.87979 753.56617,331.49312 C 752.85465,328.77226 754.31443,328.35422 758.46756,330.08951 C 762.99105,331.97954 766.62114,331.98965 769.88945,330.12132 C 773.69075,327.9483 782.1888,328.18963 784.30749,330.53075 C 785.94737,332.34281 785.94253,332.4714 784.21248,333.05209 C 783.20981,333.38863 780.8327,334.95721 778.93001,336.53783 C 775.94191,339.02011 775.65203,339.63031 776.80237,341.0164 C 777.96408,342.41617 777.68027,342.81077 774.58019,344.10607 C 772.6255,344.92279 770.74286,346.04949 770.39655,346.60984 C 770.05023,347.17019 768.70901,347.36315 767.41606,347.03864 C 765.45036,346.54528 764.78436,347.04051 763.35081,350.06151 C 762.24299,352.39606 761.83582,354.9034 762.20004,357.14786 C 762.66994,360.04349 762.46183,360.62132 760.94902,360.62132 C 759.95095,360.62132 758.54549,361.33083 757.8258,362.19802 C 756.73579,363.51139 756.81568,364.32887 758.30414,367.09277 C 761.37822,372.80099 758.5021,376.9834 750.71048,378.13535 L 746.03151,378.8271 L 745.71048,375.47421 C 745.45146,372.76892 744.90711,372.05334 742.8922,371.76937 C 740.48419,371.42999 740.45739,371.48642 742.1422,373.34811 C 744.58424,376.04654 744.32362,378.31444 741.24343,381.16907 C 738.20577,383.98428 736.63719,384.11531 732.23574,381.92154 z",name:"Tunceli"},63:{path:"M 725.38945,525.58657 C 723.73945,525.0698 718.25566,524.73919 713.20325,524.8519 L 704.01706,525.05682 L 699.20325,520.81072 C 696.55566,518.47537 692.36445,515.64166 689.88945,514.51359 C 684.0661,511.8594 673.63848,511.52136 669.30537,513.8463 L 666.22129,515.50108 L 664.55537,511.72518 C 663.63912,509.64843 662.88945,507.41435 662.88945,506.76055 C 662.88945,506.10675 661.77716,505.14893 660.4177,504.63206 C 656.41851,503.11157 652.81743,491.01993 655.81251,489.16887 C 656.3202,488.8551 657.0173,487.31571 657.36163,485.74799 C 657.72873,484.07658 659.00142,482.4357 660.43857,481.7809 C 661.78655,481.16671 662.88945,479.96405 662.88945,479.10832 C 662.88945,477.82785 663.74024,477.6653 667.6957,478.19001 C 671.50498,478.69532 673.17756,478.41671 675.759,476.84685 C 678.50921,475.17434 679.66756,475.0196 683.20275,475.85244 C 685.50544,476.39491 688.31909,477.84359 689.45531,479.07173 C 691.19461,480.95172 692.20788,481.21117 695.86521,480.71301 L 700.20925,480.12132 L 697.54935,478.70234 C 694.8362,477.25495 693.74606,474.24533 696.2883,475.22088 C 698.52583,476.0795 699.27069,473.62535 697.23959,472.08659 C 695.45326,470.73327 695.45268,470.68383 697.22278,470.65312 C 698.23112,470.63563 698.86996,470.06284 698.64243,469.38025 C 697.71352,466.59353 701.79833,464.92436 707.38945,465.80596 C 708.49577,465.98041 709.29203,465.60563 709.17142,464.96723 C 709.0515,464.33248 709.614,463.26488 710.42142,462.59479 C 711.22884,461.92469 711.88945,461.80359 711.88945,462.32568 C 711.88945,462.84777 713.18616,463.08462 714.77103,462.85201 C 716.3559,462.6194 717.95745,462.92234 718.33005,463.5252 C 719.38396,465.23047 720.60369,464.82207 721.19355,462.56643 C 721.59418,461.03441 721.09965,460.27154 719.25001,459.5683 C 716.71529,458.60461 716.84885,456.62132 719.44847,456.62132 C 720.24101,456.62132 720.88945,456.17132 720.88945,455.62132 C 720.88945,455.07132 720.26259,454.62132 719.49644,454.62132 C 717.68822,454.62132 716.64218,451.89217 718.10409,450.98866 C 718.82154,450.54525 718.47034,450.01043 717.1381,449.5176 C 714.62181,448.58676 715.12472,444.99881 717.8947,444.11965 C 719.12405,443.72947 719.51481,442.90469 719.14333,441.48418 C 717.37372,434.71715 734.21232,437.95375 743.92982,446.24846 C 746.74744,448.65353 749.5254,450.62132 750.10307,450.62132 C 750.68074,450.62132 752.70194,449.66426 754.59462,448.49452 C 759.46739,445.48298 760.30475,446.80921 760.08163,457.18503 C 759.90715,465.29897 760.06801,466.02049 763.00229,470.28532 C 764.71021,472.7677 767.13443,477.4189 768.38945,480.62132 C 769.64447,483.82374 772.14064,488.57951 773.9365,491.18971 C 776.26246,494.57037 777.16311,496.96185 777.06756,499.50349 C 776.96459,502.24248 777.65014,503.81094 780.01815,506.25411 C 783.02238,509.35368 783.04962,509.46523 781.0619,510.52903 C 779.93937,511.12979 778.07723,511.62132 776.92381,511.62132 C 775.77039,511.62132 774.56766,512.29632 774.25108,513.12132 C 773.93449,513.94632 773.24575,514.62132 772.72054,514.62132 C 772.19532,514.62132 769.43097,515.69685 766.57752,517.01139 C 763.72408,518.32594 760.26445,519.65147 758.88945,519.95702 C 757.51445,520.26258 753.91445,521.23948 750.88945,522.12792 C 745.88868,523.59664 739.43857,524.90596 731.38945,526.08625 C 729.73945,526.3282 727.03945,526.10335 725.38945,525.58657 z",name:"Şanlıurfa"},64:{path:"M 208.58369,409.10476 C 205.21261,406.12095 202.66687,405.97924 198.50748,408.54386 C 195.73147,410.25551 194.35237,410.38012 185.93481,409.67993 C 180.07901,409.19283 176.3275,408.43548 176.0791,407.69026 C 175.85851,407.0285 174.64434,405.28532 173.38095,403.81654 C 171.35752,401.46417 171.2348,400.84673 172.35078,398.63367 C 173.04758,397.25188 173.86965,393.21528 174.17759,389.66346 C 174.80645,382.41018 175.84269,381.14291 181.99472,380.10353 C 184.33842,379.70757 186.32667,378.67288 186.93767,377.53122 C 187.73867,376.03454 189.08807,375.61365 193.17463,375.58588 C 196.04278,375.5664 199.51445,374.90734 200.88945,374.12132 C 202.26445,373.3353 204.28945,372.67754 205.38945,372.65963 C 206.48945,372.64172 210.17488,371.44477 213.5793,369.99974 C 219.20833,367.61046 220.37711,367.45164 226.47935,368.24687 L 233.18955,369.12132 L 234.63848,374.107 L 236.08741,379.09268 L 232.98843,381.67983 C 230.77332,383.52908 229.88945,385.13177 229.88945,387.29909 C 229.88945,389.67317 228.70881,391.4478 224.44931,395.47626 C 221.45723,398.30604 218.38935,400.62132 217.6318,400.62132 C 216.75545,400.62132 215.91523,402.52995 215.32194,405.8684 C 214.23508,411.98414 212.6804,412.73084 208.58369,409.10476 z",name:"Uşak"},65:{path:"M 941.88945,442.49935 C 939.10531,440.91952 937.26453,440.62956 932.88945,441.08165 L 927.38945,441.64999 L 925.88945,436.88566 C 924.4955,432.45815 924.13314,432.0999 920.76402,431.81838 C 917.34778,431.53292 917.1072,431.28141 916.59457,427.45946 C 916.29535,425.22866 916.29818,421.87749 916.60084,420.0124 C 917.08215,417.04641 916.88402,416.62132 915.02029,416.62132 C 913.55612,416.62132 912.88945,415.99559 912.88945,414.62132 C 912.88945,413.44608 913.55612,412.62132 914.50608,412.62132 C 915.70949,412.62132 915.95573,412.0462 915.46942,410.37132 C 913.81728,404.68117 913.6589,398.05755 915.14548,396.8238 C 915.96524,396.14346 917.25549,395.82763 918.0127,396.12196 C 919.46777,396.68756 921.88945,401.15606 921.88945,403.27537 C 921.88945,404.72465 927.23238,405.93761 931.48152,405.45298 C 933.53044,405.21929 934.34822,404.60317 934.24989,403.36729 C 934.09331,401.3994 939.24332,396.62132 941.52097,396.62132 C 942.65833,396.62132 942.92878,395.53992 942.69424,391.92996 C 942.4149,387.63027 942.13302,387.17257 939.31787,386.4476 C 935.65634,385.50468 932.86871,381.24206 934.70966,379.40111 C 935.35854,378.75223 935.88945,377.36919 935.88945,376.3277 C 935.88945,375.28621 936.76416,374.20534 937.83326,373.92576 C 938.90235,373.64619 939.91631,372.45082 940.08649,371.26938 C 940.31104,369.71054 941.01222,369.18666 942.64268,369.35953 C 943.87841,369.49055 944.88945,369.18794 944.88945,368.68708 C 944.88945,368.18622 946.46445,367.25663 948.38945,366.62132 C 950.31445,365.98601 951.88945,365.10571 951.88945,364.66509 C 951.88945,364.22447 953.23945,363.30477 954.88945,362.62132 C 960.13934,360.44675 957.87176,358.21848 949.24427,357.074 C 944.98321,356.50875 943.49109,356.81037 939.04336,359.13602 C 933.74587,361.906 931.62105,361.99839 925.63945,359.71883 C 924.12695,359.14243 922.88945,358.27304 922.88945,357.78686 C 922.88945,357.30068 924.57695,354.92146 926.63945,352.4997 C 933.33297,344.64026 934.6694,340.32103 930.78879,339.08937 C 928.22104,338.2744 929.22008,337.23634 934.05946,335.69097 C 936.07796,335.04639 938.27056,333.86703 938.9319,333.07017 C 940.71133,330.92609 943.78478,331.3041 947.47834,334.12132 C 949.28106,335.49632 951.04106,336.62132 951.38945,336.62132 C 951.73784,336.62132 953.60862,337.83081 955.54673,339.30908 C 959.77091,342.53102 961.47623,341.86417 963.41199,336.23343 C 965.16639,331.13023 965.5348,330.90909 971.48821,331.38573 C 976.57263,331.7928 976.59091,331.80683 977.98821,336.37521 C 978.75889,338.89491 980.27908,341.44357 981.36641,342.0389 C 982.45374,342.63423 983.90193,343.79632 984.58461,344.62132 C 986.1959,346.56853 986.24824,352.33506 984.65942,352.86466 C 982.93749,353.43864 986.51967,361.18529 989.64312,363.6422 C 991.75755,365.30541 991.95021,366.03335 991.34467,370.07137 C 990.82456,373.5397 991.06783,375.24461 992.36537,377.22492 C 993.38746,378.78482 994.27024,382.68373 994.57217,386.97154 C 995.1159,394.69329 995.90381,395.87085 1000.1584,395.32039 C 1003.7277,394.85859 1005.4195,396.76235 1003.9237,399.5574 C 1003.3161,400.69255 1002.3849,401.62132 1001.8543,401.62132 C 1001.3236,401.62132 1000.8895,403.64632 1000.8895,406.12132 C 1000.8895,408.59632 1000.507,410.62132 1000.0395,410.62132 C 998.56645,410.62132 993.72449,423.31306 994.0645,426.28293 C 994.35397,428.81142 994.82618,429.15481 998.38945,429.42803 C 1001.0348,429.63087 1002.9469,430.45647 1004.0355,431.8659 C 1005.5926,433.88201 1005.553,434.09816 1003.301,435.86954 C 1001.9918,436.8994 999.22606,438.00245 997.155,438.32077 C 995.08395,438.63909 992.64579,439.2793 991.73688,439.74347 C 990.29912,440.4777 990.15344,440.07204 990.61611,436.62256 C 991.27298,431.72525 989.00141,430.2592 985.58857,433.37783 C 981.67953,436.94989 976.54377,438.94747 969.38945,439.67858 C 965.53945,440.07201 960.42478,441.13584 958.02351,442.04264 C 951.15372,444.6369 945.91766,444.78513 941.88945,442.49935 z",name:"Van"},66:{path:"M 512.63945,373.90507 C 511.12695,373.67594 509.88945,373.06837 509.88945,372.5549 C 509.88945,372.04143 508.76445,371.62132 507.38945,371.62132 C 505.5057,371.62132 504.88945,371.09657 504.88945,369.49252 C 504.88945,368.32168 503.27318,365.57471 501.29774,363.38813 C 498.30366,360.07404 497.79985,358.88914 498.26985,356.26693 C 498.78348,353.40134 498.50233,352.96709 495.11156,351.38882 C 493.0644,350.43595 487.83874,346.87613 483.49899,343.47811 C 476.41861,337.93419 475.78723,337.16923 477.34913,336.02715 C 479.23732,334.64646 478.71274,332.9877 475.70066,330.81462 C 474.70449,330.09593 473.88945,328.8688 473.88945,328.08767 C 473.88945,326.15676 470.18405,323.9145 465.61235,323.07892 C 463.46323,322.68612 461.40076,321.57671 460.82717,320.50495 C 460.27272,319.46895 459.18543,318.62132 458.41097,318.62132 C 456.6923,318.62132 453.88945,314.80849 453.88945,312.47053 C 453.88945,311.20268 455.36565,310.45015 459.63945,309.53933 C 462.80195,308.86534 466.73945,307.52088 468.38945,306.55163 C 471.08098,304.97056 471.80074,304.9334 475.38945,306.19028 C 480.46288,307.96716 482.85622,307.97269 486.48581,306.21593 C 488.08281,305.44297 491.30195,304.50341 493.63945,304.12803 C 497.14167,303.56561 497.88945,303.72491 497.88945,305.03342 C 497.88945,306.91679 500.64235,306.99226 506.38945,305.26644 L 510.38945,304.06527 L 511.39648,297.09329 L 512.40351,290.12132 L 518.59031,289.82506 C 524.26098,289.55352 524.88606,289.73113 526.08328,291.95413 C 526.80167,293.28806 528.87865,295.62135 530.69879,297.13921 C 533.85559,299.77176 534.37223,299.87402 541.90719,299.35756 C 547.27092,298.98992 550.0975,299.18609 550.71365,299.96873 C 551.97462,301.57042 553.07385,306.52461 552.98743,310.21662 C 552.93207,312.58183 553.50165,313.57923 555.40221,314.44518 C 557.15549,315.24403 557.88945,316.37303 557.88945,318.27114 C 557.88945,319.75212 558.50073,321.67427 559.24785,322.54258 C 562.7953,326.66546 562.83434,329.94669 559.428,337.68245 C 556.85587,343.52373 555.35335,345.58475 552.20543,347.58971 C 550.01929,348.98209 547.59137,350.66123 546.81004,351.32113 C 546.02872,351.98102 543.58945,354.05729 541.38945,355.93506 C 538.59267,358.32219 535.9431,359.56157 532.5812,360.05526 C 527.52983,360.79704 525.81742,362.62468 527.86366,365.09025 C 529.23543,366.74312 528.4384,368.62132 526.36523,368.62132 C 525.59183,368.62132 523.42148,369.97132 521.54223,371.62132 C 519.66299,373.27132 517.50983,374.5539 516.75743,374.47149 C 516.00504,374.38908 514.15195,374.13419 512.63945,373.90507 z",name:"Yozgat"},67:{path:"M 335.88945,231.62132 C 334.51445,231.18097 330.77658,230.77582 327.58308,230.721 C 322.41408,230.63226 321.46264,230.27746 318.91554,227.48874 L 316.05438,224.35617 L 318.49343,221.73874 C 319.83491,220.29916 321.20142,217.45817 321.53012,215.42544 C 322.04083,212.26714 322.76339,211.43077 326.49771,209.67544 C 328.90118,208.54567 331.2172,207.62132 331.64442,207.62132 C 332.07164,207.62132 335.56405,205.77006 339.40532,203.50741 C 351.44674,196.41456 353.84753,195.62768 358.17745,197.35469 C 360.69285,198.35796 361.88945,199.46666 361.88945,200.79402 C 361.88945,201.87135 362.41445,203.73377 363.05612,204.93274 C 363.69778,206.13171 364.22278,208.60391 364.22278,210.42653 C 364.22278,213.07527 363.5872,214.12691 361.05612,215.66616 C 358.48299,217.23097 357.88945,218.23963 357.88945,221.0476 C 357.88945,222.94823 357.3962,224.80813 356.79333,225.18072 C 356.19047,225.55332 355.88173,227.11537 356.10725,228.65196 C 356.46281,231.07452 356.12678,231.52385 353.57837,232.03354 C 349.53779,232.84165 338.92791,232.5944 335.88945,231.62132 z",name:"Zonguldak"},68:{path:"M 413.63046,435.00695 C 411.66774,431.76985 409.32024,427.26135 408.41379,424.98806 C 406.89558,421.18051 406.89156,420.42187 408.36273,415.36123 C 409.24109,412.33978 410.80346,409.10413 411.83466,408.1709 C 412.86587,407.23768 413.98362,405.38225 414.31857,404.04772 C 414.65351,402.7132 415.28479,401.62132 415.72141,401.62132 C 417.24541,401.62132 422.10254,407.46752 421.45244,408.51939 C 420.3967,410.22762 422.77751,413.62132 425.03162,413.62132 C 426.51589,413.62132 426.93012,413.1697 426.49231,412.02878 C 426.08949,410.97903 426.53637,410.26491 427.80344,409.93356 C 428.86068,409.65709 430.28157,408.08887 430.96098,406.44864 C 431.64038,404.8084 433.25223,402.7745 434.54286,401.92885 C 437.19087,400.1938 437.67772,397.62132 435.35807,397.62132 C 433.54078,397.62132 432.17935,394.70117 433.56269,393.7704 C 435.1441,392.70635 438.88945,384.17325 438.88945,381.63434 C 438.88945,380.33879 438.10436,378.41129 437.14481,377.351 C 435.47002,375.50038 435.52007,375.3262 438.39481,373.00093 C 442.70316,369.51605 445.90295,368.8915 447.49939,371.22386 C 448.21371,372.26746 449.63167,374.02132 450.65042,375.12132 C 451.66917,376.22132 453.73587,379.05615 455.2431,381.42094 C 456.75032,383.78573 458.96888,386.08507 460.17323,386.53059 C 462.05261,387.22582 462.36483,388.10459 462.3762,392.73097 C 462.3888,397.85492 462.55723,398.20508 465.78418,399.81605 C 471.13721,402.48841 471.29751,402.86981 469.94883,409.72503 C 468.98793,414.60918 468.98606,416.43332 469.94011,418.21598 C 471.74451,421.58753 470.8023,422.8403 462.84724,427.64683 C 458.86603,430.05231 454.01258,433.52574 452.06181,435.36555 C 448.84366,438.40066 447.86038,438.74309 441.4522,439.06045 C 437.56769,439.25283 430.52161,439.74376 425.79424,440.1514 L 417.19904,440.89258 L 413.63046,435.00695 z",
+    name:"Aksaray"},69:{path:"M 747.64124,301.77989 C 743.2738,299.1441 743.98117,295.9216 750.11433,290.51339 C 755.08379,286.13133 755.27988,285.77364 754.1147,283.21633 C 752.22596,279.07101 752.64313,275.58427 755.52545,271.42507 C 758.112,267.69268 759.11851,267.21599 763.63945,267.58219 C 765.31341,267.71779 765.88945,267.22922 765.88945,265.67383 C 765.88945,263.87339 766.27114,263.68996 768.63945,264.35227 C 770.15195,264.77525 775.56468,265.1011 780.66774,265.0764 C 788.6622,265.03769 789.85514,265.24524 789.28915,266.5764 C 787.93763,269.75499 787.73563,272.40822 788.79528,273.06312 C 790.38531,274.04581 790.13538,275.62132 788.38945,275.62132 C 786.65264,275.62132 786.40536,278.84827 787.92463,281.68706 C 788.49398,282.7509 789.97898,283.62132 791.22463,283.62132 C 792.47028,283.62132 794.04068,284.17255 794.71441,284.84628 C 795.68102,285.81289 796.35591,285.8111 797.91441,284.83781 C 801.67196,282.49117 799.97676,285.66612 794.75811,290.74925 C 786.43344,298.85774 785.96404,299.05198 778.35129,297.53881 C 769.00682,295.68143 757.36453,297.36769 754.20963,301.03548 C 751.66217,303.99707 751.36993,304.03019 747.64124,301.77989 z",name:"Bayburt"},70:{path:"M 365.80664,545.37132 C 365.7611,544.68382 365.60586,541.19632 365.46166,537.62132 C 365.31747,534.04632 364.7532,529.28017 364.20774,527.02989 L 363.21599,522.93845 L 367.80272,520.90864 C 370.32542,519.79224 373.51445,518.41785 374.88945,517.85444 C 378.16194,516.51352 385.88995,509.79536 385.88766,508.2934 C 385.88668,507.64875 383.8899,505.86035 381.45038,504.31917 C 378.81658,502.65526 376.87859,500.62426 376.67934,499.31917 C 376.32599,497.00472 379.1829,492.03388 382.13945,489.81895 C 383.11278,489.08976 383.88945,487.20165 383.88945,485.56462 C 383.88945,482.85596 384.17434,482.62132 387.4631,482.62132 C 390.51884,482.62132 391.76525,481.82423 396.06344,477.12132 C 401.28019,471.41337 403.24049,470.48777 404.29461,473.23477 C 404.68719,474.25781 405.64081,474.6581 406.90061,474.32865 C 407.99337,474.04289 409.13946,474.21683 409.44747,474.7152 C 409.75548,475.21357 411.11177,475.62132 412.46146,475.62132 C 414.37641,475.62132 415.39185,474.64073 417.08431,471.15713 C 419.28488,466.62771 422.15269,464.77766 429.38945,463.219 C 432.22473,462.60833 432.46239,462.80674 433.71787,466.83261 C 434.44851,469.17548 436.10118,473.39859 437.39049,476.2173 C 439.30204,480.39637 440.47882,481.63998 443.76662,482.95549 C 447.61363,484.49477 447.78035,484.74195 447.40162,488.34504 C 447.1833,490.42199 446.97875,493.75402 446.94707,495.74954 C 446.8955,498.9967 446.31243,499.77517 441.39549,503.1616 C 436.05441,506.84014 435.79225,506.90936 431.97384,505.64917 C 428.38261,504.46396 427.8137,504.53574 425.33293,506.48712 C 423.62164,507.83322 421.18687,508.62132 418.73949,508.62132 C 416.60536,508.62132 412.10632,509.3867 408.74163,510.32217 C 403.61868,511.74648 402.40805,512.51879 401.29587,515.07217 C 400.56539,516.7492 399.95012,517.55882 399.92859,516.87132 C 399.90217,516.02758 398.10191,515.62132 394.38945,515.62132 C 389.17085,515.62132 388.88945,515.75087 388.88945,518.15344 C 388.88945,519.5461 389.51033,522.17153 390.26918,523.98771 C 391.65314,527.29999 396.28239,532.62132 397.77992,532.62132 C 398.21967,532.62132 399.39695,533.52462 400.39608,534.62864 C 402.18415,536.60444 402.16336,536.6261 399.07223,536.00788 C 396.35686,535.4648 395.80191,535.72138 394.9723,537.90341 C 393.70049,541.24852 392.31681,541.98301 386.91661,542.17959 C 384.42667,542.27022 378.91022,543.30669 374.65783,544.48285 C 365.56355,546.99822 365.9121,546.96323 365.80664,545.37132 z",name:"Karaman"},71:{path:"M 419.95679,344.74714 C 419.37924,343.66799 419.18679,341.38462 419.52911,339.673 C 420.07192,336.95895 419.63073,336.06553 416.07933,332.68717 L 412.00713,328.81338 L 413.94829,325.00591 C 415.01593,322.9118 415.88945,319.58359 415.88945,317.60988 C 415.88945,315.63617 416.30135,313.59382 416.80477,313.07132 C 417.3082,312.54882 417.8707,310.99632 418.05477,309.62132 C 418.31121,307.70573 419.06564,307.04413 421.28206,306.79114 C 424.12221,306.46694 431.88945,301.99825 431.88945,300.68843 C 431.88945,300.32152 431.49755,299.59382 431.01856,299.07132 C 428.72918,296.57399 429.02842,292.95443 431.9467,287.84472 C 433.58746,284.97185 435.4833,282.62543 436.15968,282.63046 C 438.16826,282.6454 446.32505,286.9298 449.46911,289.62132 C 452.24261,291.99562 454.88945,297.45799 454.88945,300.80746 C 454.88945,301.65674 455.78945,303.49577 456.88945,304.89419 C 459.47852,308.18566 459.44174,308.34111 455.88945,309.12132 C 453.46371,309.6541 452.89238,310.29143 452.90476,312.45078 C 452.91318,313.91957 453.33619,315.7792 453.84478,316.58328 C 454.54671,317.69303 453.8805,318.54192 451.07946,320.10688 C 448.3319,321.64197 447.04601,323.24779 446.04477,326.39425 C 445.19792,329.05551 443.53191,331.43807 441.54477,332.82972 C 439.80934,334.04509 437.80143,335.84539 437.08275,336.8304 C 436.36406,337.81541 434.62651,338.62132 433.22153,338.62132 C 431.69956,338.62132 428.71468,340.25591 425.83694,342.66528 C 421.26503,346.49311 420.95075,346.60438 419.95679,344.74714 z",name:"Kırıkkale"},72:{path:"M 830.36103,462.37132 C 829.983,460.58382 828.85968,457.77132 827.86477,456.12132 C 826.74151,454.25847 826.25802,452.07894 826.58922,450.37132 C 826.99717,448.26803 826.73506,447.62132 825.47464,447.62132 C 822.51534,447.62132 822.58243,444.73503 825.62221,441.27291 C 827.24177,439.42833 829.57169,435.71462 830.79981,433.02022 C 832.02792,430.32583 833.4505,427.33993 833.96109,426.38489 C 835.37625,423.73793 835.09027,421.68232 832.7888,417.95846 C 831.32758,415.59416 830.89048,413.75334 831.35286,411.91107 C 832.21943,408.45838 837.03652,401.67005 838.63945,401.64267 C 839.32695,401.63093 839.88945,401.21534 839.88945,400.71915 C 839.88945,400.22295 841.24538,399.34429 842.90264,398.76657 C 844.55989,398.18885 846.16501,397.0668 846.46957,396.27313 C 847.15443,394.48841 851.884,395.50978 852.9509,397.6728 C 854.83974,401.50225 856.61211,414.91145 855.63295,417.96433 C 853.74736,423.84332 852.09359,426.11391 849.46139,426.43774 C 848.04682,426.61177 846.88945,427.26987 846.88945,427.90018 C 846.88945,428.53049 845.73637,429.96562 844.32706,431.08937 C 839.61355,434.84779 842.96846,438.19202 853.38945,440.12291 L 859.38945,441.23464 L 859.38945,445.67798 L 859.38945,450.12132 L 863.29857,450.12132 C 868.74527,450.12132 868.64858,451.71084 863.03581,454.44102 C 860.41291,455.71685 856.58832,458.29851 854.5367,460.17803 C 849.07575,465.18092 847.82154,465.62132 839.03465,465.62132 L 831.04836,465.62132 L 830.36103,462.37132 z",name:"Batman"},73:{path:"M 861.60522,485.98538 C 862.19031,482.37991 862.16883,482.35332 859.04235,482.81219 C 855.52347,483.32865 855.44941,483.11093 856.51051,475.36934 C 857.10752,471.0137 857.28349,470.81393 861.05418,470.21097 C 866.57653,469.32791 868.88945,467.6243 868.88945,464.43979 C 868.88945,462.95455 869.33945,461.46124 869.88945,461.12132 C 870.43945,460.7814 870.88945,459.71811 870.88945,458.75846 C 870.88945,457.20017 871.93184,457.04149 880.63945,457.27424 C 886.00195,457.41757 891.12543,457.31533 892.02497,457.04703 C 892.9245,456.77873 894.9199,454.74187 896.45919,452.52068 C 901.01303,445.9495 907.79944,443.6544 911.28558,447.50654 C 912.22394,448.54342 914.26618,449.64667 915.8239,449.95821 C 917.38162,450.26975 919.81105,450.81452 921.22262,451.16881 C 923.51278,451.7436 924.01645,451.32935 925.90035,447.32153 C 927.83108,443.21407 928.39482,442.77262 932.49456,442.15783 C 936.02505,441.6284 937.93798,441.95049 941.49775,443.67375 C 945.11798,445.42627 947.00065,445.73158 950.9537,445.20719 C 957.13742,444.38689 957.5822,446.19617 952.33039,450.80732 C 949.63172,453.17678 948.84029,454.58965 949.05659,456.65175 C 949.21348,458.14749 948.71702,460.12416 947.95334,461.04433 C 946.76258,462.47912 946.79669,463.2036 948.19291,466.13149 C 950.20406,470.34892 949.21856,471.0746 944.28145,469.01175 C 939.81305,467.14473 933.7249,467.64301 931.29314,470.07477 C 930.10119,471.26673 928.77263,471.53848 926.51574,471.05199 C 924.79628,470.68134 923.23945,469.98281 923.05612,469.4997 C 922.30983,467.53312 918.88536,468.82217 916.75572,471.87132 C 915.50727,473.65882 914.20531,475.34632 913.86248,475.62132 C 913.51965,475.89632 912.37297,477.97313 911.3143,480.23645 C 909.63148,483.83415 908.70834,484.56208 903.97267,486.02562 C 897.96855,487.88116 896.93314,487.36376 896.90476,482.49376 C 896.88642,479.34646 895.50685,478.11474 891.0539,477.26992 C 888.09687,476.70891 887.30251,477.07915 884.0539,480.5325 C 881.33465,483.42313 878.43553,485.09769 872.81427,487.02461 C 868.64792,488.4528 864.28871,489.62132 863.12714,489.62132 C 861.25693,489.62132 861.08273,489.20515 861.60522,485.98538 z",name:"Şırnak"},74:{path:"M 365.38392,211.61237 C 365.04096,211.05745 365.04323,209.71217 365.38896,208.62287 C 365.74773,207.49247 365.34619,205.6838 364.45351,204.40931 C 363.59328,203.18116 362.88945,201.19957 362.88945,200.00577 C 362.88945,198.44078 361.84326,197.40129 359.13945,196.2798 C 357.04441,195.41082 356.19627,194.70164 357.21764,194.67285 C 358.22315,194.64451 360.73992,192.80458 362.81047,190.58411 C 365.09264,188.13671 368.11371,186.12307 370.48228,185.47062 C 372.63122,184.87867 375.51445,183.60137 376.88945,182.63217 C 378.26445,181.66297 380.96445,180.55545 382.88945,180.171 C 384.81445,179.78655 387.15718,179.25655 388.09552,178.99322 C 389.3521,178.64058 390.49082,179.87455 392.41754,183.67676 L 395.03349,188.83909 L 392.83228,191.18217 C 391.45554,192.64765 390.82894,194.28193 391.15936,195.54546 C 391.58011,197.15442 390.87447,197.92443 387.69289,199.32814 C 385.43107,200.32605 383.06219,202.32038 382.23219,203.92544 C 381.22349,205.87604 378.72898,207.6743 374.23463,209.69078 C 367.02964,212.92344 366.29304,213.08337 365.38392,211.61237 z",name:"Bartın"},75:{path:"M 893.28248,244.85161 C 892.55211,242.91666 890.69163,241.21988 887.72646,239.78446 C 885.27458,238.59753 881.98789,236.28974 880.4227,234.65603 L 877.57691,231.68566 L 880.48318,225.18023 C 882.08163,221.60224 885.30014,216.08653 887.63544,212.9231 C 892.31249,206.58746 892.35045,205.57743 888.14517,199.35944 C 885.76965,195.84695 885.70999,195.47711 887.24522,193.7807 C 888.14954,192.78143 888.88945,190.97563 888.88945,189.76783 C 888.88945,187.03575 892.47138,185.51694 897.13126,186.27313 C 900.19914,186.77098 900.4742,187.09054 900.08972,189.71015 C 899.77939,191.82455 900.14855,192.78351 901.46767,193.28971 C 902.5507,193.70531 903.43377,193.48837 903.68125,192.74592 C 903.93246,191.9923 905.5631,192.99438 907.86348,195.31601 C 909.93724,197.40893 913.71645,200.23692 916.26171,201.60043 C 919.48726,203.32839 920.88945,204.70971 920.88945,206.15931 C 920.88945,207.30317 921.52809,209.11245 922.30865,210.17993 C 923.55721,211.88744 924.10811,211.97726 926.89063,210.92698 C 931.10951,209.33453 934.88945,210.73746 934.88945,213.89577 C 934.88945,215.93587 934.48654,216.17268 931.5907,215.83461 C 928.41783,215.46419 928.23657,215.63404 926.8407,220.28541 C 925.27433,225.50492 922.15226,227.78779 914.88945,229.02422 C 909.46461,229.94776 908.83997,230.79505 907.74324,238.71784 C 907.17958,242.78975 906.64438,246.18322 906.55392,246.25887 C 906.46346,246.33452 903.68744,246.70338 900.38499,247.07856 C 894.42914,247.75518 894.37165,247.73715 893.28248,244.85161 z",name:"Ardahan"},76:{path:"M 974.38945,305.82039 C 970.53945,305.65489 966.96195,305.09239 966.43945,304.57039 C 965.91695,304.0484 963.83113,303.62132 961.80428,303.62132 C 959.77744,303.62132 955.84482,302.8868 953.06512,301.98906 C 948.39066,300.47938 947.88853,300.47938 946.37885,301.98906 C 945.48111,302.8868 943.97202,303.62132 943.02532,303.62132 C 941.61613,303.62132 941.3118,302.69558 941.34675,298.51543 L 941.38945,293.40954 L 936.88945,291.63804 C 931.74131,289.61138 930.20756,286.62132 934.31613,286.62132 C 936.35404,286.62132 936.88945,286.13002 936.88945,284.25999 C 936.88945,282.35155 937.32098,281.98043 939.13945,282.32501 C 940.37695,282.55951 943.40603,282.29655 945.87074,281.74067 C 949.44126,280.93539 950.6767,281.02379 951.94948,282.17565 C 952.82808,282.97077 954.17145,283.62132 954.93476,283.62132 C 955.69806,283.62132 958.28101,284.36925 960.67465,285.28339 C 964.74047,286.83614 965.66777,286.83326 974.77305,285.23961 C 984.28948,283.574 984.624,283.58088 988.95442,285.53117 C 993.54832,287.60012 997.8411,290.81981 997.95471,292.28161 C 997.9906,292.74345 999.2281,294.12642 1000.7047,295.35487 C 1009.1023,302.34118 1011.8871,304.95703 1011.4221,305.42209 C 1011.1359,305.70826 1010.1115,305.26355 1009.1456,304.43386 C 1008.1797,303.60416 1006.602,302.64604 1005.6395,302.3047 C 1004.677,301.96337 1003.8895,301.21997 1003.8895,300.6527 C 1003.8895,299.05239 1000.8971,299.4378 1000.2511,301.12132 C 999.91889,301.98698 998.42423,302.62132 996.71672,302.62132 C 995.08941,302.62132 992.77505,303.15425 991.57371,303.80562 C 988.49846,305.47301 982.54516,306.171 974.38945,305.82039 z",name:"Iğdır"},77:{path:"M 187.63945,257.29779 C 184.42207,254.66351 184.1699,253.62132 186.7499,253.62132 C 187.77315,253.62132 190.26814,252.49632 192.29431,251.12132 C 195.54101,248.91805 197.03422,248.62132 204.87484,248.62132 C 209.76796,248.62132 214.02342,248.21357 214.33143,247.7152 C 214.63944,247.21683 215.79339,247.04494 216.89577,247.33322 C 217.99815,247.6215 219.53264,247.33241 220.30575,246.69079 C 221.1876,245.95891 221.9363,245.8881 222.31494,246.50077 C 222.64689,247.03787 222.12446,247.74079 221.15397,248.0628 C 220.18348,248.3848 218.71445,250.1047 217.88945,251.88479 C 216.56601,254.74035 215.75044,255.22193 210.96069,255.97605 C 207.28071,256.55544 204.23935,256.44351 201.51939,255.62859 C 197.70731,254.48647 197.41235,254.55616 195.61475,257.02387 C 193.3108,260.18668 191.25408,260.25732 187.63945,257.29779 z",name:"Yalova"},78:{path:"M 376.44832,245.08952 C 375.3807,244.28201 373.4682,243.62132 372.19832,243.62132 C 368.88987,243.62132 366.29669,240.56955 365.52977,235.77346 C 364.90119,231.84253 364.68357,231.62132 361.44502,231.62132 C 358.84784,231.62132 357.8637,231.11555 357.3575,229.52066 C 356.9908,228.36529 357.18548,226.92529 357.79011,226.32066 C 358.39475,225.71602 358.88945,223.74669 358.88945,221.94437 C 358.88945,218.04859 359.85661,217.32983 372.29791,211.97954 C 378.82781,209.17141 381.68565,207.36042 383.00141,205.19682 C 385.13494,201.68851 390.67651,198.66272 396.87689,197.62057 C 402.82066,196.62154 403.61898,197.06094 404.41445,201.76929 C 404.78533,203.9645 405.71893,206.00239 406.48911,206.29794 C 408.73565,207.16001 408.12848,208.13311 404.53276,209.43334 C 399.78194,211.15126 397.73168,213.8414 397.13437,219.14076 C 396.69492,223.03956 396.9406,223.96884 398.7449,225.23262 C 403.83736,228.79952 403.81312,234.75507 398.69888,236.53791 C 396.70685,237.23234 395.07263,237.25454 393.85652,236.6037 C 391.0492,235.10126 390.16152,235.40116 389.4894,238.0791 C 388.93334,240.29463 381.23455,246.66808 379.20927,246.58952 C 378.75837,246.57202 377.51594,245.89702 376.44832,245.08952 z",name:"Karabük"},79:{path:"M 612.38578,530.28771 C 611.83377,529.6462 611.51917,528.1729 611.68667,527.01372 C 612.01371,524.75056 609.54699,523.36251 602.88945,522.06341 C 598.28065,521.16408 593.67526,518.7639 594.102,517.48367 C 594.50149,516.28521 598.24997,514.02994 602.13945,512.64794 C 604.07063,511.96176 604.88945,510.97862 604.88945,509.34607 C 604.88945,508.06746 605.39512,506.51565 606.01316,505.89761 C 607.50621,504.40456 610.48066,507.13813 611.41421,510.86129 C 611.95533,513.01937 612.98132,513.83552 616.24534,514.70432 C 621.38858,516.07332 623.49761,517.904 624.92936,522.24224 C 625.78807,524.84417 626.60169,525.62132 628.467,525.62132 C 629.96802,525.62132 630.88945,525.04303 630.88945,524.101 C 630.88945,522.82439 631.52342,522.9041 634.84424,524.59826 L 638.79903,526.61584 L 636.50226,529.09409 C 634.47325,531.28344 633.80896,531.45862 630.80407,530.59683 C 626.50512,529.36391 615.5969,529.32474 614.33945,530.53771 C 613.76103,531.09567 612.99687,530.99788 612.38578,530.28771 z",name:"Kilis"},80:{path:"M 570.02867,508.61782 C 568.73023,507.51975 566.40454,506.62132 564.86045,506.62132 C 559.72489,506.62132 558.88945,505.78399 558.88945,500.63678 C 558.88945,494.49178 557.1188,492.775 552.50262,494.44424 C 548.02486,496.06342 547.77384,495.96917 549.05791,493.15093 C 549.9241,491.24985 549.88295,490.31841 548.87933,489.10912 C 547.78861,487.79488 547.90193,487.09446 549.57174,484.82951 C 550.66986,483.34 551.86557,480.88382 552.22888,479.37132 C 552.59219,477.85882 553.18528,475.38382 553.54684,473.87132 C 553.90841,472.35882 555.41301,468.87132 556.8904,466.12132 C 559.48836,461.28551 559.73565,461.11106 564.42094,460.80885 L 569.2653,460.49639 L 566.82738,462.62311 C 565.48652,463.7928 564.83945,464.95323 565.38945,465.20183 C 569.16941,466.91038 569.30007,467.31154 568.1285,473.61134 C 566.53928,482.15694 567.58886,484.62132 572.81765,484.62132 C 575.00538,484.62132 577.90833,484.11421 579.26866,483.4944 C 583.04447,481.77403 586.10905,483.18561 589.17192,488.05596 L 591.95438,492.48044 L 586.92418,497.1856 C 583.59274,500.30178 581.54249,503.19611 580.85317,505.75604 C 580.16247,508.32112 579.23666,509.62591 578.10091,509.63497 C 577.15961,509.64248 575.48945,509.86591 574.38945,510.13148 C 573.24874,510.40687 571.37515,509.75653 570.02867,508.61782 z",name:"Osmaniye"},81:{path:"M 307.88945,255.62132 C 307.88945,255.04898 304.86699,254.62132 300.82206,254.62132 C 294.20975,254.62132 293.79555,254.49254 294.38945,252.62132 C 295.26487,249.86311 294.07717,246.62132 292.19122,246.62132 C 289.20133,246.62132 291.36155,239.78961 295.4761,236.23286 C 298.19807,233.8799 299.18518,232.21735 299.27205,229.83944 C 299.3625,227.36343 299.84847,226.60599 301.38945,226.53922 C 302.48945,226.49155 305.97313,226.12973 309.13096,225.73518 C 314.74121,225.0342 314.9393,225.09328 317.79563,228.31956 C 320.36225,231.21861 321.32378,231.62132 325.67912,231.62132 C 333.99154,231.62132 336.88945,232.53993 336.88945,235.17489 C 336.88945,236.44186 336.19927,238.16865 335.35571,239.0122 C 333.60821,240.7597 327.65948,242.60748 323.75446,242.61574 C 320.42442,242.62279 317.88945,246.29455 317.88945,251.11089 C 317.88945,254.01211 317.41482,254.85128 315.32435,255.64607 C 311.9967,256.91124 307.88945,256.89757 307.88945,255.62132 z",name:"Düzce"}},height:744.09448,width:1052.3622});
diff --git a/js/vmap/dist/maps/jquery.vmap.usa.js b/js/vmap/dist/maps/jquery.vmap.usa.js
new file mode 100644 (file)
index 0000000..4e9f6b7
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add USA Map Data Points */
+jQuery.fn.vectorMap('addMap', 'usa_en', {"width":959,"height":593,"paths":{"hi":{"path":"m244.66,512.25c-2.48,3.8 2.23,4.04 4.74,5.38 3.06,0.16 3.51,-4.28 2.66,-6.56 -2.72,-0.77 -5.01,-0.19 -7.41,1.19z m-9.31,3.97c-4.02,5.11 3.64,0.48 0.63,-0.09l-0.5,0.07 -0.14,0.02z m39.69,7.97c-0.62,2.09 1.91,6.73 4.39,6.2 2.41,-1.46 3.73,1.73 6.48,0.56 1.23,-1.48 -3.77,-3.2 -3.7,-6.08 -0.95,-3.8 -3.28,-3.2 -5.96,-1.28 -0.41,0.2 -0.81,0.4 -1.22,0.6z m19.94,10.03c3.58,0.95 7.91,2.99 11.25,0.47 -1.05,-1.63 -5.06,-0.59 -7.1,-0.86 -1.44,0.01 -3.54,-1.63 -4.15,0.39z m12.13,4.38c2.33,2.45 3.64,6.83 7.24,7.4 2.36,-0.69 6.84,-0.66 7.32,-3.43 -2.09,-2.51 -5.77,-3.35 -8.88,-4.29 -2.53,-1.2 -4.11,-3.25 -5.68,0.33z m-7.06,1c-0.29,3.69 5.55,3.98 3.67,0.55 -0.27,-1.25 -3.83,-1.74 -3.67,-0.55z m23.66,14.69c0.27,2.45 3.18,3.93 0.47,6.15 -0.65,2.42 -5.54,2.87 -2.52,5.53 2.36,1.46 2.01,4.85 2.92,7.14 -0.72,2.69 -1.43,6.78 1.72,8.06 2.8,2.95 4.5,-1.93 6.19,-3.68 1.27,-1.69 3.85,-4.1 5.94,-2.59 3.04,-0.81 6.3,-2.42 7.78,-5.22 -2.79,-1.31 -4.88,-3.19 -5.57,-6.29 -2.4,-5.33 -8.95,-6.26 -13.58,-8.98 -1.29,-0.52 -2.26,-1.62 -3.34,-0.11z","name":"Hawaii"},"ak":{"path":"m107.84,436.56c-2.27,0.55 -4.87,0.32 -6.84,-0.34 -2.41,1.22 -5.63,4.03 -8.25,1.88 -3.1,0.93 -3.51,3.84 -5.22,5.97 -1.82,2.52 -4.21,3.65 -7.31,3.14 -2.5,-0.94 -5.49,-1.15 -7.5,0.98 2.03,4.34 6.39,8.13 5.82,13.23 -1.85,2.94 6.31,2.99 2.68,5.02 0.15,2.8 3.07,5.68 2.91,7.88 -2.35,2.21 -5.24,-0.38 -7.71,-1.06 -3.24,-0.64 -2.73,-3.35 -0.82,-5.22 -1.57,-1.51 -7.35,-1.81 -6.51,1.12 -2.01,0.04 -3.81,-1.66 -6.27,-0.77 -3.72,-0.44 -5.97,0.65 -2.94,4.05 3.68,1.45 1.06,4.72 1.17,7.57 0.76,2.63 3.66,4.89 6.67,4.17 3.2,-0.06 5.87,3.59 9.21,1.65 2.16,-1.3 5.33,-0.99 4.79,1.89 -2.53,2.07 -1.36,6.13 -2.78,8.75 -1.96,1.88 -4.53,1.59 -6.59,0.16 -1.52,1.37 -4.7,3.68 -6.28,2.22 0.72,-3.71 -4.77,-3.63 -5.51,-0.61 -1.21,3.97 -6.27,4.46 -8.31,7.63 -0.7,2.42 -1.55,6.7 1.74,6.3 1.26,1.11 -1.2,4.8 -2.77,5.52 1.62,2.19 2.65,4.59 2.72,7.34 1.71,1.55 6.35,1.98 7.5,-0.16 2.45,-0.95 1.79,4.1 2.08,5.97 2.47,2.95 -4.02,1.28 -1.61,4.56 -0.85,2.93 -1.76,5.02 2,2.72 2.76,-0.47 5.11,-0.69 5.66,2.09 2.59,-3.91 2.26,2.78 3.25,4.66 0.59,-0.75 1.3,-5.69 3.94,-3.06 -0.17,4.52 5.33,-0.45 5.78,-0.04 0.54,2.92 -1.63,4.24 -2.86,6.41 -1.51,2.24 -2.07,5.63 -4.21,7.17 -3.87,-0.42 -3.37,4.1 -5.5,5.02 -2.65,-0.72 -5.73,0.71 -8.44,1.41 -1.35,2.41 -3.61,4.2 -5.78,1.81 -2.56,0.05 -5.63,0.68 -7.63,2.33 -2.48,2.43 -6.32,3.11 -9.66,2.29 -2.78,-1.91 -7.11,3.41 -3.11,2.31 2.5,-1.91 4.66,0.64 7.25,0.63 2.21,-1.15 4.17,-2.75 6.84,-2.06 2.32,-3.35 5.1,-0.32 7.92,-1.16 2.31,-0.39 7.01,-3.91 5.26,0.66 0.09,-2.91 3.42,-2.73 5.54,-2.04 4.21,0.96 0.29,-3.16 2.08,-3.43 3.47,-2.05 7.52,-2.41 11.2,-3.72 5.48,-3.19 11.62,-5.7 16.21,-10.1 4.27,-2.97 -2.78,-3.48 -1.21,-6.32 1.68,-2.43 4.58,-3.81 7.47,-4.5 1.5,-3.07 3.53,-6.11 5.88,-8.52 2.49,-1.32 4.83,-3.39 7.83,-2.32 2.67,0.71 3.74,5.32 -0.52,3.66 -1.27,-1.88 -5.56,-0.09 -5.25,2.41 -0.21,2.44 -2.56,4.22 -3.06,6.66 4.79,0.85 0.24,3.54 -1.38,3.8 1.67,1.91 5.66,0.6 7.57,-1.14 1.25,-1.85 3.43,-3.8 5.41,-4.22 1.81,2.8 5.1,-1.16 5.74,2.72 0.71,2.78 6.02,-4.86 3.34,-3.1 -3.03,3.11 -3.78,2.86 -1.94,-1.24 1.43,-4.85 -1.76,6.17 -1.45,0.81 -0.81,-3.19 -0.93,-6.03 3.05,-6.4 2.7,-0.86 5.37,-0.87 5.79,2.52 0.42,3.48 3.8,2.84 5.95,4.76 2.41,2.2 4.76,1.95 7.8,1.78 4.34,-0.47 8.01,4.04 12.28,3.17 2.49,-0.42 5.1,-5.2 4.29,-0.23 -2.26,2.83 -0.02,4.12 2.5,5.41 3.13,1.35 5.87,3.14 7.94,5.85 1.31,3.02 6.05,0.28 6.18,2.43 -3.83,1.25 -1.23,3.54 0.21,5.47 1.81,1.95 0.33,5.72 3.64,5.82 1.14,1.28 3.49,7.44 4.01,5.38 -0.35,-2.32 -0.7,-7.86 1.61,-3.76 0.37,1.42 1.04,8.7 2.07,4.74 1.07,-4.88 3.18,0.18 2.22,2.93 3.33,1.69 -1.23,3.33 0.69,4.88 0.69,-3.24 1.31,-0.36 2.16,1.56 1.05,1 1.54,3.94 3.13,3.72 -1.68,-1.72 -2.94,-6.23 0.4,-3 2.42,2.79 4.05,2.12 2.74,-1.66 -2.65,-2.66 0.28,-4.96 2.58,-2.29 3.12,-0.05 2.84,5.21 5.28,4.53 3.31,-3.17 1.5,-7.87 0.69,-11.7 -3.3,-1.55 -7.04,-2.54 -10.22,-4.06 -1.5,-5.33 -6.29,-8.69 -8.4,-13.77 -0.44,-3.33 -4.71,-2.62 -5.75,-5.23 -2.32,-1.72 -2.7,-4.4 -4.56,-6.35 -1.65,-1.53 -5.22,0.95 -5.51,2.94 0.59,3.09 -3.23,3.04 -5.06,4.72 0.05,-4.27 -4.3,-6.15 -6.7,-9.1 -1.33,-1.99 -1.32,-5.36 -4.45,-2.34 -2.37,0.24 -6.38,-0.31 -5.34,-3.62 0.1,-27.7 0.2,-55.4 0.31,-83.09 -2.75,-1.88 -5.88,-4.17 -9.15,-4.4 -2.52,1.72 -5.07,1.09 -7.39,-0.62 -2.72,0.23 -5.12,-0.65 -7.7,-2.89 -3.08,-2.74 -8.58,0.17 -10.98,-3.65 1.13,-3.56 -3.22,-4.83 -5,-2.09 -2.09,0.26 -0.65,-4.31 -3.64,-4.93 -2.57,-2.85 -4.01,-1.28 -5.86,1.21z M36.38,480.63c-0.67,3.11 4.27,1.31 4.72,4.66 0.24,3.82 5.37,3.9 2.34,-0.08 -0.1,-3.22 -3.92,-1.83 -5.06,-4.43 -0.76,-2.02 -0.9,-1.86 -2,-0.16z m-17.16,23.16c2.57,4.06 1.45,1.37 0.13,-1.28 -0.36,0.01 0,1 -0.13,1.28z m21.84,14.81c1.27,1.79 4.99,5.58 6.22,2.03 2.26,-3.3 -3.27,-2.89 -5.23,-3.68 -1.83,-0.9 -0.88,0.54 -0.99,1.65z m91.72,18.78c0.06,3.21 2.81,-1.98 0,0z m-31.47,14.69c-3.2,2.91 -7.24,4.67 -10.56,7.38 0.22,2.75 0.99,7.64 4.67,5.15 2.5,-1.44 4.98,-2.9 7.45,-4.37 -1.84,-3.31 -0.81,-3.15 -4.55,-3.48 -4.15,0.09 1.06,-3.73 2.64,-1.62 3.74,-1.04 3.95,-2.36 1.5,-3.66 0.7,-1.08 -1,0.61 -1.16,0.59z M55.75,570.75c1.42,2.83 3.53,-1.99 0,0z m-35.78,0.34c0.53,2.46 -4.04,4.84 1.05,3.59 4.2,0.47 3.46,-4.35 0.01,-3.84 -0.35,0.08 -0.7,0.16 -1.06,0.24z m62.19,0.69c1.57,2.91 1.31,-2.03 0,0z M58.63,573.13c3.23,0.49 0.99,-3.05 0,0z m-49,0.09c-4.84,2.56 -0.44,1.81 2.29,0.58 2.89,0.16 5.05,-0.48 0.84,-1.46 -1.04,0.29 -2.08,0.58 -3.13,0.88z m7.25,1.38c1.28,0.21 -2.23,-0.59 0,0z","name":"Alaska"},"fl":{"path":"m748.38,439.94c1.69,2.92 1.5,6.12 1.16,9.34 -4.12,0.54 -2.15,-4.69 -5.56,-3.99 -6.18,-0.07 -12.34,1.13 -18.54,1.19 -10.09,0.29 -20.37,2.14 -30.33,0.64 -2.57,-1.57 -2.84,-6.15 -6.5,-5.33 -9.12,-0.12 -18.18,1.79 -27.26,2.55 -5.82,0.63 -11.62,1.37 -17.43,2.12 -1.42,3.25 2.6,4.37 4.06,6.34 0.8,2.28 -1.56,8.42 2.19,7.1 4.11,-1.2 8.08,-2.93 12.48,-2.72 3.34,-0.82 6.63,-0.73 9.89,0.45 4.09,0.8 7.77,3.09 11.41,4.98 1.77,1.94 5.5,1.87 5.97,5 -0.14,3.27 4.32,-0.94 6.5,0.53 3.19,-0.8 5.24,-3.68 7.69,-5.5 4.86,1.69 0.62,-2.9 3.27,-3.97 3.13,-0.83 6.62,-1.39 9.35,0.79 3.04,0.57 5.43,2 6.57,4.99 3.68,0.02 2.88,4.13 5.48,5.3 2.96,0.49 2.98,4.52 6.3,4.3 2.91,0.36 5.45,1.15 5.84,4.45 2.05,2.11 3.92,4.26 3.09,7.41 0.18,3.68 0.12,7.33 -1.44,10.75 0.39,3.68 1.37,7.94 3.28,10.78 2.25,-3.46 0.17,-3.87 -1.74,-6.03 2.19,-1.76 4.86,-0.22 7.3,0.16 0.82,3.15 -2.16,5.6 -3.48,8.19 -3.3,2.21 1.65,4.09 2.73,6.3 3.11,3.34 4.35,7.94 7.53,11.26 0.78,2.29 2.51,7.47 4.63,3.09 2.54,-0.24 3.88,3.44 5.28,5.41 -0.02,2.26 1.93,7.04 3.59,6.44 2.88,-0.8 6.04,0.65 8.28,2.59 2.56,3.3 4.58,6.98 4.56,11.27 1.37,2.73 4.55,0.44 5.81,-1.14 3.74,0.45 7.26,-1.25 9.22,-4.47 -1.01,-2.36 -0.57,-4.83 -0.32,-7.17 -0.04,-2.18 4.33,-3.19 2.25,-6.51 -0.98,-6.33 -0.19,-12.96 -1.87,-19.25 -2.46,-6.93 -7.54,-12.74 -10.4,-19.56 -1.51,-2.41 -4.24,-3.92 -4.62,-7.04 -0.94,-2.28 -2.67,-4.95 -0.07,-6.71 -0.39,-3.56 -4.86,-5.42 -6.84,-8.41 -5.38,-5.57 -8.29,-12.94 -12.35,-19.44 -2.15,-5.53 -4.29,-11.07 -5.91,-16.78 -3.43,0.07 -7.3,-1.03 -10.46,-0.35l-0.34,0.37 -0.26,0.29z m52.91,109.22c-1.9,4.58 0.72,0.38 0.66,-1.91 -0.22,0.64 -0.44,1.27 -0.66,1.91z m-4.69,9.91c2.56,-1.97 3.68,-6.84 1.04,-1.68 -0.35,0.56 -0.69,1.12 -1.04,1.68z m-2.25,2.22c1.46,-1.22 2.04,-2.07 0.18,-0.18l-0.18,0.18z m-5.72,4.16c-5.23,3.69 4.03,-2.14 0.33,-0.19l-0.33,0.19z m-10.72,3.22c-3.41,3.16 5.71,-0.32 4.1,-0.81 -1.8,-0.56 -2.56,-0.71 -4.1,0.81z m-4.59,3.16c0.08,0.16 0.4,-0.3 0,0z","name":"Florida"},"nh":{"path":"m862.56,94c-1.4,-0.41 -3.87,-0.72 -3.05,3 0.22,3.63 -0.73,7.84 2.23,10.59 0.33,2.78 0.08,5.36 -2.17,7.29 -0.19,2.83 -5.98,2.58 -3.35,5.32 1.16,7.35 -0.56,15.03 -0.62,22.51 1.2,1.95 0.98,4.39 0.76,6.75 -1.07,3.79 4.84,-0.05 6.89,0.06 3.93,-1.29 8.46,-1.74 12.04,-3.54 0.77,-3.1 4.37,-2.75 5.94,-4.96 2.59,-3.52 -3.01,-2.73 -2,-6.59 -3.83,0.01 -4.27,-2.46 -4.66,-5.62 -3.84,-11.98 -7.32,-24.45 -11.49,-36.1 -0.18,0.43 -0.35,0.85 -0.53,1.28z","name":"New Hampshire"},"mi":{"path":"M697.86,177.24L694.63,168.99L692.36,159.94L689.94,156.71L687.35,154.93L685.74,156.06L681.86,157.84L679.92,162.85L677.17,166.57L676.04,167.21L674.58,166.57C674.58,166.57 671.99,165.11 672.16,164.47C672.32,163.82 672.64,159.45 672.64,159.45L676.04,158.16L676.84,154.77L677.49,152.18L679.92,150.56L679.59,140.54L677.98,138.28L676.68,137.47L675.87,135.37L676.68,134.56L678.3,134.88L678.46,133.27L676.04,131L674.74,128.42L672.16,128.42L667.63,126.96L662.13,123.57L659.38,123.57L658.74,124.21L657.77,123.73L654.7,121.46L651.79,123.24L648.88,125.51L649.2,129.06L650.17,129.39L652.27,129.87L652.76,130.68L650.17,131.49L647.58,131.81L646.13,133.59L645.81,135.69L646.13,137.31L646.45,142.8L642.9,144.9L642.25,144.74L642.25,140.54L643.54,138.12L644.19,135.69L643.38,134.88L641.44,135.69L640.47,139.89L637.72,141.02L635.94,142.96L635.78,143.93L636.43,144.74L635.78,147.33L633.52,147.81L633.52,148.95L634.33,151.37L633.2,157.51L631.58,161.56L632.23,166.24L632.71,167.38L631.9,169.8L631.58,170.61L631.26,173.36L634.81,179.34L637.72,185.8L639.18,190.65L638.37,195.34L637.4,201.32L634.97,206.5L634.65,209.25L631.39,212.33L635.8,212.17L657.22,209.91L664.5,208.92L664.59,210.58L671.45,209.37L681.74,207.87L685.6,207.41L685.74,206.82L685.9,205.37L688,201.65L690,199.91L689.78,194.86L691.37,193.26L692.46,192.92L692.69,189.36L694.22,186.33L695.27,186.94L695.44,187.58L696.24,187.74L698.18,186.77L697.86,177.24z M581.62,82.06L583.45,80L585.62,79.2L590.99,75.31L593.28,74.74L593.74,75.2L588.59,80.34L585.28,82.29L583.22,83.2L581.62,82.06z M667.79,114.19L668.44,116.69L671.67,116.85L672.97,115.64C672.97,115.64 672.89,114.19 672.56,114.03C672.24,113.86 670.95,112.17 670.95,112.17L668.76,112.41L667.15,112.57L666.82,113.7L667.79,114.19z M567.49,111.21L568.21,110.63L570.96,109.82L574.51,107.56L574.51,106.59L575.16,105.94L581.14,104.97L583.57,103.03L587.93,100.93L588.09,99.64L590.03,96.73L591.81,95.92L593.1,94.14L595.37,91.88L599.73,89.46L604.42,88.97L605.55,90.1L605.23,91.07L601.51,92.04L600.06,95.11L597.79,95.92L597.31,98.35L594.88,101.58L594.56,104.17L595.37,104.65L596.34,103.52L599.89,100.61L601.19,101.9L603.45,101.9L606.68,102.87L608.14,104L609.59,107.08L612.34,109.82L616.22,109.66L617.68,108.69L619.29,109.99L620.91,110.47L622.2,109.66L623.33,109.66L624.95,108.69L628.99,105.14L632.39,104L639.02,103.68L643.54,101.74L646.13,100.45L647.58,100.61L647.58,106.27L648.07,106.59L650.98,107.4L652.92,106.91L659.06,105.3L660.19,104.17L661.65,104.65L661.65,111.6L664.88,114.67L666.17,115.32L667.47,116.29L666.17,116.61L665.37,116.29L661.65,115.81L659.55,116.45L657.28,116.29L654.05,117.75L652.27,117.75L646.45,116.45L641.28,116.61L639.34,119.2L632.39,119.85L629.96,120.66L628.83,123.73L627.54,124.86L627.05,124.7L625.6,123.08L621.07,125.51L620.42,125.51L619.29,123.89L618.48,124.05L616.54,128.42L615.57,132.46L612.39,139.46L611.22,138.42L609.85,137.39L607.9,127.1L604.36,125.73L602.31,123.45L590.19,120.7L587.33,119.67L579.1,117.5L571.21,116.36L567.49,111.21z","name":"Michigan"},"vt":{"path":"m833.16,106.59c0.19,6 4.65,11.21 3.72,17.28 -2.48,4.23 4.52,7.29 2.22,11.58 0.9,1.59 4.66,1.96 4.06,5.25 1.08,4.21 2.86,8.34 1.84,12.76 3.35,-0.51 7.06,-1.17 10.13,-1.97 -0.21,-2.13 1.51,-5.75 -0.53,-7.81 0.2,-7.64 1.01,-15.26 1.13,-22.91 -3.25,-2.41 0.32,-3.79 2.12,-5.18 1.96,-2.28 3.9,-5.07 2.6,-8.1 -2.62,-1.63 -1.02,-5.94 -2.39,-7.22 -8.3,2.1 -16.59,4.21 -24.89,6.31z","name":"Vermont"},"me":{"path":"m889.88,40.22c-2.16,1.31 -3.69,2.74 -4.84,4.69 -2.29,0.6 -4.99,-1.37 -4.88,-3.94 -2.97,-0.82 -3.33,3.68 -4.37,5.71 -1.09,4.29 -3.27,8.39 -3.97,12.69 -0.06,3.04 1,6.63 -1.35,9.09 0.08,2.92 -0.75,6.18 2,8.16 -1.37,5.7 -6.23,10.36 -5.41,16.56 -4.27,-2.21 -1.74,2.47 -1.09,4.73 3.51,11.08 7.19,22.16 10.25,33.35 0.21,3.01 5.81,1.35 4.53,5.7 2.9,2 2.06,-3.92 2.66,-5.87 -1.01,-3.29 2.7,-4.63 0.66,-7.62 0.94,-1.05 2.92,-5.9 4.61,-3.46 2.03,1.03 5.28,-1.89 6.74,-3.19 -0.98,-4.02 4.21,-1.75 4.73,-5.32 -1.11,-2.61 0.74,-5.45 -0.57,-7.44 -2.42,-1.59 3.53,-4.63 3.31,-0.78 2.27,0.48 2.15,2.8 3.66,3.93 1.94,-2.82 -2.15,-3.81 0.35,-6.03 2.43,-0.81 3.1,-3.96 6,-3.31 -0.17,1.46 1.03,3.34 2.26,1.38 2.94,-2.9 5.24,-7.08 9.37,-8.34 1.17,-2.61 3.34,-5.74 0.71,-8.24 -0.55,-1.64 -3.68,-4.84 -4.15,-2.58 -0.75,2.6 -4.66,-0.65 -4.92,-2.22 0.1,-2.8 0.29,-7.17 -3.8,-5.81 -3.96,1.36 -3.64,-3.04 -4.69,-5.61C905.22,58.3 902.75,50.15 900.28,42c-2.86,-1.25 -5.71,-2.92 -8.81,-3.38 -0.53,0.53 -1.06,1.06 -1.59,1.59z m20.47,61c-2.81,1.7 1.87,5.16 1.13,1.22 1.48,-0.9 0.13,-2.4 -1.13,-1.22z m-7.81,7.81c3.16,6.67 2.63,-3.59 0,0z","name":"Maine"},"ri":{"path":"m871,164.28c1.15,4.66 2.29,9.31 3.44,13.97 2.56,-0.49 4.66,-2.29 5.84,-4.56 4.17,0.76 4,-2.64 1.51,-4.97 -1.79,-1.94 -3.16,-5.31 -5.74,-5.92 -1.68,0.49 -3.37,0.99 -5.05,1.48z","name":"Rhode Island"},"ny":{"path":"m825.56,108.66c-2.7,1.12 -5.45,1.68 -8.33,1.43 -5.07,0.72 -10.17,2.73 -12.92,7.31 -2.84,3.43 -4.89,7.49 -7.18,11.2 -1.65,2.36 -5.82,3.73 -5.55,6.84 -0.17,3.56 5.77,0.73 4.43,4.38 -2.69,2.3 0.8,4.23 0.56,6.59 0.5,3.47 -4.26,1.99 -5.36,4 -1.62,2.71 -3.35,6.62 -7.22,6.05 -3.04,-0.43 -5.35,2.05 -7.98,2.63 -2.5,-0.75 -4.7,-2.05 -7.59,-1.31 -5.31,0.21 -10.62,1.98 -15.23,4.53 -0.29,1.77 0.61,6.25 3.17,6.14 1.55,2.48 2.09,4.96 -0.63,6.72 -1.51,1.76 -1.8,4.25 -4.16,5.3 -1.93,1.14 -2.68,3.51 -4.8,4.54 0.33,3.07 -0.22,7.29 4.08,5.12 22.14,-4.26 44.26,-8.68 66.23,-13.74 0.98,3.85 5.67,1.32 6.44,4 0.64,2.93 1.36,7.4 5.33,6.88 3.14,1.9 6.9,3.68 10.69,4.22 2.71,0.47 7.18,1.43 6.44,5.06 -0.33,1.97 -1.62,7.56 1.97,5.93 5.3,-1.65 10.96,-2.84 15.06,-6.85 3.23,-2.49 6.76,-4.64 9.35,-7.86 -2.99,-2.44 -4.65,0.46 -6.81,2.42 -2.91,1.56 -6.01,3.51 -9.16,4.32 -2.6,-0.63 -4.83,-0.86 -6.18,2.07 -1.03,2.04 -4.86,2.98 -3.98,-0.15 4.26,-1.87 -2.17,-3.97 -0.33,-6.21 1.19,-3.13 0.56,-6.87 0.42,-10.21 -1.43,-7.38 -3.69,-14.76 -2.54,-22.36 -0.08,-4.46 1.55,-8.97 -0.51,-13.21 -1.22,-2.56 -0.47,-6.83 -4.05,-7.34 -2.99,-0.66 0.75,-4.31 -1.57,-6.2 -1.7,-2.43 -3.17,-4.91 -1.54,-7.81 0.38,-5.77 -3.83,-10.57 -3.55,-16.35 -2.32,0.65 -4.65,1.29 -6.97,1.94z","name":"New York"},"pa":{"path":"m798.88,181.63c-17.5,3.38 -34.87,7.42 -52.47,10.28 -0.61,-2 0.48,-8.42 -2.41,-4.31 -2.18,2.73 -5.48,3.74 -8.09,5.97 1.52,9.75 2.63,19.57 5.44,29.05 1.14,6.09 2.27,12.17 3.41,18.26 8.85,-1.42 17.79,-2.25 26.51,-4.41 16.39,-3.45 33.03,-6.46 49.33,-9.87 2.48,-3.07 8.03,-1.69 8.97,-6.19 0.64,-2.36 4.86,-3.99 4.33,-5.9 -2.3,-1.89 -5.94,-2.77 -6.39,-6.13 -3.14,1.09 -4.42,-3.94 -3.12,-5.32 3.86,-1.1 -0.49,-3.68 0.55,-5.96 2.52,-1.88 1.12,-5.15 2.81,-7.07 3.87,-2.7 -2.98,-1.1 -3.72,-3.99 -1.35,-2.18 -0.28,-7.24 -4.16,-5.92 -2.34,-1.13 -3.87,-3.75 -7.09,-1.7 -4.64,1.07 -9.28,2.15 -13.92,3.22z","name":"Pennsylvania"},"nj":{"path":"m827.84,191.34c1.03,2.99 -1.82,4.8 -2.06,7.47 2.86,1.63 0.49,4.87 -0.92,5.73 -0.41,3.86 4.01,1.68 4.16,5.14 1.37,2.19 4.72,3.02 6.26,4.94 -0.15,2.61 -3.85,3.5 -4.69,6.06 -0.26,3.07 -4.09,3.19 -4.18,5.96 -0.99,2.38 -0.74,5.09 1.7,6.47 2.85,2.76 6.86,3.99 10.73,4.38 0.48,1.55 -1.84,7.18 1.1,3.59 1.5,-2.42 0.59,-5.95 3.11,-8.01 2.5,-4.08 5.03,-8.84 4.88,-13.61 -1.35,-4.07 0.8,-9.01 -1.81,-12.82 -1.1,1.32 -6.17,1.23 -4.13,-0.8 2.39,-1.39 3.37,-3.62 2.39,-6.31 0.21,-2.31 1.58,-5.42 -1.69,-6.19 -4.35,-1.15 -8.82,-2.13 -12.88,-4.26 -0.66,0.75 -1.31,1.5 -1.97,2.25z","name":"New Jersey"},"de":{"path":"m824.88,225.34c-3.72,0.25 -3.47,3.52 -1.91,6.13 3.35,6.89 3.86,14.58 6.03,21.81 3.45,0.11 6.81,-0.49 10.16,-1.25 -1.2,-2.17 -0.68,-6.38 -3.32,-6.38 -2.9,-1.2 -4.17,-3.69 -4.9,-6.58 -0.91,-3.11 -3.62,-4.96 -5.48,-7.35 -1.85,-1.82 0.94,-5.5 -0.26,-6.47l-0.33,0.09z","name":"Delaware"},"md":{"path":"m813.59,229.19c-17.31,3.18 -34.53,6.83 -51.78,10.28 0.74,3.02 1.31,6.08 1.78,9.16 2.14,-1.9 3.29,-5.35 6.59,-5.34 2.14,-1.85 2.67,-5.25 5.77,-3.55 3.46,0.18 5.43,-5.35 9.01,-3.85 2.63,1.63 5.66,2.79 7.34,5.59 4.19,0.11 3.68,3.73 5.74,4.96 2.73,1.11 5.02,1.18 6.38,-0.53 4.29,1.38 2.24,3.74 1.44,6.9 0.09,2.97 -3.7,4.92 -1.66,7.97 3.1,1.31 6.4,1.2 9.63,1.4 2.17,1.58 6.83,1.03 3.79,-2.1 0.41,-2.74 -3.08,-3.35 -3.32,-6.04 -1.7,-2.67 -1.42,-5.47 -0.36,-8.32 1.68,-2.42 -2.83,-3.82 -0.4,-5.41 1.25,-1.53 0.43,-4.16 2.98,-4.7 1.62,-3.02 5.1,-1.45 2.35,1.02 -2.54,2.98 -0.81,4.5 0.57,6.3 1.41,3.55 -0.68,5.07 -1.53,7.31 -0.22,-0.81 3.62,-1.01 3.22,1.79 -3.15,1.64 -1.45,6.12 1.09,7.31 2.98,0.99 5.58,-1.8 6.98,2.14 1.5,3.75 4.92,0.81 7.41,-0.02 2.74,-1.21 3.47,-4.93 2.78,-7.7 -1.13,-1.58 -4.82,0.92 -7.13,0.4 -3.86,1.26 -4.9,-1.25 -5.28,-4.64 -1.68,-5.97 -2.14,-12.33 -5.16,-17.9 -0.04,-4.32 -2.71,-4.2 -6.07,-2.91 -0.73,0.16 -1.45,0.31 -2.18,0.47z m10.94,32.59c1.32,0.99 0.59,4.97 2.06,4.63 -0.48,-1.31 -0.36,-4.99 -2.06,-4.63z","name":"Maryland"},"va":{"path":"m792.88,242.88c-0.16,1.46 0.24,5.89 -2.4,4.29 -2.58,-0.67 -6.42,-3.2 -8.23,-2.73 0.7,3.72 -1.46,6.77 -2.99,9.94 -3.05,1.14 -2.29,5.83 -5.84,5.58 -1.62,1.74 -1.47,5.31 -2.45,7.73 -3.09,1.14 -5.37,-0.48 -7.28,-1.75 0.11,6.5 -3.72,11.95 -5.91,17.84 -1.69,1.73 1.19,3.8 -0.74,5.77 -1.35,3.56 -3.79,2.72 -6.19,4.19 -2.72,1.1 -4.9,0.5 -5.4,4.61 -2.07,1.14 -4.83,2.63 -6.91,0.47 -2.38,1.51 -5.02,3.21 -7.81,1.6 -2.69,-0.01 -3.9,-6.55 -6.07,-2.94 -3.27,4.09 -7.89,7.48 -10.21,12.09 0.43,3.25 -4.46,3.32 -6.42,5.15 -4.27,1.95 3.62,-0.11 5.16,-0.07 5.56,-0.79 11.14,-1.37 16.76,-1.36 1.95,-2.65 4.98,-1.81 7.77,-1.65 7.86,-0.32 15.65,-2.12 23.48,-2.99 12.85,-1.4 25.44,-4.27 38.04,-7.05 11.65,-2.52 23.3,-5.03 34.96,-7.55 -1.64,-2.66 -2.75,-6.67 -6.42,-4.14 -1.99,2.03 -6.61,-1.82 -2.7,-2.48 2.65,-1.62 -1.75,-4.07 -1.8,-5.97 -2.73,-0.62 -2.88,-5.12 0.54,-3.6 -0.17,-1.37 -1.24,-3.62 -1.62,-5.68 1.47,-3.51 -0.84,-4.97 -3.72,-5.16 0.31,-3.42 -2.9,-2.93 -5.22,-3.97 -3.33,0.21 -7.06,-0.25 -9.91,-1.66 -1.22,-2.41 -0.91,-5.12 1.25,-6.88 1.39,-2.83 -0.28,-5.7 -3.3,-6.27 -2.65,-0.83 -6.97,-0.29 -5.73,-4.3 -0.83,-0.3 -2.05,-1.06 -2.69,-1.06z m39.16,21.59c0.44,4.71 -3.15,8.7 -2.62,13.48 -0.34,4.11 2.64,5.72 3.48,0.92 1.71,-3.04 -0.23,-6.47 0.8,-9.73 0.4,-2.53 3.66,-3.88 3.52,-6.73 -1.73,0.69 -3.46,1.38 -5.19,2.06z","name":"Virginia"},"wv":{"path":"m739.75,223.25c-1.6,2.23 1.3,5.02 0.25,7.75 -0.18,4.04 -0.63,8.11 -0.84,12.13 -1.94,3.58 -4.43,7.35 -8.16,9.13 -3.15,-1.33 -3.92,3.25 -5.76,4.98 -1.56,2.28 2.64,4.93 -0.3,6.69 -2.57,3.58 -2.6,-4.8 -4.46,-0.71 -1.32,2.59 0.02,6.02 -1.35,8.33 -1.82,1.54 -0.53,5.19 -4.16,4.81 -2.23,0.13 -1.45,6.19 1,6.81 2.24,1.47 2.49,4.74 5.5,5.92 1.92,1.96 2.28,5.18 5.39,6.05 1.64,2.19 3.07,4.96 6.25,4.88 2.63,0.5 4.77,-3.86 7.22,-1.35 1.49,0.81 3.93,-0.57 4.58,-1.83 0.43,-4.57 3.42,-2.71 6.03,-4.39 2.39,-0.94 4.82,-0.98 5.62,-4.44 -1.26,-2.59 0.3,-5 1.56,-7.64 2.23,-4.81 4.72,-9.61 4.67,-15.05 2.65,-2.31 3.72,3.56 7.05,1.41 1.64,-1.77 1.12,-5.67 2.6,-7.59 3.47,0.39 2.97,-3.96 5.76,-5.21 2.29,-3.11 3.52,-6.8 3.06,-10.7 1.06,-1.29 5.1,1.62 7.23,2.15 3.3,3.35 4.34,-1.98 2.85,-4.05 -2,-2.28 -5.12,-3.7 -7.62,-4.75 -3.31,0.98 -5.44,5.47 -9.38,3.97 -1.86,-0.23 -2.38,3.98 -4.86,3.88 -2.89,0.71 -3.79,4.38 -6.03,6.22 -1.1,-0.06 -0.99,-4.82 -1.62,-6.64 -0.01,-3.93 -1.77,-5.3 -5.48,-3.82 -4.21,0.6 -8.41,1.23 -12.61,1.91 -1.17,-6.45 -2.29,-12.92 -3.44,-19.38l-0.35,0.35 -0.18,0.18z","name":"West Virginia"},"oh":{"path":"m729.5,197.78c-4.85,2.06 -7.38,6.9 -11.47,9.97 -4.08,0.86 -8.09,1.75 -11.72,3.88 -3.41,1.61 -4.39,-4.09 -7.67,-2.63 -3.13,1.35 -5.49,-1.1 -8.11,-2.41 -8.6,1.15 -17.15,2.64 -25.66,4.38 1.45,17.83 4.12,35.53 5.87,53.33 -0.69,3.82 4.06,2.26 6.23,1.48 2.74,0.41 4.83,2.16 5.48,4.94 1.26,2.48 5.82,-0.87 6.96,2.54 2.19,1.53 4.46,-2.33 7.03,-0.58 2.52,0.04 5.62,1.51 6.84,-1.56 1.49,-0.55 5.37,-3.85 5.41,-0.71 0.38,2.53 3.82,3.57 5.77,4.7 3.53,0.63 2.32,-3.91 4.21,-5.51 -0.11,-2.74 0.21,-5.73 1.39,-8.13 2.53,-2.81 3.8,4.53 4.98,0.39 -2.02,-2.27 -0.99,-5.41 0.93,-7.41 1.07,-4.06 4.05,-2.41 6.5,-4.39 2.93,-3.16 6.59,-6.57 5.97,-11.27 0.44,-4.71 1.18,-9.75 -0.53,-14.23 1.47,-2.48 2.58,-4.29 0.96,-7.33 -2.04,-7.53 -2.56,-15.37 -3.93,-23.04 -1.81,1.2 -3.63,2.4 -5.44,3.59z","name":"Ohio"},"in":{"path":"m658.66,210.31c-9.12,0.93 -18.35,1.98 -27.41,2.68 -2.6,0.39 -4.21,5.08 -6.89,2.98 -3.83,-2.84 -2.64,1.83 -2.41,4.45 1.1,14.81 2.73,29.61 3.44,44.42 -0.76,3.69 -1.39,7.89 1.36,10.91 0.1,2.99 1.4,6.28 -1.14,8.65 -1.83,2.73 -2.55,6.09 -5.02,8.42 0.09,2.08 -2.02,8.2 1.63,5.16 3.49,-0.6 7.25,-1.53 10.69,-1.34 2.36,4.08 2.67,-0.62 5.26,-1.29 2.03,-2.62 4.78,2.05 5.34,1.04 -1.26,-3.41 3.05,-3.77 5.1,-5.22 1.09,0.63 6.05,3.38 5.3,-0.64 -0.46,-2.47 2.02,-4.71 3.65,-6.34 3.11,-1.39 4.33,-3.9 4.16,-7.23 1.83,-1 4.93,-1.01 6.97,-2.47 4.23,-1.03 0.26,-3.48 1.22,-5.92 -0.83,-12.56 -2.8,-25.13 -4.08,-37.69 -0.85,-6.99 -1.44,-14.01 -2.14,-21.02 -1.68,0.16 -3.35,0.31 -5.03,0.47z","name":"Indiana"},"il":{"path":"m569.75,200.44c-0.29,2.58 4.2,1.83 3.73,5.07 2.07,2.09 5.71,4.21 4.38,7.77 -0.31,3.04 -2.61,5.44 -3.08,8.4 -2.38,2.71 -6.06,2.98 -9.31,3.94 -1.61,2.47 -1.05,4.91 1.28,6.47 0.63,3.25 -1.08,5.07 -2.74,7.38 1.41,3.63 -2.39,2.86 -3.56,5.02 1.08,3.12 -2.11,3.8 -2.53,6.64 0.19,3.95 1.33,8.21 3.28,11.58 3.68,3.96 7.38,7.9 12.21,10.47 -0.61,2.88 -0.64,6.7 3.43,5.71 2.05,0 6.18,0.38 6.26,2.68 -0.19,4.39 -3.6,8.24 -3.28,12.53 1.6,3.83 5.33,6.26 8.59,8.42 3.37,-0.29 5.36,1.27 5.9,4.6 1.01,2.64 3.84,4.73 1.73,7.67 0.55,1.74 2.58,7.7 4.31,4.05 1.21,-2.98 5.41,-4.78 8.07,-2.46 3.1,2.46 5.94,0.47 3.13,-2.8 -0.98,-3.39 2.61,-4.96 5.37,-5.33 1.01,-1.55 -1.6,-4.46 1.4,-5.97 1.8,-3.97 -0.56,-9.39 3.32,-12.49 1.43,-2.97 3.23,-5.97 4.4,-8.97 0.13,-3 -0.7,-5.7 -2.34,-8.16 -0.45,-4.59 1.31,-9.09 0.02,-13.65 -1.16,-15 -2.22,-30.05 -3.67,-45.01 -1.02,-3.1 -1.61,-6.46 -4.04,-8.77 -2.27,-1.83 -0.51,-5.93 -1.97,-7.32 -14.76,0.83 -29.52,1.67 -44.28,2.5z","name":"Illinois"},"ct":{"path":"m865.78,165.41c-6.91,1.54 -13.81,3.08 -20.72,4.63 2.17,6.2 2.74,12.83 2.44,19.34 -2.62,4.3 2.61,2.38 3.97,-0.21 2.09,-1.89 4.19,-3.71 5.99,-5.88 2.06,1.35 4.78,-1.86 7.44,-1.46 2.98,-0.68 5.69,-2.24 8.56,-3.26 -1.15,-4.67 -2.29,-9.33 -3.44,-14 -1.42,0.28 -2.83,0.56 -4.25,0.84z","name":"Connecticut"},"wi":{"path":"m559.53,104.97c-4.06,2.75 -8.71,4.92 -13.53,5.84 -2.88,-1.08 -5.54,-1.12 -5.57,2.68 -0.48,3.34 0.51,7.03 -0.47,10.17 -2.02,3.26 -6.91,4.03 -7.36,8.38 -2.63,2.78 2.21,3.06 2.23,5.53 1.79,2.9 -2.13,4.74 -1.33,7.65 0.29,2.93 -0.4,6.49 1.14,8.93 1.33,3.48 5.88,0.21 6.64,3.93 1.56,2.26 5.47,1.03 6.19,4.78 2.15,5.1 9.7,4.85 11.21,10.39 0.68,3.38 0.35,7.34 1.94,10.32 3.26,1.05 1.94,4.34 0.25,6.21 -0.79,3.96 2.53,8.34 6.75,8.25 2.28,1.6 4.86,1.65 7.83,1.19 13.03,-0.77 26.07,-1.53 39.1,-2.3 -0.02,-4.45 -1.98,-8.61 -1.86,-13.13 -1.7,-2.04 -0.86,-4.17 -0.04,-6.39 0.32,-2.84 3.07,-4.93 1.51,-7.87 -1.05,-2.94 -0.88,-6.21 1.73,-8.27 -0.2,-2.83 -0.5,-5.03 -0.16,-7.93 -1.14,-4.2 2.64,-7.5 3.69,-11.36 0.92,-1.13 3.15,-8.34 0.73,-4.93 -2.65,3.81 -4.99,8.01 -8.18,11.29 -0.86,2.06 -3.21,4.55 -5.21,4.5 -2.57,-1.26 0.28,-4.49 0.9,-6.41 0.47,-2.94 3.2,-4.25 4.09,-6.85 -3.31,-1.29 -2.77,-5.03 -3.54,-7.92 0.02,-3.09 -1.23,-5.08 -4.29,-5.57 -2.14,-3.67 -7.04,-2.78 -10.59,-4.12 -7.13,-1.87 -14.21,-4.39 -21.67,-4.99 -2.48,-0.54 -2.84,-5.51 -5.51,-4.73 -1.71,-1.54 -3.85,-0.7 -5.82,0.13 -2.8,-1.32 0.68,-4.59 1.5,-6.38 2.18,-1.34 -1.53,-2.14 -2.31,-1z","name":"Wisconsin"},"nc":{"path":"m830.06,295.97c-18.3,3.8 -36.53,8 -54.86,11.65 -12.74,1.51 -25.38,4.07 -38.18,4.94 -3.32,-0.82 -1.17,3.72 -2.5,5.53 -2.62,1.34 -3.49,4.59 -5.03,6.38 -3.24,-1.36 -5.07,1.46 -6.34,3.97 -1.09,-0.57 -2.96,0.03 -3.41,-1.41 -2.02,1.96 -4.37,3.73 -4.31,6.81 -3.66,1.1 -6.31,3.82 -9.28,5.96 -2.64,0.94 -5.76,2.16 -7.4,4.35 0.73,4.06 -2.98,3.3 -5.1,5.29 -1.98,4.69 2.74,2.66 5.58,2.5 6.41,-1.19 13.32,-0.49 19.18,-3.73 5.04,-1.9 9.41,-5.9 15.06,-5.67 6.5,-0.64 13.15,-0.6 19.62,-0.69 2.99,0.53 3.36,4.79 5.58,5.01 5.37,-0.81 10.87,-1.67 16.25,-1.79 5.38,1.36 9.61,5.45 14.52,7.93 3.59,2.64 6.93,5.66 10.43,8.44 3.15,-0.86 6.32,-1.58 9.59,-1.72 1.06,-4.55 2.04,-9.29 5.39,-12.78 4.2,-4.27 9.23,-8.29 15.33,-9.29 2.91,1.95 3.69,-2.9 5.27,-4.53 2.72,-5 -2.44,3.91 -2.46,-1.22 -3.87,0.7 -5.43,-0.26 -3.29,-4 2.77,-4.25 -2.73,-2.51 -2.12,-6.02 -1.42,-3.76 2.84,2.19 5.06,0.81 2.81,0.12 5.1,-1.87 5.59,-4.6 0.45,-2.9 4.59,-2.7 3.28,-6.48 -4.02,-2.43 4.25,-0.66 0.4,-3.93 -3.52,-3.44 -5.24,-8.33 -7.23,-12.76 -1.54,0.35 -3.08,0.71 -4.63,1.06z m17.13,23.72c1.55,2.61 -4.64,4.26 -0.52,2.69 1.38,-1.92 0.21,-5.22 0.24,-7.62 -0.74,-2.05 0.37,4.57 0.28,4.94z","name":"North Carolina"},"dc":{"path":"m803.44,248.16c2.67,3.43 3.85,-1.02 0.55,-0.75l-0.29,0.4 -0.25,0.35z","name":"District of Columbia"},"ma":{"path":"m877.59,144.41c-1.04,3.1 -4.01,3.5 -6.79,4.13 -8.62,2.32 -17.17,4.6 -25.96,6.12 -0.11,4.77 -1.17,9.59 -0.03,14.31 10.66,-2.6 21.54,-4.29 32,-7.44 3.57,2.81 6.01,6.73 8.28,10.59 2.13,-0.78 0.01,-5.15 3.77,-5.38 2.93,-3.28 1.83,4.78 3.17,2.62 2.13,-3.09 6.1,-3.9 9.41,-5.21 -0.11,-3.41 -2.21,-8.55 -6.38,-7.53 1.64,-0.1 4.89,0.87 4.91,3.82 0.85,2.24 -2.55,3.71 -4.35,4.24 -3.37,0.51 -4.99,-1.76 -6.32,-4.47 -1.38,-2.05 -3.58,-6.56 -6.3,-3.6 -1.89,-1.72 -3.13,-4.04 -1.33,-6.3 2.3,-2.34 1.23,-6.2 -1.28,-7.16 -0.93,0.41 -1.86,0.82 -2.79,1.24z M902.25,172.69c-1.6,2.76 3.05,-2.44 0.08,-0.32l-0.08,0.32z m-11.28,1.28c1.59,0.78 6.09,-2.26 1.78,-2.03 -0.59,0.68 -1.19,1.35 -1.78,2.03z","name":"Massachusetts"},"tn":{"path":"m730.41,314.34c-8.87,-0.11 -17.76,1.5 -26.57,2.73c-10.24,2.86 -20.99,2.66 -31.48,4.02c-16.34,1.45 -32.65,3.29 -48.96,4.95c-4.57,-1.71 -0.43,5.74 -5.06,4.14c-6.97,0.06 -13.87,1.23 -20.84,0.71c-0.95,4.26 -1.37,9.04 -3.6,12.76c1.03276,2.6246 -1.94104,7.30425 -2.59092,9.90471c-2.52529,1.78965 -2.61104,1.92035 -0.46104,4.90035c3.07759,1.94598 -1.38459,5.12506 1.90081,3.86506c33.91,-3.26 65.53115,-6.30012 99.44115,-9.56012c-0.23,-2.54 0.72,-5.31 3.53,-5.69c3.11,-0.4 0.99,-5.41 4.88,-5.81c2.77,-2.02 6.49,-2.19 8.62,-5.18c1.76,-2.26 6.31,-1.64 5.78,-5.38c1.19,-1.77 3.1,-3.84 5.03,-4.85c1.04,-0.39 0.28,1.78 1.72,1.19c2.38,0.56 2.2,-4.36 5.22,-3.86c3.3,1.27 2.68,-2.92 4.96,-4.18c2.05,-0.94 3.81,-6.68 0.92,-6.59c-0.81,0.64 -1.63,1.27 -2.44,1.91l0,0.02z","name":"Tennessee"},"ar":{"path":"m509.47,335.31c1.73,4.9 1.5,10.02 1.53,15.12c2.15,12.21 1.13,24.64 1.47,36.97c0.02,3.71 0.04,7.42 0.06,11.13c2.06,3.2 5.05,-1.45 7.69,1.47c1.53,1.76 -0.88,7.54 2.97,6.49c17.61,-0.36 35.23,-0.72 52.84,-1.08c1.97,-2.6 0.41,-5.9 -1.28,-8.22c3.3,-1.61 -1.59,-3.96 0.84,-6.53c0.75,-2.77 0.62,-6.34 3.78,-7.69c-1.88,-3.07 2.08,-5.24 3.19,-7.88c3.77,-0.38 1.58,-3.3 2.64,-5.42c1.12,-2.67 2.56,-5.28 4.85,-6.58c1.2,-4.12 0.21,-2.67 -1.53,-5.61c-2.76,-3.32 1.95,-3.50023 2.36,-6.84c0.17988,-0.90552 3.08012,-6.46012 1.22,-6.75c-2.65,0.85 -5.34,-0.18 -8.02,-0.33c-0.09,-3.38 4.4,-3.88 4.22,-7.3c0.58,-3.87 -3.58,-3.68 -6.34,-3.26c-24.17,0.77 -48.34,1.54 -72.5,2.31l0.01,0z","name":"Arkansas"},"mo":{"path":"m490.44,245.63c-2.39,-0.46 -0.19,4.05 0.07,5.6 2.45,3.32 4.51,7.86 8.55,9.22 2.81,-0.24 3.61,2.67 2.79,4.84 -3.22,1.64 -1.72,5.03 0.19,7.07 0.9,2.55 4.61,3.05 4.89,5.61 2.1,12.97 1.12,26.14 1.51,39.22 0,5.72 0.08,11.44 0.72,17.13 24.99,-0.94 49.98,-1.8 74.97,-2.51 3.02,-1.12 4.35,1.72 5.31,3.98 0.52,3.48 -2.86,4.46 -4.14,6.86 2.37,0.64 5.57,0.65 8.21,-0.08 1.46,-3.59 1.87,-7.45 2.38,-11.22 0.84,-2.83 5.27,-2.89 4.61,-6.03 1.37,-2.94 0.14,-4.6 -2.22,-4.28 -2.15,-1.81 -2.84,-5.03 -2.86,-7.6 1.45,-2.84 -2.08,-5.07 -2.44,-7.89 -0.66,-3.24 -5.34,-0.87 -6.89,-3.66 -2.64,-2.34 -6.24,-3.94 -6.91,-7.76 -0.94,-3.21 1.52,-6.47 2.17,-9.64 2.2,-3.53 -1.34,-4.7 -4.33,-4.5 -2.66,0.39 -5.34,-1.15 -4.81,-4.1 0.86,-4.07 -4.71,-4.05 -6.43,-6.93 -2.7,-3.4 -6.72,-6.05 -7.25,-10.67 -1.1,-3.16 -2.12,-6.86 -0.62,-10.06 -2.3,-1.34 -2.28,-5.77 -5.37,-4.89 -20.69,0.77 -41.38,1.53 -62.06,2.3z","name":"Missouri"},"ga":{"path":"m672.78,356c-0.74,7.06 4.28,12.69 5.29,19.4 1.36,6.57 3.44,12.96 5.03,19.44 0.94,4.88 2.17,9.95 5.53,13.75 -0.85,3.5 3.37,3.17 2.59,6.44 -1.89,4.45 -3.57,9.65 -0.84,14.13 0.05,2.63 0.94,5.4 -0.38,7.88 2.95,0.94 1.45,4.01 3.07,6.01 1.35,2.67 3.68,4.75 6.83,4 12.35,-0.01 24.69,-1.31 37.03,-1.92 3.32,-0.58 6.67,-0.74 10.04,-0.59 -0.78,4.24 3.04,4.15 2.09,-0.09 -0.9,-2.14 -2.94,-6.23 0.59,-6.62 3.2,0.5 6.42,0.91 9.66,1.02 -0.84,-3.8 -0.8,-7.57 0.5,-11.27 0.2,-3.54 2.62,-6.73 2.21,-10.21 -0.72,-2.93 3.26,-5.26 2.85,-8.05 -2.19,1.37 -5.29,-0.71 -5.34,-3.19 -0.56,-3.12 -2.71,-5.83 -6.03,-6.06 -1.33,-3.9 -2.62,-8.17 -4.99,-11.43 -3.12,-1.07 -6.13,-2.99 -7.17,-6.29 -2.06,-2.33 -5.23,-3.21 -6.66,-6.16 -2.08,-2.2 -5.24,-2.83 -7.66,-4.19 -0.76,-2.53 -3.21,-4.09 -3.94,-6.67 -1.36,-2.63 -2.97,-4.65 -6.15,-3.77 -2.33,-1.57 -7.15,-3.38 -5.31,-6.97 2.02,-2.01 3.76,-4.11 -0.8,-3.11 -12.68,1.51 -25.37,3.01 -38.05,4.52z","name":"Georgia"},"sc":{"path":"m737.03,343.19c-4.26,0.4 -8.64,0.43 -12.24,3.07 -3.2,1.75 -6.48,3.19 -9.88,4.49 2.21,3.31 -4.28,2.74 -2.34,6.44 2.27,2.24 5.2,4.13 8.5,3.28 2.53,3.15 3.83,6.94 6.53,9.88 0.91,2.76 5.13,2.06 6.85,4.46 2.18,1.38 2.96,4.25 5.62,5.01 2.99,1.95 3.36,6.38 7.26,7.24 3.61,0.62 3.77,4.77 5.34,7.38 0.38,3.35 2.02,4.84 4.79,5.96 3.36,1.79 1.76,7.23 5.67,8.16 3.63,-1.38 5.8,-4.63 8.38,-7.34 -2.35,-3.93 0.29,-3.32 3.01,-4.44 1.95,-2.4 5.02,-3.3 6.25,-6.28 2.17,-2 3.86,-4.52 5.4,-6.9 2.81,-0.17 3.42,-3.58 4.92,-5.03 -0.28,-4.13 1.3,-7.89 3.12,-11.47 1.03,-2.11 7.03,-4.5 3.47,-6.34 -5.97,-5.35 -12.78,-9.5 -19.71,-13.47 -4.45,-2.68 -9.74,-0.07 -14.57,-0.06 -2.57,-0.23 -6.63,2.48 -7.32,-1.28 -1.66,-4.5 -6.93,-2.82 -10.63,-2.96 -2.8,0.07 -5.61,0.14 -8.41,0.21z","name":"South Carolina"},"ky":{"path":"m675,267.5c-2.76,-0.77 -6,1.11 -3.38,3.78 1.52,3.15 -3.12,4.12 -5.19,5.27 -2.94,0.53 -4.71,1.29 -4.3,4.82 -1.15,2.66 -5.3,3.24 -6.32,6.32 -2.16,1.4 0.74,6.22 -2.84,5.92 -3.06,0.61 -4.36,-2.79 -7.09,0.11 -2.26,0.51 -1.1,6.98 -3.85,3.1 -2.27,-2.54 -5.57,0.14 -6.16,2.81 -1.91,1.07 -3.4,-3.73 -6.02,-1.91 -3.32,0.61 -7.48,0.47 -9.92,2.91 0.08,2.65 -3.39,3.78 -1.7,6.05 2.34,2.66 -2.23,2.68 -3.86,3.3 -3.57,1.35 -0.68,4.35 -0.76,6.72 0.33,3.45 -3.76,1.44 -5.49,0.72 -2.5,-2.29 -6.26,-0.38 -7.13,2.53 2.86,2.28 -0.04,4.76 0.41,7.66 -3.47,2.04 -3.19,2.73 0.94,2.35 5.84,0.01 11.64,-0.95 17.5,-0.76 -0.7,-3.74 0.98,-4.99 4.56,-4.19 24.33,-3.01 48.82,-4.7 73.16,-7.43 4.3,-0.7 8.2,-2.38 11.75,-4.88 3.3,-0.8 4.04,-2.71 5.12,-5.35 3.46,-4.09 7.13,-8.06 10.79,-12 -3.27,-1.24 -3.03,-5.51 -6.21,-6.95 -2.6,-1.25 -2.07,-4.66 -5.16,-5.36 -2.38,-2.64 0.8,-7.28 -3.02,-8.87 -3.02,-0.01 -2.37,-4.65 -4.57,-3.51 -2.95,0.61 -3.67,4.78 -7.02,3.29 -2.69,-0.23 -5.51,-1.19 -7.82,0.71 -3,0.83 -3.99,-3.61 -7.44,-2.06 -3.51,0.82 -2.17,-5.19 -5.65,-5.26C677.17,266.43 676.21,267.17 675,267.5z","name":"Kentucky"},"al":{"path":"m628.53,359.63c-0.2,14.37 0.12,28.75 -0.54,43.12 -0.04,9.01 -0.88,18.1 -0.07,27.07 1.55,10 2.94,20.01 3.85,30.09 3.07,1.09 3.69,-1.92 4.4,-4.18 -0.3,-3.89 4.27,-3.02 4.89,-0.04 0.72,2.06 4.08,5.27 0.77,6.65 -0.15,0.92 6.17,-0.9 5.88,-2.89 -0.44,-3.01 0.64,-6.86 -2.87,-8.19 -2.29,-0.88 -3.03,-5.59 -0.32,-5.67 14.08,-1.86 28.21,-3.59 42.35,-4.8 2.7,1.07 6.76,-0.25 2.97,-2.5 -1.8,-2 0.95,-5.03 -0.27,-7.65 -0.31,-3.1 -2.63,-5.9 -1.31,-9.15 0.01,-2.92 2.49,-5.36 1.93,-8.3 -3.52,-0.45 -1.34,-5.11 -4.26,-6.7 -3.48,-5.82 -3.36,-13.04 -5.96,-19.21 -2.02,-8.09 -3.34,-16.41 -7.25,-23.88 -0.51,-2.39 -1.08,-4.85 -0.72,-7.31 -14.49,1.18 -28.98,2.35 -43.47,3.53z","name":"Alabama"},"la":{"path":"m521.09,407.28c0.1,7.53 -0.24,15.32 1.67,22.61 2.08,2.49 2.82,5.51 3.15,8.67 1.87,2.78 5.27,4.95 4.59,8.72 1.61,2.18 -0.21,5.69 0.08,8.38 0.42,2.64 -4.36,4.89 -2.01,7.12 1.07,2.26 -0.92,5.31 -0.53,7.95 0.38,3.22 -2.37,5.7 -1.55,8.93 5.18,-2.4 10.98,-0.86 16.47,-1.09 5.72,1.7 11.56,4.87 17.56,4.26 2.93,-2.25 5.94,0.36 8.98,0.93 1.08,-3.4 -4.22,-0.81 -5.8,-2.2 -1.91,-0.36 -2.89,-2.3 -1.17,-3.4 2.08,-1.1 4.08,-1.09 5.66,0.04 2.15,-1.39 5.6,-0.24 6.26,2.38 -0.33,3.62 3.42,1.7 5.28,3.15 3.83,1.5 -1.41,4.07 0.83,5.37 2.88,0.97 5.73,2.94 8.62,3.29 3.51,-0.05 2.81,-4.53 6.47,-4.17 1.83,-2.9 4.44,-0.25 4.39,2.31 1.53,1.64 4,-3.68 1.98,-3.66 0.22,-3.37 2.17,-3.21 4.31,-5.41 1.59,0.95 0.91,2.82 1.41,4.16 3.33,0.39 7.44,1.09 9.34,4.06 2.79,0.08 5.17,1.1 5.56,-2.56 -2.68,-0.27 -4.15,-3.88 -7.35,-3.19 -2.31,0.06 -6.3,-1.62 -6.15,-3.77 1.62,-3.62 2.23,-1.74 2.03,-4.38 2.88,1.09 5.69,-2.27 3.22,-4.47 0.46,-4.62 -3.73,-0.15 -3.34,2.19 -1.36,1.21 -6.35,-0.96 -4.6,-3.27 1.71,-1.84 4.2,-4.5 2.19,-6.95 -0.13,-3.26 -2.69,-5.21 -4.47,-7.38 0.52,-2.7 2.26,-7.35 -2.36,-5.46 -10.43,1.28 -20.97,0.69 -31.45,1.12 -1.61,-3.72 -0.02,-7.76 0.16,-11.59 2.66,-4.86 5.46,-9.65 8.25,-14.44 -2.04,-2.82 3.52,-4.45 -0.74,-6.48 -0.53,-2.15 -1.29,-4.65 -2.32,-6.83 -0.08,-3.1 0.9,-7.3 -3.62,-5.79 -17,0.28 -34,0.57 -51,0.85z","name":"Louisiana"},"ms":{"path":"m591.03,363.5c-1.45,1.74 -4.03,3.15 -4.63,6.03 -1.4,2.22 1.43,5.74 -2.69,6.07 -1.48,1.97 -4.77,4.42 -3.4,7.17 -1.36,1.83 -3.59,3.95 -3.48,7.01 -2.16,2.66 1.55,5.28 -0.27,7.12 -0.45,1.84 2.25,4.42 1.35,7.03 -1.92,2.71 -1.63,6.55 -0.61,9.53 1.6,2.4 0.78,5.54 3.73,6.94 -0.95,2.53 -1.41,3.75 -1.87,6.31 -2.55,4.96 -6.07,9.62 -7.89,14.84 0.01,2.98 -1.44,6.14 -0.14,8.97 11.4,-0.36 22.87,0.25 34.19,-1.5 2.75,2.21 -2.19,6.39 1.33,8.15 2.82,1.62 2.28,5.18 3.89,7.63 2.07,-1.86 2.51,-6.19 5.82,-4.07 3.21,-0.67 6.85,-3.02 9.89,-0.64 3.62,0.73 6.01,-0.27 4.42,-4.26 -0.81,-10.1 -2.99,-20.07 -3.84,-30.15 0.14,-21.99 1.48,-43.98 0.64,-65.97 -12.15,1.26 -24.29,2.52 -36.44,3.78z","name":"Mississippi"},"ia":{"path":"m476.25,181.16c-3.42,-0.05 -2.16,5.68 0.72,6.29 0.54,2.07 -0.75,5.06 -1.41,7.35 -2.13,2.82 -0.93,5.45 1.04,7.92 1.22,4.34 2.24,8.85 4.05,13.06 0.6,3.22 1.29,6.38 3.41,9 0.02,3.49 1.27,6.69 2.3,9.91 -0.04,3.54 0.03,7.05 2.08,10.09 22.2,-1.02 44.44,-1.75 66.66,-2.63 0.77,1.43 3.25,7.11 4.37,4.25 -0.96,-2.5 1.19,-4.52 3.57,-4.72 -0.88,-2.62 1.19,-4.59 2.5,-6.28 1.27,-2.92 -1.39,-4.02 -2.41,-6.31 0.69,-2.9 1.79,-5.3 5.13,-5.46 2.88,-0.83 6.57,-1.81 6.65,-5.41 1.76,-3.04 3.73,-8.01 -0.26,-10.18 -2.74,-1.06 -1.75,-5.27 -5.21,-5.14 -0.64,-1.97 -0.85,-4.76 -4.19,-4.21 -2.75,-0.8 -4.55,-3.47 -5.37,-6 -1.36,-2.89 2.01,-4.72 1.65,-7.28 -3.82,-0.4 -1.19,-6.5 -5.03,-5.47 -26.75,0.41 -53.5,0.81 -80.25,1.22z","name":"Iowa"},"mn":{"path":"m497.03,53.84c-0.69,2.52 0.93,7.42 -1.31,8.34 -9.65,-0.01 -19.29,-0.02 -28.94,-0.03 1.16,2.87 2.18,5.76 0.97,8.81 0.05,5.74 -0.79,11.86 2.51,16.95 2.04,3.78 0.64,8.47 1.5,12.6 0.82,6.84 1.76,13.67 3.55,20.32 0.05,3.83 0.88,7.8 0.03,11.53 -1.57,1.74 -4.91,3.29 -2.22,5.78 1.89,1.83 5.05,2.94 4.58,6.1 0.28,11.9 0.25,23.83 0.42,35.75 26.72,-0.38 53.44,-0.75 80.16,-1.13 -0.15,-3.62 -0.46,-7.93 -4.36,-9.47 -3.02,-1.66 -6.24,-3.1 -7.63,-6.5 -0.72,-3.61 -5.32,-1.16 -6.05,-4.61 -1.56,-2.09 -5.29,-0.37 -6.57,-3.78 -1.66,-2.1 -0.52,-5.5 -1.1,-8.1 -1.34,-2.93 1.65,-4.99 1.47,-7.54 -0.2,-3.22 -5.36,-3.85 -2.24,-7.43 0.41,-4.47 5.39,-5.33 7.61,-8.59 0.24,-3.87 -0.73,-8.14 0.52,-11.77 1.76,-3.14 5.17,-5.1 8.28,-6.26 1.92,-2.08 3.66,-4.57 6.13,-5.81 2.54,-4.97 6.04,-9.99 11.81,-11.4 4.55,-1.98 9.12,-3.92 13.6,-6.04 0.73,-3.15 -3.7,-0.18 -5.06,0.03 -0.82,-3.87 -4.2,-3.09 -7.28,-2.87 -2.25,-0.87 -5.34,2.83 -6,-0.66 -1.13,-3.5 -4.51,0.72 -5.88,2.13 -2.33,1.63 -6.22,1.16 -8.06,-0.56 0.94,-3.05 -4.61,-0.39 -4.53,-3.96 -0.16,-2.3 -3.48,1.3 -5.77,-1.2 -3.04,-0.91 -5.5,-3.22 -8.29,-4.38 -2.49,0.4 -5.86,-2.38 -6.7,1.5 -1.17,0.79 -7.15,1.83 -5.93,-1.54 -2.99,0.03 -6.03,-0.05 -7.53,-1.75 -2.6,0.59 -5.72,-0.41 -5.9,-3.43 -0.88,-3.28 -1.44,-6.61 -1.88,-9.98 -1.23,-0.6 -2.54,-1.02 -3.91,-1.06z","name":"Minnesota"},"ok":{"path":"m363.31,330.03c17.51,1.12 35.04,1.73 52.56,2.47 -1.37,13.62 -2.89,27.23 -2.83,40.93 -0.92,3.93 3.48,5.78 6.14,7.66 0.56,-5.56 2.96,1.46 4.25,-1.31 0.93,-1.5 5.57,1.68 3.39,4.42 1.59,0.66 4.76,0.51 6.73,1.82 2.79,-0.99 5.16,3.32 7.03,1.26 1.82,-1.93 5.59,-0.31 6.5,2.02 2.44,0.79 1.71,5.84 4.76,3.05 1.39,-1.65 6.25,-1.17 6.69,1.21 1.28,1.5 5.69,3.72 7.39,1.92 0.33,-2.75 3.38,-5.95 4.59,-1.83 3.59,0.38 6.96,2 10.46,3 2.28,-1.86 2.44,-4.68 6.53,-3.41 2.53,1.92 3.8,-1.41 6.31,-1.16 0.85,2.42 5.2,2.41 6.19,-0.5 3.2,-0.2 3.66,3.71 6.55,4.35 1.86,0.4 6.31,3.63 5.36,0.18 -0.32,-12.27 0.1,-24.59 -0.7,-36.82 -1.15,-6.03 -1.01,-12.18 -1.43,-18.25 -1.32,-5.29 -2.05,-10.73 -2.07,-16.18 -20.01,0.66 -40.04,-0.04 -60.06,-0.22 -27.85,-1.32 -55.73,-2.3 -83.53,-4.56 -0.27,3.31 -0.54,6.63 -0.81,9.94z","name":"Oklahoma"},"tx":{"path":"m359.47,330.97c2.34,-0.11 -0.86,-1.81 0,0z m0.72,18.31c-1.64,20.84 -2.52,41.75 -4.68,62.55 -0.51,4.33 -0.99,8.66 -1.51,12.98 -17.84,-0.87 -35.67,-1.93 -53.42,-3.89 -4.16,-0.41 -8.32,-0.76 -12.48,-1.11 -0.67,3.74 2.27,3.68 4.04,6.12 2.26,1.83 1.13,6.03 4.65,6.5 3.52,0.48 2.9,4.6 5.45,6.34 3.38,3.15 5.5,7.91 10.27,9.06 1.91,1.27 4,3.22 4.53,5.46 0.69,3.96 4.53,7.02 3.47,11.33 -0.88,5.15 2.22,9.63 5.93,12.88 2.18,2.95 5.14,4.76 8.63,5.78 1.88,1.95 3.01,3.88 5.72,4.88 2.59,0.18 5.38,4.34 7.35,1.18 2.59,-3.14 5.48,-6.41 6.05,-10.55 1.26,-2.82 3.58,-4.32 6.5,-5.06 2.72,-1.59 5.32,-2.13 7.47,0.62 4.91,0.57 10.2,0.53 14.79,2.22 2.83,1.43 2.56,4.53 5.17,6.33 1.73,2.05 4.83,3.37 5.81,5.82 1.37,2.07 2.66,4.26 2.69,7.03 1.62,4.34 4.17,8.51 5.31,12.94 -0.24,2.77 4.65,2.49 4.95,5.51 2.24,4.08 4.37,9.17 9.21,10.49 3.28,2 0.03,5.04 0.91,7.5 3.28,0.87 -0.01,4.68 0.94,6.67 2.53,1.36 4.37,3.2 4.22,6.44 0.39,3.34 2.13,6.83 5.69,7.54 3.01,1.93 6.69,2.13 9.87,3.4 2.28,1.79 5.15,4.09 8.16,2.83 3.46,0.46 6.77,1.29 9.37,3.75 1.43,2.54 6.51,-0.91 4.31,-2.89 -2.04,-3.39 -1.3,-7.79 -2.83,-11.46 -0.63,-3.07 -2.39,-5.95 -0.99,-9.1 1.17,-4.9 2.87,-9.76 4.04,-14.71 -3.37,-1.01 -2.07,-5.47 1.21,-4.71 3.99,0.42 3.65,-6.43 7.81,-6.05 5.25,-1.56 9.07,-6 14.16,-8.05 6.91,-2.81 13.62,-6.46 18.72,-12.05 2.58,-2.98 7.09,-3.95 8.69,-7.75 5,-2.22 9.8,-4.93 15.22,-6 -0.97,-2.64 0.52,-4.86 1.32,-7.22 0.39,-2.99 0.19,-6.07 1.18,-8.94 -3.15,-2.27 0.38,-4.91 1.38,-7.41 -0.2,-2.8 1.42,-6.25 0.09,-8.66 0.3,-2.93 -1.49,-5.14 -3.35,-7.29 -2.46,-2.64 -1.11,-6.91 -3.87,-9.52 -2.53,-4.57 -1.59,-10.19 -2.25,-15.22 0.02,-5 0.19,-10 -0.5,-14.97 -2.63,-2.31 -5.52,2.33 -7.52,-1.37 -3.1,-2.07 -7.66,-2.1 -9.73,-5.68 -2.31,-2.48 -3.82,2.84 -7.18,0.96 -1.91,-2.73 -3.59,0.03 -5.98,0.18 -2.27,-1.15 -6.07,-1.48 -6.09,1.76 -2.76,2.37 -5.95,-0.93 -8.94,-1.28 -3,1.38 -5.23,-3.83 -6.3,-1.87 -0.15,2.66 -2.52,5.1 -5.13,3.34 -3.23,-0.15 -4.91,-2.49 -6.57,-3.89 -2.95,-1.74 -4.3,2.32 -6.94,0.88 -1.48,-1.39 -1.87,-3.6 -3.92,-5.65 -3.06,-2.83 -5.03,3.17 -7.13,0.23 -2.05,-2.11 -5.57,-0.83 -7.94,-2.69 -3.56,0.59 -5.54,-0.24 -4.13,-4.11 -1.89,-1.85 -2.28,1.21 -4.77,-0.14 -0.59,-0.41 -3.45,1.78 -5,-1.11 -1.9,-1.9 -5.13,-3.22 -4.18,-6.45 0.03,-10.58 0.25,-21.15 1.66,-31.65 0.3,-2.99 0.6,-5.98 0.89,-8.98 -17.65,-0.63 -35.3,-1.27 -52.94,-2.22 -0.52,6.07 -1.04,12.15 -1.56,18.22z M466.53,518.63c-5.2,7.17 2.93,-3.27 0,0z","name":"Texas"},"nm":{"path":"m242.72,428.78c4.82,0.63 9.65,1.25 14.47,1.88 0.43,-3.33 0.85,-6.67 1.28,-10 9.7,0.89 19.4,1.86 29.09,2.78 -0.9,-3.14 -1.39,-5.98 2.84,-4.5 18.29,1.28 36.48,3.79 54.81,4.49 2.45,-0.6 7.66,2.13 7.99,-1.01 3.06,-22.93 3.75,-46.09 5.59,-69.14 0.54,-7.79 1.39,-15.56 2.02,-23.34 3.21,0.65 1.17,-4.81 2.07,-6.86 1.79,-4.38 -2.87,-3.37 -5.73,-3.85 -32.35,-3.3 -64.71,-6.59 -97.06,-9.89 -5.79,39.81 -11.58,79.63 -17.38,119.44z","name":"New Mexico"},"ks":{"path":"m380.53,320.34c25.06,1.17 50.11,2.71 75.19,3.35 17.22,0.07 34.44,0.63 51.66,0.18 -0.25,-12.69 0.23,-25.42 -0.47,-38.08 -0.61,-2.83 -0.17,-6.27 -1.38,-8.74 -3.04,-2.03 -6.02,-5.19 -6.68,-8.77 -0.43,-2.51 4.3,-4.59 1.29,-6.64 -3.02,0.54 -4.05,-3.34 -7.17,-2.43 -36.21,-0.82 -72.43,-1.33 -108.63,-2.5 -1.27,21.21 -2.54,42.42 -3.81,63.63z","name":"Kansas"},"ne":{"path":"m353.38,230.59c10.76,0.96 21.27,2.72 32.03,3.66 -0.37,7.11 -0.71,14.23 -1.06,21.34 36.49,1.29 73,1.84 109.5,2.56 -0.31,-1.17 -3.13,-4.05 -4.03,-6.15 -1.99,-2.11 -0.36,-5.13 -2.45,-7.34 -2.42,-3.19 -1.66,-7.14 -2.2,-10.79 -1.66,-2.86 -1.45,-6.25 -2.29,-9.26 -2.94,-2.85 -2.34,-7.01 -3.95,-10.49 -1.13,-3.1 -2.18,-6.19 -2.62,-9.47 -3.51,1.32 -2.89,-3.07 -4.85,-4.29 -2.4,-1.68 -5.57,-1.85 -7.72,-3.93 -3.79,0.07 -7.65,1.04 -11.13,1.94 -2.52,-2.2 -6.03,-3.13 -7.91,-6.06 -13.61,0.96 -27.23,-0.49 -40.83,-1.11 -15.5,-1.05 -31.02,-1.79 -46.51,-2.86 -1.67,14.08 -2.83,28.17 -4,42.25z","name":"Nebraska"},"sd":{"path":"m357.44,187.41c25.68,1.58 51.37,3.15 77.06,4.26 3.58,-0.01 7.34,-0.51 10.81,-0.23 1.8,2.9 5.24,3.85 7.69,6 3.55,-1.45 7.52,-1.89 11.25,-1.91 2.45,2.67 7.26,2.29 9.15,5.33 1.32,4.76 3.27,1.86 0.18,-1.15 -1.53,-2.17 1.46,-4.6 1.56,-6.99 1.2,-2.87 1.38,-5.28 -1.58,-6.75 -0.5,-2.04 -0.73,-6.65 2.41,-5.84 2.62,-0.28 0.39,-5.28 1.06,-7.5 -0.32,-9.7 0.19,-19.47 -0.64,-29.13 -0.24,-3.58 -6.26,-4.19 -5.42,-8.4 1.09,-1.22 5.81,-4.38 2.75,-5.4 -27.23,-0.89 -54.5,-1.01 -81.67,-3.15 -9.79,-0.62 -19.57,-1.24 -29.36,-1.86 -1.75,20.91 -3.5,41.81 -5.25,62.72z","name":"South Dakota"},"nd":{"path":"m362.88,123.72c26.46,1.49 52.89,3.7 79.4,3.91 10.84,0.26 21.67,0.52 32.51,0.78 0.01,-5.53 -1.38,-10.82 -2.5,-16.17 -1.27,-7.42 -2.05,-14.89 -2.13,-22.42 -2.61,-4.16 -4.11,-9 -3.48,-13.94 -0.44,-3.25 0.67,-6.57 0.3,-9.7 -0.15,-4.01 -2.83,-4.61 -6.31,-4.12 -25.15,-0.47 -50.33,-1.05 -75.41,-3.06 -5.17,-0.49 -10.33,-0.98 -15.5,-1.47 -2.29,22.06 -4.58,44.13 -6.88,66.19z","name":"North Dakota"},"wy":{"path":"m240.16,217.84c37.4,4.49 74.29,8.23 111.69,12.72 2.5,-29.2 5.5,-57.65 8,-86.84 -35.26,-4.45 -70.52,-8.9 -105.78,-13.34 -4.64,29.16 -9.27,58.31 -13.91,87.47z","name":"Wyoming"},"mt":{"path":"m192.59,52.19c0.84,2.76 3.25,5.4 3.2,8.23 -1.5,2.79 -1,5.49 0.52,8.15 3.4,0.39 4.18,3.44 5.26,6.16 1.43,3.34 2.55,6.88 5.37,9.34 0.88,2.21 5.27,1.18 4.34,4.72 -2.23,6.21 -5.45,12.23 -7.06,18.56 0.02,3.34 3.4,5.25 5.73,2.22 1.61,-2.43 5.63,-3.04 4.69,0.97 -0.5,5.3 1.81,10.35 2.59,15.53 1.9,2 5.27,3.44 5.68,6.31 -0.71,1.91 -0.39,8.78 2.32,5.14 1.85,-1.89 4.93,-0.29 6.85,0.86 3.28,-1.63 7.26,-1.21 10.34,0.69 3.69,0.41 1.52,-5 5.95,-4.08 2.71,-0.42 2.01,6.69 3.21,4.1 0.56,-3.26 1.09,-6.54 1.68,-9.8 35.57,4.49 71.15,8.96 106.72,13.44 2.9,-28.44 5.79,-56.88 8.69,-85.31 -28.84,-2.29 -57.55,-5.91 -86.19,-9.99 -26.71,-4.12 -53.36,-8.71 -79.73,-14.68 -3.05,-0.61 -6.99,-2.59 -6.53,2.19 -1.21,5.75 -2.42,11.51 -3.62,17.26z","name":"Montana"},"co":{"path":"m260.17,308.53c39.89,4.09 79.51,8.26 119.39,11.91 1.61,-28.46 3.23,-56.92 4.84,-85.38 -37.47,-4.17 -74.94,-8.33 -112.41,-12.5 -4.03,28.98 -7.8,56.99 -11.83,85.97z","name":"Colorado"},"id":{"path":"m169.84,91.72c0.52,3.07 2.27,5.25 4.94,6.78 0.4,3.02 -0.61,5.46 -3.03,7.31 -2.3,2.7 -4.38,5.97 -6.09,8.83 0.39,2.93 -2.57,3.54 -4.23,4.8 -1.77,2.31 -4.28,4.3 -3.93,7.5 -0.64,2.43 4.69,0.57 4.09,4.34 -5.19,11.17 -6.78,23.51 -10.13,35.32 -0.79,3.16 -1.22,4.91 -2.01,8.08 56.92,12.84 62.26,13.45 93.58,19.41 2.75,-17.6 5.5,-35.21 8.25,-52.81 -2.66,-0.84 -0.58,-6.52 -4.23,-4.97 -1.24,1.7 -1.62,4.95 -5.17,3.47 -3.11,-1.99 -6.81,-1.34 -10.13,-0.56 -2.53,-1.76 -5.91,-2.01 -7.69,0.88 -1.75,-0.05 -3.29,-3.39 -2.79,-5.36 1.91,-3.98 -2.85,-5.89 -5.05,-8.27 -0.98,-5.88 -3.48,-11.64 -2.5,-17.69 -1.86,-0.01 -4.25,2.69 -6.47,3.63 -2.21,0.18 -4.52,-3.09 -4.1,-5.31 1.19,-5.37 4.07,-10.37 5.88,-15.6 1.95,-2.64 1.12,-5.57 -2.41,-5.62 -1.55,-3.37 -4.92,-5.66 -5.61,-9.53 -1.31,-2.63 -1.42,-6.47 -5.06,-6.76 -0.99,-1.85 -3.18,-4.47 -1.91,-6.73 2.09,-2.98 -0.34,-5.7 -1.53,-8.5 -2.13,-3.05 0.55,-6.68 0.67,-10.01 0.9,-4.35 1.8,-8.69 2.69,-13.04 -4.18,-0.78 -8.35,-1.56 -12.53,-2.34 -4.5,20.92 -9,41.83 -13.5,62.75z","name":"Idaho"},"ut":{"path":"m176.34,297.78c27.57,3.92 55.15,7.83 82.72,11.75 4.04,-29.08 8.08,-58.17 12.13,-87.25 -10.83,-1.14 -21.65,-2.33 -32.47,-3.59 1.43,-7.93 2.82,-15.85 3.84,-23.84 -15.27,-2.85 -30.54,-5.71 -45.81,-8.56 -6.8,37.17 -13.6,74.33 -20.41,111.5z","name":"Utah"},"az":{"path":"m173.19,314.66c-2.49,-0.06 -3.05,4.43 -6.38,2.94 -0.74,-2.87 -3.59,-2.82 -5.59,-4.22 -3.74,0.74 -2.37,4.58 -2.68,7.41 -0.52,5.04 -0.42,10.21 -0.89,15.22 -2.19,2.33 -2.44,5.78 -0.24,8.19 2.32,2.62 0.58,7.52 4.09,9.09 0.98,3.59 -2.89,4.83 -5.41,6.09 -3.29,2.46 -3.28,6.86 -3.88,10.47 -1.25,2.44 -4.81,2.39 -4.92,4.97 0.47,2.18 6.18,0.38 3.42,4.54 -0.65,2.75 -3.14,3.45 -5.62,3.78 -3.6,1.45 -2.69,4.7 0.77,5.44 14.69,7.84 28.52,17.13 43.01,25.32 5.79,3.19 11.27,7.21 17.27,9.88 11.71,2.83 23.75,3.45 35.68,4.87 5.71,-39.38 11.42,-78.75 17.13,-118.13 -27.58,-3.93 -55.17,-7.85 -82.75,-11.78 -1,5.31 -2,10.63 -3,15.94z","name":"Arizona"},"nv":{"path":"m84.84,232.41c22.96,34.61 45.92,69.23 68.88,103.84 3.66,2.65 3.19,-3.47 3.27,-5.71 0.37,-5.43 0.36,-11.24 1.08,-16.44 2.05,-2.03 4.26,-2 6.08,-0.39 2.62,-0.16 3.86,5.9 6.03,1.27 2.74,-0.82 2.66,-3.64 3.13,-6.41 7.5,-40.87 15,-81.75 22.51,-122.62 -30.72,-6.81 -61.44,-13.63 -92.16,-20.44 -6.27,22.3 -12.54,44.6 -18.81,66.91z","name":"Nevada"},"or":{"path":"M67.16,62.81C64.24,70.42 62.73,78.57 58.5,85.63c-2.86,8.53 -5.96,16.93 -10.17,24.89 -3.06,6.61 -8,12.31 -11.32,18.7 -1.03,6.5 -0.64,13.05 -0.36,19.6 37.23,8.7 74.46,16.69 111.69,25.39 3.45,-13.15 6.51,-25.75 10.19,-38.81 1.2,-2.48 3.15,-6.06 -1.1,-5.42 -2.58,-1.78 -0.23,-4.45 -0.38,-6.91 2.3,-2.82 4.36,-5.82 7.47,-7.75 1.75,-5.08 5.43,-9.19 9.03,-13.06 1.66,-3.48 -2.46,-3.92 -3.39,-6.47 -0.25,-3.79 -3.56,-4.26 -6.62,-4.99 -7.63,-2.2 -15.38,-4.2 -23.21,-5.54 -4.9,0.03 -9.79,0.06 -14.69,0.09 -0.95,-2.84 -4.67,1.86 -7.11,0.5 -2.61,0.82 -4.42,-2.63 -6.57,-1.28 -2.61,-0.06 -5.23,0.11 -7.15,-1.87 -3.09,-1.53 -6.33,-1.81 -9.5,-3.1 -1.87,3.03 -5.69,1.22 -8.53,1.31 -1.65,-1.64 -5.79,-3.02 -6.03,-4.81 1.1,-2.44 0.78,-5.93 0.53,-8.59 -0.42,-3.92 -4.72,-2.63 -6.25,-4.49C74.59,58.67 69.45,62.45 67.16,62.81z","name":"Oregon"},"wa":{"path":"m101.38,8.72c0.05,2.75 2.93,5.39 3.25,8.16 -1.92,2.33 -1.78,5.19 -1.32,7.71 -1.81,2.64 1.63,4.82 0.67,7.42 -3.6,1.52 -2.43,-3.7 -4.86,-4.99 -3.34,-2.24 1.47,-3.87 1.17,-5.42 -2.5,-1.11 -2.24,3.88 -3.69,4.17C92.33,26.39 88.86,23.04 84.76,22.57 79.82,20.66 75.28,17.69 72.25,13.25c-3.13,-0.98 -1.96,4.97 -3.25,6.95 -0.63,2.8 2.59,5.06 1.41,8.21 0.52,3.86 -1.29,7.55 0.18,11.29 -1.06,2.88 4.75,5.54 2.94,6.39 -3.45,-1.05 -6.2,3.2 -2.25,4.34 1.57,0.97 -0.61,6.32 -3.3,5.43 -1.83,2.15 1.28,6.86 4.14,4.17 3.77,-1.55 2.75,3.51 5.83,3.13 2.81,-0.24 4.26,3.31 4.54,5.61 0.04,2.48 -0.15,6.02 -0.26,7.78 2.63,1.76 5.01,4.26 8.46,3.62 3.2,0.66 4.7,-3.26 7.97,-0.5 3.01,0.48 6.37,1.55 8.79,3.66 3.03,0.92 6.02,-1.78 8.19,1.05 3.44,1.3 6.67,0.03 9.84,-1.4 0.99,1.78 4.42,1.32 7,1.3 5.35,-0.19 10.68,-0.16 15.82,1.55 6.99,1.44 13.78,3.45 20.65,5.4 4.47,-20.85 8.94,-41.71 13.41,-62.56 -19.81,-3.93 -39.37,-9.21 -58.73,-14.66 -7.27,-1.53 -14.4,-3.52 -21.46,-5.87L101.75,8.45 101.38,8.72z M95.5,15.16C94.05,13.72 92.15,14.26 94.72,17.63 94.39,13.84 99.19,18.11 98.98,14.18 98.24,12.75 96.05,14.08 95.5,15.16z m2.31,1.91c-3.13,3.04 1.36,2.18 0.16,-0.25l-0.16,0.25z","name":"Washington"},"ca":{"path":"m35.06,153.94c-0.1,4.04 0.4,8.21 -1.99,11.75 -1.86,3.68 -2.55,8.24 -6.48,10.38 -1.19,2.11 -3.49,3.38 -3.59,6.45 -1.94,3.49 2.49,5.65 2.91,8.98 1.54,3.39 2.34,6.94 1.63,10.65 0,2.92 -2.79,5.01 -2.24,8.14 0.05,2.97 -2.24,5.87 0.04,8.54 2.58,5 6.38,9.93 6.71,15.69 -0.54,2.77 -0.99,5.37 1.81,7.17 1.6,1.95 4.49,3.66 2.79,6.46 -1.73,3.87 -1.14,8.04 -1.09,12.16 1.68,2.67 2.83,6.76 6.66,6.53 1.48,2.33 0.97,4.84 -0.22,7.13 -2.5,1.53 -4.36,2.73 -3.66,6.08 0.27,3.49 4.27,5.34 4.36,9.01 1.46,6.2 4.13,11.92 7.59,17.25 0.71,2.57 2.16,4.34 2.9,6.41 -0.24,3.33 -1.93,6.49 -2.41,9.87 -1.66,2.61 1.19,5.52 3.99,5.12 4.03,0.15 7.27,3.31 11.01,4.04 3,-0.55 4.74,2.9 6.07,5.11 1.54,2.71 2.37,6 5.76,6.88 2.51,1.14 6.19,0.05 7.17,3.45 2.41,2.72 -2.39,5.05 1.41,5.17 2.73,1.87 5.56,-1.74 7.56,-0.74 2.13,2.06 4.05,4.2 4.93,7.05 4.3,4.9 1.44,11.77 2.79,17.52 14.73,1.94 29.44,4.72 44.27,5.38 2.78,1.19 6.19,-4.43 2.84,-4.65 -3.13,0.64 -2.83,-4.02 -1.36,-4.66 3.15,-0.88 4.92,-3.83 4.65,-7.04 0.47,-3.98 3.27,-7.43 7.22,-8.4 3.43,-2.04 -0.33,-3.58 -0.79,-5.79 -0.23,-3.65 -1.95,-6.81 -3.62,-9.89 2.02,-3.66 -2.22,-3.32 -3.16,-6.24 -22.6,-34.1 -45.2,-68.19 -67.81,-102.29 6.27,-22.44 12.54,-44.88 18.81,-67.31 -22.04,-5.16 -44.08,-10.31 -66.13,-15.47 -0.45,1.38 -0.9,2.75 -1.34,4.13z m24.13,184.72c-0.27,3.05 7.99,3.06 4.7,2.07 -1.63,-0.35 -3.17,-2.46 -4.7,-2.07z m-5.16,0.38c0.33,3.71 5.81,0.51 1.31,-0.04 -0.44,0.01 -0.88,0.02 -1.31,0.04z M79.69,357.5c-0.2,1.58 4.42,6 3.16,2.37C82.22,358.91 80.8,357.6 79.69,357.5z M77.75,369.13c-0.14,1.55 3.2,3.89 1.32,1.26C78.6,369.72 77.39,366.55 77.75,369.13z","name":"California"}}});
diff --git a/js/vmap/dist/maps/jquery.vmap.world.js b/js/vmap/dist/maps/jquery.vmap.world.js
new file mode 100644 (file)
index 0000000..6fc1849
--- /dev/null
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'world_en', {"width":950,"height":550,"paths":{"id":{"path":"M781.68,324.4l-2.31,8.68l-12.53,4.23l-3.75-4.4l-1.82,0.5l3.4,13.12l5.09,0.57l6.79,2.57v2.57l3.11-0.57l4.53-6.27v-5.13l2.55-5.13l2.83,0.57l-3.4-7.13l-0.52-4.59L781.68,324.4L781.68,324.4M722.48,317.57l-0.28,2.28l6.79,11.41h1.98l14.15,23.67l5.66,0.57l2.83-8.27l-4.53-2.85l-0.85-4.56L722.48,317.57L722.48,317.57M789.53,349.11l2.26,2.77l-1.47,4.16v0.79h3.34l1.18-10.4l1.08,0.3l1.96,9.5l1.87,0.5l1.77-4.06l-1.77-6.14l-1.47-2.67l4.62-3.37l-1.08-1.49l-4.42,2.87h-1.18l-2.16-3.17l0.69-1.39l3.64-1.78l5.5,1.68l1.67-0.1l4.13-3.86l-1.67-1.68l-3.83,2.97h-2.46l-3.73-1.78l-2.65,0.1l-2.95,4.75l-1.87,8.22L789.53,349.11L789.53,349.11M814.19,330.5l-1.87,4.55l2.95,3.86h0.98l1.28-2.57l0.69-0.89l-1.28-1.39l-1.87-0.69L814.19,330.5L814.19,330.5M819.99,345.45l-4.03,0.89l-1.18,1.29l0.98,1.68l2.65-0.99l1.67-0.99l2.46,1.98l1.08-0.89l-1.96-2.38L819.99,345.45L819.99,345.45M753.17,358.32l-2.75,1.88l0.59,1.58l8.75,1.98l4.42,0.79l1.87,1.98l5.01,0.4l2.36,1.98l2.16-0.5l1.97-1.78l-3.64-1.68l-3.14-2.67l-8.16-1.98L753.17,358.32L753.17,358.32M781.77,366.93l-2.16,1.19l1.28,1.39l3.14-1.19L781.77,366.93L781.77,366.93M785.5,366.04l0.39,1.88l2.26,0.59l0.88-1.09l-0.98-1.49L785.5,366.04L785.5,366.04M790.91,370.99l-2.75,0.4l2.46,2.08h1.96L790.91,370.99L790.91,370.99M791.69,367.72l-0.59,1.19l4.42,0.69l3.44-1.98l-1.96-0.59l-3.14,0.89l-1.18-0.99L791.69,367.72L791.69,367.72M831.93,339.34l-4.17,0.47l-2.68,1.96l1.11,2.24l4.54,0.84v0.84l-2.87,2.33l1.39,4.85l1.39,0.09l1.2-4.76h2.22l0.93,4.66l10.83,8.96l0.28,7l3.7,4.01l1.67-0.09l0.37-24.72l-6.29-4.38l-5.93,4.01l-2.13,1.31l-3.52-2.24l-0.09-7.09L831.93,339.34L831.93,339.34z","name":"Indonesia"},"pg":{"path":"M852.76,348.29l-0.37,24.44l3.52-0.19l4.63-5.41l3.89,0.19l2.5,2.24l0.83,6.9l7.96,4.2l2.04-0.75v-2.52l-6.39-5.32l-3.15-7.28l2.5-1.21l-1.85-4.01l-3.7-0.09l-0.93-4.29l-9.81-6.62L852.76,348.29L852.76,348.29M880.48,349l-0.88,1.25l4.81,4.26l0.66,2.5l1.31-0.15l0.15-2.57l-1.46-1.32L880.48,349L880.48,349M882.89,355.03l-0.95,0.22l-0.58,2.57l-1.82,1.18l-5.47,0.96l0.22,2.06l5.76-0.29l3.65-2.28l-0.22-3.97L882.89,355.03L882.89,355.03M889.38,359.51l1.24,3.45l2.19,2.13l0.66-0.59l-0.22-2.28l-2.48-3.01L889.38,359.51L889.38,359.51z","name":"Papua New Guinea"},"mx":{"path":"M137.49,225.43l4.83,15.21l-2.25,1.26l0.25,3.02l4.25,3.27v6.05l5.25,5.04l-2.25-14.86l-3-9.83l0.75-6.8l2.5,0.25l1,2.27l-1,5.79l13,25.44v9.07l10.5,12.34l11.5,5.29l4.75-2.77l6.75,5.54l4-4.03l-1.75-4.54l5.75-1.76l1.75,1.01l1.75-1.76h2.75l5-8.82l-2.5-2.27l-9.75,2.27l-2.25,6.55l-5.75,1.01l-6.75-2.77l-3-9.57l2.27-12.07l-4.64-2.89l-2.21-11.59l-1.85-0.79l-3.38,3.43l-3.88-2.07l-1.52-7.73l-15.37-1.61l-7.94-5.97L137.49,225.43L137.49,225.43z","name":"Mexico"},"ee":{"path":"M517.77,143.66l-5.6-0.2l-3.55,2.17l-0.05,1.61l2.3,2.17l7.15,1.21L517.77,143.66L517.77,143.66M506.76,147.64l-1.55-0.05l-0.9,0.91l0.65,0.96l1.55,0.1l0.8-1.16L506.76,147.64L506.76,147.64z","name":"Estonia"},"dz":{"path":"M473.88,227.49l-4.08-1.37l-16.98,3.19l-3.7,2.81l2.26,11.67l-6.75,0.27l-4.06,6.53l-9.67,2.32l0.03,4.75l31.85,24.35l5.43,0.46l18.11-14.15l-1.81-2.28l-3.4-0.46l-2.04-3.42v-14.15l-1.36-1.37l0.23-3.65l-3.62-3.65l-0.45-3.88l1.58-1.14l-0.68-4.11L473.88,227.49L473.88,227.49z","name":"Algeria"},"ma":{"path":"M448.29,232.28h-11.55l-2.26,5.02l-5.21,2.51l-4.3,11.64l-8.38,5.02l-11.77,19.39l11.55-0.23l0.45-5.7h2.94v-7.76h10.19l0.23-10.04l9.74-2.28l4.08-6.62l6.34-0.23L448.29,232.28L448.29,232.28z","name":"Morocco"},"mr":{"path":"M404.9,276.66l2.18,2.85l-0.45,12.32l3.17-2.28l2.26-0.46l3.17,1.14l3.62,5.02l3.4-2.28l16.53-0.23l-4.08-27.61l4.38-0.02l-8.16-6.25l0.01,4.06l-10.33,0.01l-0.05,7.75l-2.97-0.01l-0.38,5.72L404.9,276.66L404.9,276.66z","name":"Mauritania"},"sn":{"path":"M412.03,289.84L410.12,290.31L406.18,293.18L405.28,294.78L405,296.37L406.43,297.40L411.28,297.34L414.40,296.5L414.75,298.03L414.46,300.06L414.53,300.09L406.78,300.21L408.03,303.21L408.71,301.37L418,302.15L418.06,302.21L419.03,302.25L422,302.37L422.12,300.62L418.53,296.31L414.53,290.87L412.03,289.84z","name":"Senegal"},"gm":{"path":"M406.89,298.34l-0.13,1.11l6.92-0.1l0.35-1.03l-0.15-1.04l-1.99,0.81L406.89,298.34L406.89,298.34z","name":"Gambia"},"gw":{"path":"M408.6,304.53l1.4,2.77l3.93-3.38l0.04-1.04l-4.63-0.67L408.6,304.53L408.6,304.53z","name":"Guinea-Bissau"},"gn":{"path":"M410.42,307.94l3.04,4.68l3.96-3.44l4.06-0.18l3.38,4.49l2.87,1.89l1.08-2.1l0.96-0.54l-0.07-4.62l-1.91-5.48l-5.86,0.65l-7.25-0.58l-0.04,1.86L410.42,307.94L410.42,307.94z","name":"Guinea"},"sl":{"path":"M413.93,313.13l5.65,5.46l4.03-4.89l-2.52-3.95l-3.47,0.35L413.93,313.13L413.93,313.13z","name":"Sierra Leone"},"lr":{"path":"M420.17,319.19l10.98,7.34l-0.26-5.56l-3.32-3.91l-3.24-2.87L420.17,319.19L420.17,319.19z","name":"Liberia"},"ci":{"path":"M432.07,326.75l4.28-3.03l5.32-0.93l5.43,1.17l-2.77-4.19l-0.81-2.56l0.81-7.57l-4.85,0.23l-2.2-2.1l-4.62,0.12l-2.2,0.35l0.23,5.12l-1.16,0.47l-1.39,2.56l3.58,4.19L432.07,326.75L432.07,326.75z","name":"Cote d'Ivoire"},"ml":{"path":"M419.46,295.84l3.08-2.11l17.12-0.1l-3.96-27.54l4.52-0.13l21.87,16.69l2.94,0.42l-1.11,9.28l-13.75,1.25l-10.61,7.92l-1.93,5.42l-7.37,0.31l-1.88-5.41l-5.65,0.4l0.22-1.77L419.46,295.84L419.46,295.84z","name":"Mali"},"bf":{"path":"M450.59,294.28l3.64-0.29l5.97,8.44l-5.54,4.18l-4.01-1.03l-5.39,0.07l-0.87,3.16l-4.52,0.22l-1.24-1.69l1.6-5.14L450.59,294.28L450.59,294.28z","name":"Burkina Faso"},"ne":{"path":"M460.89,302l2.55-0.06l2.3-3.45l3.86-0.69l4.11,2.51l8.77,0.25l6.78-2.76l2.55-2.19l0.19-2.88l4.73-4.77l1.25-10.53l-3.11-6.52l-7.96-1.94l-18.42,14.36l-2.61-0.25l-1.12,9.97l-9.4,0.94L460.89,302L460.89,302z","name":"Niger"},"gh":{"path":"M444.34,317.05l1.12,2.63l2.92,4.58l1.62-0.06l4.42-2.51l-0.31-14.29l-3.42-1l-4.79,0.13L444.34,317.05L444.34,317.05z","name":"Ghana"},"tg":{"path":"M455.22,321.25l2.68-1.57l-0.06-10.35l-1.74-2.82l-1.12,0.94L455.22,321.25L455.22,321.25z","name":"Togo"},"bj":{"path":"M458.71,319.49h2.12l0.12-6.02l2.68-3.89l-0.12-6.77l-2.43-0.06l-4.17,3.26l1.74,3.32L458.71,319.49L458.71,319.49z","name":"Benin"},"ng":{"path":"M461.57,319.37l3.92,0.19l4.73,5.27l2.3,0.63l1.8-0.88l2.74-0.38l0.93-3.82l3.73-2.45l4.04-0.19l7.4-13.61l-0.12-3.07l-3.42-2.63l-6.84,3.01l-9.15-0.13l-4.36-2.76l-3.11,0.69l-1.62,2.82l-0.12,7.96l-2.61,3.7L461.57,319.37L461.57,319.37z","name":"Nigeria"},"tn":{"path":"M474.91,227.33l5.53-2.23l1.82,1.18l0.07,1.44l-0.85,1.11l0.13,1.97l0.85,0.46v3.54l-0.98,1.64l0.13,1.05l3.71,1.31l-2.99,4.65l-1.17-0.07l-0.2,3.74l-1.3,0.2l-1.11-0.98l0.26-3.8l-3.64-3.54l-0.46-3.08l1.76-1.38L474.91,227.33L474.91,227.33z","name":"Tunisia"},"ly":{"path":"M480.05,248.03l1.56-0.26l0.46-3.6h0.78l3.19-5.24l7.87,2.29l2.15,3.34l7.74,3.54l4.03-1.7l-0.39-1.7l-1.76-1.7l0.2-1.18l2.86-2.42h5.66l2.15,2.88l4.55,0.66l0.59,36.89l-3.38-0.13l-20.42-10.62l-2.21,1.25l-8.39-2.1l-2.28-3.01l-3.32-0.46l-1.69-3.01L480.05,248.03L480.05,248.03z","name":"Libya"},"eg":{"path":"M521.93,243.06l2.67,0.07l5.2,1.44l2.47,0.07l3.06-2.56h1.43l2.6,1.44h3.29l0.59-0.04l2.08,5.98l0.59,1.93l0.55,2.89l-0.98,0.72l-1.69-0.85l-1.95-6.36l-1.76-0.13l-0.13,2.16l1.17,3.74l9.37,11.6l0.2,4.98l-2.73,3.15L522.32,273L521.93,243.06L521.93,243.06z","name":"Egypt"},"td":{"path":"M492.79,296l0.13-2.95l4.74-4.61l1.27-11.32l-3.16-6.04l2.21-1.13l21.4,11.15l-0.13,10.94l-3.77,3.21v5.64l2.47,4.78h-4.36l-7.22,7.14l-0.19,2.16l-5.33-0.07l-0.07,0.98l-3.04-0.4l-2.08-3.93l-1.56-0.77l0.2-1.2l1.96-1.5v-7.02l-2.71-0.42l-3.27-2.43L492.79,296L492.79,296L492.79,296z","name":"Chad"},"sd":{"path":"M520.15,292.43l0.18-11.83l2.46,0.07l-0.28-6.57l25.8,0.23l3.69-3.72l7.96,12.73l-4.36,5.14v7.85l-6.86,14.75l-2.36,1.04l0.75,4.11h2.94l3.99,5.79l-3.2,0.41l-0.82,1.49l-0.08,2.15l-9.6-0.17l-0.98-1.49l-6.71-0.38l-12.32-12.68l1.23-0.74l0.33-2.98l-2.95-1.74l-2.69-5.31l0.15-4.94L520.15,292.43L520.15,292.43z","name":"Sudan"},"cm":{"path":"M477.82,324.28l3.22,2.96l-0.23,4.58l17.66-0.41l1.44-1.62l-5.06-5.45l-0.75-1.97l3.22-6.03l-2.19-4l-1.84-0.99v-2.03l2.13-1.39l0.12-6.32l-1.69-0.19l-0.03,3.32l-7.42,13.85l-4.54,0.23l-3.11,2.14L477.82,324.28L477.82,324.28z","name":"Cameroon"},"er":{"path":"M556.71,294.7l-0.25-5.89l3.96-4.62l1.07,0.82l1.95,6.52l9.36,6.97l-1.7,2.09l-6.85-5.89H556.71L556.71,294.7z","name":"Eritrea"},"dj":{"path":"M571.48,301.54l-0.57,3.36l3.96-0.06l0.06-4.94l-1.45-0.89L571.48,301.54L571.48,301.54z","name":"Djibouti"},"et":{"path":"M549.49,311.76l7.28-16.2l7.23,0.04l6.41,5.57l-0.45,4.59h4.97l0.51,2.76l8.04,4.81l4.96,0.25l-9.43,10.13l-12.95,3.99h-3.21l-5.72-4.88l-2.26-0.95l-4.38-6.45l-2.89,0.04l-0.34-2.96L549.49,311.76L549.49,311.76z","name":"Ethiopia"},"so":{"path":"M575.74,305.04l4.08,2.78l1.21-0.06l10.13-3.48l1.15,3.71l-0.81,3.13l-2.19,1.74l-5.47-0.35l-7.83-4.81L575.74,305.04L575.74,305.04M591.97,304.05l4.37-1.68l1.55,0.93l-0.17,3.88l-4.03,11.48l-21.81,23.36l-2.53-1.74l-0.17-9.86l3.28-3.77l6.96-2.15l10.21-10.78l2.67-2.38l0.75-3.48L591.97,304.05L591.97,304.05z","name":"Somalia"},"ye":{"path":"M599.62,299.65l2.13,2.38l2.88-1.74l1.04-0.35l-1.32-1.28l-2.53,0.75L599.62,299.65L599.62,299.65M571.99,289.23l1.44,4.28v4.18l3.46,3.14l24.38-9.93l0.23-2.73l-3.91-7.02l-9.81,3.13l-5.63,5.54l-6.53-3.86L571.99,289.23L571.99,289.23z","name":"Yemen"},"cf":{"path":"M495.66,324.05l4.66,5.04l1.84-2.38l2.93,0.12l0.63-2.32l2.88-1.8l5.98,4.12l3.45-3.42l13.39,0.59L519,311.18l1.67-1.04l0.23-2.26l-2.82-1.33h-4.14l-6.67,6.61l-0.23,2.72l-5.29-0.17l-0.17,1.16l-3.45-0.35l-3.11,5.91L495.66,324.05L495.66,324.05z","name":"Central African Republic"},"st":{"path":"M470.74,337.15l1.15-0.58l0.86,0.7l-0.86,1.33l-1.04-0.41L470.74,337.15L470.74,337.15M473.05,333.5l1.73-0.29l0.58,1.1l-0.86,0.93l-0.86-0.12L473.05,333.5L473.05,333.5z","name":"Sao Tome and Principe"},"gq":{"path":"M476.84,327.41l-0.46,1.97l1.38,0.75l1.32-0.99l-0.46-2.03L476.84,327.41L476.84,327.41M480.99,332.69l-0.06,1.39l4.54,0.23l-0.06-1.57L480.99,332.69L480.99,332.69z","name":"Equatorial Guinea"},"ga":{"path":"M486.39,332.63l-0.12,2.49l-5.64-0.12l-3.45,6.67l8.11,8.87l2.01-1.68l-0.06-1.74l-1.38-0.64v-1.22l3.11-1.97l2.76,2.09l3.05,0.06l-0.06-10.49l-4.83-0.23l-0.06-2.2L486.39,332.63L486.39,332.63z","name":"Gabon"},"cg":{"path":"M491,332.52l-0.06,1.45l4.78,0.12l0.17,12.41l-4.37-0.12l-2.53-1.97l-1.96,1.1l-0.09,0.55l1.01,0.49l0.29,2.55l-2.7,2.32l0.58,1.22l2.99-2.32h1.44l0.46,1.39l1.9,0.81l6.1-5.16l-0.12-3.77l1.27-3.07l3.91-2.9l1.05-9.81l-2.78,0.01l-3.22,4.41L491,332.52L491,332.52z","name":"Congo"},"ao":{"path":"M486.55,353.23l1.74,2.26l2.25-2.13l-0.66-2.21l-0.56-0.04L486.55,353.23L486.55,353.23M488.62,356.71l3.41,12.73l-0.08,4.02l-4.99,5.36l-0.75,8.71l19.2,0.17l6.24,2.26l5.15-0.67l-3-3.76l0.01-10.74l5.9-0.25v-4.19l-4.79-0.2l-0.96-9.92l-2.02,0.03l-1.09-0.98l-1.19,0.06l-1.58,3.06H502l-1.41-1.42l0.42-2.01l-1.66-2.43L488.62,356.71L488.62,356.71z","name":"Angola"},"cd":{"path":"M489.38,355.71l10.31-0.18l2.09,2.97l-0.08,2.19l0.77,0.7h5.12l1.47-2.89h2.09l0.85,0.86l2.87-0.08l0.85,10.08l4.96,0.16v0.78l13.33,6.01l0.62,1.17h2.79l-0.31-4.22l-5.04-2.42l0.31-3.2l2.17-5.08l4.96-0.16l-4.26-14.14l0.08-6.01l6.74-10.54l0.08-1.48l-1.01-0.55l0.04-2.86l-1.23-0.11l-1.24-1.58l-20.35-0.92l-3.73,3.63l-6.11-4.02l-2.15,1.32l-1.56,13.13l-3.86,2.98l-1.16,2.64l0.21,3.91l-6.96,5.69l-1.85-0.84l0.25,1.09L489.38,355.71L489.38,355.71z","name":"Congo"},"rw":{"path":"M537.82,339.9l2.81,2.59l-0.12,2.77l-4.36,0.09v-3.06L537.82,339.9L537.82,339.9z","name":"Rwanda"},"bi":{"path":"M536.21,346.21l4.27-0.09l-1.11,3.74l-1.08,0.94h-1.32l-0.94-2.53L536.21,346.21L536.21,346.21z","name":"Burundi"},"ug":{"path":"M538.3,339.09l3.03,2.84l1.9-1.21l5.14-0.84l0.88,0.09l0.33-1.95l2.9-6.1l-2.44-5.08l-7.91,0.05l-0.05,2.09l1.06,1.02l-0.16,2.09L538.3,339.09L538.3,339.09z","name":"Uganda"},"ke":{"path":"M550.83,326.52l2.66,5.19l-3.19,6.69l-0.42,2.03l15.93,9.85l4.94-7.76l-2.5-2.03l-0.05-10.22l3.13-3.42l-4.99,1.66l-3.77,0.05l-5.9-4.98l-1.86-0.8l-3.45,0.32l-0.61,1.02L550.83,326.52L550.83,326.52z","name":"Kenya"},"tz":{"path":"M550.57,371.42l17.47-2.14l-3.93-7.6l-0.21-7.28l1.27-3.48l-16.62-10.44l-5.21,0.86l-1.81,1.34l-0.16,3.05l-1.17,4.23l-1.22,1.45l-1.75,0.16l3.35,11.61l5.47,2.57l3.77,0.11L550.57,371.42L550.57,371.42z","name":"Tanzania"},"zm":{"path":"M514.55,384.7l3.17,4.4l4.91,0.3l1.74,0.96l5.14,0.06l4.43-6.21l12.38-5.54l1.08-4.88l-1.44-6.99l-6.46-3.68l-4.31,0.3l-2.15,4.76l0.06,2.17l5.08,2.47l0.3,5.37l-4.37,0.24l-1.08-1.81l-12.14-5.18l-0.36,3.98l-5.74,0.18L514.55,384.7L514.55,384.7z","name":"Zambia"},"mw":{"path":"M547.16,379.4l3.11,3.25l-0.06,4.16l0.6,1.75l4.13-4.46l-0.48-5.67l-2.21-1.69l-1.97-9.95l-3.41-0.12l1.55,7.17L547.16,379.4L547.16,379.4z","name":"Malawi"},"mz":{"path":"M541.17,413.28l2.69,2.23l6.34-3.86l1.02-5.73v-9.46l10.17-8.32l1.74,0.06l6.16-5.91l-0.96-12.18L552,372.17l0.48,3.68l2.81,2.17l0.66,6.63l-5.5,5.37l-1.32-3.01l0.24-3.98l-3.17-3.44l-7.78,3.62l7.24,3.68l0.24,10.73l-4.79,7.11L541.17,413.28L541.17,413.28z","name":"Mozambique"},"zw":{"path":"M524.66,392.3l8.97,10.13l6.88,1.75l4.61-7.23l-0.36-9.58l-7.48-3.86l-2.81,1.27l-4.19,6.39l-5.8-0.06L524.66,392.3L524.66,392.3z","name":"Zimbabwe"},"na":{"path":"M496.55,421.96l3.35,0.24l1.97,1.99l4.67,0.06l1.14-13.26v-8.68l2.99-0.6l1.14-9.1l7.6-0.24l2.69-2.23l-4.55-0.18l-6.16,0.84l-6.64-2.41h-18.66l0.48,5.3l6.22,9.16l-1.08,4.7l0.06,2.47L496.55,421.96L496.55,421.96z","name":"Namibia"},"bw":{"path":"M508.51,411.23l2.15,0.66l-0.3,6.15l2.21,0.3l5.08-4.58l6.1,0.66l1.62-4.1l7.72-7.05l-9.27-10.67l-0.12-1.75l-1.02-0.3l-2.81,2.59l-7.3,0.18l-1.02,9.1l-2.87,0.66L508.51,411.23L508.51,411.23z","name":"Botswana"},"sz":{"path":"M540.87,414l-2.51,0.42l-1.08,2.95l1.92,1.75h2.33l1.97-2.83L540.87,414L540.87,414z","name":"Swaziland"},"ls":{"path":"M527.41,425.39l3.05-2.35l1.44,0.06l1.74,2.17l-0.18,2.17l-2.93,1.08v0.84l-3.23-0.18l-0.78-2.35L527.41,425.39L527.41,425.39z","name":"Lesotho"},"za":{"path":"M534.16,403.63l-7.9,7.3l-1.88,4.51l-6.26-0.78l-5.21,4.63l-3.46-0.34l0.28-6.4l-1.23-0.43l-0.86,13.09l-6.14-0.06l-1.85-2.18l-2.71-0.03l2.47,7.09l4.41,4.17l-3.15,3.67l2.04,4.6l4.72,1.8l3.76-3.2l10.77,0.06l0.77-0.96l4.78-0.84l16.17-16.1l-0.06-5.07l-1.73,2.24h-2.59l-3.15-2.64l1.6-3.98l2.75-0.56l-0.25-8.18L534.16,403.63L534.16,403.63z M530.37,422.13l1.51-0.06l2.45,2.66l-0.07,3.08l-2.87,1.45l-0.18,1.02l-4.38,0.05l-1.37-3.3l1.25-2.42L530.37,422.13L530.37,422.13z","name":"South Africa"},"gl":{"path":"M321.13,50.07l-1.36,2.17l2.45,2.45l-1.09,2.45l3.54,4.62l4.35-1.36l5.71-0.54l6.53,7.07l4.35,11.69l-3.53,7.34l4.89-0.82l2.72,1.63l0.27,3.54l-5.98,0.27l3.26,3.26l4.08,0.82l-8.97,11.96l-1.09,7.34l1.9,5.98l-1.36,3.54l2.45,7.61l4.62,5.17l1.36-0.27l2.99-0.82l0.27,4.35l1.9,2.72l3.53-0.27l2.72-10.06l8.16-10.06l12.24-4.89l7.61-9.52l3.53,1.63h7.34l5.98-5.98l7.34-2.99l0.82-4.62l-4.62-4.08l-4.08-1.36l-2.18-5.71l5.17-2.99l8.16,4.35l2.72-2.99l-4.35-2.45l9.25-12.51l-1.63-5.44l-4.35-0.27l1.63-4.89l5.44-2.45l11.15-9.79l-3.26-3.53l-12.51,1.09l-6.53,6.53l3.81-8.43l-4.35-1.09l-2.45,4.35l-3.53-2.99l-9.79,1.09l2.72-4.35l16.04-0.54l-4.08-5.44l-17.4-3.26l-7.07,1.09l0.27,3.54l-7.34-2.45l0.27-2.45l-5.17,1.09l-1.09,2.72l5.44,1.9l-5.71,4.08l-4.08-4.62l-5.71-1.63l-0.82,4.35h-5.71l-2.18-4.62l-8.97-1.36l-4.89,2.45l-0.27,3.26l-6.25-0.82l-3.81,1.63l0.27,3.81v1.9l-7.07,1.36l-3.26-2.17l-2.18,3.53l3.26,3.54l6.8-0.82l0.54,2.18l-5.17,2.45L321.13,50.07L321.13,50.07M342.89,92.49l1.63,2.45l-0.82,2.99h-1.63l-2.18-2.45l0.54-1.9L342.89,92.49L342.89,92.49M410.87,85.69l4.62,1.36l-0.27,3.81l-4.89-2.45l-1.09-1.36L410.87,85.69L410.87,85.69z","name":"Greenland"},"au":{"path":"M761.17,427.98l-0.35,25.38l-3.9,2.86l-0.35,2.5l5.32,3.57l13.13-2.5h6.74l2.48-3.58l14.9-2.86l10.64,3.22l-0.71,4.29l1.42,4.29l8.16-1.43l0.35,2.14l-5.32,3.93l1.77,1.43l3.9-1.43l-1.06,11.8l7.45,5.72l4.26-1.43l2.13,2.14l12.42-1.79l11.71-18.95l4.26-1.07l8.51-15.73l2.13-13.58l-5.32-6.79l2.13-1.43l-4.26-13.23l-4.61-3.22l0.71-17.87l-4.26-3.22l-1.06-10.01h-2.13l-7.1,23.59l-3.9,0.36l-8.87-8.94l4.97-13.23l-9.22-1.79l-10.29,2.86l-2.84,8.22l-4.61,1.07l-0.35-5.72l-18.8,11.44l0.35,4.29l-2.84,3.93h-7.1l-15.26,6.43L761.17,427.98L761.17,427.98M825.74,496.26l-1.77,7.15l0.35,5l5.32-0.36l6.03-9.29L825.74,496.26L825.74,496.26z","name":"Australia"},"nz":{"path":"M913.02,481.96l1.06,11.8l-1.42,5.36l-5.32,3.93l0.35,4.65v5l1.42,1.79l14.55-12.51v-2.86h-3.55l-4.97-16.8L913.02,481.96L913.02,481.96M902.38,507.7l2.84,5.36l-7.81,7.51l-0.71,3.93l-5.32,0.71l-8.87,8.22l-8.16-3.93l-0.71-2.86l14.9-6.43L902.38,507.7L902.38,507.7z","name":"New Zealand"},"nc":{"path":"M906.64,420.47l-0.35,1.79l4.61,6.43l2.48,1.07l0.35-2.5L906.64,420.47L906.64,420.47z","name":"New Caledonia"},"my":{"path":"M764.14,332.92l3.02,3.49l11.58-4.01l2.29-8.84l5.16-0.37l4.72-3.42l-6.12-4.46l-1.4-2.45l-3.02,5.57l1.11,3.2l-1.84,2.67l-3.47-0.89l-8.41,6.17l0.22,3.57L764.14,332.92L764.14,332.92M732.71,315.45l2.01,4.51l0.45,5.86l2.69,4.17l6.49,3.94l2.46,0.23l-0.45-4.06l-2.13-5.18l-3.12-6.63l-0.26,1.16l-3.76-0.17l-2.7-3.88L732.71,315.45L732.71,315.45z","name":"Malaysia"},"bn":{"path":"M779.77,319.25l-2.88,3.49l2.36,0.74l1.33-1.86L779.77,319.25L779.77,319.25z","name":"Brunei Darussalam"},"tl":{"path":"M806.14,368.42l-5.11,4.26l0.49,1.09l2.16-0.4l2.55-2.38l5.01-0.69l-0.98-1.68L806.14,368.42L806.14,368.42z","name":"Timor-Leste"},"sb":{"path":"M895.43,364.65l0.15,2.28l1.39,1.32l1.31-0.81l-1.17-2.43L895.43,364.65L895.43,364.65M897.18,370.31l-1.17,1.25l1.24,2.28l1.46,0.44l-0.07-1.54L897.18,370.31L897.18,370.31M900.03,368.99l1.02,2.5l1.97,2.35l1.09-1.76l-1.46-2.5L900.03,368.99L900.03,368.99M905.14,372.74l0.58,3.09l1.39,1.91l1.17-2.42L905.14,372.74L905.14,372.74M906.74,379.65l-0.51,0.88l1.68,2.21l1.17,0.07l-0.73-2.87L906.74,379.65L906.74,379.65M903.02,384.05l-1.75,0.81l1.53,2.13l1.31-0.74L903.02,384.05L903.02,384.05z","name":"Solomon Islands"},"vu":{"path":"M920.87,397.22l-1.24,1.66l0.52,1.87l0.62,0.42l1.13-1.46L920.87,397.22L920.87,397.22M921.49,402.31l0.1,1.35l1.34,0.42l0.93-0.52l-0.93-1.46L921.49,402.31L921.49,402.31M923.45,414.37l-0.62,0.94l0.93,1.04l1.55-0.52L923.45,414.37L923.45,414.37z","name":"Vanuatu"},"fj":{"path":"M948.62,412.29l-1.24,1.66l-0.1,1.87l1.44,1.46L948.62,412.29L948.62,412.29z","name":"Fiji"},"ph":{"path":"M789.37,297.53l-0.86,1.64l-0.48,2.02l-4.78,6.07l0.29,1.25l2.01-0.29l6.21-6.94L789.37,297.53L789.37,297.53M797.11,295.22l-0.1,5.01l1.82,1.83l0.67,3.56l1.82,0.39l0.86-2.22l-1.43-1.06l-0.38-6.26L797.11,295.22L797.11,295.22M802.28,297.15l-0.1,4.43l1.05,1.73l1.82-2.12l-0.48-3.85L802.28,297.15L802.28,297.15M803.42,293.29l1.82,2.41l0.86,2.31h1.63l-0.29-3.95l-1.82-1.25L803.42,293.29L803.42,293.29M806.96,302.35l0.38,2.89l-3.35,2.7l-2.77,0.29l-2.96,3.18l0.1,1.45l2.77-0.87l1.91-1.25l1.63,4.14l2.87,2.02l1.15-0.39l1.05-1.25l-2.29-2.31l1.34-1.06l1.53,1.25l1.05-1.73l-1.05-2.12l-0.19-4.72L806.96,302.35L806.96,302.35M791.38,272.97l-2.58,1.83l-0.29,5.78l4.02,7.8l1.34,1.06l1.72-1.16l2.96,0.48l0.57,2.6l2.2,0.19l1.05-1.44l-1.34-1.83l-1.63-1.54l-3.44-0.38l-1.82-2.99l2.1-3.18l0.19-2.79l-1.43-3.56L791.38,272.97L791.38,272.97M792.72,290.21l0.76,2.7l1.34,0.87l0.96-1.25l-1.53-2.12L792.72,290.21L792.72,290.21z","name":"Philippines"},"cn":{"path":"M759.83,270.17l-2.39,0.67l-1.72,2.12l1.43,2.79l2.1,0.19l2.39-2.12l0.57-2.79L759.83,270.17L759.83,270.17M670.4,170.07l-3.46,8.7l-4.77-0.25l-5.03,11.01l4.27,5.44l-8.8,12.15l-4.52-0.76l-3.02,3.8l0.75,2.28l3.52,0.25l1.76,4.05l3.52,0.76l10.81,13.93v7.09l5.28,3.29l5.78-1.01l7.29,4.3l8.8,2.53l4.27-0.51l4.78-0.51l10.05-6.58l3.27,0.51l1.25,2.97l2.77,0.83l3.77,5.57l-2.51,5.57l1.51,3.8l4.27,1.52l0.75,4.56l5.03,0.51l0.75-2.28l7.29-3.8l4.52,0.25l5.28,5.82l3.52-1.52l2.26,0.25l1.01,2.79l1.76,0.25l2.51-3.54l10.05-3.8l9.05-10.89l3.02-10.38l-0.25-6.84l-3.77-0.76l2.26-2.53l-0.5-4.05l-9.55-9.62v-4.81l2.76-3.54l2.76-1.27l0.25-2.79h-7.04l-1.26,3.8l-3.27-0.76l-4.02-4.3l2.51-6.58l3.52-3.8l3.27,0.25l-0.5,5.82l1.76,1.52l4.27-4.3l1.51-0.25l-0.5-3.29l4.02-4.81l3.02,0.25l1.76-5.57l2.06-1.09l0.21-3.47l-2-2.1l-0.17-5.48l3.85-0.25l-0.25-14.13l-2.7,1.62l-1.01,3.62l-4.51-0.01l-13.07-7.35l-9.44-11.38l-9.58-0.1l-2.44,2.12l3.1,7.1l-1.08,6.66l-3.86,1.6l-2.17-0.17l-0.16,6.59l2.26,0.51l4.02-1.77l5.28,2.53v2.53l-3.77,0.25l-3.02,6.58l-2.76,0.25l-9.8,12.91l-10.3,4.56l-7.04,0.51l-4.77-3.29l-6.79,3.55l-7.29-2.28l-1.76-4.81l-12.31-0.76l-6.53-10.63h-2.76l-2.22-4.93L670.4,170.07z","name":"China"},"tw":{"path":"M787.46,248.31l-3.54,2.7l-0.19,5.2l3.06,3.56l0.76-0.67L787.46,248.31L787.46,248.31z","name":"Taiwan"},"jp":{"path":"M803.23,216.42l-1.63,1.64l0.67,2.31l1.43,0.1l0.96,5.01l1.15,1.25l2.01-1.83l0.86-3.28l-2.49-3.56L803.23,216.42L803.23,216.42M812.03,213.15l-2.77,2.6l-0.1,2.99l0.67,0.87l3.73-3.18l-0.29-3.18L812.03,213.15L812.03,213.15M808.2,206.98l-4.88,5.59l0.86,1.35l2.39,0.29l4.49-3.47l3.16-0.58l2.87,3.37l2.2-0.77l0.86-3.28l4.11-0.1l4.02-4.82l-2.1-8l-0.96-4.24l2.1-1.73l-4.78-7.22l-1.24,0.1l-2.58,2.89v2.41l1.15,1.35l0.38,6.36l-2.96,3.66l-1.72-1.06l-1.34,2.99l-0.29,2.79l1.05,1.64l-0.67,1.25l-2.2-1.83h-1.53l-1.34,0.77L808.2,206.98L808.2,206.98M816.43,163.44l-1.53,1.35l0.77,2.89l1.34,1.35l-0.1,4.43l-1.72,0.67l-1.34,2.99l3.92,5.39l2.58-0.87l0.48-1.35l-2.77-2.5l1.72-2.22l1.82,0.29l1.43,1.54l0.1-3.18l3.92-3.18l2.2-0.58l-1.82-3.08l-0.86-1.35l-1.43,0.96l-1.24,1.54l-2.68-0.58l-2.77-1.83L816.43,163.44L816.43,163.44z","name":"Japan"},"ru":{"path":"M506.61,151.72l-1.5-0.15l-2.7,3.23v1.51l0.9,0.35l1.75,0.05l2.9-2.37l0.4-0.81L506.61,151.72L506.61,151.72M830.86,160.45l-2.68,3.76l0.19,1.83l1.34-0.58l3.15-3.95L830.86,160.45L830.86,160.45M834.4,154.96l-0.96,2.6l0.1,1.73l1.63-1.06l1.53-3.08V154L834.4,154.96L834.4,154.96M840.04,132.03l-1.24,1.54l0.1,2.41l1.15-0.1l1.91-3.37L840.04,132.03L840.04,132.03M837.75,137.91v4.24l1.34,0.48l0.96-1.54v-3.27L837.75,137.91L837.75,137.91M798.64,122.59l-0.09,6.17l7.74,11.95l2.77,10.4l4.88,9.25l1.91,0.67l1.63-1.35l0.76-2.22l-6.98-7.61l0.19-3.95l1.53-0.67l0.38-2.31l-13.67-19.36L798.64,122.59L798.64,122.59M852.57,103.42l-1.91,0.19l1.15,1.64l2.39,1.64l0.67-0.77L852.57,103.42L852.57,103.42M856.29,104.58l0.29,1.64l2.96,0.87l0.29-1.16L856.29,104.58L856.29,104.58M547.82,38.79l1.72,0.69l-1.21,2.08v2.95l-2.58,1.56H543l-1.55-1.91l0.17-2.08l1.21-1.56h2.41L547.82,38.79L547.82,38.79M554.36,36.88v2.08l1.72,1.39l2.41-0.17l2.07-1.91v-1.39h-1.89l-1.55,0.52l-1.21-1.39L554.36,36.88L554.36,36.88M564.18,37.06l1.21,2.6l2.41,0.17l1.72-0.69l-0.86-2.43l-2.24-0.52L564.18,37.06L564.18,37.06M573.99,33.59l-1.89-0.35l-1.72,1.74l0.86,1.56l0.52,2.43l2.24-1.73l0.52-1.91L573.99,33.59L573.99,33.59M584.49,51.98l-0.52,2.43l-3.96,3.47l-8.44,1.91l-6.89,11.45l-1.21,3.3l6.89,1.74l1.03-4.16l2.07-6.42l5.34-2.78l4.48-3.47l3.27-1.39h1.72v-4.68L584.49,51.98L584.49,51.98M562.28,77.31l4.65,0.52l1.55,5.38l3.96,4.16l-1.38,2.78h-2.41l-2.24-2.6l-4.99-0.17l-2.07-2.78v-1.91l3.1-0.87L562.28,77.31L562.28,77.31M634.95,18.15l-2.24-1.39h-2.58l-0.52,1.56l-2.75,1.56l-2.07,0.69l-0.34,2.08l4.82,0.35L634.95,18.15L634.95,18.15M640.28,18.67l-1.21,2.6l-2.41-0.17l-3.79,2.78l-1.03,3.47h2.41l1.38-2.26l3.27,2.43l3.1-1.39l2.24-1.91l-0.86-2.95l-1.21-2.08L640.28,18.67L640.28,18.67M645.28,20.58l1.21,4.86l1.89,4.51l2.07-3.64l3.96-0.87v-2.6l-2.58-1.91L645.28,20.58L645.28,20.58M739.76,12.8l2.69,2.26l1.91-0.79l0.56-3.17L741,8.39l-2.58,1.7l-6.28,0.57v2.83l-6.62,0.11v4.63l7.74,5.76l2.02-1.47l-0.45-4.07l4.94-1.24l-1.01-1.92l-1.79-1.81L739.76,12.8L739.76,12.8M746.94,10.09l1.79,3.39l6.96-0.79l1.91-2.49l-0.45-2.15l-1.91-0.79l-1.79,1.36l-5.16,1.13L746.94,10.09L746.94,10.09M746.49,23.31l-3.48-0.9L741,24.56l-0.9,2.94l4.71-0.45l3.59-1.81L746.49,23.31L746.49,23.31M836.68,3.76l-2.92-0.9L830.4,4.1l-1.68,2.49l2.13,2.83l5.61-2.49l1.12-1.24L836.68,3.76L836.68,3.76M817.97,72.93l1.76,6.08l3.52,1.01l3.52-5.57l-2.01-3.8l0.75-3.29h5.28l-1.26,2.53l0.5,9.12l-7.54,18.74l0.75,4.05l-0.25,6.84l14.07,20.51l2.76,0.76l0.25-16.71l2.76-2.53l-3.02-6.58l2.51-2.79l-5.53-7.34l-3.02,0.25l-1-12.15l7.79-2.03l0.5-3.55l4.02-1.01l2.26,2.03l2.76-11.14l4.77-8.1l3.77-2.03l3.27,0.25v-3.8l-5.28-1.01l-7.29-6.08l3.52-4.05l-3.02-6.84l2.51-2.53l3.02,4.05l7.54,2.79l8.29,0.76l1.01-3.54l-4.27-4.3l4.77-6.58l-10.81-3.8l-2.76,5.57l-3.52-4.56l-19.85-6.84l-18.85,3.29l-2.76,1.52v1.52l4.02,2.03l-0.5,4.81l-7.29-3.04l-16.08,6.33l-2.76-5.82h-11.06l-5.03,5.32l-17.84-4.05l-16.33,3.29l-2.01,5.06l2.51,0.76l-0.25,3.8l-15.83,1.77l1.01,5.06l-14.58-2.53l3.52-6.58l-14.83-0.76l1.26,6.84l-4.77,2.28l-4.02-3.8l-16.33,2.79l-6.28,5.82l-0.25,3.54l-4.02,0.25l-0.5-4.05l12.82-11.14v-7.6l-8.29-2.28l-10.81,3.54l-4.52-4.56h-2.01l-2.51,5.06l2.01,2.28l-14.33,7.85l-12.31,9.37l-7.54,10.38v4.3l8.04,3.29l-4.02,3.04l-8.54-3.04l-3.52,3.04l-5.28-6.08l-1.01,2.28l5.78,18.23l1.51,0.51l4.02-2.03l2.01,1.52v3.29l-3.77-1.52l-2.26,1.77l1.51,3.29l-1.26,8.61l-7.79,0.76l-0.5-2.79l4.52-2.79l1.01-7.6l-5.03-6.58l-1.76-11.39l-8.04-1.27l-0.75,4.05l1.51,2.03l-3.27,2.79l1.26,7.6l4.77,2.03l1.01,5.57l-4.78-3.04l-12.31-2.28l-1.51,4.05l-9.8,3.54l-1.51-2.53l-12.82,7.09l-0.25,4.81l-5.03,0.76l1.51-3.54v-3.54l-5.03-1.77l-3.27,1.27l2.76,5.32l2.01,3.54v2.79l-3.77-0.76l-0.75-0.76l-3.77,4.05l2.01,3.54l-8.54-0.25l2.76,3.55l-0.75,1.52h-4.52l-3.27-2.28l-0.75-6.33l-5.28-2.03v-2.53l11.06,2.28l6.03,0.51l2.51-3.8l-2.26-4.05l-16.08-6.33l-5.55,1.38l-1.9,1.63l0.59,3.75l2.36,0.41l-0.55,5.9l7.28,17.1l-5.26,8.34l-0.36,1.88l2.67,1.88l-2.41,1.59l-1.6,0.03l0.3,7.35l2.21,3.13l0.03,3.04l2.83,0.26l4.33,1.65l4.58,6.3l0.05,1.66l-1.49,2.55l3.42-0.19l3.33,0.96l4.5,6.37l11.08,1.01l-0.48,7.58l-3.82,3.27l0.79,1.28l-3.77,4.05l-1,3.8l2.26,3.29l7.29,2.53l3.02-1.77l19.35,7.34l0.75-2.03l-4.02-3.8v-4.81l-2.51-0.76l0.5-4.05l4.02-4.81l-7.21-5.4l0.5-7.51l7.71-5.07l9.05,0.51l1.51,2.79l9.3,0.51l6.79-3.8l-3.52-3.8l0.75-7.09l17.59-8.61l13.53,6.1l4.52-4.05l13.32,12.66l10.05-1.01l3.52,3.54l9.55,1.01l6.28-8.61l8.04,3.55l4.27,0.76l4.27-3.8l-3.77-2.53l3.27-5.06l9.3,3.04l2.01,4.05l4.02,0.25l2.51-1.77l6.79-0.25l0.75,1.77l7.79,0.51l5.28-5.57l10.81,1.27l3.27-1.27l1-6.08l-3.27-7.34l3.27-2.79h10.3l9.8,11.65l12.56,7.09h3.77l0.5-3.04l4.52-2.79l0.5,16.46l-4.02,0.25v4.05l2.26,2.79l-0.42,3.62l1.67,0.69l1.01-2.53l1.51,0.51l1,1.01l4.52-1.01l4.52-13.17l0.5-16.46l-5.78-13.17l-7.29-8.86l-3.52,0.51v2.79l-8.54-3.29l3.27-7.09l2.76-18.74l11.56-3.54l5.53-3.54h6.03L805.86,96l1.51,2.53l5.28-5.57l3.02,0.25l-0.5-3.29l-4.78-1.01l3.27-11.9L817.97,72.93L817.97,72.93z","name":"Russian Federation"},"us":{"path":"M69.17,53.35l3.46,6.47l2.22-0.5v-2.24L69.17,53.35L69.17,53.35M49.66,110.26l-0.17,3.01l2.16-0.5v-1.34L49.66,110.26L49.66,110.26M46.34,111.6l-4.32,2.18l0.67,2.34l1.66-1.34l3.32-1.51L46.34,111.6L46.34,111.6M28.39,114.44l-2.99-0.67l-0.5,1.34l0.33,2.51L28.39,114.44L28.39,114.44M22.07,114.28l-2.83-1.17l-1,1.84l1.83,1.84L22.07,114.28L22.07,114.28M12.27,111.6l-1.33-1.84l-1.33,0.5v2.51l1.5,1L12.27,111.6L12.27,111.6M1.47,99.71l1.66,1.17l-0.5,1.34H1.47V99.71L1.47,99.71M10,248.7l-0.14,2.33l2.04,1.37l1.22-1.09L10,248.7L10,248.7M15.29,252.13l-1.9,1.37l1.63,2.05l1.9-1.64L15.29,252.13L15.29,252.13M19.1,255.41l-1.63,2.19l0.54,1.37l2.31-1.09L19.1,255.41L19.1,255.41M21.81,259.65l-0.95,5.47l0.95,2.05l3.12-0.96l1.63-2.74l-3.4-3.15L21.81,259.65L21.81,259.65M271.05,281.06l-2.64-0.89l-2.12,1.33l1.06,1.24l3.61,0.53L271.05,281.06L271.05,281.06M93.11,44.89l-8.39,1.99l1.73,9.45l9.13,2.49l0.49,1.99L82.5,65.04l-7.65,12.68l2.71,13.43L82,94.13l3.46-3.23l0.99,1.99l-4.2,4.97l-16.29,7.46l-10.37,2.49l-0.25,3.73l23.94-6.96l9.87-2.74l9.13-11.19l10.12-6.71l-5.18,8.7l5.68,0.75l9.63-4.23l1.73,6.96l6.66,1.49l6.91,6.71l0.49,4.97l-0.99,1.24l1.23,4.72h1.73l0.25-7.96h1.97l0.49,19.64l4.94-4.23l-3.46-20.39h-5.18l-5.68-7.21l27.89-47.25l-27.64-21.63l-30.85,5.97l-1.23,9.45l6.66,3.98l-2.47,6.47L93.11,44.89L93.11,44.89M148.76,158.34l-1,4.02l-3.49-2.26h-1.74l-1,4.27l-12.21,27.36l3.24,23.84l3.99,2.01l0.75,6.53h8.22l7.97,6.02l15.69,1.51l1.74,8.03l2.49,1.76l3.49-3.51l2.74,1.25l2.49,11.54l4.23,2.76l3.49-6.53l10.71-7.78l6.97,3.26l5.98,0.5l0.25-3.76l12.45,0.25l2.49,2.76l0.5,6.27l-1.49,3.51l1.74,6.02h3.74l3.74-5.77l-1.49-2.76l-1.49-6.02l2.24-6.78l10.21-8.78l7.72-2.26l-1-7.28l10.71-11.55l10.71-1.76L272.8,199l10.46-6.02v-8.03l-1-0.5l-3.74,1.25l-0.5,4.92l-12.43,0.15l-9.74,6.47l-15.29,5l-2.44-2.99l6.94-10.5l-3.43-3.27l-2.33-4.44l-4.83-3.88l-5.25-0.44l-9.92-6.77L148.76,158.34L148.76,158.34z","name":"United States of America"},"mu":{"path":"M613.01,398.99l-1.52,1.99l0.3,2.15l3.2-2.61L613.01,398.99L613.01,398.99z","name":"Mauritius"},"re":{"path":"M607.38,402.37l-2.28,0.15l-0.15,1.99l1.52,0.31l2.28-1.07L607.38,402.37L607.38,402.37z","name":"Reunion"},"mg":{"path":"M592.3,372.92l-2.13,5.06l-3.65,6.44l-6.39,0.46l-2.74,3.22l0.46,9.82l-3.96,4.6l0.46,7.82l3.35,3.83l3.96-0.46l3.96-2.92l-0.91-4.6l9.13-15.8l-1.83-1.99l1.83-3.83l1.98,0.61l0.61-1.53l-1.83-7.82l-1.07-3.22L592.3,372.92L592.3,372.92z","name":"Madagascar"},"km":{"path":"M577.69,371.23l0.46,1.53l1.98,0.31l0.76-1.99L577.69,371.23L577.69,371.23M580.58,374.3l0.76,1.69h1.22l0.61-2.15L580.58,374.3L580.58,374.3z","name":"Comoros"},"sc":{"path":"M602.35,358.34l-0.61,1.23l1.67,1.38l1.22-1.38L602.35,358.34L602.35,358.34M610.88,349.14l-1.83,1.23l1.37,2.15h1.83L610.88,349.14L610.88,349.14M611.64,354.51l-1.22,1.38l0.91,1.38l1.67,0.31l0.15-2.92L611.64,354.51L611.64,354.51z","name":"Seychelles"},"mv":{"path":"M656.4,320.76l0.3,2.61l1.67,0.61l0.3-2.3L656.4,320.76L656.4,320.76M658.53,326.28l-0.15,3.22l1.22,0.61l1.07-2.15L658.53,326.28L658.53,326.28M658.84,332.57l-1.07,1.07l1.22,1.07l1.52-1.07L658.84,332.57L658.84,332.57z","name":"Maldives"},"pt":{"path":"M372.64,217.02l-1.36,1.37l2.44,1.37l0.27-1.91L372.64,217.02L372.64,217.02M379.97,216.2l-1.63,1.09l1.36,1.09l2.17-0.55L379.97,216.2L379.97,216.2M381.05,220.03l-0.81,2.19l1.08,1.37l1.36-1.09L381.05,220.03L381.05,220.03M387.56,224.4l-0.54,1.37l0.81,0.82l2.17-1.37L387.56,224.4L387.56,224.4M408.18,236.42l-1.08,1.37l1.08,1.37l1.63-0.82L408.18,236.42L408.18,236.42M430.93,211.24l-0.62,8.65l-1.77,1.6l0.18,0.98l1.24,2.05l-0.8,2.5l1.33,0.45l3.1-0.36l-0.18-2.5l2.03-11.59l-0.44-1.6L430.93,211.24L430.93,211.24z","name":"Portugal"},"es":{"path":"M415.62,253.73l-1.75,1.01l0.81,0.82L415.62,253.73L415.62,253.73M409.54,253.92l-2.17,0.55l1.08,1.64h1.63L409.54,253.92L409.54,253.92M404.38,252.28l-1.36,1.37l1.9,1.64l1.08-2.46L404.38,252.28L404.38,252.28M448.36,205h-12.74l-2.57-1.16l-1.24,0.09l-1.5,3.12l0.53,3.21l4.87,0.45l0.62,2.05l-2.12,11.95l0.09,2.14l3.45,1.87l3.98,0.27l7.96-1.96l3.89-4.9l0.09-4.99l6.9-6.24l0.35-2.76l-6.28-0.09L448.36,205L448.36,205M461.1,217.21l-1.59,0.54l0.35,1.43h2.3l0.97-1.07L461.1,217.21L461.1,217.21z","name":"Spain"},"cv":{"path":"M387.56,290.54l-1.9,1.09l1.36,1.09l1.63-0.82L387.56,290.54L387.56,290.54M392.23,292.74l-1.24,1.1l0.88,1.63l2.12-0.95L392.23,292.74L392.23,292.74M389.52,295.83l-1.59,0.95l1.71,2.29l1.35-0.71L389.52,295.83L389.52,295.83z","name":"Cape Verde"},"pf":{"path":"M27.25,402.68l-1.9-0.14l-0.14,1.78l1.49,0.96l1.77-1.09L27.25,402.68L27.25,402.68M33.77,404.6l-2.72,1.78l2.04,2.46l1.77-0.41l0.95-1.23L33.77,404.6L33.77,404.6z","name":"French Polynesia"},"kn":{"path":"M276.6,283.37l-1.5,0.62l0.53,1.33l1.76-1.15l-0.35-0.36L276.6,283.37L276.6,283.37z","name":"Saint Kitts and Nevis"},"ag":{"path":"M279.07,284.88l-0.88,1.87l1.06,1.42l1.32-1.15L279.07,284.88L279.07,284.88z","name":"Antigua and Barbuda"},"dm":{"path":"M282.07,290.03l-1.06,0.98l0.79,1.6l1.5-0.44L282.07,290.03L282.07,290.03z","name":"Dominica"},"lc":{"path":"M281.98,294.03l-0.71,1.51l1.15,1.24l1.5-0.8L281.98,294.03L281.98,294.03z","name":"Saint Lucia"},"bb":{"path":"M282.07,297.85l-1.23,0.89l0.97,1.78l1.59-0.89L282.07,297.85L282.07,297.85z","name":"Barbados"},"gd":{"path":"M280.57,301.31l-1.15,1.15l0.44,0.71h1.41l0.44-1.16L280.57,301.31L280.57,301.31z","name":"Grenada"},"tt":{"path":"M282.24,304.78l-1.06,0.98l-1.15,0.18v1.42l2.12,1.95l0.88-1.42l0.53-1.6l-0.18-1.33L282.24,304.78L282.24,304.78z","name":"Trinidad and Tobago"},"do":{"path":"M263.11,280.44l-5.29-3.46l-2.5-0.85l-0.84,6l0.88,1.69l1.15-1.33l3.35-0.89l2.91,0.62L263.11,280.44L263.11,280.44z","name":"Dominican Republic"},"ht":{"path":"M250.86,275.38l3.44,0.36l-0.41,4.22l-0.34,2.22l-4.01-0.22l-0.71,1.07l-1.23-0.09l-0.44-2.31l4.23-0.35l-0.26-2.4l-1.94-0.8L250.86,275.38L250.86,275.38z","name":"Haiti"},"fk":{"path":"M307.95,508.18l-2.63-0.29l-2.62,1.76l1.9,2.06L307.95,508.18L307.95,508.18M310.57,506.86l-0.87,2.79l-2.48,2.2l0.15,0.73l4.23-1.62l1.75-2.2L310.57,506.86L310.57,506.86z","name":"Falkland Islands"},"is":{"path":"M406.36,117.31l-1.96-1.11l-2.64,1.67l-2.27,2.1l0.06,1.17l2.94,0.37l-0.18,2.1l-1.04,1.05l0.25,0.68l2.94,0.19v3.4l4.23,0.74l2.51,1.42l2.82,0.12l4.84-2.41l3.74-4.94l0.06-3.34l-2.27-1.92l-1.9-1.61l-0.86,0.62l-1.29,1.67l-1.47-0.19l-1.47-1.61l-1.9,0.18l-2.76,2.29l-1.66,1.79l-0.92-0.8l-0.06-1.98l0.92-0.62L406.36,117.31L406.36,117.31z","name":"Iceland"},"no":{"path":"M488.26,53.96l-1.65-1.66l-3.66,1.78h-6.72L475.17,58l3.77,3.33l1.65-0.24l2.36-4.04l2,1.43l-1.42,2.85l-0.71,4.16l1.65,2.61l3.54-5.94l4.6-5.59l-1.77-1.54L488.26,53.96L488.26,53.96M490.26,46.83l-2.95,2.73l1.77,2.73h3.18l1.3,1.78l3.89,2.02l4.48-2.61l3.07-2.61l-1.06-2.14l-3.07-1.78l-2.24,2.02l-1.53-1.9l-1.18,0.12l-1.53,3.33l-2.24-2.26l-0.24-1.54L490.26,46.83L490.26,46.83M496.98,59.07l-2.36,2.14l-2,1.54l0.94,1.66l1.89,0.59l3.07-1.43l1.42-1.78l-1.3-2.14L496.98,59.07L496.98,59.07M515.46,102.14l2.02-1.48L517.3,99l-1.28-0.74l0.18-2.03h1.1v-1.11l-4.77-1.29l-7.15,0.74l-0.73,3.14L503,97.16l-1.1-1.85l-3.49,0.18L498.04,99l-1.65,0.74l-0.92-1.85l-7.34,5.91l1.47,1.66l-2.75,1.29l-6.24,12.38l-2.2,1.48l0.18,1.11l2.2,1.11l-0.55,2.4l-3.67-0.19l-1.1-1.29l-2.38,2.77l-1.47,1.11l-0.37,2.59l-1.28,0.74l-3.3,0.74l-1.65,5.18l1.1,8.5l1.28,3.88l1.47,1.48l3.3-0.18l4.77-4.62l1.83-3.14l0.55,4.62l3.12-5.54l0.18-15.53l2.54-1.6l0.76-8.57l7.7-11.09l3.67-1.29l1.65-2.03l5.5,1.29l2.75,1.66l0.92-4.62l4.59-2.77L515.46,102.14L515.46,102.14z","name":"Norway"},"lk":{"path":"M680.54,308.05l0.25,2.72l0.25,1.98l-1.47,0.25l0.74,4.45l2.21,1.24l3.43-1.98l-0.98-4.69l0.25-1.73l-3.19-2.96L680.54,308.05L680.54,308.05z","name":"Sri Lanka"},"cu":{"path":"M220.85,266.92v1.27l5.32,0.1l2.51-1.46l0.39,1.07l5.22,1.27l4.64,4.19l-1.06,1.46l0.19,1.66l3.87,0.97l3.87-1.75l1.74-1.75l-2.51-1.27l-12.95-7.6l-4.54-0.49L220.85,266.92L220.85,266.92z","name":"Cuba"},"bs":{"path":"M239.61,259.13l-1.26-0.39l-0.1,2.43l1.55,1.56l1.06-1.56L239.61,259.13L239.61,259.13M242.12,262.93l-1.74,0.97l1.64,2.34l0.87-1.17L242.12,262.93L242.12,262.93M247.73,264.68l-1.84-0.1l0.19,1.17l1.35,1.95l1.16-1.27L247.73,264.68L247.73,264.68M246.86,262.35l-3-1.27l-0.58-3.02l1.16-0.49l1.16,2.34l1.16,0.88L246.86,262.35L246.86,262.35M243.96,256.21l-1.55-0.39l-0.29-1.95l-1.64-0.58l1.06-1.07l1.93,0.68l1.45,0.88L243.96,256.21L243.96,256.21z","name":"Bahamas"},"jm":{"path":"M238.93,279.59l-3.48,0.88v0.97l2.03,1.17h2.13l1.35-1.56L238.93,279.59L238.93,279.59z","name":"Jamaica"},"ec":{"path":"M230.2,335.85l-4.73,2.94l-0.34,4.36l-0.95,1.43l2.98,2.86l-1.29,1.41l0.3,3.6l5.33,1.27l8.07-9.55l-0.02-3.33l-3.87-0.25L230.2,335.85L230.2,335.85z","name":"Ecuador"},"ca":{"path":"M203.73,35.89l0.22,4.02l-7.98,8.27l2,6.7l5.76-1.56l3.33-4.92l8.42-3.13l6.87-0.45l-5.32-5.81l-2.66,2.01l-2-0.67l-1.11-2.46l-2.44-2.46L203.73,35.89L203.73,35.89M214.15,24.05l-1.77,3.13l8.65,3.13l3.1-4.69l1.33,3.13h2.22l4.21-4.69l-5.1-1.34l-2-1.56l-2.66,2.68L214.15,24.05L214.15,24.05M229.23,30.31l-6.87,2.9v2.23l8.87,3.35l-2,2.23l1.33,2.9l5.54-2.46h4.66l2.22,3.57l3.77-3.8l-0.89-3.58l-3.1,1.12l-0.44-4.47l1.55-2.68h-1.55l-2.44,1.56l-1.11,0.89l0.67,3.13l-1.77,1.34l-2.66-0.22l-0.67-4.02L229.23,30.31L229.23,30.31M238.32,23.38l-0.67,2.23l4.21,2.01l3.1-1.79l-0.22-1.34L238.32,23.38L238.32,23.38M241.64,19.58l-3.1,1.12l0.22,1.56l6.87-0.45l-0.22-1.56L241.64,19.58L241.64,19.58M256.5,23.38l-0.44,1.56l-1.11,1.56v2.23l4.21-0.67l4.43,3.8h1.55v-3.8l-4.43-4.92L256.5,23.38L256.5,23.38M267.81,27.85l1.77,2.01l-1.55,2.68l1.11,2.9l4.88-2.68v-2.01l-2.88-3.35L267.81,27.85L267.81,27.85M274.24,22.71l0.22,3.57h5.99l1.55,1.34l-0.22,1.56l-5.32,0.67l3.77,5.14l5.1,0.89l7.09-3.13l-10.2-15.42l-3.1,2.01l0.22,2.68l-3.55-1.34L274.24,22.71L274.24,22.71M222.58,47.96l-8.42,2.23l-4.88,4.25l0.44,4.69l8.87,2.68l-2,4.47l-6.43-4.02l-1.77,3.35l4.21,2.9l-0.22,4.69l6.43,1.79l7.76-0.45l1.33-2.46l5.76,6.48l3.99-1.34l0.67-4.47l2.88,2.01l0.44-4.47l-3.55-2.23l0.22-14.07l-3.1-2.46L231.89,56L222.58,47.96L222.58,47.96M249.63,57.79l-2.88-1.34l-1.55,2.01l3.1,4.92l0.22,4.69l6.65-4.02v-5.81l2.44-2.46l-2.44-1.79h-3.99L249.63,57.79L249.63,57.79M263.82,55.78l-4.66,3.8l1.11,4.69h2.88l1.33-2.46l2,2.01l2-0.22l5.32-4.47L263.82,55.78L263.82,55.78M263.37,48.4l-1.11,2.23l4.88,1.79l1.33-2.01L263.37,48.4L263.37,48.4M260.49,39.91l-4.88,0.67l-2.88,2.68l5.32,0.22l-1.55,4.02l1.11,1.79l1.55-0.22l3.77-6.03L260.49,39.91L260.49,39.91M268.92,38.35l-2.66,0.89l0.44,3.57l4.43,2.9l0.22,2.23l-1.33,1.34l0.67,4.47l17.07,5.58l4.66,1.56l4.66-4.02l-5.54-4.47l-5.1,1.34l-7.09-0.67l-2.66-2.68l-0.67-7.37l-4.43-2.23L268.92,38.35L268.92,38.35M282.88,61.59L278,61.14l-5.76,2.23l-3.1,4.24l0.89,11.62l9.53,0.45l9.09,4.47l6.43,7.37l4.88-0.22l-1.33,6.92l-4.43,7.37l-4.88,2.23l-3.55-0.67l-1.77-1.56l-2.66,3.57l1.11,3.57l3.77,0.22l4.66-2.23l3.99,10.28l9.98,6.48l6.87-8.71l-5.76-9.38l3.33-3.8l4.66,7.82l8.42-7.37l-1.55-3.35l-5.76,1.79l-3.99-10.95l3.77-6.25l-7.54-8.04l-4.21,2.9l-3.99-8.71l-8.42,1.12l-2.22-10.5l-6.87,4.69l-0.67,5.81h-3.77l0.44-5.14L282.88,61.59L282.88,61.59M292.86,65.61l-1.77,1.79l1.55,2.46l7.32,0.89l-4.66-4.92L292.86,65.61L292.86,65.61M285.77,40.36v2.01l-4.88,1.12l1.33,2.23l5.54,2.23l6.21,0.67l4.43,3.13l4.43-2.46l-3.1-3.13h3.99l2.44-2.68l5.99-0.89v-1.34l-3.33-2.23l0.44-2.46l9.31,1.56l13.75-5.36l-5.1-1.56l1.33-1.79h10.64l1.77-1.79l-21.51-7.6l-5.1-1.79l-5.54,4.02l-6.21-5.14l-3.33-0.22l-0.67,4.25l-4.21-3.8l-4.88,1.56l0.89,2.46l7.32,1.56l-0.44,3.57l3.99,2.46l9.76-2.46l0.22,3.35l-7.98,3.8l-4.88-3.8l-4.43,0.45l4.43,6.26l-2.22,1.12l-3.33-2.9l-2.44,1.56l2.22,4.24h3.77l-0.89,4.02l-3.1-0.45l-3.99-4.25L285.77,40.36L285.77,40.36M266.01,101.85l-4.23,5.32l-0.26,5.86l3.7-2.13h4.49l3.17,2.93l2.91-2.4L266.01,101.85L266.01,101.85M317.52,171.05l-10.57,10.12l1.06,2.4l12.94,4.79l1.85-3.19l-1.06-5.32l-4.23,0.53l-2.38-2.66l3.96-3.99L317.52,171.05L317.52,171.05M158.22,48.66l1.99,3.01l1,4.02l4.98,1.25l3.49-3.76l2.99,1.51l8.47,0.75l5.98-2.51l1,8.28h3.49V57.7l3.49,0.25l8.72,10.29l5.73,3.51l-2.99,4.77l1.25,1.25L219,80.03l0.25,5.02l2.99,0.5l0.75-7.53l4.73-1.25l3.49,5.27l7.47,3.51l3.74,0.75l2.49-3.01l0.25-4.77l4.48-2.76l1.49,4.02l-3.99,7.03l0.5,3.51l2.24-3.51l4.48-4.02l0.25-5.27l-2.49-4.02l0.75-3.26l5.98-3.01l2.74,2.01l0.5,17.57l4.23-3.76l2.49,1.51l-3.49,6.02l4.48,1l6.48-10.04l5.48,5.77l-2.24,10.29l-5.48,3.01l-5.23-2.51l-9.46,2.01l1,3.26l-2.49,4.02l-7.72,1.76l-8.72,6.78l-7.72,10.29l-1,3.26l5.23,2.01l1.99,5.02l7.22,7.28l11.46,5.02l-2.49,11.54l-0.25,3.26l2.99,2.01l3.99-5.27l0.5-10.04l6.23-0.25l2.99-5.77l0.5-8.78l7.97-15.56l9.96,3.51l5.23,7.28l-2.24,7.28l3.99,2.26l9.71-6.53l2.74,17.82l8.97,10.79l0.25,5.52l-9.96,2.51l-4.73,5.02l-9.96-2.26l-4.98-0.25l-8.72,6.78l5.23-1.25l6.48-1.25l1.25,1.51l-1.74,5.52l0.25,5.02l2.99,2.01l2.99-0.75l1.5-2.26h1.99l-3.24,6.02l-6.23,0.25l-2.74,4.02h-3.49l-1-3.01l4.98-5.02l-5.98,2.01l-0.27-8.53l-1.72-1l-5.23,2.26l-0.5,4.27h-11.96l-10.21,7.03l-13.7,4.52l-1.49-2.01l6.9-10.3l-3.92-3.77l-2.49-4.78l-5.07-3.87l-5.44-0.45l-9.75-6.83l-70.71-11.62l-1.17-4.79l-6.48-6.02v-5.02l1-4.52l-0.5-2.51l-2.49-2.51l-0.5-4.02l6.48-4.52l-3.99-21.58l-5.48-0.25l-4.98-6.53L158.22,48.66L158.22,48.66M133.83,128.41l-1.7,3.26l0.59,2.31l1.11,0.69l-0.26,0.94l-1.19,0.34l0.34,3.43l1.28,1.29l1.02-1.11l-1.28-3.34l0.76-2.66l1.87-2.49l-1.36-2.31L133.83,128.41L133.83,128.41M139.45,147.95l-1.53,0.6l2.81,3.26l0.68,3.86l2.81,3l2.38-0.43v-3.94l-2.89-1.8L139.45,147.95L139.45,147.95z","name":"Canada"},"gt":{"path":"M194.88,291.52l5.93,4.34l5.98-7.43l-1.02-1.54l-2.04-0.07v-4.35l-1.53-0.93l-4.63,1.38l1.77,4.08L194.88,291.52L194.88,291.52z","name":"Guatemala"},"hn":{"path":"M207.55,288.78l9.24-0.35l2.74,3.26l-1.71-0.39l-3.29,0.14l-4.3,4.04l-1.84,4.09l-1.21-0.64l-0.01-4.48l-2.66-1.78L207.55,288.78L207.55,288.78z","name":"Honduras"},"sv":{"path":"M201.65,296.27l4.7,2.34l-0.07-3.71l-2.41-1.47L201.65,296.27L201.65,296.27z","name":"El Salvador"},"ni":{"path":"M217.74,292.11l2.19,0.44l0.07,4.49l-2.55,7.28l-6.87-0.68l-1.53-3.51l2.04-4.26l3.87-3.6L217.74,292.11L217.74,292.11z","name":"Nicaragua"},"cr":{"path":"M217.38,304.98l1.39,2.72l1.13,1.5l-1.52,4.51l-2.9-2.04l-4.74-4.34v-2.87L217.38,304.98L217.38,304.98z","name":"Costa Rica"},"pa":{"path":"M220.59,309.61l-1.46,4.56l4.82,1.25l2.99,0.59l0.51-3.53l3.21-1.62l2.85,1.47l1.12,1.79l1.36-0.16l1.07-3.25l-3.56-1.47l-2.7-1.47l-2.7,1.84l-3.21,1.62l-3.28-1.32L220.59,309.61L220.59,309.61z","name":"Panama"},"co":{"path":"M253.73,299.78l-2.06-0.21l-13.62,11.23l-1.44,3.95l-1.86,0.21l0.83,8.73l-4.75,11.65l5.16,4.37l6.61,0.42l4.54,6.66l6.6,0.21l-0.21,4.99H256l2.68-9.15l-2.48-3.12l0.62-5.82l5.16-0.42l-0.62-13.52l-11.56-3.74l-2.68-7.28L253.73,299.78L253.73,299.78z","name":"Colombia"},"ve":{"path":"M250.46,305.92l0.44,2.59l3.25,1.03l0.74-4.77l3.43-3.55l3.43,4.02l7.89,2.15l6.68-1.4l4.55,5.61l3.43,2.15l-3.76,5.73l1.26,4.34l-2.15,2.66l-2.23,1.87l-4.83-2.43l-1.11,1.12v3.46l3.53,1.68l-2.6,2.81l-2.6,2.81l-3.43-0.28l-3.45-3.79l-0.73-14.26l-11.78-4.02l-2.14-6.27L250.46,305.92L250.46,305.92z","name":"Venezuela"},"gy":{"path":"M285.05,314.13l7.22,6.54l-2.87,3.32l-0.23,1.97l3.77,3.89l-0.09,3.74l-6.56,2.5l-3.93-5.31l0.84-6.38l-1.68-4.75L285.05,314.13L285.05,314.13z","name":"Guyana"},"sr":{"path":"M293.13,321.14l2.04,1.87l3.16-1.96l2.88,0.09l-0.37,1.12l-1.21,2.52l-0.19,6.27l-5.75,2.34l0.28-4.02l-3.71-3.46l0.19-1.78L293.13,321.14L293.13,321.14z","name":"Suriname"},"gf":{"path":"M302.13,321.8l5.85,3.65l-3.06,6.08l-1.11,1.4l-3.25-1.87l0.09-6.55L302.13,321.8L302.13,321.8z","name":"French Guiana"},"pe":{"path":"M225.03,349.52l-1.94,1.96l0.13,3.13l16.94,30.88l17.59,11.34l2.72-4.56l0.65-10.03l-1.42-6.25l-4.79-8.08l-2.85,0.91l-1.29,1.43l-5.69-6.52l1.42-7.69l6.6-4.3l-0.52-4.04l-6.72-0.26l-3.49-5.86l-1.94-0.65l0.13,3.52l-8.66,10.29l-6.47-1.56L225.03,349.52L225.03,349.52z","name":"Peru"},"bo":{"path":"M258.71,372.79l8.23-3.59l2.72,0.26l1.81,7.56l12.54,4.17l2.07,6.39l5.17,0.65l2.2,5.47l-1.55,4.95l-8.41,0.65l-3.1,7.95l-6.6-0.13l-2.07-0.39l-3.81,3.7l-1.88-0.18l-6.47-14.99l1.79-2.68l0.63-10.6l-1.6-6.31L258.71,372.79L258.71,372.79z","name":"Bolivia"},"py":{"path":"M291.76,399.51l2.2,2.4l-0.26,5.08l6.34-0.39l4.79,6.13l-0.39,5.47l-3.1,4.69l-6.34,0.26l-0.26-2.61l1.81-4.3l-6.21-3.91h-5.17l-3.88-4.17l2.82-8.06L291.76,399.51L291.76,399.51z","name":"Paraguay"},"uy":{"path":"M300.36,431.93l-2.05,2.19l0.85,11.78l6.44,1.87l8.19-8.21L300.36,431.93L300.36,431.93z","name":"Uruguay"},"ar":{"path":"M305.47,418.2l1.94,1.82l-7.37,10.95l-2.59,2.87l0.9,12.51l5.69,6.91l-4.78,8.34l-3.62,1.56h-4.14l1.16,6.51l-6.47,2.22l1.55,5.47l-3.88,12.38l4.79,3.91l-2.59,6.38l-4.4,6.91l2.33,4.82l-5.69,0.91l-4.66-5.73l-0.78-17.85l-7.24-30.32l2.19-10.6l-4.66-13.55l3.1-17.59l2.85-3.39l-0.7-2.57l3.66-3.34l8.16,0.56l4.56,4.87l5.27,0.09l5.4,3.3l-1.59,3.72l0.38,3.76l7.65-0.36L305.47,418.2L305.47,418.2M288.92,518.79l0.26,5.73l4.4-0.39l3.75-2.48l-6.34-1.3L288.92,518.79L288.92,518.79z","name":"Argentina"},"cl":{"path":"M285.04,514.1l-4.27,9.38l7.37,0.78l0.13-6.25L285.04,514.1L285.04,514.1M283.59,512.63l-3.21,3.55l-0.39,4.17l-6.21-3.52l-6.6-9.51l-1.94-3.39l2.72-3.52l-0.26-4.43l-3.1-1.3l-2.46-1.82l0.52-2.48l3.23-0.91l0.65-14.33l-5.04-2.87l-3.29-74.59l0.85-1.48l6.44,14.85l2.06,0.04l0.67,2.37l-2.74,3.32l-3.15,17.87l4.48,13.76l-2.07,10.42l7.3,30.64l0.77,17.92l5.23,6.05L283.59,512.63L283.59,512.63M262.28,475.14l-1.29,1.95l0.65,3.39l1.29,0.13l0.65-4.3L262.28,475.14L262.28,475.14z","name":"Chile"},"br":{"path":"M314.24,438.85l6.25-12.02l0.23-10.1l11.66-7.52h6.53l5.13-8.69l0.93-16.68l-2.1-4.46l12.36-11.28l0.47-12.45l-16.79-8.22l-20.28-6.34l-9.56-0.94l2.57-5.4l-0.7-8.22l-2.09-0.69l-3.09,6.14l-1.62,2.03l-4.16-1.84l-13.99,4.93l-4.66-5.87l0.75-6.13l-4.4,4.48l-4.86-2.62l-0.49,0.69l0.01,2.13l4.19,2.25l-6.29,6.63l-3.97-0.04l-4.02-4.09l-4.55,0.14l-0.56,4.86l2.61,3.17l-3.08,9.87l-3.6,0.28l-5.73,3.62l-1.4,7.11l4.97,5.32l0.91-1.03l3.49-0.94l2.98,5.02l8.53-3.66l3.31,0.19l2.28,8.07l12.17,3.86l2.1,6.44l5.18,0.62l2.47,6.15l-1.67,5.47l2.18,2.86l-0.32,4.26l5.84-0.55l5.35,6.76l-0.42,4.75l3.17,2.68l-7.6,11.51L314.24,438.85L314.24,438.85z","name":"Brazil"},"bz":{"path":"M204.56,282.4l-0.05,3.65h0.84l2.86-5.34h-1.94L204.56,282.4L204.56,282.4z","name":"Belize"},"mn":{"path":"M673.8,170.17l5.82-7.72l6.99,3.23l4.75,1.27l5.82-5.34l-3.95-2.91l2.6-3.67l7.76,2.74l2.69,4.41l4.86,0.13l2.54-1.89l5.23-0.21l1.14,1.94l8.69,0.44l5.5-5.61l7.61,0.8l-0.44,7.64l3.33,0.76l4.09-1.86l4.33,2.14l-0.1,1.08l-3.14,0.09l-3.27,6.86l-2.54,0.25l-9.88,12.91l-10.09,4.45l-6.31,0.49l-5.24-3.38l-6.7,3.58l-6.6-2.05l-1.87-4.79l-12.5-0.88l-6.4-10.85l-3.11-0.2L673.8,170.17L673.8,170.17z","name":"Mongolia"},"kp":{"path":"M778.28,194.27l1.84,0.77l0.56,6.44l3.65,0.21l3.44-4.03l-1.19-1.06l0.14-4.32l3.16-3.82l-1.61-2.9l1.05-1.2l0.58-3l-1.83-0.83l-1.56,0.79l-1.93,5.86l-3.12-0.27l-3.61,4.26L778.28,194.27L778.28,194.27z","name":"North Korea"},"kr":{"path":"M788.34,198.2l6.18,5.04l1.05,4.88l-0.21,2.62l-3.02,3.4l-2.6,0.14l-2.95-6.37l-1.12-3.04l1.19-0.92l-0.28-1.27l-1.47-0.66L788.34,198.2L788.34,198.2z","name":"South Korea"},"kz":{"path":"M576.69,188.62l4.1-1.75l4.58-0.16l0.32,7h-2.68l-2.05,3.34l2.68,4.45l3.95,2.23l0.36,2.55l1.45-0.48l1.34-1.59l2.21,0.48l1.11,2.23h2.84v-2.86l-1.74-5.09l-0.79-4.13l5.05-2.23l6.79,1.11l4.26,4.29l9.63-0.95l5.37,7.63l6.31,0.32l1.74-2.86l2.21-0.48l0.32-3.18l3.31-0.16l1.74,2.07l1.74-4.13l14.99,2.07l2.52-3.34l-4.26-5.25l5.68-12.4l4.58,0.32l3.16-7.63l-6.31-0.64l-3.63-3.5l-10,1.16l-12.88-12.45l-4.54,4.03l-13.77-6.25l-16.89,8.27l-0.47,5.88l3.95,4.61l-7.7,4.35l-9.99-0.22l-2.09-3.07l-7.83-0.43l-7.42,4.77l-0.16,6.52L576.69,188.62L576.69,188.62z","name":"Kazakhstan"},"tm":{"path":"M593.85,207.59l-0.62,2.63h-4.15v3.56l4.46,2.94l-1.38,4.03v1.86l1.85,0.31l2.46-3.25l5.54-1.24l11.84,4.49l0.15,3.25l6.61,0.62l7.38-7.75l-0.92-2.48l-4.92-1.08l-13.84-8.99l-0.62-3.25h-5.23l-2.31,4.34h-2.31L593.85,207.59L593.85,207.59z","name":"Turkmenistan"},"uz":{"path":"M628.92,219.06l3.08,0.16v-5.27l-2.92-1.7l4.92-6.2h2l2,2.33l5.23-2.01l-7.23-2.48l-0.28-1.5l-1.72,0.42l-1.69,2.94l-7.29-0.24l-5.35-7.57l-9.4,0.93l-4.48-4.44l-6.2-1.05l-4.5,1.83l2.61,8.68l0.03,2.92l1.9,0.04l2.33-4.44l6.2,0.08l0.92,3.41l13.29,8.82l5.14,1.18L628.92,219.06L628.92,219.06z","name":"Uzbekistan"},"tj":{"path":"M630.19,211.84l4.11-5.1h1.55l0.54,1.14l-1.9,1.38v1.14l1.25,0.9l6.01,0.36l1.96-0.84l0.89,0.18l0.6,1.92l3.57,0.36l1.79,3.78l-0.54,1.14l-0.71,0.06l-0.71-1.44l-1.55-0.12l-2.68,0.36l-0.18,2.52l-2.68-0.18l0.12-3.18l-1.96-1.92l-2.98,2.46l0.06,1.62l-2.62,0.9h-1.55l0.12-5.58L630.19,211.84L630.19,211.84z","name":"Tajikistan"},"kg":{"path":"M636.81,199.21l-0.31,2.53l0.25,1.56l8.7,2.92l-7.64,3.08l-0.87-0.72l-1.65,1.06l0.08,0.58l0.88,0.4l5.36,0.14l2.72-0.82l3.49-4.4l4.37,0.76l5.27-7.3l-14.1-1.92l-1.95,4.73l-2.46-2.64L636.81,199.21L636.81,199.21z","name":"Kyrgyz Republic"},"af":{"path":"M614.12,227.05l1.59,12.46l3.96,0.87l0.37,2.24l-2.84,2.37l5.29,4.27l10.28-3.7l0.82-4.38l6.47-4.04l2.48-9.36l1.85-1.99l-1.92-3.34l6.26-3.87l-0.8-1.12l-2.89,0.18l-0.26,2.66l-3.88-0.04l-0.07-3.55l-1.25-1.49l-2.1,1.91l0.06,1.75l-3.17,1.2l-5.85-0.37l-7.6,7.96L614.12,227.05L614.12,227.05z","name":"Afghanistan"},"pk":{"path":"M623.13,249.84l2.6,3.86l-0.25,1.99l-3.46,1.37l-0.25,3.24h3.96l1.36-1.12h7.54l6.8,5.98l0.87-2.87h5.07l0.12-3.61l-5.19-4.98l1.11-2.74l5.32-0.37l7.17-14.95l-3.96-3.11l-1.48-5.23l9.64-0.87l-5.69-8.1l-3.03-0.82l-1.24,1.5l-0.93,0.07l-5.69,3.61l1.86,3.12l-2.1,2.24l-2.6,9.59l-6.43,4.11l-0.87,4.49L623.13,249.84L623.13,249.84z","name":"Pakistan"},"in":{"path":"M670.98,313.01l4.58-2.24l2.72-9.84l-0.12-12.08l15.58-16.82v-3.99l3.21-1.25l-0.12-4.61l-3.46-6.73l1.98-3.61l4.33,3.99l5.56,0.25v2.24l-1.73,1.87l0.37,1l2.97,0.12l0.62,3.36h0.87l2.23-3.99l1.11-10.46l3.71-2.62l0.12-3.61l-1.48-2.87l-2.35-0.12l-9.2,6.08l0.58,3.91l-6.46-0.02l-2.28-2.79l-1.24,0.16l0.42,3.88l-13.97-1l-8.66-3.86l-0.46-4.75l-5.77-3.58l-0.07-7.37l-3.96-4.53l-9.1,0.87l0.99,3.96l4.46,3.61l-7.71,15.78l-5.16,0.39l-0.85,1.9l5.08,4.7l-0.25,4.75l-5.19-0.08l-0.56,2.36l4.31-0.19l0.12,1.87l-3.09,1.62l1.98,3.74l3.83,1.25l2.35-1.74l1.11-3.11l1.36-0.62l1.61,1.62l-0.49,3.99l-1.11,1.87l0.25,3.24L670.98,313.01L670.98,313.01z","name":"India"},"np":{"path":"M671.19,242.56l0.46,4.27l8.08,3.66l12.95,0.96l-0.49-3.13l-8.65-2.38l-7.34-4.37L671.19,242.56L671.19,242.56z","name":"Nepal"},"bt":{"path":"M695.4,248.08l1.55,2.12l5.24,0.04l-0.53-2.9L695.4,248.08L695.4,248.08z","name":"Bhutan"},"bd":{"path":"M695.57,253.11l-1.31,2.37l3.4,6.46l0.1,5.04l0.62,1.35l3.99,0.07l2.26-2.17l1.64,0.99l0.33,3.07l1.31-0.82l0.08-3.92l-1.1-0.13l-0.69-3.33l-2.78-0.1l-0.69-1.85l1.7-2.27l0.03-1.12h-4.94L695.57,253.11L695.57,253.11z","name":"Bangladesh"},"mm":{"path":"M729.44,303.65l-2.77-4.44l2.01-2.82l-1.9-3.49l-1.79-0.34l-0.34-5.86l-2.68-5.19l-0.78,1.24l-1.79,3.04l-2.24,0.34l-1.12-1.47l-0.56-3.95l-1.68-3.16l-6.84-6.45l1.68-1.11l0.31-4.67l2.5-4.2l1.08-10.45l3.62-2.47l0.12-3.81l2.17,0.72l3.42,4.95l-2.54,5.44l1.71,4.27l4.23,1.66l0.77,4.65l5.68,0.88l-1.57,2.71l-7.16,2.82l-0.78,4.62l5.26,6.76l0.22,3.61l-1.23,1.24l0.11,1.13l3.92,5.75l0.11,5.97L729.44,303.65L729.44,303.65z","name":"Myanmar"},"th":{"path":"M730.03,270.47l3.24,4.17v5.07l1.12,0.56l5.15-2.48l1.01,0.34l6.15,7.1l-0.22,4.85l-2.01-0.34l-1.79-1.13l-1.34,0.11l-2.35,3.94l0.45,2.14l1.9,1.01l-0.11,2.37l-1.34,0.68l-4.59-3.16v-2.82l-1.9-0.11l-0.78,1.24l-0.4,12.62l2.97,5.42l5.26,5.07l-0.22,1.47l-2.8-0.11l-2.57-3.83h-2.69l-3.36-2.71l-1.01-2.82l1.45-2.37l0.5-2.14l1.58-2.8l-0.07-6.44l-3.86-5.58l-0.16-0.68l1.25-1.26l-0.29-4.43l-5.14-6.51l0.6-3.75L730.03,270.47L730.03,270.47z","name":"Thailand"},"kh":{"path":"M740.48,299.47l4.09,4.37l7.61-5.64l0.67-8.9l-3.93,2.71l-2.04-1.14l-2.77-0.37l-1.55-1.09l-0.75,0.04l-2.03,3.33l0.33,1.54l2.06,1.15l-0.25,3.13L740.48,299.47L740.48,299.47z","name":"Cambodia"},"la":{"path":"M735.47,262.93l-2.42,1.23l-2.01,5.86l3.36,4.28l-0.56,4.73l0.56,0.23l5.59-2.71l7.5,8.38l-0.18,5.28l1.63,0.88l4.03-3.27l-0.33-2.59l-11.63-11.05l0.11-1.69l1.45-1.01l-1.01-2.82l-4.81-0.79L735.47,262.93L735.47,262.93z","name":"Lao People's Democratic Republic"},"vn":{"path":"M745.06,304.45l1.19,1.87l0.22,2.14l3.13,0.34l3.8-5.07l3.58-1.01l1.9-5.18l-0.89-8.34l-3.69-5.07l-3.89-3.11l-4.95-8.5l3.55-5.94l-5.08-5.83l-4.07-0.18l-3.66,1.97l1.09,4.71l4.88,0.86l1.31,3.63l-1.72,1.12l0.11,0.9l11.45,11.2l0.45,3.29l-0.69,10.4L745.06,304.45L745.06,304.45z","name":"Vietnam"},"ge":{"path":"M555.46,204.16l3.27,4.27l4.08,1.88l2.51-0.01l4.31-1.17l1.08-1.69l-12.75-4.77L555.46,204.16L555.46,204.16z","name":"Georgia"},"am":{"path":"M569.72,209.89l4.8,6.26l-1.41,1.65l-3.4-0.59l-4.22-3.78l0.23-2.48L569.72,209.89L569.72,209.89z","name":"Armenia"},"az":{"path":"M571.41,207.72l-1.01,1.72l4.71,6.18l1.64-0.53l2.7,2.83l1.17-4.96l2.93,0.47l-0.12-1.42l-4.82-4.22l-0.92,2.48L571.41,207.72L571.41,207.72z","name":"Azerbaijan"},"ir":{"path":"M569.65,217.95l-1.22,1.27l0.12,2.01l1.52,2.13l5.39,5.9l-0.82,2.36h-0.94l-0.47,2.36l3.05,3.9l2.81,0.24l5.63,7.79l3.16,0.24l2.46,1.77l0.12,3.54l9.73,5.67h3.63l2.23-1.89l2.81-0.12l1.64,3.78l10.51,1.46l0.31-3.86l3.48-1.26l0.16-1.38l-2.77-3.78l-6.17-4.96l3.24-2.95l-0.23-1.3l-4.06-0.63l-1.72-13.7l-0.2-3.15l-11.01-4.21l-4.88,1.1l-2.73,3.35l-2.42-0.16l-0.7,0.59l-5.39-0.35l-6.8-4.96l-2.53-2.77l-1.16,0.28l-2.09,2.39L569.65,217.95L569.65,217.95z","name":"Iran"},"tr":{"path":"M558.7,209.19l-2.23,2.36l-8.2-0.24l-4.92-2.95l-4.8-0.12l-5.51,3.9l-5.16,0.24l-0.47,2.95h-5.86l-2.34,2.13v1.18l1.41,1.18v1.3l-0.59,1.54l0.59,1.3l1.88-0.94l1.88,2.01l-0.47,1.42l-0.7,0.95l1.05,1.18l5.16,1.06l3.63-1.54v-2.24l1.76,0.35l4.22,2.48l4.57-0.71l1.99-1.89l1.29,0.47v2.13h1.76l1.52-2.95l13.36-1.42l5.83-0.71l-1.54-2.02l-0.03-2.73l1.17-1.4l-4.26-3.42l0.23-2.95h-2.34L558.7,209.19L558.7,209.19M523.02,209.7l-0.16,3.55l3.1-0.95l1.42-0.95l-0.42-1.54l-1.47-1.17L523.02,209.7L523.02,209.7z","name":"Turkey"},"om":{"path":"M598.38,280.84l7.39-4.26l1.31-6.25l-1.62-0.93l0.67-6.7l1.41-0.82l1.51,2.37l8.99,4.7v2.61l-10.89,16.03l-5.01,0.17L598.38,280.84L598.38,280.84z","name":"Oman"},"ae":{"path":"M594.01,264.94l0.87,3.48l9.86,0.87l0.69-7.14l1.9-1.04l0.52-2.61l-3.11,0.87l-3.46,5.23L594.01,264.94L594.01,264.94z","name":"United Arab Emirates"},"qa":{"path":"M592.63,259.02l-0.52,4.01l1.54,1.17l1.4-0.13l0.52-5.05l-1.21-0.87L592.63,259.02L592.63,259.02z","name":"Qatar"},"kw":{"path":"M583.29,247.17l-2.25-1.22l-1.56,1.57l0.17,3.14l3.63,1.39L583.29,247.17L583.29,247.17z","name":"Kuwait"},"sa":{"path":"M584,253.24l7.01,9.77l2.26,1.8l1.01,4.38l10.79,0.85l1.22,0.64l-1.21,5.4l-7.09,4.18l-10.37,3.14l-5.53,5.4l-6.57-3.83l-3.98,3.48L566,279.4l-3.8-1.74l-1.38-2.09v-4.53l-13.83-16.72l-0.52-2.96h3.98l4.84-4.18l0.17-2.09l-1.38-1.39l2.77-2.26l5.88,0.35l10.03,8.36l5.92-0.27l0.38,1.46L584,253.24L584,253.24z","name":"Saudi Arabia"},"sy":{"path":"M546.67,229.13l-0.35,2.54l2.82,1.18l-0.12,7.04l2.82-0.06l2.82-2.13l1.06-0.18l6.4-5.09l1.29-7.39l-12.79,1.3l-1.35,2.96L546.67,229.13L546.67,229.13z","name":"Syrian Arab Republic"},"iq":{"path":"M564.31,225.03l-1.56,7.71l-6.46,5.38l0.41,2.54l6.31,0.43l10.05,8.18l5.62-0.16l0.15-1.89l2.06-2.21l2.88,1.63l0.38-0.36l-5.57-7.41l-2.64-0.16l-3.51-4.51l0.7-3.32l1.07-0.14l0.37-1.47l-4.78-5.03L564.31,225.03L564.31,225.03z","name":"Iraq"},"jo":{"path":"M548.9,240.78l-2.46,8.58l-0.11,1.31h3.87l4.33-3.82l0.11-1.45l-1.77-1.81l3.17-2.63l-0.46-2.44l-0.87,0.2l-2.64,1.89L548.9,240.78L548.9,240.78z","name":"Jordan"},"lb":{"path":"M546.2,232.44l0.06,1.95l-0.82,2.96l2.82,0.24l0.18-4.2L546.2,232.44L546.2,232.44z","name":"Lebanon"},"il":{"path":"M545.32,238.06l-1.58,5.03l2.05,6.03l2.35-8.81v-1.89L545.32,238.06L545.32,238.06z","name":"Israel"},"cy":{"path":"M543.21,229.84l1.23,0.89l-3.81,3.61l-1.82-0.06l-1.35-0.95l0.18-1.77l2.76-0.18L543.21,229.84L543.21,229.84z","name":"Cyprus"},"gb":{"path":"M446.12,149.08l-1.83,2.77l0.73,1.11h4.22v1.85l-1.1,1.48l0.73,3.88l2.38,4.62l1.83,4.25l2.93,1.11l1.28,2.22l-0.18,2.03l-1.83,1.11l-0.18,0.92l1.28,0.74l-1.1,1.48l-2.57,1.11l-4.95-0.55l-7.71,3.51l-2.57-1.29l7.34-4.25l-0.92-0.55l-3.85-0.37l2.38-3.51l0.37-2.96l3.12-0.37l-0.55-5.73l-3.67-0.18l-1.1-1.29l0.18-4.25l-2.2,0.18l2.2-7.39l4.04-2.96L446.12,149.08L446.12,149.08M438.42,161.47l-3.3,0.37l-0.18,2.96l2.2,1.48l2.38-0.55l0.92-1.66L438.42,161.47L438.42,161.47z","name":"United Kingdom"},"ie":{"path":"M439.51,166.55l-0.91,6l-8.07,2.96h-2.57l-1.83-1.29v-1.11l4.04-2.59l-1.1-2.22l0.18-3.14l3.49,0.18l1.6-3.76l-0.21,3.34l2.71,2.15L439.51,166.55L439.51,166.55z","name":"Ireland"},"se":{"path":"M497.72,104.58l1.96,1.81h3.67l2.02,3.88l0.55,6.65l-4.95,3.51v3.51l-3.49,4.81l-2.02,0.18l-2.75,4.62l0.18,4.44l4.77,3.51l-0.37,2.03l-1.83,2.77l-2.75,2.4l0.18,7.95l-4.22,1.48l-1.47,3.14h-2.02l-1.1-5.54l-4.59-7.04l3.77-6.31l0.26-15.59l2.6-1.43l0.63-8.92l7.41-10.61L497.72,104.58L497.72,104.58M498.49,150.17l-2.11,1.67l1.06,2.45l1.87-1.82L498.49,150.17L498.49,150.17z","name":"Sweden"},"fi":{"path":"M506.79,116.94l2.07,0.91l1.28,2.4l-1.28,1.66l-6.42,7.02l-1.1,3.7l1.47,5.36l4.95,3.7l6.6-3.14l5.32-0.74l4.95-7.95l-3.67-8.69l-3.49-8.32l0.55-5.36l-2.2-0.37l-0.57-3.91l-2.96-4.83l-3.28,2.27l-1.29,5.27l-3.48-2.09l-4.84-1.18l-1.08,1.26l1.86,1.68l3.39-0.06l2.73,4.41L506.79,116.94L506.79,116.94z","name":"Finland"},"lv":{"path":"M518.07,151.37l-6.85-1.11l0.15,3.83l6.35,3.88l2.6-0.76l-0.15-2.92L518.07,151.37L518.07,151.37z","name":"Latvia"},"lt":{"path":"M510.81,154.7l-2.15-0.05l-2.95,2.82h-2.5l0.15,3.53l-1.5,2.77l5.4,0.05l1.55-0.2l1.55,1.87l3.55-0.15l3.4-4.33l-0.2-2.57L510.81,154.7L510.81,154.7z","name":"Lithuania"},"by":{"path":"M510.66,166.29l1.5,2.47l-0.6,1.97l0.1,1.56l0.55,1.87l3.1-1.76l3.85,0.1l2.7,1.11h6.85l2-4.79l1.2-1.81v-1.21l-4.3-6.05l-3.8-1.51l-3.1-0.35l-2.7,0.86l0.1,2.72l-3.75,4.74L510.66,166.29L510.66,166.29z","name":"Belarus"},"pl":{"path":"M511.46,174.76l0.85,1.56l0.2,1.66l-0.7,1.61l-1.6,3.08l-1.35,0.61l-1.75-0.76l-1.05,0.05l-2.55,0.96l-2.9-0.86l-4.7-3.33l-4.6-2.47l-1.85-2.82l-0.35-6.65l3.6-3.13l4.7-1.56l1.75-0.2l-0.7,1.41l0.45,0.55l7.91,0.15l1.7-0.05l2.8,4.29l-0.7,1.76l0.3,2.07L511.46,174.76L511.46,174.76z","name":"Poland"},"it":{"path":"M477.56,213.38l-2.65,1.34l0.35,5.17l2.12,0.36l1.59-1.52v-4.9L477.56,213.38L477.56,213.38M472.27,196.98l-0.62,1.57l0.17,1.71l2.39,2.79l3.76-0.13l8.3,9.64l5.18,1.5l3.06,2.89l0.73,6.59l1.64-0.96l1.42-3.59l-0.35-2.58l2.43-0.22l0.35-1.46l-6.85-3.28l-6.5-6.39l-2.59-3.82l-0.63-3.63l3.31-0.79l-0.85-2.39l-2.03-1.71l-1.75-0.08l-2.44,0.67l-2.3,3.22l-1.39,0.92l-2.15-1.32L472.27,196.98L472.27,196.98M492.44,223.02l-1.45-0.78l-4.95,0.78l0.17,1.34l4.45,2.24l0.67,0.73l1.17,0.17L492.44,223.02L492.44,223.02z","name":"Italy"},"fr":{"path":"M477.83,206.96l-1.95,1.96l-0.18,1.78l1.59,0.98l0.62-0.09l0.35-2.59L477.83,206.96L477.83,206.96M460.4,178.7l-2.21,0.54l-4.42,4.81l-1.33,0.09l-1.77-1.25l-1.15,0.27l-0.88,2.76l-6.46,0.18l0.18,1.43l4.42,2.94l5.13,4.1l-0.09,4.9l-2.74,4.81l5.93,2.85l6.02,0.18l1.86-2.14l3.8,0.09l1.06,0.98l3.8-0.27l1.95-2.5l-2.48-2.94l-0.18-1.87l0.53-2.05l-1.24-1.78l-2.12,0.62l-0.27-1.6l4.69-5.17v-3.12l-3.1-1.78l-1.59-0.27L460.4,178.7L460.4,178.7z","name":"France"},"nl":{"path":"M470.09,168.27l-4.53,2.23l0.96,0.87l0.1,2.23l-0.96-0.19l-1.06-1.65l-2.53,4.01l3.89,0.81l1.45,1.53l0.77,0.02l0.51-3.46l2.45-1.03L470.09,168.27L470.09,168.27z","name":"Netherlands"},"be":{"path":"M461.61,176.52l-0.64,1.6l6.88,4.54l1.98,0.47l0.07-2.15l-1.73-1.94h-1.06l-1.45-1.65L461.61,176.52L461.61,176.52z","name":"Belgium"},"de":{"path":"M471.14,167.88l3.57-0.58v-2.52l2.99-0.49l1.64,1.65l1.73,0.19l2.7-1.17l2.41,0.68l2.12,1.84l0.29,6.89l2.12,2.82l-2.79,0.39l-4.63,2.91l0.39,0.97l4.14,3.88l-0.29,1.94l-3.85,1.94l-3.57,0.1l-0.87,1.84h-1.83l-0.87-1.94l-3.18-0.78l-0.1-3.2l-2.7-1.84l0.29-2.33l-1.83-2.52l0.48-3.3l2.5-1.17L471.14,167.88L471.14,167.88z","name":"Germany"},"dk":{"path":"M476.77,151.5l-4.15,4.59l-0.15,2.99l1.89,4.93l2.96-0.56l-0.37-4.03l2.04-2.28l-0.04-1.79l-1.44-3.73L476.77,151.5L476.77,151.5M481.44,159.64l-0.93-0.04l-1.22,1.12l0.15,1.75l2.89,0.08l0.15-1.98L481.44,159.64L481.44,159.64z","name":"Denmark"},"ch":{"path":"M472.91,189.38l-4.36,4.64l0.09,0.47l1.79-0.56l1.61,2.24l2.72-0.96l1.88,1.46l0.77-0.44l2.32-3.64l-0.59-0.56l-2.29-0.06l-1.11-2.27L472.91,189.38L472.91,189.38z","name":"Switzerland"},"cz":{"path":"M488.43,184.87h2.97h1.46l2.37,1.69l4.39-3.65l-4.26-3.04l-4.22-2.04l-2.89,0.52l-3.92,2.52L488.43,184.87L488.43,184.87z","name":"Czech Republic"},"sk":{"path":"M495.84,187.13l0.69,0.61l0.09,1.04l7.63-0.17l5.64-2.43l-0.09-2.47l-1.08,0.48l-1.55-0.83l-0.95-0.04l-2.5,1l-3.4-0.82L495.84,187.13L495.84,187.13z","name":"Slovakia"},"at":{"path":"M480.63,190.12l-0.65,1.35l0.56,0.96l2.33-0.48h1.98l2.15,1.82l4.57-0.83l3.36-2l0.86-1.35l-0.13-1.74l-3.02-2.26l-4.05,0.04l-0.34,2.3l-4.26,2.08L480.63,190.12L480.63,190.12z","name":"Austria"},"hu":{"path":"M496.74,189.6l-1.16,1.82l0.09,2.78l1.85,0.95l5.69,0.17l7.93-6.68l0.04-1.48l-0.86-0.43l-5.73,2.6L496.74,189.6L496.74,189.6z","name":"Hungary"},"si":{"path":"M494.8,191.99l-2.54,1.52l-4.74,1.04l0.95,2.74l3.32,0.04l3.06-2.56L494.8,191.99L494.8,191.99z","name":"Slovenia"},"hr":{"path":"M495.62,195.16l-3.53,2.91h-3.58l-0.43,2.52l1.64,0.43l0.82-1.22l1.29,1.13l1.03,3.6l7.07,3.3l0.7-0.8l-7.17-7.4l0.73-1.35l6.81-0.26l0.69-2.17l-4.44,0.13L495.62,195.16L495.62,195.16z","name":"Croatia"},"ba":{"path":"M494.8,198.94l-0.37,0.61l6.71,6.92l2.46-3.62l-0.09-1.43l-2.15-2.61L494.8,198.94L494.8,198.94z","name":"Bosnia and Herzegovina"},"mt":{"path":"M492.61,230.47l-1.67,0.34l0.06,1.85l1.5,0.5l0.67-0.56L492.61,230.47L492.61,230.47z","name":"Malta"},"ua":{"path":"M515.57,173.15l-2.9,1.63l0.72,3.08l-2.68,5.65l0.02,2.49l1.26,0.8l8.08,0.4l2.26-1.87l2.42,0.81l3.47,4.63l-2.54,4.56l3.02,0.88l3.95-4.55l2.26,0.41l2.1,1.46l-1.85,2.44l2.5,3.9h2.66l1.37-2.6l2.82-0.57l0.08-2.11l-5.24-0.81l0.16-2.27h5.08l5.48-4.39l2.42-2.11l0.4-6.66l-10.8-0.97l-4.43-6.25l-3.06-1.05l-3.71,0.16l-1.67,4.13l-7.6,0.1l-2.47-1.14L515.57,173.15L515.57,173.15z","name":"Ukraine"},"md":{"path":"M520.75,187.71l3.1,4.77l-0.26,2.7l1.11,0.05l2.63-4.45l-3.16-3.92l-1.79-0.74L520.75,187.71L520.75,187.71z","name":"Moldova"},"ro":{"path":"M512.18,187.6l-0.26,1.48l-5.79,4.82l4.84,7.1l3.1,2.17h5.58l1.84-1.54l2.47-0.32l1.84,1.11l3.26-3.71l-0.63-1.86l-3.31-0.85l-2.26-0.11l0.11-3.18l-3-4.72L512.18,187.6L512.18,187.6z","name":"Romania"},"rs":{"path":"M505.55,194.54l-2.05,1.54h-1l-0.68,2.12l2.42,2.81l0.16,2.23l-3,4.24l0.42,1.27l1.74,0.32l1.37-1.86l0.74-0.05l1.26,1.22l3.84-1.17l-0.32-5.46L505.55,194.54L505.55,194.54z","name":"Serbia"},"bg":{"path":"M511.44,202.39l0.16,4.98l1.68,3.5l6.31,0.11l2.84-2.01l2.79-1.11l-0.68-3.18l0.63-1.7l-1.42-0.74l-1.95,0.16l-1.53,1.54l-6.42,0.05L511.44,202.39L511.44,202.39z","name":"Bulgaria"},"al":{"path":"M504.02,209.76v4.61l1.32,2.49l0.95-0.11l1.63-2.97l-0.95-1.33l-0.37-3.29l-1.26-1.17L504.02,209.76L504.02,209.76z","name":"Albania"},"mk":{"path":"M510.92,208.01l-3.37,1.11l0.16,2.86l0.79,1.01l4-1.86L510.92,208.01L510.92,208.01z","name":"Macedonia"},"gr":{"path":"M506.71,217.6l-0.11,1.33l4.63,2.33l2.21,0.85l-1.16,1.22l-2.58,0.26l-0.37,1.17l0.89,2.01l2.89,1.54l1.26,0.11l0.16-3.45l1.89-2.28l-5.16-6.1l0.68-2.07l1.21-0.05l1.84,1.48l1.16-0.58l0.37-2.07l5.42,0.05l0.21-3.18l-2.26,1.59l-6.63-0.16l-4.31,2.23L506.71,217.6L506.71,217.6M516.76,230.59l1.63,0.05l0.68,1.01h2.37l1.58-0.58l0.53,0.64l-1.05,1.38l-4.63,0.16l-0.84-1.11l-0.89-0.53L516.76,230.59L516.76,230.59z","name":"Greece"}}});
diff --git a/js/vmap/examples/algeria.html b/js/vmap/examples/algeria.html
new file mode 100644 (file)
index 0000000..060c3b6
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Algeria Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.algeria.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'dz_fr',
+          enableZoom: true,
+          showTooltip: true
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 600px; height: 400px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/argentina.html b/js/vmap/examples/argentina.html
new file mode 100644 (file)
index 0000000..6653ed0
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Argentina Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.argentina.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'argentina_en',
+          onRegionClick: function (element, code, region) {
+            var message = 'You clicked "'
+              + region
+              + '" which has the code: '
+              + code.toUpperCase();
+
+            alert(message);
+          }
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 400px; height: 400px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/brazil.html b/js/vmap/examples/brazil.html
new file mode 100644 (file)
index 0000000..a4cac67
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Brazil Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.brazil.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'brazil_br',
+          onRegionClick: function (element, code, region) {
+            var message = 'You clicked "'
+              + region
+              + '" which has the code: '
+              + code.toUpperCase();
+
+            alert(message);
+          }
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 400px; height: 400px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/continents.html b/js/vmap/examples/continents.html
new file mode 100644 (file)
index 0000000..328f2bd
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - World Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+
+    <script type="text/javascript" src="../dist/maps/continents/jquery.vmap.asia.js"></script>
+    <script type="text/javascript" src="../dist/maps/continents/jquery.vmap.europe.js"></script>
+    <script type="text/javascript" src="../dist/maps/continents/jquery.vmap.australia.js"></script>
+    <script type="text/javascript" src="../dist/maps/continents/jquery.vmap.africa.js"></script>
+    <script type="text/javascript" src="../dist/maps/continents/jquery.vmap.north-america.js"></script>
+    <script type="text/javascript" src="../dist/maps/continents/jquery.vmap.south-america.js"></script>
+
+    <script type="text/javascript" src="js/jquery.vmap.sampledata.js"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        $('h2').each(function () {
+          $(this).click(function () {
+            $('.tab-selected').removeClass('tab-selected');
+            $(this).addClass('tab-selected');
+            $('.map').css('z-index', '0');
+            $('#vmap-' + this.id).parent().css('z-index', '1');
+          });
+        });
+        $('h2:first').addClass('tab-selected');
+        $('.map:first').css('z-index', '1');
+
+        jQuery('#vmap-asia').vectorMap({
+          map: 'asia_en',
+          backgroundColor: '#333333',
+          color: '#ffffff',
+          hoverOpacity: 0.7,
+          selectedColor: '#666666',
+          enableZoom: true,
+          showTooltip: true,
+          values: sample_data,
+          scaleColors: ['#C8EEFF', '#006491'],
+          normalizeFunction: 'polynomial'
+        });
+        jQuery('#vmap-europe').vectorMap({
+          map: 'europe_en',
+          backgroundColor: '#333333',
+          color: '#ffffff',
+          hoverOpacity: 0.7,
+          selectedColor: '#666666',
+          enableZoom: true,
+          showTooltip: true,
+          values: sample_data,
+          scaleColors: ['#C8EEFF', '#006491'],
+          normalizeFunction: 'polynomial'
+        });
+        jQuery('#vmap-australia').vectorMap({
+          map: 'australia_en',
+          backgroundColor: '#333333',
+          color: '#ffffff',
+          hoverOpacity: 0.7,
+          selectedColor: '#666666',
+          enableZoom: true,
+          showTooltip: true,
+          values: sample_data,
+          scaleColors: ['#C8EEFF', '#006491'],
+          normalizeFunction: 'polynomial'
+        });
+        jQuery('#vmap-africa').vectorMap({
+          map: 'africa_en',
+          backgroundColor: '#333333',
+          color: '#ffffff',
+          hoverOpacity: 0.7,
+          selectedColor: '#666666',
+          enableZoom: true,
+          showTooltip: true,
+          values: sample_data,
+          scaleColors: ['#C8EEFF', '#006491'],
+          normalizeFunction: 'polynomial'
+        });
+        jQuery('#vmap-northamerica').vectorMap({
+          map: 'north-america_en',
+          backgroundColor: '#333333',
+          color: '#ffffff',
+          hoverOpacity: 0.7,
+          selectedColor: '#666666',
+          enableZoom: true,
+          showTooltip: true,
+          values: sample_data,
+          scaleColors: ['#C8EEFF', '#006491'],
+          normalizeFunction: 'polynomial'
+        });
+        jQuery('#vmap-southamerica').vectorMap({
+          map: 'south-america_en',
+          backgroundColor: '#333333',
+          color: '#ffffff',
+          hoverOpacity: 0.7,
+          selectedColor: '#666666',
+          enableZoom: true,
+          showTooltip: true,
+          values: sample_data,
+          scaleColors: ['#C8EEFF', '#006491'],
+          normalizeFunction: 'polynomial'
+        });
+      });
+    </script>
+    <style>
+      * {
+        margin: 0;
+        padding: 0;
+      }
+
+      h2 {
+        background: none repeat scroll 0 0 #cccccc;
+        border: 1px solid #aaaaaa;
+        border-top-left-radius: 5px;
+        border-top-right-radius: 5px;
+        float: left;
+        padding: 5px;
+        font-size: 20px;
+        font-weight: normal;
+        cursor: pointer;
+      }
+
+      h2.tab-selected {
+        background: #888888;
+        border: 1px solid #000000;
+      }
+
+      .map {
+        position: absolute;
+        z-index: 0;
+        left: 0;
+        top: 35px;
+      }
+    </style>
+  </head>
+  <body>
+    <h2 id="asia">Asia</h2>
+
+    <div class="map">
+      <div id="vmap-asia" style="width: 600px; height: 400px;"></div>
+    </div>
+    <h2 id="europe">Europe</h2>
+
+    <div class="map">
+      <div id="vmap-europe" style="width: 600px; height: 400px;"></div>
+    </div>
+    <h2 id="australia">Australia</h2>
+
+    <div class="map">
+      <div id="vmap-australia" style="width: 600px; height: 400px;"></div>
+    </div>
+    <h2 id="africa">Africa</h2>
+
+    <div class="map">
+      <div id="vmap-africa" style="width: 600px; height: 400px;"></div>
+    </div>
+    <h2 id="northamerica">North America</h2>
+
+    <div class="map">
+      <div id="vmap-northamerica" style="width: 600px; height: 400px;"></div>
+    </div>
+    <h2 id="southamerica">South America</h2>
+
+    <div class="map">
+      <div id="vmap-southamerica" style="width: 600px; height: 400px;"></div>
+    </div>
+  </body>
+</html>
diff --git a/js/vmap/examples/europe.html b/js/vmap/examples/europe.html
new file mode 100644 (file)
index 0000000..665741f
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Europe Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.europe.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'europe_en',
+          enableZoom: false,
+          showTooltip: false
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 680px; height: 520px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/france.html b/js/vmap/examples/france.html
new file mode 100644 (file)
index 0000000..72a481e
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - France Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.france.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'france_fr',
+          enableZoom: false,
+          showTooltip: true
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 680px; height: 520px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/germany.html b/js/vmap/examples/germany.html
new file mode 100644 (file)
index 0000000..2ff546b
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Germany Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.germany.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'germany_en',
+          onRegionClick: function (element, code, region) {
+            var message = 'You clicked "'
+              + region
+              + '" which has the code: '
+              + code.toUpperCase();
+
+            alert(message);
+          }
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 400px; height: 400px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/greece.html b/js/vmap/examples/greece.html
new file mode 100644 (file)
index 0000000..8cf04ac
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Greece Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.greece.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'greece',
+          onRegionClick: function (element, code, region) {
+            var message = 'You clicked "'
+              + region
+              + '" which has the code: '
+              + code.toUpperCase();
+
+            alert(message);
+          }
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 700px; height: 637px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/images/background.png b/js/vmap/examples/images/background.png
new file mode 100644 (file)
index 0000000..d232c63
Binary files /dev/null and b/js/vmap/examples/images/background.png differ
diff --git a/js/vmap/examples/images/flag.png b/js/vmap/examples/images/flag.png
new file mode 100644 (file)
index 0000000..7effe27
Binary files /dev/null and b/js/vmap/examples/images/flag.png differ
diff --git a/js/vmap/examples/images/globe.png b/js/vmap/examples/images/globe.png
new file mode 100644 (file)
index 0000000..8dc81d4
Binary files /dev/null and b/js/vmap/examples/images/globe.png differ
diff --git a/js/vmap/examples/images/marker/black.png b/js/vmap/examples/images/marker/black.png
new file mode 100644 (file)
index 0000000..6c46d70
Binary files /dev/null and b/js/vmap/examples/images/marker/black.png differ
diff --git a/js/vmap/examples/images/marker/blue.png b/js/vmap/examples/images/marker/blue.png
new file mode 100644 (file)
index 0000000..855e3a2
Binary files /dev/null and b/js/vmap/examples/images/marker/blue.png differ
diff --git a/js/vmap/examples/images/marker/green.png b/js/vmap/examples/images/marker/green.png
new file mode 100644 (file)
index 0000000..5e5d557
Binary files /dev/null and b/js/vmap/examples/images/marker/green.png differ
diff --git a/js/vmap/examples/images/marker/grey.png b/js/vmap/examples/images/marker/grey.png
new file mode 100644 (file)
index 0000000..260039d
Binary files /dev/null and b/js/vmap/examples/images/marker/grey.png differ
diff --git a/js/vmap/examples/images/marker/orange.png b/js/vmap/examples/images/marker/orange.png
new file mode 100644 (file)
index 0000000..46ebd9e
Binary files /dev/null and b/js/vmap/examples/images/marker/orange.png differ
diff --git a/js/vmap/examples/images/marker/purple.png b/js/vmap/examples/images/marker/purple.png
new file mode 100644 (file)
index 0000000..bf76de3
Binary files /dev/null and b/js/vmap/examples/images/marker/purple.png differ
diff --git a/js/vmap/examples/images/marker/red.png b/js/vmap/examples/images/marker/red.png
new file mode 100644 (file)
index 0000000..7b410b9
Binary files /dev/null and b/js/vmap/examples/images/marker/red.png differ
diff --git a/js/vmap/examples/images/marker/white.png b/js/vmap/examples/images/marker/white.png
new file mode 100644 (file)
index 0000000..6f48c08
Binary files /dev/null and b/js/vmap/examples/images/marker/white.png differ
diff --git a/js/vmap/examples/images/marker/yellow.png b/js/vmap/examples/images/marker/yellow.png
new file mode 100644 (file)
index 0000000..882cd53
Binary files /dev/null and b/js/vmap/examples/images/marker/yellow.png differ
diff --git a/js/vmap/examples/images/thumb.jpg b/js/vmap/examples/images/thumb.jpg
new file mode 100644 (file)
index 0000000..f660fe8
Binary files /dev/null and b/js/vmap/examples/images/thumb.jpg differ
diff --git a/js/vmap/examples/images/tip.png b/js/vmap/examples/images/tip.png
new file mode 100644 (file)
index 0000000..c35f27a
Binary files /dev/null and b/js/vmap/examples/images/tip.png differ
diff --git a/js/vmap/examples/inactive_regions.html b/js/vmap/examples/inactive_regions.html
new file mode 100644 (file)
index 0000000..f93a4b2
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - USA Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.usa.js" charset="utf-8"></script>
+
+    <script>
+      var map;
+
+      jQuery(document).ready(function () {
+
+        // Store currentRegion
+        var currentRegion = 'fl';
+
+        // List of Regions we'll let clicks through for
+        var enabledRegions = ['mo', 'fl', 'or'];
+
+        map = jQuery('#vmap').vectorMap({
+          map: 'usa_en',
+          enableZoom: true,
+          showTooltip: true,
+          selectedColor: '#333333',
+          selectedRegions: ['fl'],
+          hoverColor: null,
+          colors: {
+            mo: '#C9DFAF',
+            fl: '#C9DFAF',
+            or: '#C9DFAF'
+          },
+          onRegionClick: function(event, code, region){
+            // Check if this is an Enabled Region, and not the current selected on
+            if(enabledRegions.indexOf(code) === -1 || currentRegion === code){
+              // Not an Enabled Region
+              event.preventDefault();
+            } else {
+              // Enabled Region. Update Newly Selected Region.
+              currentRegion = code;
+            }
+          },
+          onRegionSelect: function(event, code, region){
+            console.log(map.selectedRegions);
+          },
+          onLabelShow: function(event, label, code){
+            if(enabledRegions.indexOf(code) === -1){
+              event.preventDefault();
+            }
+          }
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 600px; height: 400px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/iran.html b/js/vmap/examples/iran.html
new file mode 100644 (file)
index 0000000..d517587
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Iran Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.iran.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'iran_ir',
+          backgroundColor: '#fff',
+          borderColor: '#818181',
+          borderOpacity: 0.25,
+          borderWidth: 2,
+          color: '#eee',
+          enableZoom: false,
+          hoverColor: '#DA251D',
+          hoverOpacity: null,
+          normalizeFunction: 'linear',
+          selectedColor: '#fff',
+          showTooltip: true,
+          onRegionClick: function (element, code, region) {
+            var message = 'You clicked "'
+              + region
+              + '" which has the code: '
+              + code.toUpperCase();
+
+            alert(message);
+          }
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 600px; height: 600px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/iraq.html b/js/vmap/examples/iraq.html
new file mode 100644 (file)
index 0000000..bdb0095
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Iran Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.iraq.js" charset="utf-8"></script>
+
+    <script type="text/javascript">
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'iraq',
+          backgroundColor: '#fff',
+          borderColor: '#818181',
+          borderOpacity: 0.25,
+          borderWidth: 1,
+          color: '#eee',
+          enableZoom: false,
+          hoverColor: '#DA251D',
+          hoverOpacity: null,
+          normalizeFunction: 'linear',
+          selectedColor: '#fff',
+          showTooltip: true,
+          onRegionClick: function (element, code, region) {
+            var message = 'You clicked "'
+              + region
+              + '" which has the code: '
+              + code.toUpperCase();
+
+            alert(message);
+          }
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 612px; height: 600px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/js/jquery.vmap.sampledata.js b/js/vmap/examples/js/jquery.vmap.sampledata.js
new file mode 100644 (file)
index 0000000..9d018ab
--- /dev/null
@@ -0,0 +1 @@
+var sample_data = {"af":"16.63","al":"11.58","dz":"158.97","ao":"85.81","ag":"1.1","ar":"351.02","am":"8.83","au":"1219.72","at":"366.26","az":"52.17","bs":"7.54","bh":"21.73","bd":"105.4","bb":"3.96","by":"52.89","be":"461.33","bz":"1.43","bj":"6.49","bt":"1.4","bo":"19.18","ba":"16.2","bw":"12.5","br":"2023.53","bn":"11.96","bg":"44.84","bf":"8.67","bi":"1.47","kh":"11.36","cm":"21.88","ca":"1563.66","cv":"1.57","cf":"2.11","td":"7.59","cl":"199.18","cn":"5745.13","co":"283.11","km":"0.56","cd":"12.6","cg":"11.88","cr":"35.02","ci":"22.38","hr":"59.92","cy":"22.75","cz":"195.23","dk":"304.56","dj":"1.14","dm":"0.38","do":"50.87","ec":"61.49","eg":"216.83","sv":"21.8","gq":"14.55","er":"2.25","ee":"19.22","et":"30.94","fj":"3.15","fi":"231.98","fr":"2555.44","ga":"12.56","gm":"1.04","ge":"11.23","de":"3305.9","gh":"18.06","gr":"305.01","gd":"0.65","gt":"40.77","gn":"4.34","gw":"0.83","gy":"2.2","ht":"6.5","hn":"15.34","hk":"226.49","hu":"132.28","is":"12.77","in":"1430.02","id":"695.06","ir":"337.9","iq":"84.14","ie":"204.14","il":"201.25","it":"2036.69","jm":"13.74","jp":"5390.9","jo":"27.13","kz":"129.76","ke":"32.42","ki":"0.15","kr":"986.26","undefined":"5.73","kw":"117.32","kg":"4.44","la":"6.34","lv":"23.39","lb":"39.15","ls":"1.8","lr":"0.98","ly":"77.91","lt":"35.73","lu":"52.43","mk":"9.58","mg":"8.33","mw":"5.04","my":"218.95","mv":"1.43","ml":"9.08","mt":"7.8","mr":"3.49","mu":"9.43","mx":"1004.04","md":"5.36","mn":"5.81","me":"3.88","ma":"91.7","mz":"10.21","mm":"35.65","na":"11.45","np":"15.11","nl":"770.31","nz":"138","ni":"6.38","ne":"5.6","ng":"206.66","no":"413.51","om":"53.78","pk":"174.79","pa":"27.2","pg":"8.81","py":"17.17","pe":"153.55","ph":"189.06","pl":"438.88","pt":"223.7","qa":"126.52","ro":"158.39","ru":"1476.91","rw":"5.69","ws":"0.55","st":"0.19","sa":"434.44","sn":"12.66","rs":"38.92","sc":"0.92","sl":"1.9","sg":"217.38","sk":"86.26","si":"46.44","sb":"0.67","za":"354.41","es":"1374.78","lk":"48.24","kn":"0.56","lc":"1","vc":"0.58","sd":"65.93","sr":"3.3","sz":"3.17","se":"444.59","ch":"522.44","sy":"59.63","tw":"426.98","tj":"5.58","tz":"22.43","th":"312.61","tl":"0.62","tg":"3.07","to":"0.3","tt":"21.2","tn":"43.86","tr":"729.05","tm":0,"ug":"17.12","ua":"136.56","ae":"239.65","gb":"2258.57","us":"14624.18","uy":"40.71","uz":"37.72","vu":"0.72","ve":"285.21","vn":"101.99","ye":"30.02","zm":"15.69","zw":"5.57"};
\ No newline at end of file
diff --git a/js/vmap/examples/labels.html b/js/vmap/examples/labels.html
new file mode 100644 (file)
index 0000000..ccc8047
--- /dev/null
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - USA Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <!-- Mobile Specific Meta Tags -->
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <style>
+      html, body {
+        padding: 0;
+        margin: 0;
+        width: 100%;
+        height: 100%;
+      }
+      #vmap {
+        width: 100%;
+        height: 100%;
+        background-color: red;
+        -webkit-tap-highlight-color: rgba(0,0,0,0);
+      }
+
+      /* Setup basic CSS for Label */
+      .jqvmap-pin {
+        font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
+        cursor: default;
+        pointer-events: none;
+      }
+
+      /* Hide Whichever Labels you want */
+
+      #jqvmap1_ri_pin, #jqvmap1_dc_pin, #jqvmap1_de_pin, #jqvmap1_md_pin {
+        display: none;
+      }
+
+      /* Reposition Labels that are not quite right ( labels are centered in shape, and sometimes need tweaking ) */
+
+      #jqvmap1_ak_pin {
+        margin-top: -2%;
+      }
+      #jqvmap1_ca_pin {
+        margin-left: -2%;
+      }
+      #jqvmap1_ct_pin {
+        margin-top: -0.25%;
+        margin-left: -0.25%;
+      }
+      #jqvmap1_fl_pin {
+        margin-left: 5%;
+      }
+      #jqvmap1_id_pin {
+        margin-top: 3%;
+        margin-left: -1%;
+      }
+      #jqvmap1_ky_pin {
+        margin-left: 2%;
+      }
+      #jqvmap1_la_pin {
+        margin-left: -2%;
+      }
+      #jqvmap1_mi_pin {
+        margin-top: 4%;
+        margin-left: 3%;
+      }
+      #jqvmap1_ma_pin {
+        margin-top: -0.25%;
+      }
+      #jqvmap1_mn_pin {
+        margin-top: 2%;
+        margin-left: -2%;
+      }
+      #jqvmap1_nh_pin {
+        margin-top: 1%;
+        margin-left: -0.25%;
+      }
+      #jqvmap1_nj_pin {
+        margin-top: 1%;
+      }
+      #jqvmap1_ok_pin {
+        margin-left: 2%;
+      }
+      #jqvmap1_va_pin {
+        margin-left: 2%;
+      }
+      #jqvmap1_wv_pin {
+        margin-left: -1%;
+        margin-top: 1%;
+      }
+
+      /* Add responsibe support to resize labels for difference screen sizes */
+
+      @media only screen and (min-width: 320px) {
+        .jqvmap-pin {
+          font-size: 6px;
+        }
+      }
+
+      @media only screen and (min-width: 480px) {
+        .jqvmap-pin {
+          font-size: 8px;
+        }
+      }
+
+      @media only screen and (min-width: 640px) {
+        .jqvmap-pin {
+          font-size: 10px;
+        }
+      }
+
+      @media only screen and (min-width: 800px) {
+        .jqvmap-pin {
+          font-size: 12px;
+        }
+      }
+
+      @media only screen and (min-width: 1024px) {
+        .jqvmap-pin {
+          font-size: 14px;
+        }
+      }
+    </style>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.usa.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'usa_en',
+          borderWidth: 0.25,
+          showLabels: true
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/mobile.html b/js/vmap/examples/mobile.html
new file mode 100644 (file)
index 0000000..8278593
--- /dev/null
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Europe Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <!-- Mobile Specific Meta Tags -->
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css">
+
+    <style>
+      html, body {
+        padding: 0;
+        margin: 0;
+        width: 100%;
+        height: 100%;
+      }
+      #vmap {
+        width: 100%;
+        height: 100%;
+        background-color: red;
+        -webkit-tap-highlight-color: rgba(0,0,0,0);
+      }
+      .jqvmap-zoomin {
+        width: 30px;
+        height: 30px;
+        line-height: 30px;
+      }
+      .jqvmap-zoomout {
+        width: 30px;
+        height: 30px;
+        top: 55px;
+        line-height: 30px;
+      }
+    </style>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.usa.js" charset="utf-8"></script>
+
+    <script type="text/javascript">
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'usa_en',
+          enableZoom: true,
+          showTooltip: true
+        });
+      });
+    </script>
+  </head>
+
+  <body>
+    <div id="vmap"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/multi.html b/js/vmap/examples/multi.html
new file mode 100644 (file)
index 0000000..95a95d9
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Europe Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.europe.js" charset="utf-8"></script>
+
+    <script type="text/javascript">
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'europe_en',
+          enableZoom: true,
+          showTooltip: true,
+          multiSelectRegion: true,
+          selectedRegions: ['FR']
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 680px; height: 520px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/pins.html b/js/vmap/examples/pins.html
new file mode 100644 (file)
index 0000000..1a426ef
--- /dev/null
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - World Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <style>
+      * {
+        margin: 0;
+        padding: 0;
+      }
+
+      #overlay {
+        position: relative;
+        overflow: hidden;
+      }
+
+      #overlay div {
+        position: absolute;
+        z-index: 1;
+      }
+
+      .jqvmap-zoomin,
+      .jqvmap-zoomout {
+        z-index: 1;
+      }
+
+      .pin {
+        background: url(images/tip.png) no-repeat;
+        width: 9px;
+        height: 5px;
+        position: absolute;
+        cursor: pointer;
+        pointer-events: none;
+      }
+
+      .pin .pin_content {
+        background: url("images/background.png") repeat scroll 0 0 transparent;
+        border-radius: 5px 5px 5px 5px;
+        bottom: 50px;
+        height: 50px;
+        position: relative;
+        right: 15px;
+        width: 100px;
+      }
+
+      .pin .pin_content div {
+        float: left;
+        height: 30px;
+        width: 35px;
+        padding: 10px 5px;
+        text-align: center;
+      }
+
+      .pin .pin_content div span {
+        color: #EA4E41;
+        font-size: 20px;
+        font-weight: bold;
+        line-height: 18px;
+      }
+
+      .pin .pin_content div span.small {
+        font-size: 12px;
+      }
+
+      .pin .pin_content .thumb {
+        width: 45px;
+      }
+
+      .pin .pin_content .thumb img {
+        max-width: 45px;
+        max-height: 30px;
+      }
+
+      #rightcol {
+        position: absolute;
+        right: 230px;
+        top: 0;
+      }
+
+      table, tr, td {
+        border: 1px solid #aaaaaa;
+      }
+
+      .pin-td {
+        height: 65px;
+        padding: 20px;
+        width: 70px;
+      }
+    </style>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script src="../dist/jquery.vmap.js" type="text/javascript"></script>
+    <script src="../dist/maps/jquery.vmap.world.js" type="text/javascript"></script>
+
+    <script type="text/javascript">
+      var pins = {
+        'ru': "\u003ca target=\"_blank\" href=\"http://www.google.com.ru\"\u003epin_ru\u003c/a\u003e",
+        'pk': "\u003ca target=\"_blank\" href=\"http://www.google.com.pk\"\u003epin_pk\u003c/a\u003e"
+      };
+
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'world_en',
+          backgroundColor: '#333333',
+          color: '#ffffff',
+          hoverOpacity: 0.7,
+          selectedColor: '#666666',
+          enableZoom: true,
+          showTooltip: true,
+          scaleColors: ['#C8EEFF', '#006491'],
+          normalizeFunction: 'polynomial',
+          pins: {
+            "ru": "\u003ca href=\"http://google.com\"\u003epin_ru\u003c/a\u003e",
+            "pk": "\u003ca href=\"http://google.com\"\u003epin_pk\u003c/a\u003e"
+          }
+        });
+      });
+
+      function placePin(id) {
+
+        id = id.toLowerCase();
+
+        var cc = jQuery("#" + id + ' input[name=cc]').val();
+        if (cc == '') {
+          alert('Insert a country code first');
+          return;
+        }
+        var pin = jQuery("#" + id + ' .pin-td').html();
+        if (jQuery.trim(pin) == '') {
+          alert('Pin has been moved');
+          return;
+        }
+
+        var pins = new Object();
+        pins[cc] = pin;
+
+        jQuery('#vmap').vectorMap('placePins', pins, 'content');
+      }
+
+      function movePin(id) {
+
+        id = id.toLowerCase();
+
+        var cc = jQuery("#" + id + ' input[name=cc]').val();
+        if (cc == '') {
+          alert('Insert a country code first');
+          return;
+        }
+        var pin = jQuery("#" + id + ' .pin-td').html();
+        if (jQuery.trim(pin) == '') {
+          alert('Pin has been moved');
+          return;
+        }
+        pin = id + '_content';
+
+        var pins = new Object();
+        pins[cc] = pin;
+
+        jQuery('#vmap').vectorMap('placePins', pins, 'id');
+      }
+
+      function removePin() {
+        var cc = jQuery('#remove input[name=cc]').val();
+        if (cc == '') {
+          alert('Insert a country code first');
+          return;
+        }
+        jQuery('#vmap').vectorMap('removePin', cc);
+      }
+
+      function removeAllPins() {
+        jQuery('#vmap').vectorMap('removePins');
+      }
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 600px; height: 400px;"></div>
+    <div id="rightcol">
+      <table>
+        <tr id="pin1">
+          <td class="pin-td">
+            <div id="pin1_content" class="pin">
+              <div class="pin_content">
+                <div>
+                  <span>09</span>
+                  <span class="small">new</span>
+                </div>
+                <div class="thumb">
+                  <img src="images/thumb.jpg"/>
+                </div>
+              </div>
+            </div>
+          </td>
+          <td>
+            <input type="text" name="cc" placeholder="Country code"/><br/>
+            <input type="button" onClick="placePin('pin1')" value="Copy"/>
+            <input type="button" onClick="movePin('pin1')" value="Move"/>
+          </td>
+        </tr>
+        <tr id="pin2">
+          <td class="pin-td">
+            <img id="pin2_content" src="images/globe.png"/>
+          </td>
+          <td>
+            <input type="text" name="cc" placeholder="Country code"/><br/>
+            <input type="button" onClick="placePin('pin2')" value="Copy"/>
+            <input type="button" onClick="movePin('pin2')" value="Move"/>
+          </td>
+        </tr>
+        <tr id="pin3">
+          <td class="pin-td">
+            <img id="pin3_content" src="images/flag.png"/>
+          </td>
+          <td>
+            <input type="text" name="cc" placeholder="Country code"/><br/>
+            <input type="button" onClick="placePin('pin3')" value="Copy"/>
+            <input type="button" onClick="movePin('pin3')" value="Move"/>
+          </td>
+        </tr>
+        <tr id="remove">
+          <td class="pin-td">
+            <input type="text" name="cc" placeholder="Country code"/><br/>
+            <input type="button" onClick="removePin()" value="Remove"/>
+          </td>
+          <td>
+            <input type="button" onClick="removeAllPins()" value="Remove"/>
+          </td>
+        </tr>
+      </table>
+    </div>
+  </body>
+</html>
diff --git a/js/vmap/examples/pins_custom.html b/js/vmap/examples/pins_custom.html
new file mode 100644 (file)
index 0000000..3b11993
--- /dev/null
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - USA Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <!-- Mobile Specific Meta Tags -->
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <style>
+      html, body {
+        padding: 0;
+        margin: 0;
+        width: 100%;
+        height: 100%;
+      }
+      #vmap {
+        width: 100%;
+        height: 100%;
+        background-color: #333;
+        -webkit-tap-highlight-color: rgba(0,0,0,0);
+      }
+
+      .jqvmap-region {
+        cursor: default !important;
+      }
+
+      .map-pin {
+        width: 64px;
+        height: 50px;
+        position: absolute;
+        top: -25px;
+        left: -32px;
+        background-size: 32px 32px;
+        background-repeat: no-repeat;
+        text-align: center;
+        background-position: top center;
+        color: #888;
+        font-weight: 500;
+        font-size: 14px;
+      }
+
+      .map-pin span {
+        position: absolute;
+        bottom: 0;
+        width: 100%;
+        text-align: center;
+        left: 0;
+      }
+
+      .red {
+        background-image: url('images/marker/red.png');
+      }
+
+      .blue {
+        background-image: url('images/marker/blue.png');
+      }
+
+      .purple {
+        background-image: url('images/marker/purple.png');
+      }
+
+      /* Setup basic CSS for Label */
+      .jqvmap-pin {
+        font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
+        cursor: default;
+      }
+
+      /* Reposition Labels that are not quite right ( labels are centered in shape, and sometimes need tweaking ) */
+
+      #jqvmap1_fl_pin {
+        margin-left: 5%;
+      }
+
+    </style>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.usa.js" charset="utf-8"></script>
+
+    <script>
+
+      function escapeXml(string) {
+        return string.replace(/[<>]/g, function (c) {
+          switch (c) {
+            case '<': return '\u003c';
+            case '>': return '\u003e';
+          }
+        });
+      }
+
+      jQuery(document).ready(function () {
+
+        var pins = {
+          mo: escapeXml('<div class="map-pin red"><span>MO</span></div>'),
+          fl: escapeXml('<div class="map-pin blue"><span>FL</span></div>'),
+          or: escapeXml('<div class="map-pin purple"><span>OR</span></div>')
+        };
+
+        jQuery('#vmap').vectorMap({
+          backgroundColor: '#333',
+          borderColor: '#333',
+          map: 'usa_en',
+          pins: pins,
+          color: '#fff',
+          pinMode: 'content',
+          hoverColor: null,
+          selectedColor: '#111',
+          showTooltip: false,
+          selectedRegions: ['MO', 'FL', 'OR'],
+          onRegionClick: function(event){
+            event.preventDefault();
+          }
+        });
+
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/responsive.html b/js/vmap/examples/responsive.html
new file mode 100644 (file)
index 0000000..69b5b6e
--- /dev/null
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Europe Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css">
+
+    <style>
+      html, body {
+        padding: 0;
+        margin: 0;
+        width: 100%;
+        height: 100%;
+      }
+      #vmap {
+        width: 100%;
+        height: 100%;
+        background-color: red;
+      }
+    </style>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.usa.js" charset="utf-8"></script>
+
+    <script type="text/javascript">
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'usa_en',
+          enableZoom: true,
+          showTooltip: true,
+          onResize: function (element, width, height) {
+            console.log('Map Size: ' +  width + 'x' +  height);
+          }
+        });
+      });
+    </script>
+  </head>
+
+  <body>
+    <div id="vmap"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/russia.html b/js/vmap/examples/russia.html
new file mode 100644 (file)
index 0000000..a640bf5
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Russia Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.russia.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'russia_en',
+          backgroundColor: '#333333',
+          color: '#ffffff',
+          hoverOpacity: 0.7,
+          selectedColor: '#999999',
+          enableZoom: true,
+          showTooltip: true,
+          scaleColors: ['#C8EEFF', '#006491'],
+          normalizeFunction: 'polynomial'
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 600px; height: 400px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/touch_detect.html b/js/vmap/examples/touch_detect.html
new file mode 100644 (file)
index 0000000..b0fdf13
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - Europe Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css">
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.europe.js" charset="utf-8"></script>
+
+    <script type="text/javascript">
+      function touch_detect() {
+        return 'ontouchstart' in window || 'onmsgesturechange' in window || navigator.msMaxTouchPoints > 0;
+      }
+
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'europe_en',
+          enableZoom: false,
+          showTooltip: false,
+          onRegionClick: function (element, code, region) {
+            if (!touch_detect()) {
+              // we're not on a mobile device, handle the click
+              var message = 'You clicked "' + region + '" which has the code: ' + code.toUpperCase();
+              alert(message);
+            }
+          },
+          onRegionOver: function (element, code, region) {
+            if (touch_detect()) {
+              /// we're not on a mobile device, handle the click
+              var message = 'You clicked "' + region + '" which has the code: ' + code.toUpperCase();
+              alert(message);
+            }
+          }
+        });
+      });
+    </script>
+  </head>
+
+  <body>
+    <div id="vmap" style="width: 680px; height: 520px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/tunisia.html b/js/vmap/examples/tunisia.html
new file mode 100644 (file)
index 0000000..889b3b0
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>JQVMap - Tunisia Map</title>
+  <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+  <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+  <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+  <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+  <script type="text/javascript" src="../dist/maps/jquery.vmap.tunisia.js" charset="utf-8"></script>
+
+  <script>
+    jQuery(document).ready(function () {
+      jQuery('#vmap').vectorMap({
+        map: 'tunisia',
+        onRegionClick: function (element, code, region) {
+          var message = 'You clicked "'
+            + region
+            + '" which has the code: '
+            + code.toUpperCase();
+
+          alert(message);
+        }
+      });
+    });
+  </script>
+</head>
+<body>
+<div id="vmap" style="width: 700px; height: 637px;"></div>
+</body>
+</html>
diff --git a/js/vmap/examples/turkey.html b/js/vmap/examples/turkey.html
new file mode 100644 (file)
index 0000000..7356f14
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>JQVMap - Turkey Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="vmap" style="width: 1052.3622px; height: 744.09448px;"></div>
+<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+<script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+<script type="text/javascript" src="../dist/maps/jquery.vmap.turkey.js" charset="utf-8"></script>
+<script>
+    jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+            map: 'turkey',
+            onRegionClick: function (element, code, region) {
+                var message = 'You clicked "'+ region + '" which has the code: '+ code.toUpperCase();
+                alert(message);
+            }
+        });
+    });
+</script>
+</body>
+</html>
diff --git a/js/vmap/examples/usa.html b/js/vmap/examples/usa.html
new file mode 100644 (file)
index 0000000..5855b1a
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - USA Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.usa.js" charset="utf-8"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'usa_en',
+          enableZoom: true,
+          showTooltip: true,
+          selectedColor: null,
+          hoverColor: null,
+          colors: {
+            mo: '#C9DFAF',
+            fl: '#C9DFAF',
+            or: '#C9DFAF'
+          },
+          onRegionClick: function(event, code, region){
+            event.preventDefault();
+          }
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 600px; height: 400px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/examples/world.html b/js/vmap/examples/world.html
new file mode 100644 (file)
index 0000000..9077121
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>JQVMap - World Map</title>
+    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+    <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.world.js" charset="utf-8"></script>
+    <script type="text/javascript" src="js/jquery.vmap.sampledata.js"></script>
+
+    <script>
+      jQuery(document).ready(function () {
+        jQuery('#vmap').vectorMap({
+          map: 'world_en',
+          backgroundColor: '#333333',
+          color: '#ffffff',
+          hoverOpacity: 0.7,
+          selectedColor: '#666666',
+          enableZoom: true,
+          showTooltip: true,
+          scaleColors: ['#C8EEFF', '#006491'],
+          values: sample_data,
+          normalizeFunction: 'polynomial'
+        });
+      });
+    </script>
+  </head>
+  <body>
+    <div id="vmap" style="width: 600px; height: 400px;"></div>
+  </body>
+</html>
diff --git a/js/vmap/grunt/bump.js b/js/vmap/grunt/bump.js
new file mode 100644 (file)
index 0000000..9359647
--- /dev/null
@@ -0,0 +1,22 @@
+module.exports = {
+       options: {
+               files: [
+                       "package.json",
+                       "bower.json"
+               ],
+               updateConfigs: [
+                       "package"
+               ],
+               commit: true,
+               commitMessage: "Release v%VERSION%",
+               commitFiles: [
+                       "-a"
+               ],
+               createTag: true,
+               tagName: "v%VERSION%",
+               tagMessage: "Version %VERSION%",
+               push: true,
+               pushTo: "origin",
+               gitDescribeOptions: "--tags --always --abbrev=1 --dirty=-d"
+       }
+};
diff --git a/js/vmap/grunt/changelog.js b/js/vmap/grunt/changelog.js
new file mode 100644 (file)
index 0000000..01d2933
--- /dev/null
@@ -0,0 +1,14 @@
+module.exports = {
+       release: {
+               options: {
+                       insertType: "prepend",
+                       template: "## Release v<%= package.version %>:\n\n{{> features}}{{> fixes}}\n\n",
+                       partials: {
+                               features: "#### Features:\n\n{{#if features}}{{#each features}}{{> feature}}{{/each}}{{else}}{{> empty}}{{/if}}\n",
+                               fixes: "#### Bugfixes:\n\n{{#if fixes}}{{#each fixes}}{{> fix}}{{/each}}{{else}}{{> empty}}{{/if}}",
+                               empty: " - (none)\n"
+                       },
+                       dest: "CHANGELOG.md"
+               }
+       }
+};
\ No newline at end of file
diff --git a/js/vmap/grunt/clean.js b/js/vmap/grunt/clean.js
new file mode 100644 (file)
index 0000000..91d6347
--- /dev/null
@@ -0,0 +1,5 @@
+module.exports = {
+       dist: [
+               "dist/*.js"
+       ]
+};
diff --git a/js/vmap/grunt/concat.js b/js/vmap/grunt/concat.js
new file mode 100644 (file)
index 0000000..9bad965
--- /dev/null
@@ -0,0 +1,23 @@
+module.exports = {
+       options: {
+               banner: '/*!\n' +
+               ' * <%= package.author.name %>: <%= package.description %>\n' +
+               ' * @author <%= package.author.name %> <<%= package.author.email %>>\n' +
+               ' * @version <%= package.version %>\n' +
+               ' * @link <%= package.author.url %>\n' +
+    ' * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE\n' +
+               ' * @builddate <%= grunt.template.today("yyyy/mm/dd") %>\n' +
+               ' */\n\n'
+       },
+       dist: {
+               files: {
+                       'dist/jquery.vmap.js': [
+                               "src/VectorCanvas.js",
+                               "src/ColorScale.js",
+                               "src/JQVMap.js",
+                               "src/Base.js",
+                               "src/**/*.js"
+                       ]
+               }
+       }
+};
diff --git a/js/vmap/grunt/index.js b/js/vmap/grunt/index.js
new file mode 100644 (file)
index 0000000..b365b9b
--- /dev/null
@@ -0,0 +1,2 @@
+var requireDirectory = require("require-directory");
+module.exports = requireDirectory(module);
\ No newline at end of file
diff --git a/js/vmap/grunt/qunit.js b/js/vmap/grunt/qunit.js
new file mode 100644 (file)
index 0000000..2dda68e
--- /dev/null
@@ -0,0 +1,3 @@
+module.exports = {
+  dist: ['tests/*.html']
+};
diff --git a/js/vmap/grunt/shell.js b/js/vmap/grunt/shell.js
new file mode 100644 (file)
index 0000000..120fe8d
--- /dev/null
@@ -0,0 +1,6 @@
+module.exports = {
+  lint: {
+    command: "node_modules/.bin/eslint src --quiet && echo '\033[0;32m\n✓ All Good\033[0m  ٩(ˊᗜˋ*)و'",
+    stdout: false
+  }
+};
diff --git a/js/vmap/grunt/uglify.js b/js/vmap/grunt/uglify.js
new file mode 100644 (file)
index 0000000..328f1d3
--- /dev/null
@@ -0,0 +1,19 @@
+module.exports = {
+       options: {
+               banner: '/*!\n' +
+               ' * <%= package.author.name %>: <%= package.description %>\n' +
+               ' * @author <%= package.author.name %> <<%= package.author.email %>>\n' +
+               ' * @version <%= package.version %>\n' +
+               ' * @link <%= package.author.url %>\n' +
+               ' * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE\n' +
+               ' * @builddate <%= grunt.template.today("yyyy/mm/dd") %>\n' +
+               ' */\n\n'
+       },
+       dist: {
+               files: {
+                       'dist/jquery.vmap.min.js': [
+                               "dist/jquery.vmap.js"
+                       ]
+               }
+       }
+};
diff --git a/js/vmap/gruntfile.js b/js/vmap/gruntfile.js
new file mode 100644 (file)
index 0000000..c1e6518
--- /dev/null
@@ -0,0 +1,21 @@
+module.exports = function(grunt)
+{
+       var gtx = require('gruntfile-gtx').wrap(grunt);
+               gtx.loadAuto();
+
+       var gruntConfig = require('./grunt');
+               gruntConfig.package = require('./package.json');
+
+       gtx.config(gruntConfig);
+
+       gtx.alias('build', ['shell:lint', 'clean:dist', 'concat:dist', 'uglify:dist', 'test']);
+
+       gtx.alias('release', ['build', 'bump-commit']);
+       gtx.alias('release-major', ['bump-only:major', 'release']);
+       gtx.alias('release-minor', ['bump-only:minor', 'release']);
+       gtx.alias('release-patch', ['bump-only:patch', 'release']);
+
+  gtx.alias('test', ['shell:lint', 'qunit:dist']);
+
+       gtx.finalise();
+};
diff --git a/js/vmap/jquery-jvectormap-fr_regions_2016-mill.js b/js/vmap/jquery-jvectormap-fr_regions_2016-mill.js
new file mode 100644 (file)
index 0000000..d138a3d
--- /dev/null
@@ -0,0 +1 @@
+//jQuery.fn.vectorMap('addMap', 'fr_regions_2016_mill',{"insets": [{"width": 100, "top": 600, "height": 122.71220181016422, "bbox": [{"y": -640515.9263248637, "x": -6082830.163693012}, {"y": -235112.28629661424, "x": -5752460.702426716}], "left": 0}, {"width": 50, "top": 440, "height": 42.928059423707, "bbox": [{"y": -1855676.1027106678, "x": -6882793.3793751765}, {"y": -1778355.8860469644, "x": -6792735.480530344}], "left": 0}, {"width": 50, "top": 510, "height": 57.21127928831266, "bbox": [{"y": -1668974.3969949444, "x": -6819419.302373176}, {"y": -1615651.747314515, "x": -6772817.783980524}], "left": 0}, {"width": 50, "top": 700, "height": 42.31095479952366, "bbox": [{"y": 2357030.8412201093, "x": 6150785.273719754}, {"y": 2416319.6251247157, "x": 6220848.433704593}], "left": 740}, {"width": 40, "top": 690, "height": 55.96611426730096, "bbox": [{"y": 1415975.8044653006, "x": 5016650.333473452}, {"y": 1454680.1669724442, "x": 5044313.045465417}], "left": 640}, {"width": 900, "top": 0, "height": 749.2159980728637, "bbox": [{"y": -6244653.662562441, "x": -571670.6975907331}, {"y": -4882430.695155527, "x": 1064707.428102987}], "left": 0}], "paths": {"FR-GF": {"path": "M0.97,715.11l0.03,-0.01l1.04,0.32l0.16,0.02l0.86,-0.15l0.51,-0.46l0.86,-2.17l2.19,-0.54l1.75,-1.7l3.1,-6.63l2.47,-3.35l0.8,-2.07l0.47,-0.34l0.06,-0.66l-0.55,-0.79l0.94,-2.39l-0.02,-0.46l-0.64,-0.76l0.44,-0.66l-0.5,-1.65l0.23,-1.91l-0.45,-0.69l-0.46,-0.14l0.86,-1.73l2.07,-2.81l1.19,-0.89l0.84,-2.29l1.16,-1.21l0.63,-1.48l-0.08,-2.67l0.59,-2.69l-0.24,-0.63l-0.99,-0.8l-0.94,0.14l-0.73,-1.11l-0.67,-2.34l-1.1,-1.52l-2.15,-0.96l-0.85,-1.38l-0.94,-0.69l-0.78,-1.45l-0.91,-0.91l-0.6,-1.53l-1.41,-1.5l0.64,-2.85l-0.13,-0.85l-2.32,-1.44l0.46,-1.46l-0.01,-1.08l-0.33,-1.55l-1.0,-2.09l-0.57,-3.53l0.9,-2.56l0.01,-1.55l-0.48,-1.52l0.02,-2.19l-1.39,-1.38l0.0,-4.12l-0.26,-0.77l1.19,-1.14l-0.22,-1.91l0.25,-0.92l2.73,-3.76l0.74,-0.61l1.11,-2.37l4.66,-4.06l2.22,-1.17l1.58,-1.93l1.87,-4.21l0.52,-3.48l1.46,-2.55l2.53,0.36l1.76,0.65l0.25,-0.36l3.4,2.05l6.81,3.12l3.05,0.38l3.49,0.88l0.86,-0.07l1.81,1.42l0.75,-0.24l0.28,-0.38l-0.11,-0.54l0.6,0.16l3.21,1.77l2.63,0.74l0.44,-0.2l3.1,1.65l2.24,2.12l1.54,0.85l1.06,1.69l7.47,6.54l0.33,0.77l1.43,0.41l2.53,2.16l0.64,1.06l-0.27,1.23l0.6,0.43l2.01,-1.77l1.2,0.54l0.54,0.96l-2.76,4.28l0.03,1.47l0.4,0.37l0.6,-0.32l0.54,-0.93l0.57,-1.94l2.11,-1.78l0.87,0.63l1.21,1.89l2.18,1.25l2.26,2.1l0.89,1.31l1.5,6.51l-0.33,1.34l-1.91,1.37l-0.89,1.13l-0.01,0.47l0.45,0.15l2.11,-0.67l1.15,-0.61l0.64,-0.84l0.53,-2.04l-0.28,-4.87l0.65,-1.95l1.05,-0.2l1.97,1.65l0.0,0.74l1.13,1.9l0.28,1.83l0.66,0.89l-0.25,0.37l0.26,0.94l0.51,0.66l1.03,0.2l-0.69,0.86l-0.09,1.41l1.97,3.43l0.18,0.84l-0.06,2.16l-0.64,2.0l-0.3,0.58l-2.4,1.19l-1.04,0.92l-1.71,3.75l-2.1,2.32l-1.35,0.82l-0.13,1.42l-0.89,0.24l-0.67,0.68l-0.88,2.96l-1.99,3.34l-0.78,0.63l0.04,0.74l-4.48,7.35l-0.56,0.42l-1.13,0.12l-0.77,0.72l-0.64,1.51l-1.27,1.01l-0.24,0.8l0.31,2.33l-2.32,4.42l0.33,0.96l-1.39,1.05l-2.96,7.18l-1.09,0.6l0.67,2.17l-2.13,3.57l-1.21,1.07l-1.71,2.4l-5.24,2.87l-0.69,0.6l-0.84,1.79l-2.17,0.93l-2.57,-0.42l-1.92,-1.13l-5.09,0.79l1.41,-1.11l-0.13,-0.65l-2.09,-1.75l-0.88,-1.21l-0.87,-0.45l-0.43,0.08l-1.13,1.43l-2.74,1.58l-2.14,0.34l-1.52,-0.76l-2.22,-0.27l-2.22,-0.96l-0.87,-0.06l0.23,-1.21l-0.6,-0.69l-0.75,-0.14l-1.33,0.55l-1.05,1.47l-1.27,0.26l-0.98,1.22l-1.24,-0.04l-0.49,1.63l-0.46,0.33l-1.97,0.97l-0.71,-0.32l-1.16,0.23l-0.87,2.01l-0.86,0.39l-1.72,-1.68l-2.66,0.42l-1.6,-0.21l-2.03,-1.41l-3.41,-0.59l-1.86,-1.51l0.34,-0.7l-0.6,-0.59l-1.7,-0.92Z", "name": "Guyane fran\u00e7aise"}, "FR-H": {"path": "M838.53,672.37l1.08,0.06l0.88,-0.67l0.97,0.12l1.07,-2.21l1.86,-0.26l0.74,-0.59l0.25,-1.79l0.9,-1.48l-0.38,-0.73l-0.69,-0.15l0.49,-1.84l0.66,-0.7l2.07,-0.66l0.26,-0.57l-0.29,-0.57l0.29,-1.57l1.09,-0.31l1.75,0.99l1.22,-0.28l0.96,-0.92l0.83,-2.39l1.69,-0.12l3.84,-1.79l6.8,-1.3l2.03,-0.92l0.4,-1.61l3.75,-3.54l2.7,-0.22l4.3,0.91l1.55,0.91l1.19,2.4l0.37,0.25l0.75,-0.18l2.19,-3.35l0.93,-2.22l-0.53,-1.78l0.44,-1.29l-0.33,-1.53l-1.69,-2.25l1.55,-2.06l-0.41,-1.45l0.2,-1.05l1.75,-1.77l0.11,-1.69l-1.01,-1.98l0.14,-1.93l0.77,-0.45l2.42,-0.01l0.97,-0.35l0.69,0.85l1.59,0.95l-0.62,1.65l0.32,1.04l0.64,0.74l-0.24,1.34l1.15,6.71l-0.1,2.14l-1.97,6.87l-0.02,4.12l-0.45,1.01l0.91,0.83l0.24,0.8l-0.14,1.25l1.14,1.91l2.33,1.17l0.51,-0.65l0.25,0.54l0.31,7.85l0.73,1.54l-0.6,1.91l-0.19,2.68l1.67,5.79l-0.45,9.13l0.43,1.76l-0.38,2.31l-0.37,0.56l-1.68,1.43l-1.61,2.76l-5.49,7.01l-0.58,7.85l0.53,5.07l-0.08,5.26l-1.16,0.85l-0.93,1.45l0.36,0.56l0.38,0.0l-0.34,1.47l-1.74,0.45l-0.13,1.0l-2.1,-0.31l-0.71,0.1l-0.34,0.46l0.08,0.47l-0.87,1.33l0.15,0.53l1.18,0.53l2.94,-0.89l0.29,0.34l-0.16,0.77l-1.25,1.25l-1.71,0.61l-1.08,1.44l-0.92,0.16l-0.29,0.57l0.28,0.85l-0.28,0.85l0.82,0.98l-0.71,0.84l0.01,0.67l-2.14,1.17l-0.98,0.12l-0.35,0.4l0.0,0.54l0.75,0.99l-0.59,0.7l-0.15,0.77l0.54,0.37l1.71,-1.1l-1.36,2.96l-0.77,0.37l-0.56,-0.17l-1.56,-1.26l-4.09,-1.13l0.5,-1.41l0.63,-0.25l0.15,-0.7l-3.04,-1.76l0.64,-0.96l0.0,-0.46l-0.51,-0.38l-2.15,1.21l-0.36,-0.76l-1.07,0.38l-0.9,-0.82l-1.69,-0.51l-2.48,-0.05l-1.61,-1.23l-1.4,-0.31l-0.77,-0.93l-1.36,-0.18l0.42,-0.48l-0.28,-0.83l-3.45,-1.04l0.22,-1.42l-0.44,-0.73l-0.5,-0.17l1.06,-2.73l1.05,0.33l3.28,-1.35l0.76,-0.71l0.25,-0.88l2.21,-1.71l-0.28,-0.67l-8.03,-1.29l-0.49,-0.46l0.45,-1.23l-0.37,-0.54l-1.66,0.01l-3.15,0.9l0.15,-0.36l-0.39,-0.56l-1.58,-0.18l1.37,-0.22l1.43,-1.12l0.36,-1.08l-0.11,-0.68l-0.53,-0.48l2.22,-0.4l2.07,-1.1l0.18,-0.51l-0.3,-0.7l-0.72,-0.7l1.32,-0.68l0.04,-0.58l-0.51,-0.92l1.44,-2.22l-1.63,-2.04l-1.3,-0.47l-1.37,0.15l-3.3,1.36l-2.54,0.15l-1.78,0.63l-0.16,-0.36l0.64,-1.35l-0.36,-1.17l-1.16,-1.23l2.2,-0.2l1.3,-0.47l1.04,-1.45l-0.12,-0.56l-0.44,-0.27l0.27,-0.44l1.08,-0.73l3.47,-1.33l0.38,-0.36l0.09,-0.92l-0.43,-0.78l-0.97,-0.68l-1.71,-2.86l-0.82,-0.13l-1.52,0.37l-0.72,-1.14l-1.11,-0.59l-2.23,-0.31l0.1,-0.87l-0.66,-0.46l0.63,-0.4l0.19,-0.89l-0.4,-0.4l-0.84,0.0l0.49,-1.2l-0.24,-0.73l-0.53,-0.37l0.18,-0.95l-1.46,-1.0l2.12,-0.06l1.46,-0.81l2.49,-0.44l2.27,-0.94l0.28,-0.91l-1.26,-1.16l-2.16,-0.95l-0.59,-1.02l-0.54,-0.04l-0.76,0.57l-0.02,-0.4l1.8,-0.96l0.05,-0.67l-1.61,-1.07l-1.41,0.12l-1.48,0.55l-0.55,-1.32l-0.01,-0.82Z", "name": "Corse"}, "FR-F": {"path": "M352.12,269.71l-0.39,-0.79l0.59,-1.42l1.29,-1.16l5.17,-2.45l1.63,-1.53l1.57,-4.34l0.07,-3.55l0.45,-1.34l2.91,-2.22l0.88,-1.62l-0.43,-1.98l0.6,-3.59l-0.6,-0.63l-1.31,-0.12l-0.88,-2.08l2.47,-0.44l0.71,-0.46l0.07,-1.0l-1.12,-0.94l0.07,-0.52l3.99,-2.03l0.86,-0.92l-0.08,-0.73l-0.51,-0.52l-3.66,-0.66l-2.36,-1.54l1.12,-0.96l0.25,-1.0l-1.86,-3.44l0.07,-2.76l-0.31,-0.7l-0.92,-0.77l0.03,-1.1l0.42,-0.63l2.29,-0.4l5.6,-2.3l2.13,-1.95l0.67,-1.64l1.22,-1.8l-0.16,-0.83l-1.74,-2.11l0.08,-3.7l-3.65,-3.73l-2.55,-1.62l-1.61,-2.81l-0.36,-3.23l1.82,-1.67l1.34,-0.77l5.76,-1.41l2.04,-0.07l0.74,-0.36l1.7,-2.02l3.48,-0.35l0.63,-0.53l0.22,-1.53l3.0,1.67l3.49,-0.02l1.93,0.63l4.71,-2.07l1.42,-1.16l0.69,-1.87l0.95,-1.4l1.34,-1.03l2.49,-1.16l1.05,-1.01l0.26,-1.64l-0.52,-1.68l0.12,-0.44l2.22,-1.39l3.12,5.29l1.41,1.78l0.26,1.59l-0.56,2.83l0.31,1.68l0.56,0.67l1.6,0.81l-0.36,1.11l-1.35,1.63l-0.2,0.71l0.26,0.98l1.48,0.99l0.55,1.38l1.5,1.71l3.83,2.4l0.73,2.38l2.38,1.58l0.52,0.67l0.38,1.69l-0.03,2.29l1.38,2.04l1.1,0.79l4.59,1.88l2.43,-0.21l0.24,2.38l2.15,2.42l0.66,2.91l0.56,0.84l1.26,0.74l-1.59,2.0l-0.13,0.8l0.28,0.63l1.27,0.64l8.96,-1.77l2.18,-0.89l1.74,-2.19l1.08,0.42l1.34,1.84l0.89,0.32l1.9,-0.44l1.41,-1.25l0.41,-0.04l2.61,1.32l2.42,-0.25l1.05,1.47l1.06,3.38l3.56,2.09l1.09,1.21l-0.82,1.86l0.48,1.68l-2.36,-0.11l-1.14,1.09l0.09,1.33l1.07,0.83l2.02,0.26l3.17,-0.65l8.35,0.59l2.29,-0.94l1.66,-1.6l0.83,-0.26l2.03,0.05l-0.41,1.53l0.32,0.38l1.06,0.2l7.05,-1.97l1.76,0.12l2.27,0.58l1.52,1.02l1.38,4.33l1.05,1.28l2.81,2.18l0.52,2.18l-1.42,3.21l-0.46,0.6l-2.42,1.45l-1.42,1.43l-1.36,0.14l-0.46,0.42l0.1,2.67l0.95,2.06l-0.78,1.4l0.13,1.67l-0.42,0.96l-4.41,2.06l-4.17,0.46l-1.07,0.84l-0.36,1.76l0.56,1.49l2.33,0.9l2.32,2.0l1.13,2.08l-0.6,1.62l0.07,0.78l2.52,3.57l-3.82,0.47l-2.79,1.57l-0.07,0.91l1.55,1.67l1.57,3.11l1.42,1.89l-0.51,2.82l-0.86,1.93l-2.02,2.99l-0.1,0.83l0.94,1.66l1.73,0.94l3.6,3.47l0.78,3.4l1.43,3.27l1.23,3.95l-0.07,3.7l2.22,2.27l0.43,5.38l-1.31,4.71l1.12,2.83l-0.12,0.92l-2.12,3.69l-0.31,1.64l-3.08,-0.17l-2.72,0.77l-4.06,2.3l-1.68,2.09l-2.02,-0.32l-1.56,1.24l-2.13,-0.62l-0.64,-0.74l-0.84,-0.12l-4.12,3.34l-1.44,0.06l-0.57,0.31l-0.14,1.87l-2.29,0.13l-0.55,1.04l1.04,1.73l-0.51,1.0l0.05,1.2l1.67,2.1l0.3,1.38l-5.07,1.34l-7.99,0.81l-3.73,1.66l-1.58,1.88l-1.55,0.74l-2.19,3.55l-5.83,-0.29l-3.22,0.59l-2.11,-0.72l-3.44,0.0l-2.44,-0.84l-5.56,-0.15l-1.36,0.29l-1.79,1.06l-1.02,-0.37l-1.84,-1.89l-0.73,-0.15l-0.91,0.28l-0.52,0.62l-0.16,2.28l-0.72,0.98l-3.85,-0.24l-2.6,1.5l-1.18,-0.45l-0.12,-1.0l-0.46,-0.52l-0.8,-0.24l-1.55,0.21l-2.31,-0.53l-1.04,0.29l-3.98,3.58l-1.69,0.94l-2.46,-1.47l-0.93,-1.4l-0.84,-0.54l-0.84,-0.04l-0.83,0.37l-0.7,1.07l-1.07,0.49l-3.45,0.3l-2.25,-0.75l-0.71,-0.49l0.93,-3.22l-0.72,-1.01l-1.32,-0.68l-1.11,-1.06l0.45,-2.58l-0.5,-1.16l-0.91,-1.04l-1.23,-0.68l-5.0,-0.37l-0.32,-1.41l-0.46,-0.57l-3.41,-1.35l-2.07,-1.8l-0.45,-0.65l-0.51,-2.09l-0.01,-1.46l0.61,-2.86l-0.92,-2.42l-1.83,-2.14l-2.6,-1.8l-7.16,-9.22l-1.26,-3.31l-1.36,-1.88l-6.25,-3.03l-0.71,0.68l0.16,1.39l0.73,1.37l-0.4,0.35l-5.41,0.31l-1.21,0.29l-1.78,1.09l-2.67,-0.46l-2.71,0.24l-1.01,-0.19l-0.92,-0.81l-0.25,-0.98l0.04,-2.48l0.47,-2.57l-0.35,-1.03l-2.01,-0.4l-0.72,-1.12l-0.61,-0.29l-3.43,0.61l-0.29,-0.38l0.35,-1.68l-0.32,-1.32l-0.99,-0.39l-1.98,0.41l-0.5,-1.99l-0.74,-0.2l-1.7,0.66l-1.69,-2.39l0.88,-5.76l1.43,-5.26l4.43,-6.2l-0.2,-2.84l0.98,-2.98l1.96,-3.88l-0.45,-3.6l1.51,-3.81l7.61,1.68l0.98,-0.08l0.62,-0.83l-0.48,-2.31l0.7,-0.71l2.9,0.89l2.04,-1.63l2.39,-0.48l3.32,-1.45l2.28,-0.47l0.53,-0.73l-0.22,-1.26Z", "name": "Centre"}, "FR-E": {"path": "M25.63,242.25l0.98,-1.98l0.98,0.49l19.62,-3.77l3.65,0.88l0.91,-0.32l0.5,-0.76l0.62,-2.51l-0.36,-1.04l-0.81,-0.89l-0.58,-2.39l-1.01,-0.81l-2.92,-0.69l-0.66,-1.14l-0.5,-0.27l-1.37,0.44l-3.11,-1.71l-2.01,0.46l-2.96,4.7l-0.73,0.21l0.57,-1.39l-1.14,-2.33l0.91,-1.36l-0.39,-1.22l-1.09,-0.38l-3.21,-0.11l-0.03,-1.0l1.84,0.17l0.95,-0.24l0.41,-0.81l-0.22,-0.93l0.98,-2.21l0.53,-0.43l0.46,0.19l-0.71,2.55l0.23,0.48l1.87,0.72l5.36,-0.32l1.36,0.83l1.04,0.18l3.66,-0.78l2.04,-0.12l0.21,0.35l1.46,0.44l5.01,-0.91l0.33,-0.98l-0.42,-0.4l-1.83,0.11l-0.45,-0.19l-0.2,-0.74l-0.68,-0.16l-1.09,0.67l-1.22,-1.03l-2.07,0.18l0.59,-0.25l0.44,-0.73l1.79,-1.5l0.1,-0.44l-0.38,-0.25l-1.24,0.08l-1.29,0.8l0.0,-0.47l-0.85,-0.4l-0.96,1.04l-0.96,-0.2l-1.87,1.11l-0.5,0.08l-0.43,-0.77l-0.56,-0.05l-1.09,0.68l-1.02,0.2l3.24,-3.36l6.46,-3.39l0.19,-0.5l-0.47,-0.25l-4.22,1.6l-4.19,0.6l-5.77,2.77l-2.94,0.62l-1.85,0.8l-1.08,0.12l-4.35,-1.11l-0.58,0.4l-0.15,1.12l-0.27,0.13l-3.57,-0.23l-0.68,-1.74l0.68,-0.06l0.36,-0.44l-0.1,-1.01l-1.05,-2.18l-0.09,-1.34l0.28,-1.34l0.6,-0.89l1.01,-0.27l0.3,-0.88l-1.49,-1.16l0.52,-1.93l2.34,-3.42l1.07,0.45l0.46,-0.14l-0.19,-0.71l0.54,-0.32l2.86,-0.47l3.08,1.22l1.04,-0.16l0.21,-0.65l-1.67,-2.31l0.37,-0.22l2.65,0.59l1.24,-0.03l0.38,-0.34l-0.26,-0.44l-1.23,-0.43l0.07,-0.55l-0.35,-0.44l4.17,-0.0l3.43,-1.04l1.35,-0.03l0.38,-0.31l-0.2,-0.45l-0.86,-0.45l1.38,-0.23l3.24,-1.36l1.36,0.05l0.84,0.86l-0.39,1.52l0.42,0.5l1.58,-0.18l2.35,-1.07l2.95,0.58l0.4,-0.4l0.0,-0.59l-1.04,-0.57l0.11,-0.28l1.91,-1.43l2.45,-0.6l1.27,0.07l1.03,0.52l0.71,-0.39l0.36,0.69l0.75,0.24l1.01,-1.05l-0.02,-1.18l4.45,-1.51l-0.24,1.62l0.55,0.4l-0.25,0.84l1.04,1.07l-0.07,1.9l0.48,-0.03l1.68,-1.43l0.9,-0.29l-0.28,0.38l0.1,0.75l3.35,2.74l0.61,-0.01l0.45,-0.54l-0.24,-0.79l0.28,-0.74l-0.54,-1.41l0.79,0.35l0.21,-0.4l0.01,-2.72l0.24,-0.43l0.93,0.16l0.45,-0.85l1.48,0.59l2.89,-0.11l2.82,1.61l2.57,-0.38l0.28,1.21l1.61,0.42l1.96,-0.05l0.87,-0.41l0.21,-0.49l-0.71,-3.08l2.98,-0.46l0.33,-0.33l-3.03,-3.0l-0.19,-0.98l2.29,-1.26l1.58,-2.51l0.68,0.39l1.86,0.1l2.17,1.06l-0.28,0.54l0.32,0.6l2.25,0.04l1.71,-1.23l5.84,-2.09l1.17,0.0l1.67,-1.78l0.55,0.11l0.26,2.26l-0.4,1.28l-0.83,1.08l0.5,1.21l0.41,0.18l0.97,-1.9l1.78,-1.89l1.89,-1.51l0.81,0.06l1.06,-1.09l0.51,-0.13l0.85,0.83l-0.4,1.97l0.68,0.68l-1.05,2.42l-1.65,2.02l-0.1,0.85l0.4,0.4l0.8,-0.2l3.03,-4.81l0.76,0.15l1.33,-0.56l0.67,0.24l-0.02,0.75l-1.71,1.0l-0.01,1.15l2.48,1.16l4.01,0.41l0.01,1.2l-0.8,0.72l0.21,0.84l1.94,1.27l1.37,1.73l3.87,2.85l0.88,3.1l-0.26,0.69l0.22,0.77l2.78,1.74l3.18,1.32l-1.16,1.99l1.46,0.52l1.88,1.65l0.62,-0.24l0.25,-2.13l2.16,0.1l1.16,-0.4l3.22,-3.61l5.89,-2.95l0.99,-1.12l0.0,-0.53l-0.84,-0.45l1.49,-0.39l1.05,0.13l0.44,0.89l0.49,0.2l3.51,-1.61l2.1,-2.09l0.67,0.82l1.02,0.23l-1.01,1.46l-1.68,1.58l0.05,0.62l1.51,0.76l3.43,-2.2l0.62,2.37l0.78,0.42l0.63,2.14l0.57,0.3l1.25,-1.02l0.75,0.88l1.35,-0.4l0.22,-0.89l-0.64,-0.57l0.93,-0.86l1.16,0.66l0.55,-0.01l0.02,-0.55l-1.01,-1.64l2.26,-0.68l2.61,-0.22l1.31,2.11l0.42,1.64l1.16,0.92l-0.26,1.06l1.54,2.0l0.32,0.9l-0.23,1.64l0.21,0.41l0.46,-0.06l2.43,-1.55l0.01,-0.69l-1.38,-0.83l0.13,-0.69l-0.92,-1.66l0.91,0.63l0.48,-0.04l0.09,-0.48l-1.1,-1.52l-1.85,-0.63l-1.61,-3.1l0.13,-0.41l0.98,-1.09l1.07,-0.34l0.37,-1.34l0.28,-0.13l2.22,0.0l0.28,-0.7l4.99,-0.86l0.54,1.16l-1.35,1.87l-0.06,2.08l1.7,1.73l2.67,0.63l4.54,0.04l4.83,-0.64l3.02,-1.39l2.6,5.45l1.04,3.06l1.91,2.9l3.27,2.38l2.44,0.21l1.93,-0.61l2.78,-1.91l2.08,-0.77l2.22,-2.4l2.39,0.03l6.14,1.5l2.32,1.25l-0.2,5.67l0.77,8.15l-1.95,4.1l0.21,1.05l0.9,1.52l0.8,4.72l-0.73,1.74l0.74,4.88l0.57,1.17l1.18,1.08l0.09,4.44l-1.36,0.63l-4.18,0.61l-2.21,1.9l-0.63,1.08l-2.9,9.1l-1.14,1.77l-0.41,1.91l-6.47,-1.09l-0.75,-0.44l-0.77,-1.22l-1.29,-0.55l-3.34,-0.0l-1.83,1.23l-6.34,2.57l-1.86,1.31l-1.2,1.55l-2.58,1.54l-7.31,2.01l-3.72,-0.8l-4.42,1.41l-1.22,0.67l-2.07,-0.04l-2.38,0.42l-3.35,1.92l-0.46,1.34l0.13,2.04l-0.71,1.59l-0.73,3.38l-0.54,0.87l-2.15,1.35l-1.11,2.03l-0.68,0.15l-0.2,-1.32l-0.56,-0.55l-0.75,-0.02l-2.38,0.9l-1.56,-0.86l-0.9,0.05l-0.9,0.52l-1.08,1.85l-1.37,1.25l-3.37,0.29l-1.9,-0.8l-1.35,0.35l-0.47,0.66l-0.66,-0.06l-0.41,-0.22l0.4,-1.16l-0.67,-1.08l0.25,-0.19l3.7,-0.17l2.26,-0.53l1.21,0.07l0.42,-0.34l-0.3,-0.45l-0.99,-0.24l-2.8,0.23l-5.66,-1.72l-2.91,0.66l-1.93,0.0l1.05,-1.04l0.47,-1.05l-0.12,-0.48l-0.5,0.01l-0.86,0.73l-2.73,0.25l-0.32,0.4l1.11,0.66l-1.57,-0.11l-0.6,-0.37l-0.61,0.32l-0.09,1.63l-0.48,0.24l-1.89,-0.59l-1.16,0.04l-4.35,1.05l-1.51,-0.37l-2.24,-2.86l-1.34,-0.5l-0.54,-0.67l1.53,-0.13l1.13,1.56l1.15,-0.56l0.69,0.46l0.65,-0.25l0.21,-0.93l0.66,0.6l1.69,0.45l1.67,-0.14l1.46,-0.78l-0.13,-0.88l2.17,-2.6l0.37,-1.63l-1.48,-1.88l-0.44,-0.11l-0.26,0.86l0.64,0.9l-1.1,0.64l0.6,0.74l-0.39,0.02l-1.13,-0.82l0.39,-0.14l-0.02,-0.47l-0.84,-1.0l-0.86,-0.45l-1.89,-0.29l-0.44,0.26l0.31,0.55l-3.56,0.47l-0.85,0.64l-0.55,0.91l-2.13,0.65l0.0,-0.48l-0.46,-0.4l-1.32,0.49l-0.19,-1.21l0.7,-1.13l-1.61,-0.61l-0.47,-1.47l-0.85,-0.33l-0.4,0.46l0.45,2.1l0.01,1.94l0.27,0.88l1.3,1.72l-0.77,0.06l-1.84,-1.77l-0.48,-0.01l0.02,1.33l-0.45,-1.98l-0.51,-0.31l-0.67,0.4l-0.04,1.56l-1.22,-0.46l-1.86,0.87l-0.79,0.06l0.11,-0.88l-1.36,-0.9l-0.9,-0.02l-0.6,0.64l-1.75,-2.35l-1.96,-1.13l0.78,-2.82l4.43,-1.77l0.2,-0.57l-0.36,-1.98l-0.6,-0.34l-0.71,0.3l0.01,-1.53l-0.4,-0.43l-0.73,0.2l-0.33,0.57l-1.35,-0.45l-0.97,0.16l-0.33,0.36l1.51,1.12l0.5,1.38l-0.92,0.03l-0.89,0.76l-0.75,0.18l-0.19,0.67l0.52,0.61l-0.59,0.38l-0.66,1.45l-2.06,-1.94l-1.14,-0.34l-0.21,-0.79l-2.13,-0.87l-1.87,-0.17l0.38,-0.4l0.08,-1.06l0.95,0.1l0.65,-0.32l1.28,-2.54l0.88,-0.82l-0.25,-0.95l-0.44,0.09l-2.95,2.66l-1.78,0.9l-1.23,0.25l-0.32,0.34l0.22,0.41l0.92,0.77l-4.61,0.99l-0.63,-0.17l-2.02,-2.33l-2.01,-3.11l-0.6,-0.18l-0.57,0.4l-0.83,-0.02l-2.13,-0.46l-2.06,0.0l-1.4,-1.03l-2.45,0.05l-0.95,-0.29l-0.44,-0.91l-0.74,-0.41l-3.29,1.44l-0.96,-0.68l-3.48,0.2l-1.22,-1.97l-0.89,-0.77l0.11,-1.0l-0.37,-0.51l-1.34,-0.44l-0.26,-0.87l-1.15,-1.13l-1.72,-1.0l-1.75,-0.32l-0.44,0.53l0.51,1.46l-0.36,0.96l-0.24,0.22l-0.49,-0.49l-1.37,0.27l-0.79,0.62l-1.44,-1.0l-2.43,-0.67l-0.69,-0.82l-1.04,-2.67l-0.42,0.16l-0.7,1.27l0.43,1.31l1.4,1.55l-1.0,0.23l-0.97,0.66l-0.91,-1.34l-1.28,0.04l-0.48,1.28l0.73,0.75l-0.22,0.89l0.4,0.4l1.27,0.0l-1.81,1.5l-2.27,0.79l-8.52,-0.35l-0.07,-1.48l1.2,-0.18l0.52,-0.76l-0.21,-1.72l-1.54,-4.18l-0.96,-1.47l-2.99,-3.31l-6.1,-3.99l-1.18,0.45l-1.3,1.04l-1.84,-1.46l-3.15,-0.06l-3.8,-0.92ZM122.84,278.42l0.11,0.08l-0.08,0.32l-0.03,-0.4ZM122.52,282.02l0.23,1.3l1.65,2.47l-0.96,-0.23l-0.59,0.29l-0.71,-2.5l0.37,-1.33ZM133.84,278.57l0.45,0.38l-0.04,0.12l-0.41,-0.51ZM123.36,297.99l1.01,0.42l1.66,-0.07l0.33,0.33l-0.17,0.99l-1.32,0.33l-4.68,-0.38l-3.08,-0.8l-0.79,-0.48l0.14,-1.16l-1.41,-3.37l0.57,-0.67l4.02,1.8l3.72,3.05ZM1.37,208.95l2.5,-0.92l1.47,0.95l-2.48,1.11l-0.61,-1.01l-0.88,-0.14Z", "name": "Bretagne"}, "FR-X1": {"path": "M572.78,248.31l2.08,2.76l1.34,0.84l0.91,0.04l2.45,-1.72l13.22,-1.52l1.29,-0.82l0.21,-1.86l1.83,-1.16l3.72,0.47l2.38,-0.98l2.0,1.2l3.68,0.69l0.55,0.46l-0.52,1.12l0.41,0.79l2.84,0.99l0.59,0.52l-1.02,1.96l0.47,1.65l1.15,0.43l0.67,-0.37l0.54,-0.83l0.47,-0.03l3.02,3.37l2.43,4.0l0.05,1.03l-2.6,0.55l-0.58,0.46l-0.24,0.88l1.41,1.97l0.37,2.77l0.83,1.89l1.58,0.62l1.84,-1.46l0.41,0.07l2.15,2.8l2.67,1.55l2.02,-0.25l1.44,-1.65l0.75,-0.28l0.74,1.67l1.78,1.46l2.45,1.22l0.68,2.08l0.94,0.42l0.76,-0.18l2.08,-1.37l1.1,1.03l1.19,-0.18l2.67,-4.97l0.7,-0.81l0.64,-0.2l3.99,-0.6l3.21,1.65l1.53,0.3l6.58,-1.86l0.7,-0.44l0.69,-0.83l0.2,-0.97l-0.19,-2.21l0.55,-2.48l-0.58,-2.14l0.19,-0.51l0.63,-0.82l6.42,-3.94l2.41,-2.91l2.03,-0.75l0.4,-0.92l-0.24,-0.87l1.66,-0.91l1.8,-2.61l0.31,0.88l-0.17,1.53l0.84,0.59l3.53,-2.14l2.66,-2.84l1.54,-0.3l2.78,0.53l1.12,0.68l0.83,1.02l-0.06,1.28l0.31,0.67l3.72,1.77l2.64,-0.19l2.39,-1.21l3.0,-0.19l2.26,0.8l5.28,2.92l1.38,0.35l2.17,-0.03l1.59,-0.57l1.93,-2.36l0.72,-0.14l3.61,3.45l3.4,1.51l6.19,4.28l1.5,0.2l0.14,1.19l0.91,0.99l8.6,4.3l0.93,0.78l0.84,1.51l0.15,2.71l-0.51,1.44l-1.54,2.09l0.01,1.47l0.98,0.9l2.57,0.38l3.76,3.82l0.41,1.01l0.0,1.19l-0.38,1.14l-2.02,-0.53l-3.13,0.45l-2.79,-0.68l-2.25,0.79l-0.29,0.46l0.15,0.87l0.88,1.86l-1.14,1.05l-2.47,0.75l-0.32,0.37l-0.08,1.24l-1.37,0.7l-1.02,1.11l-1.15,2.35l0.42,0.52l7.29,-0.62l1.04,-0.41l2.04,1.73l-0.29,0.52l-1.73,0.73l-0.94,1.05l-0.92,0.22l-1.15,1.02l-0.52,1.79l0.21,1.82l-4.0,2.53l-1.78,1.58l-1.19,1.68l-3.91,3.12l-1.76,0.53l-0.28,0.41l0.06,1.05l-0.9,0.44l-0.31,0.51l-1.37,0.42l-0.72,0.57l-0.9,1.31l0.59,1.61l-1.2,1.49l-3.98,2.62l-6.53,1.77l-3.04,1.51l-1.11,2.94l1.07,2.32l0.08,1.66l-1.81,4.3l0.94,1.51l-0.16,1.55l-1.18,1.03l-2.12,1.0l-2.15,1.96l-4.43,2.12l-8.29,6.58l-0.92,1.27l0.3,1.23l1.2,1.17l-1.94,2.13l-3.09,4.33l0.33,2.88l-3.79,4.35l-2.1,1.94l-1.03,1.64l-4.26,3.58l-2.33,0.56l-7.03,-0.44l-0.45,-0.65l-0.22,-1.3l-0.66,-0.88l-3.08,-2.47l-0.52,-0.06l-2.8,2.33l-0.57,1.15l-1.28,0.24l-1.18,1.22l-1.45,0.59l-0.82,0.73l-1.63,-0.33l-0.55,-0.58l0.17,-3.09l-0.55,-0.51l-1.61,-0.3l-0.9,-1.08l-2.54,-0.97l-1.18,-3.01l-1.25,-0.94l-1.43,-0.41l-0.41,-0.65l-0.02,-2.61l-0.31,-0.39l-4.28,-1.02l-1.53,-0.8l-2.16,-1.97l-1.58,-0.52l-2.05,0.18l-3.7,1.25l-1.28,0.13l-3.18,-1.12l-1.8,-0.3l-1.05,0.23l-0.72,0.64l-1.5,3.9l-0.84,4.18l-1.47,2.56l-0.15,1.93l-3.53,6.7l-1.32,4.86l0.08,0.87l-2.89,-0.32l-0.98,-0.75l-0.98,-2.54l0.04,-1.79l-1.73,-1.29l-0.18,-1.86l-0.76,-0.6l-1.87,-0.55l-1.12,0.62l-0.53,1.93l-1.03,0.26l-2.35,-2.01l-0.72,0.04l-1.62,0.92l-1.03,0.08l-2.29,-0.51l-2.25,-0.92l-0.92,0.11l-0.68,0.9l-1.27,4.46l-1.74,2.06l-1.51,1.09l-1.62,0.57l-1.65,0.02l-4.83,-1.24l-3.08,0.65l-4.17,-0.93l-4.25,1.28l-1.42,-0.08l-2.06,-1.47l-2.77,-1.06l0.11,-2.73l-0.6,-1.7l5.26,-2.58l1.52,-1.33l0.08,-0.97l-0.86,-1.29l0.04,-1.38l-0.52,-1.25l0.64,-3.0l-0.8,-3.17l-2.08,-1.35l-4.18,-0.89l-2.7,-2.24l-1.72,-0.07l-3.83,-1.94l0.37,-3.1l-0.38,-1.88l-1.07,-0.72l-1.57,-2.64l-2.41,-2.14l-0.51,-1.65l-1.52,-2.44l-2.0,-0.46l-0.44,0.26l-0.43,1.96l-1.36,0.87l-0.44,1.79l-3.8,2.0l-1.31,0.28l-0.45,-0.19l-0.06,-1.53l-1.67,-2.57l-1.59,-0.43l-0.82,0.13l-1.33,1.43l-0.97,0.48l-2.64,-1.07l-1.82,-0.29l-1.87,0.11l-3.04,1.06l-3.34,-2.82l-1.29,-0.36l-1.77,0.04l-2.77,-1.63l-1.05,-1.28l-0.19,-0.83l0.34,-2.43l2.35,-4.46l-1.16,-3.32l1.31,-4.66l-0.44,-5.56l-2.26,-2.43l0.11,-3.58l-1.26,-4.05l-1.41,-3.21l-0.84,-3.54l-3.63,-3.57l-1.85,-1.04l-0.71,-1.21l2.92,-5.34l0.56,-3.19l-0.17,-0.62l-1.7,-2.2l-1.25,-2.57l-1.44,-1.56l0.08,-0.29l2.27,-1.1l2.94,-0.21l1.27,-0.38l0.25,-0.54l-0.6,-1.33l-2.08,-2.61l0.57,-2.21l-1.26,-2.45l-2.54,-2.22l-2.26,-0.85l-0.21,-1.48l0.17,-0.7l0.75,-0.56l4.07,-0.42l4.77,-2.29l0.53,-0.86l-0.08,-2.09l0.82,-1.64l-0.97,-2.16l-0.15,-2.18l1.55,-0.25l1.46,-1.47l2.5,-1.52l2.08,-4.18l-0.63,-2.78l-2.95,-2.35l-0.89,-1.09l-1.46,-4.45l-1.91,-1.27l-3.81,-0.73l0.73,-2.78l3.72,-2.26l1.64,-2.66l0.15,-0.86l-0.86,-1.48l-0.18,-1.43l1.15,-3.5l0.41,-0.36l3.03,0.06l2.27,-0.89l4.61,0.48l6.23,-0.91l2.51,0.47l0.72,-0.38l0.87,-1.43l1.29,-1.21l0.68,0.48l0.65,2.62l0.7,0.31l1.89,-0.13l2.82,1.56l5.42,6.18l0.37,0.67l0.39,2.99l-1.82,2.13l0.14,1.13l2.19,0.89l3.06,2.04l1.02,0.12l1.09,-0.29l0.78,-1.18l1.07,0.24l1.04,2.12l1.93,1.93l4.55,6.82l-1.58,0.69l-0.06,1.02l2.02,1.14l2.25,-0.31l0.24,0.47l-0.05,2.31l0.83,1.24l2.41,0.53l2.82,-0.18l1.96,0.66l0.71,-0.08l1.68,-1.15l1.71,0.44l2.04,-0.07l2.04,-1.61l0.63,0.05l1.22,0.92l0.82,0.12l0.66,-0.82l0.03,-1.6Z", "name": "Bourgogne-Franche-Comt\u00e9"}, "FR-MQ": {"path": "M29.58,521.59l2.04,4.09l0.61,0.13l1.69,-1.37l2.35,-1.15l2.71,-0.7l1.66,-0.01l-1.1,1.0l0.15,0.92l-1.99,2.03l-1.17,-1.91l-0.57,-0.12l-1.08,0.91l-0.34,2.42l0.25,2.72l0.56,0.33l1.58,-0.37l0.87,0.65l-2.81,1.51l-0.09,0.63l0.51,0.51l-0.97,0.5l-0.21,0.44l0.48,1.35l1.03,0.35l0.45,-0.14l0.84,-1.13l2.53,1.1l-1.26,0.61l-0.22,0.52l0.83,1.98l1.01,1.02l2.32,1.31l0.92,2.1l2.03,0.78l0.32,0.71l-0.03,1.98l0.6,0.39l0.71,-0.41l-0.25,2.4l0.41,1.46l0.77,1.07l-1.35,1.57l0.15,0.59l1.42,0.69l1.69,5.35l-1.43,0.75l-1.43,3.51l-1.14,1.51l-1.19,0.51l-1.52,0.14l-1.15,-0.51l-0.42,-1.43l0.56,-0.96l1.27,-0.41l1.36,-0.96l0.05,-2.11l-1.15,-1.71l-0.48,-0.15l-3.49,1.8l-1.39,-0.1l0.06,-0.84l-0.32,-0.42l-0.79,-0.15l-3.38,0.55l-6.91,-0.91l-2.07,0.3l-2.92,1.18l-1.59,0.24l-0.81,-0.46l-2.5,-3.48l-0.12,-1.4l-1.35,-0.99l2.86,-2.99l3.07,-1.49l0.78,-0.71l1.21,1.62l2.11,0.55l1.94,-0.83l0.87,-2.13l-2.15,-3.7l-0.25,-2.0l-0.53,-0.33l-3.16,0.87l-5.49,-0.02l-1.6,-2.4l-4.32,-2.94l-2.07,-1.98l-1.24,-3.51l-1.31,-1.93l0.78,-2.27l-0.31,-1.75l-1.64,-2.67l-3.41,-3.56l-0.79,-1.4l-0.29,-1.59l0.29,-1.51l0.74,-1.23l0.98,-0.9l4.61,-2.61l4.02,-0.06l3.94,1.27l5.23,3.33l4.71,2.09l1.84,1.19l1.36,2.81l1.45,0.5Z", "name": "Martinique"}, "FR-YT": {"path": "M678.38,715.39l-0.52,0.0l-2.02,-6.29l2.65,-2.73l0.87,2.15l0.24,2.21l-0.38,2.26l-0.84,2.4ZM647.49,692.27l-1.04,0.75l-0.14,0.46l1.6,0.36l0.6,0.88l2.18,1.87l2.93,3.52l1.63,1.28l2.49,0.62l4.96,-0.04l2.61,0.78l2.6,1.74l1.05,1.73l0.02,2.1l-0.68,2.82l-3.71,5.46l-1.53,1.19l0.14,2.09l1.04,1.92l2.81,1.86l-0.3,1.89l-3.07,6.4l-2.6,3.07l-1.21,3.45l2.82,4.18l-1.15,1.69l-1.53,1.06l-0.76,-1.37l-0.41,-0.2l-1.1,0.17l-1.53,1.03l-1.83,0.51l-1.63,-0.43l-2.25,-1.33l-1.24,0.41l0.12,-1.88l-0.84,-1.8l-1.74,-0.77l-1.92,0.17l0.0,-0.31l2.91,-1.61l0.29,-2.68l-1.49,-2.81l-2.83,-1.57l0.22,-0.43l1.06,-0.67l1.55,-0.14l0.82,0.5l2.83,3.33l2.81,1.68l1.89,-0.73l0.6,-2.42l-0.76,-2.88l-1.37,-2.17l-1.74,-1.96l-4.21,-3.56l2.58,-0.75l0.36,-0.4l-0.07,-1.34l-0.91,-1.33l-0.68,-2.3l-0.55,-4.71l-0.6,-2.37l-1.57,-1.23l-1.87,-0.61l-1.59,-1.03l-1.74,-2.81l-0.41,-4.1l7.31,-7.87l0.59,1.27l-0.82,0.34Z", "name": "Mayotte"}, "FR-X4": {"path": "M522.82,186.37l0.16,-1.02l1.68,-1.84l-0.22,-0.68l-0.89,-0.72l3.35,-0.37l0.76,-1.01l0.2,-1.75l1.48,-2.59l4.29,-3.81l1.07,-2.07l1.68,-1.1l0.81,-1.18l2.06,-1.61l0.39,-0.63l-0.02,-1.16l-0.99,-0.78l-3.39,0.04l-0.83,-0.47l0.06,-1.11l1.31,-0.86l1.17,-1.67l0.21,-0.79l-0.25,-2.97l1.17,-0.73l3.12,0.34l1.45,-0.25l1.33,-1.0l0.36,-0.86l-0.5,-1.26l-1.41,-0.81l-0.87,-0.98l-1.6,-0.47l-0.56,-4.86l-0.91,-2.12l2.95,-1.52l5.1,-1.23l4.31,-0.57l0.52,-0.78l-0.12,-1.35l0.85,-0.54l2.04,0.1l3.04,1.4l2.06,-0.68l2.32,0.84l1.14,-0.78l0.49,-1.35l0.08,-2.0l-0.52,-1.32l-0.68,-0.44l0.36,-0.58l1.56,-0.48l0.31,-0.52l-1.82,-3.65l1.76,-1.97l-0.32,-2.31l0.46,-1.54l-1.6,-4.48l0.75,-0.67l1.86,-0.09l1.55,-0.83l1.47,-2.03l1.72,-1.03l3.2,-2.67l0.94,-1.48l0.01,-1.35l-1.51,-2.11l0.44,-2.67l1.83,-3.2l0.19,-1.43l-0.27,-1.06l-1.76,-2.77l-0.03,-2.56l3.32,-0.4l9.73,2.22l1.91,-0.29l8.49,-3.54l2.64,-0.38l0.81,-0.51l1.03,-2.26l0.49,-2.73l-0.42,-1.4l0.42,-1.14l6.43,-5.47l1.16,-0.45l0.43,1.03l0.89,0.26l1.7,-0.3l0.3,0.34l-0.46,3.48l-0.42,-0.16l-0.65,0.28l-1.15,2.13l-0.07,2.33l-2.32,4.87l-0.3,1.37l0.89,1.44l2.96,1.1l0.83,1.27l-0.04,1.46l-1.51,3.13l0.87,1.86l0.09,3.19l0.8,0.73l1.7,0.19l5.18,-1.02l3.3,2.38l3.4,1.12l3.27,3.72l2.07,1.47l1.72,0.4l3.86,-0.67l2.26,2.11l0.31,0.88l-0.71,0.59l-0.19,1.13l0.55,1.39l1.85,0.16l0.84,-1.02l2.66,0.93l1.03,0.78l2.89,4.41l0.2,1.33l-0.26,1.48l0.69,1.13l1.59,0.26l4.1,-2.17l2.36,0.84l1.04,-0.1l1.27,-1.8l1.33,-0.57l4.11,0.97l2.13,-1.42l2.44,0.88l3.06,3.02l1.61,0.63l3.79,0.76l0.99,0.85l0.81,2.18l0.48,0.25l7.2,-0.85l1.6,-1.26l0.33,-1.21l1.94,-0.22l0.21,-0.79l2.88,-0.27l3.24,0.68l4.79,2.7l1.85,0.15l2.29,-0.93l0.53,0.08l5.52,2.34l0.95,0.78l0.43,1.78l3.49,3.43l-1.28,0.51l-0.34,1.05l0.39,0.92l5.12,4.46l-0.0,1.31l1.48,0.85l1.03,2.86l0.65,0.17l0.76,-0.38l0.24,0.78l-0.46,1.9l1.04,1.55l0.86,0.29l2.67,0.02l2.33,0.73l0.97,-0.14l1.37,-1.65l-0.67,-2.53l0.24,-0.75l2.79,0.42l1.85,-0.14l4.34,1.88l1.09,0.08l-0.03,2.41l0.73,2.3l1.51,1.11l2.29,-0.99l0.3,-0.66l-0.21,-0.77l0.26,-0.22l2.39,1.43l1.98,0.72l5.31,0.06l2.06,0.7l0.67,-0.41l0.98,-1.46l2.37,-0.6l0.98,-1.9l2.23,-0.77l0.85,0.06l0.55,0.9l3.47,0.42l0.22,0.64l-0.49,0.46l-0.0,0.71l3.02,3.51l1.57,0.84l2.62,0.39l1.24,0.55l0.93,1.37l0.84,0.6l1.01,0.16l2.14,-0.55l2.64,0.55l2.77,-0.96l5.0,1.23l4.59,-0.2l9.65,4.37l6.29,1.29l-1.02,1.01l-1.91,3.08l-2.79,6.52l-0.7,1.0l-3.2,1.38l-0.7,0.85l-0.46,1.3l-2.12,0.14l-0.95,0.41l-0.65,2.78l-3.8,3.45l-2.72,1.47l-2.58,3.44l-0.59,2.73l-0.01,2.81l0.72,2.0l-2.23,1.72l-0.47,2.28l-1.12,1.98l-0.77,3.01l-0.07,1.2l0.89,2.96l-0.06,0.91l-0.71,0.98l-2.24,1.43l-0.92,4.51l-4.46,5.68l-0.61,2.23l-1.16,1.77l-0.81,2.75l0.18,3.35l2.65,4.1l0.12,2.21l-2.19,2.41l-0.36,2.63l-1.24,1.91l0.21,3.21l-1.19,0.9l-1.06,3.68l0.75,2.84l-0.03,1.09l-1.25,1.28l-0.34,0.8l0.43,2.7l1.23,0.87l2.11,3.24l1.05,1.06l-0.21,1.33l-3.51,1.37l-2.73,1.91l0.1,0.7l1.12,0.69l0.01,0.32l-1.72,0.61l-0.07,0.53l0.6,1.0l-0.84,0.74l-2.31,-0.79l-0.93,0.18l-0.3,0.87l0.9,1.46l-1.22,1.75l-1.53,0.53l-4.27,-0.15l-4.24,1.21l-0.96,-0.82l-3.02,-1.12l-0.26,-0.95l1.04,-2.07l-0.39,-0.58l-1.82,0.11l0.39,-1.2l0.0,-1.45l-1.12,-2.14l-3.45,-3.28l-0.86,-0.37l-1.8,-0.05l-0.57,-0.53l0.01,-0.77l1.5,-2.01l0.61,-1.75l-0.17,-3.01l-1.03,-1.85l-1.11,-0.92l-8.58,-4.29l-0.62,-0.69l-0.07,-1.18l-0.36,-0.37l-1.57,-0.16l-6.14,-4.25l-3.36,-1.49l-2.89,-3.05l-1.0,-0.52l-0.66,-0.08l-0.72,0.37l-1.82,2.29l-1.32,0.48l-1.98,0.03l-1.09,-0.27l-5.28,-2.92l-2.42,-0.87l-3.37,0.19l-1.11,0.31l-1.36,0.92l-2.15,0.18l-3.33,-1.51l-0.16,-1.78l-1.1,-1.33l-1.36,-0.79l-2.91,-0.55l-2.05,0.41l-2.72,2.89l-3.08,1.95l0.04,-2.28l-0.66,-0.67l-0.65,0.03l-0.83,0.72l-1.26,2.11l-1.69,0.8l-0.26,0.52l0.33,0.93l-0.2,0.45l-1.94,0.67l-2.38,2.89l-6.41,3.93l-0.82,1.02l-0.32,1.1l0.57,2.0l-0.54,2.43l0.2,2.14l-0.58,1.27l-6.85,2.14l-1.15,-0.23l-3.43,-1.72l-4.29,0.62l-1.46,0.81l-2.83,5.28l-0.39,0.11l-0.67,-0.88l-0.77,-0.22l-2.89,1.56l-0.53,-0.69l-0.42,-1.51l-3.74,-2.21l-0.5,-0.48l-0.45,-1.41l-0.55,-0.47l-1.19,0.09l-1.76,1.89l-1.49,0.14l-2.23,-1.34l-2.42,-2.98l-1.06,-0.04l-1.62,1.4l-0.89,-0.42l-0.59,-1.48l-0.36,-2.77l-1.38,-1.79l0.33,-0.6l2.33,-0.37l0.83,-0.93l-0.18,-1.31l-1.18,-2.31l-4.52,-5.41l-1.18,-0.18l-1.09,1.24l-0.51,-0.21l-0.23,-0.95l0.85,-1.35l0.11,-1.07l-1.02,-0.91l-2.65,-0.91l0.44,-1.3l-0.31,-0.7l-0.84,-0.49l-3.68,-0.69l-1.99,-1.23l-2.67,0.98l-2.98,-0.51l-1.76,0.38l-1.47,1.25l-0.22,1.84l-0.81,0.45l-13.17,1.5l-2.39,1.7l-0.5,0.01l-1.12,-0.71l-1.95,-2.64l-0.78,-0.38l-0.55,0.41l-0.26,2.11l-1.42,-0.99l-1.02,-0.13l-0.91,0.39l-1.31,1.25l-1.75,0.05l-1.93,-0.43l-1.85,1.2l-2.25,-0.63l-2.87,0.17l-1.97,-0.36l-0.57,-0.86l0.08,-2.22l-0.52,-0.94l-0.98,-0.2l-1.67,0.35l-1.41,-0.73l1.56,-0.67l0.12,-0.94l-4.65,-7.0l-1.91,-1.9l-0.72,-1.79l-0.62,-0.61l-1.22,-0.42l-0.78,0.28l-0.57,1.04l-1.58,0.12l-2.82,-1.93l-2.05,-0.84l1.35,-1.41l0.55,-1.05l-0.39,-3.31l-0.49,-0.96l-5.62,-6.39l-3.0,-1.66l-2.3,-0.01l-0.47,-2.37l-1.12,-0.92l-0.15,-0.51l0.56,-2.27l-0.63,-1.75l1.81,-1.89l-0.93,-1.96l2.55,-0.54l0.75,-0.59l1.02,-2.47l0.98,-1.32l2.66,-1.99l0.06,-0.58l-1.98,-2.34l-2.8,0.05l-0.2,-1.26l0.51,-1.93l-0.76,-3.12l-2.03,-2.25l-1.36,-0.04Z", "name": "Alsace-Champagne-Ardenne-Lorraine"}, "FR-X5": {"path": "M296.09,638.61l-0.69,-4.39l0.23,-0.9l1.78,-2.58l-0.28,-3.88l2.39,-2.45l2.79,-0.25l0.84,-0.59l0.32,-0.83l-0.41,-1.39l0.02,-1.75l0.72,-0.92l2.37,-1.37l1.67,-2.92l1.05,0.11l0.6,-0.32l1.2,-3.37l1.88,-1.77l0.55,-1.02l0.07,-0.67l-0.62,-1.7l0.51,-2.21l0.68,-0.76l2.02,-0.75l0.47,-0.89l-1.07,-3.38l0.21,-2.73l-0.21,-0.77l-0.56,-0.5l-0.61,-0.06l-0.78,0.37l-1.02,1.09l-0.38,-0.27l-0.07,-1.71l1.65,-0.19l0.44,-0.8l-0.43,-1.63l-1.92,-3.78l-1.59,-1.2l-0.74,-1.54l-1.23,-0.77l-5.85,-1.11l-1.94,0.13l-0.8,-1.93l-0.88,-0.6l1.33,-2.32l-0.5,-1.87l1.41,-0.23l0.84,-0.72l1.33,-3.17l-0.83,-1.53l0.05,-2.22l1.48,-3.42l-0.0,-0.64l-0.91,-2.1l-1.51,-1.7l0.06,-0.26l3.02,-2.18l2.14,0.33l2.17,-0.22l1.91,-1.79l2.5,-1.32l1.3,0.7l0.06,0.52l-0.83,1.47l0.06,0.63l0.61,0.78l1.48,0.53l2.83,0.04l0.81,-0.49l0.46,-0.83l-0.21,-2.54l0.68,-1.02l1.79,-0.56l0.96,0.87l1.31,-0.01l1.3,-0.95l2.0,-2.61l0.42,-0.08l4.36,1.63l0.81,-0.02l3.09,-1.56l1.3,-0.2l4.46,-1.96l1.1,-0.75l2.5,0.3l5.09,-1.52l1.7,0.75l2.19,1.82l1.56,-0.16l3.92,-2.03l1.14,-2.97l2.17,-1.22l0.77,-1.7l1.0,-0.23l2.2,0.69l1.76,-0.35l0.51,-0.77l-0.02,-0.8l-0.33,-0.62l-1.03,-0.71l2.05,-1.55l2.29,-4.41l0.28,-1.14l-0.68,-1.14l-2.14,-0.75l-0.89,-1.21l0.8,-1.93l0.2,-2.29l0.6,-0.27l1.68,0.95l1.42,0.26l5.01,-0.38l1.18,-1.19l0.12,-3.52l-1.84,-1.84l-0.96,-2.38l-0.09,-1.96l-1.19,-1.7l0.07,-0.49l0.56,-0.53l2.99,-1.33l3.6,-2.94l3.41,-5.27l0.78,-0.63l2.29,-0.5l4.57,-2.86l1.44,-2.18l-0.02,-1.02l-0.61,-0.82l0.11,-0.81l0.64,-0.86l2.37,-0.76l1.69,-2.66l2.13,-1.79l0.74,-1.12l-0.14,-1.73l0.68,-1.13l0.08,-1.03l-1.31,-3.89l0.24,-0.96l3.33,-2.09l1.05,-0.26l1.04,-0.9l1.16,1.27l2.28,-0.55l2.62,0.91l4.01,2.82l1.3,1.87l1.92,0.91l1.31,1.01l0.85,0.2l1.52,0.03l3.21,-0.98l3.94,-1.84l2.17,0.72l1.98,-0.89l4.23,-0.19l0.61,1.12l0.9,5.86l3.12,4.71l1.22,2.47l-0.85,4.57l-0.66,1.67l0.13,0.4l1.71,1.0l1.23,3.98l0.91,0.71l0.84,0.16l0.43,-0.29l0.49,-1.7l5.01,-1.51l1.0,0.08l1.12,1.11l0.62,0.08l1.36,-0.63l3.34,0.11l1.98,-0.21l1.25,-0.59l3.91,-4.25l0.61,-2.45l2.43,-3.52l0.63,-2.44l7.94,-7.42l2.16,2.45l0.35,2.78l0.85,0.31l2.55,-0.29l2.18,2.96l0.8,2.12l1.02,0.73l1.85,0.66l-1.03,0.82l-0.2,0.72l0.58,1.36l0.58,3.63l1.38,2.09l2.07,1.57l0.62,-0.19l0.85,-2.42l1.89,-2.92l0.36,-2.65l1.38,-4.58l0.47,-0.79l1.76,-1.22l0.98,-3.72l0.74,-0.4l1.59,1.82l1.21,-0.05l1.38,-0.79l3.42,-3.06l2.41,-0.28l3.68,-2.03l1.93,-0.24l0.36,0.35l0.79,2.6l3.5,5.9l1.31,1.29l1.23,0.42l1.33,-0.63l3.37,-0.36l1.07,-0.91l0.56,-2.31l0.89,-0.32l1.69,0.16l0.84,0.67l-0.48,1.5l0.3,0.89l4.51,0.95l4.08,3.38l2.89,1.45l1.57,0.41l-0.03,2.85l1.28,3.55l0.51,3.07l0.72,2.11l0.66,1.17l1.36,0.88l0.8,1.32l2.21,6.94l1.77,1.52l1.64,2.61l-0.83,2.07l0.49,3.26l0.42,0.65l0.92,0.24l4.17,-0.59l1.08,1.04l4.93,2.42l1.51,0.3l1.25,-0.53l1.13,-1.2l2.93,-1.99l2.23,-0.62l0.91,0.24l-0.18,1.71l0.35,0.84l1.54,0.89l0.98,-0.13l1.05,-0.78l0.46,-2.02l0.63,-0.49l3.18,-0.06l1.68,0.67l2.19,2.02l1.73,0.78l2.57,0.61l0.57,1.69l1.23,1.54l0.1,1.58l1.9,1.83l0.18,2.73l-0.33,2.14l0.45,2.79l0.62,0.47l1.22,-0.4l1.2,0.21l4.51,5.33l-0.09,0.53l-1.09,-0.09l-0.55,0.26l-0.07,2.45l-1.05,1.25l-1.67,1.19l-2.8,1.16l-5.36,3.57l-0.17,0.92l0.54,4.15l-1.95,4.79l0.01,1.9l-0.43,1.1l-4.47,-1.25l-2.03,0.57l-1.49,1.04l-1.68,2.12l-1.37,2.92l0.45,1.06l1.58,0.26l-0.52,1.33l-2.32,0.57l-0.61,1.38l-1.54,0.44l-3.46,2.46l-2.02,0.48l-1.44,1.06l-1.17,0.31l-1.37,3.01l-2.27,-0.34l-2.81,-1.63l-0.8,-1.47l0.85,-1.47l-0.07,-0.6l-1.92,-1.42l-3.63,-0.32l-3.46,0.39l-2.41,0.83l-13.11,9.5l-7.26,2.86l-2.05,1.55l-4.61,5.42l-1.04,0.41l-2.52,-1.04l-4.05,0.36l-4.36,1.63l-4.56,3.3l-1.44,1.8l-2.59,2.25l-1.5,2.23l-2.41,2.09l-2.8,6.09l-1.93,6.26l0.17,0.94l0.79,0.58l0.07,1.22l-0.96,8.67l0.17,4.88l-0.34,3.08l0.26,4.02l0.72,5.72l1.02,1.05l4.27,1.24l0.37,0.52l-0.12,1.76l1.98,2.59l0.3,1.34l-2.29,0.36l-3.05,-0.09l-1.83,-0.7l-1.61,-2.13l-2.87,-0.28l-1.16,0.57l-2.17,-0.57l-1.94,1.35l-3.1,0.24l-3.76,2.65l-4.83,-0.08l-1.22,0.53l-2.65,1.86l-0.57,0.72l0.5,1.8l0.52,0.57l-2.26,-0.17l-2.79,-0.85l-1.31,0.01l-0.83,0.63l-0.48,1.11l-0.67,0.22l-2.94,-1.07l-1.08,-0.76l-1.67,-2.44l-2.78,-0.4l-6.16,-2.91l-1.99,0.2l-3.71,1.04l-3.02,-0.29l-1.14,0.54l-1.01,1.86l-2.45,1.95l-0.62,0.36l-2.45,0.36l-0.71,-0.1l-1.77,-1.24l-1.32,-3.75l-1.07,-1.5l-3.53,-0.74l-4.73,-2.58l-4.65,-0.78l-0.31,-0.6l0.18,-1.54l0.62,-1.4l0.95,-0.83l1.41,-0.12l0.28,-0.64l-0.97,-1.12l-2.03,-0.75l0.42,-1.19l-0.34,-0.53l-6.9,-0.61l-4.12,-2.32l-2.77,0.67l-1.86,-0.09l-0.4,0.28l-0.88,2.73l-0.91,0.33l-0.66,-0.77l-1.07,-2.58l-2.23,-3.15l-1.29,-0.49l0.21,-0.83l-0.29,-0.49l-1.53,-0.36l-7.55,-0.02l-2.58,0.53l-0.9,-0.58l-1.64,-3.14l-1.32,-1.06l-1.36,-0.37l-5.14,-0.31l-1.98,-1.15l-1.93,0.82l-1.92,-1.37l-4.63,-2.09l-2.28,-0.07l-4.25,-1.04l-1.85,0.13l-1.67,0.77l-0.3,1.2l0.12,1.49l-0.82,1.99l0.47,0.91l-0.83,1.28l0.24,0.56l0.76,0.24l0.61,0.69l0.36,0.97l-0.05,1.0l-0.39,0.58l-10.29,0.14l-1.18,-0.37l-3.41,0.59l-1.07,-0.19l-0.39,-1.05l-2.06,-1.35l-1.26,0.44l-2.75,3.06l-0.55,0.07l-2.26,-3.03l-4.31,-1.22l-1.14,0.13l-1.23,0.71l-3.75,0.5l-4.68,1.54l-1.99,0.16l-2.26,-0.8l-1.02,-1.0l-1.36,-0.45l-0.27,-0.97l-1.39,-1.16l-0.66,-0.99l-0.32,-1.14l0.13,-1.21l-0.54,-0.42l-2.76,0.82l-1.36,-0.14l-0.79,-1.35l-3.39,-1.83ZM436.08,668.09l0.96,-0.22l0.2,-0.59l-1.32,-2.33l-0.63,-0.79l-0.47,-0.12l-0.9,0.48l-0.67,1.33l0.07,1.16l0.97,0.84l1.79,0.25ZM309.0,601.52l-0.8,-0.16l-0.41,-0.99l0.4,-2.01l0.84,-0.4l0.79,0.28l0.31,0.77l-0.59,2.03l-0.54,0.47ZM307.75,607.5l-0.9,-0.16l-0.53,-1.24l0.07,-0.86l1.14,-1.14l1.03,0.52l0.48,1.4l-0.86,1.31l-0.43,0.15Z", "name": "Languedoc-Roussillon-Midi-Pyr\u00e9n\u00e9es"}, "FR-X6": {"path": "M415.84,70.92l0.57,0.0l0.4,-0.4l0.0,-0.59l-0.39,-0.4l-2.26,-0.33l-0.8,-0.54l-1.15,-2.03l-2.54,-1.04l-0.42,-0.47l0.59,-5.43l1.08,-1.83l2.08,0.36l0.47,-0.39l-0.18,-0.83l-3.2,-2.12l1.12,-3.04l0.33,-6.83l1.74,-1.1l0.1,-0.58l-1.61,-2.08l-0.3,-1.01l-0.26,-3.74l-0.64,-3.46l0.26,-2.94l2.0,-4.41l0.34,-1.54l-1.52,-6.24l1.26,-0.84l3.05,-0.71l2.82,-2.96l1.8,-1.42l11.58,-4.22l1.24,0.13l2.03,-1.0l9.83,-1.04l11.16,-3.16l4.16,0.3l5.0,-1.09l3.16,-1.35l0.71,1.42l0.6,3.51l0.63,1.64l3.14,3.26l0.16,1.34l-1.61,1.47l-0.46,0.87l1.16,3.76l-0.52,1.99l1.22,0.87l1.03,1.61l4.25,0.56l0.92,1.61l2.23,1.78l1.46,2.61l1.24,0.91l5.27,2.03l1.32,0.13l0.92,-0.63l1.82,-2.63l2.37,-1.63l7.93,-2.08l1.41,0.36l0.92,0.73l2.64,4.35l0.72,0.59l1.48,0.27l0.38,0.58l0.61,1.69l-0.8,1.48l0.51,2.38l1.6,4.47l0.09,2.5l0.42,1.17l1.9,1.66l3.82,1.44l1.7,-0.16l2.68,-0.82l2.06,-1.38l0.72,-0.05l0.89,0.38l-0.6,1.19l0.12,0.56l0.76,0.47l4.13,0.08l2.56,0.75l1.12,0.9l0.91,1.39l1.05,10.05l2.3,1.94l1.29,-0.74l1.51,-2.44l1.09,-0.6l2.59,-0.16l2.45,0.25l3.52,1.61l1.52,-0.04l3.85,-1.36l1.15,-0.1l1.03,0.41l1.98,1.84l2.53,1.56l1.84,3.13l1.53,0.38l0.59,-0.74l-0.06,-0.72l0.39,-0.14l1.83,1.02l0.14,0.88l-2.69,2.35l-1.79,5.34l-0.17,1.55l1.11,0.78l1.48,-0.45l0.84,0.08l1.74,4.81l-3.86,2.3l-0.55,0.59l-0.59,1.62l0.62,1.5l0.04,0.67l-0.45,0.3l0.22,0.46l3.43,1.56l1.54,0.17l0.08,2.76l1.79,2.83l0.07,1.8l-1.86,3.26l-0.49,2.91l0.31,0.92l0.9,0.74l0.32,1.65l-0.7,1.08l-3.14,2.62l-1.8,1.1l-1.44,2.0l-1.21,0.65l-2.01,0.15l-1.16,1.07l0.06,0.89l1.48,3.98l-0.45,1.42l0.37,2.06l-1.37,1.28l-0.45,0.95l0.11,0.84l1.61,2.67l-1.45,0.55l-0.75,1.27l0.2,0.5l0.68,0.33l0.4,0.93l-0.07,1.86l-0.63,1.32l-0.79,0.0l-1.69,-0.75l-2.03,0.68l-2.88,-1.37l-2.38,-0.13l-1.45,0.91l-0.06,1.82l-4.11,0.52l-5.16,1.25l-3.39,1.78l-0.06,0.98l0.85,1.81l0.67,5.15l0.51,0.49l1.41,0.26l2.36,2.15l-0.2,0.54l-0.95,0.74l-1.13,0.21l-3.3,-0.33l-1.51,0.77l-0.45,1.51l0.35,1.68l-0.15,1.05l-0.98,1.37l-1.47,1.05l-0.1,1.7l0.34,0.61l1.16,0.44l3.19,-0.1l0.6,0.44l-0.02,0.44l-2.28,1.99l-0.73,1.1l-1.76,1.18l-1.05,2.05l-3.83,3.24l-2.02,3.25l-2.26,0.11l-3.0,-1.67l-0.43,-0.63l-0.47,-2.75l-0.76,-0.9l-0.81,-0.01l-0.99,0.47l-0.51,-0.14l-8.73,-6.6l-0.51,-1.18l0.6,-1.73l-0.09,-0.9l-0.97,-1.91l-1.19,-1.29l-3.91,-1.13l-2.27,1.08l-1.86,0.05l-1.84,1.04l-1.74,-0.79l-5.87,1.07l-4.04,-0.91l-0.77,0.16l-1.31,1.18l-0.79,0.15l-2.03,-1.11l-1.93,0.48l-1.66,-1.34l-1.69,-0.39l-2.67,0.99l-1.08,-0.76l-1.25,-1.57l-0.8,-0.23l-1.37,0.39l-10.67,-5.04l-1.18,-0.26l-1.21,0.29l-2.01,1.11l-1.55,-0.09l-3.94,-1.5l-2.4,-0.25l-1.47,-0.68l-1.66,-1.28l-0.74,-0.17l-1.89,0.7l-3.44,2.04l-4.01,0.26l-2.09,0.47l-5.65,-1.4l-2.68,-0.11l-1.23,-0.58l-0.69,-1.87l-0.93,-0.84l-0.28,-0.86l-0.07,-0.43l0.7,-0.94l0.92,-0.28l0.45,0.19l1.28,1.38l0.8,0.35l0.78,-0.08l0.66,-0.55l-0.41,-1.62l-1.62,-3.45l-1.74,-5.57l-0.28,-3.2l1.24,-3.11l1.48,-1.09l0.51,-1.75l-0.83,-1.22l-2.26,0.41l-0.42,-0.32l-0.42,-3.51l-0.53,-1.76l-0.18,-3.85l-0.71,-1.37l2.2,-1.38l0.74,-1.07l0.26,-1.01l-0.65,-0.89l-2.49,0.44l-0.22,-0.26l2.37,-3.65l2.12,-1.58l0.03,-1.31l-2.65,-4.66l-0.9,-3.09l-1.01,-1.33l-10.08,-8.97l-8.3,-4.93l5.17,-5.05l1.41,-4.28l1.94,-2.2l1.85,-0.21l5.97,2.46l0.78,-0.01l0.75,-0.53l0.14,-0.85l-1.42,-0.64Z", "name": "Nord-Pas-de-Calais-Picardie"}, "FR-X7": {"path": "M458.84,445.76l1.95,-0.35l3.03,1.58l1.95,0.27l1.37,-0.72l0.73,-1.76l1.22,-4.68l-1.19,-1.15l-0.26,-4.14l-1.44,-1.87l-0.36,-0.94l0.86,-2.7l1.65,-0.68l0.84,-1.03l0.29,-4.28l-0.66,-1.43l-1.92,-2.11l-0.96,-0.86l-1.78,-0.64l-0.67,-1.98l-1.72,-2.4l0.64,-0.91l3.14,-2.29l2.41,-0.16l2.48,-2.58l1.63,-3.33l1.7,-1.93l0.19,-3.74l-0.21,-0.9l-1.86,-3.26l-0.2,-1.44l0.37,-3.62l-2.17,-3.8l-1.06,-3.16l-3.18,-4.2l-1.27,-0.36l-1.13,0.66l-0.76,-1.76l-0.96,-0.91l-3.48,-0.95l-0.4,-0.39l-0.94,-2.84l-1.76,-1.56l-1.91,-2.38l2.1,-3.42l1.46,-0.64l1.48,-1.8l3.52,-1.57l7.94,-0.8l5.53,-1.6l0.14,-1.5l-1.97,-2.78l-0.03,-0.72l0.53,-1.33l-1.03,-1.64l0.3,-0.35l2.27,-0.17l0.41,-0.79l-0.09,-1.21l1.63,-0.12l4.07,-3.3l0.82,0.8l2.29,0.76l0.71,-0.21l1.28,-1.11l2.21,0.26l1.77,-2.17l3.83,-2.18l2.59,-0.73l2.86,0.18l0.27,1.52l1.25,1.52l3.22,1.84l2.72,0.19l2.74,2.56l0.75,0.33l1.03,0.0l2.4,-1.05l1.66,-0.1l1.61,0.25l2.97,1.11l1.41,-0.68l1.06,-1.27l1.82,0.28l1.29,2.19l0.04,1.49l0.5,0.54l0.6,0.12l1.71,-0.33l4.06,-2.15l0.58,-1.97l1.34,-0.87l0.39,-1.8l1.21,0.2l1.4,2.25l0.6,1.79l2.46,2.19l1.56,2.63l0.94,0.54l0.28,1.5l-0.41,3.04l0.32,0.67l4.03,2.05l1.74,0.08l2.67,2.22l3.67,0.71l2.19,1.13l0.73,2.83l-0.64,3.08l0.52,1.3l-0.02,1.46l0.82,1.68l-1.19,1.0l-5.58,2.73l-0.18,0.55l0.71,1.8l-0.19,2.42l0.26,0.72l1.01,0.63l2.01,0.62l2.09,1.49l0.85,0.18l1.12,-0.06l4.06,-1.25l3.56,0.89l3.56,-0.61l4.78,1.24l1.97,-0.03l1.79,-0.63l1.67,-1.19l1.89,-2.21l1.71,-5.14l5.06,1.43l1.25,-0.12l1.94,-0.93l1.54,1.64l0.93,0.37l1.05,-0.11l0.65,-0.45l0.57,-1.97l0.55,-0.28l1.79,0.68l0.27,1.99l1.62,1.08l0.05,2.15l1.07,2.48l1.36,0.98l3.59,0.4l0.43,-0.51l-0.22,-1.1l1.28,-4.71l3.52,-6.66l0.17,-1.98l1.46,-2.52l0.86,-4.24l1.47,-3.8l1.04,-0.4l5.0,1.43l1.47,-0.15l3.7,-1.24l1.74,-0.16l1.25,0.39l2.16,1.97l1.64,0.85l4.11,0.99l0.02,2.41l0.61,1.09l1.69,0.58l0.98,0.74l0.72,2.39l1.08,1.11l2.12,0.65l0.91,1.09l1.74,0.37l-0.08,3.17l0.9,0.94l1.79,0.47l2.93,-1.5l1.13,-1.19l1.49,-0.38l0.56,-1.17l2.38,-2.03l2.83,2.21l0.53,0.68l0.4,1.81l0.7,0.56l7.33,0.5l2.1,-0.36l4.85,-3.81l1.29,-1.9l5.29,-5.36l2.71,1.45l1.49,1.81l0.06,0.64l-2.15,4.4l-0.57,4.01l-1.43,0.34l-1.32,-0.11l-3.71,1.58l-1.69,1.08l-0.18,1.23l1.62,2.13l-1.39,2.81l0.08,0.46l0.46,0.07l1.43,-0.74l2.69,-0.56l2.68,-0.09l2.31,0.77l2.11,-0.97l3.09,-3.14l3.94,-2.28l1.58,-1.45l-0.19,-2.13l-0.68,-0.47l-1.16,0.35l-0.4,-0.18l-0.89,-2.03l4.08,-5.7l3.32,0.16l1.15,1.46l0.93,0.33l0.77,-0.37l0.82,-1.0l4.35,-1.83l1.15,-1.48l11.95,-1.05l5.16,0.78l0.08,0.91l-0.38,1.12l-1.55,1.58l-0.38,1.39l1.23,1.83l2.14,1.97l1.23,1.83l-2.07,3.51l-1.08,2.81l-0.54,2.86l0.83,1.53l4.77,0.91l0.69,0.58l-1.17,1.69l0.25,3.27l1.29,0.49l1.46,-0.85l1.18,0.45l4.32,4.17l1.84,4.74l-1.27,1.06l-1.66,3.08l-1.14,0.85l-2.54,0.9l-1.94,0.05l-0.44,1.16l-1.45,-0.68l-2.83,1.09l-0.84,1.25l-0.34,1.34l0.12,2.79l0.7,3.2l1.31,1.78l1.75,1.17l2.44,0.57l2.19,1.73l2.63,0.83l0.29,0.87l-0.98,2.48l1.03,2.1l0.33,3.09l0.49,1.22l5.55,3.27l1.58,2.67l3.72,1.73l-0.54,1.71l-1.23,1.93l-2.31,2.53l0.24,2.49l0.65,1.55l0.0,0.91l-1.6,1.21l-1.13,1.81l-0.21,0.18l-0.84,-0.84l-0.72,-0.2l-4.4,1.41l-2.78,3.01l-2.44,0.32l-0.53,0.84l0.54,1.12l-1.68,0.71l-4.37,-1.72l-2.37,-0.29l-2.05,1.2l-2.07,0.11l-2.41,1.23l-1.98,0.23l-2.21,1.2l-2.35,0.04l-0.74,0.29l-1.11,2.4l-0.81,0.88l-1.02,0.26l-3.86,-1.22l-0.85,-1.84l-1.43,-1.0l-4.05,-0.41l-1.45,-0.84l-0.51,0.04l-1.75,2.08l-1.05,4.98l0.01,1.51l0.51,1.03l1.24,0.41l3.69,-0.43l0.93,0.46l0.56,3.36l1.75,2.0l0.32,1.03l-0.27,3.17l-0.32,0.52l-3.52,-0.79l-3.8,0.98l-1.71,-0.15l-1.86,0.35l-2.28,-0.4l-3.91,2.12l-0.99,0.14l-1.72,-0.45l-1.28,0.35l-2.59,1.78l-0.33,0.77l0.25,1.63l-0.69,0.66l-2.32,0.66l-3.68,0.21l-1.02,0.38l-2.07,2.9l0.34,1.1l0.66,0.51l0.02,0.62l-1.63,1.7l-4.53,1.21l-3.09,-0.29l-1.24,0.51l-0.43,1.87l-2.53,3.81l-0.14,0.94l0.84,1.52l2.0,1.4l0.28,0.97l-0.33,0.33l-3.19,1.81l-4.16,-1.25l-1.98,-0.25l-1.44,0.11l-0.53,0.46l-0.21,0.76l0.41,1.66l1.65,1.36l0.07,0.45l-0.58,0.32l-2.77,-0.46l-0.85,0.34l-0.32,0.69l0.24,0.71l1.21,1.35l0.6,1.94l2.45,1.8l2.52,0.64l1.16,0.61l4.22,0.12l-0.41,1.18l0.12,0.71l1.56,1.75l2.09,1.43l-0.14,4.66l-0.66,1.16l0.12,1.87l-0.76,-0.17l-0.63,-1.31l-0.81,-0.55l-1.74,-0.29l-0.98,0.29l-3.26,3.17l-1.73,0.96l-2.39,-0.41l-3.82,-2.56l-1.16,-2.83l-0.73,-0.49l-2.0,-0.2l-4.34,-1.4l-2.82,0.21l-2.6,-0.66l-0.67,-0.77l-0.1,-1.5l0.78,-2.2l-0.29,-0.88l-0.62,-0.28l-2.47,1.42l-4.48,-0.52l-4.27,1.08l-3.5,1.47l-2.77,0.41l-2.98,1.5l-1.01,-0.71l-1.77,-4.15l-1.43,-1.32l-1.13,-0.54l-3.59,-0.26l-1.8,0.22l-0.35,0.4l0.02,2.88l-3.85,-1.27l-2.16,-2.01l-1.82,-0.73l-3.57,0.03l-1.2,0.93l-0.35,1.86l-1.3,0.63l-0.49,-0.12l-0.72,-0.87l0.27,-1.36l-0.32,-0.86l-0.67,-0.41l-0.94,-0.05l-2.47,0.7l-4.94,3.64l-1.17,-0.23l-4.88,-2.4l-1.24,-1.11l-4.78,0.52l-0.65,-3.42l0.81,-1.28l-0.0,-0.88l-1.75,-2.86l-1.71,-1.42l-2.22,-6.93l-0.89,-1.48l-1.35,-0.86l-0.56,-0.98l-0.68,-1.98l-0.52,-3.12l-1.27,-3.49l0.08,-2.96l-0.31,-0.43l-1.46,-0.31l-3.14,-1.55l-4.13,-3.41l-4.32,-0.85l0.51,-1.34l-0.08,-0.66l-1.42,-1.21l-1.93,-0.18l-1.33,0.48l-0.47,0.69l-0.31,1.9l-0.69,0.54l-3.23,0.32l-1.34,0.6l-0.62,-0.3l-1.06,-1.05l-3.45,-5.83l-0.79,-2.59l-0.84,-0.77l-2.38,0.25l-3.69,2.03l-1.69,-0.0l-0.85,0.32l-4.65,3.8l-0.58,0.1l-1.2,-1.57l-0.6,-0.32l-1.46,0.59l-0.57,0.8l-0.62,3.19l-1.64,1.03l-0.58,0.99l-1.42,4.71l-0.35,2.6l-1.83,2.78l-0.72,2.01l-1.6,-1.21l-1.15,-1.79l-0.53,-3.47l-0.56,-1.36l1.14,-0.77l-0.12,-1.16l-2.88,-1.38l-0.69,-1.95l-2.44,-3.26l-0.78,-0.22l-2.44,0.35l0.05,-1.49l-0.34,-1.19l-1.91,-2.42l-1.03,-0.42l-8.44,7.7l-0.74,2.6l-2.44,3.55l-0.58,2.41l-3.68,3.99l-0.93,0.45l-1.89,0.2l-3.45,-0.1l-1.45,0.62l-1.19,-1.14l-1.48,-0.11l-5.33,1.64l-0.67,1.8l-0.21,-0.03l-0.95,-1.01l-0.89,-3.39l-1.7,-1.05l1.55,-5.49l-0.1,-0.85l-1.32,-2.73l-3.07,-4.61l-0.85,-5.71l-0.6,-1.16l0.94,-0.4l2.23,-0.24l1.11,-0.74l0.08,-1.24l-1.43,-2.43l-0.11,-0.76l3.2,-2.58l2.85,-5.59l0.22,-1.14l-1.07,-2.31l0.11,-1.37l2.59,-1.98l0.51,-1.87l3.08,-1.33l2.04,-2.9l1.09,-0.69l1.42,-3.08l-0.14,-1.07l-0.95,-0.99ZM619.51,528.65l1.54,-0.89l1.27,-2.18l1.36,-1.26l0.07,-0.97l-0.77,-1.43l-2.49,-2.28l-2.0,-0.54l-1.01,0.36l-0.89,0.76l-3.05,4.55l-0.55,2.1l0.5,1.33l0.7,0.43l5.31,0.04Z", "name": "Auvergne-Rh\u00f4ne-Alpes"}, "FR-X3": {"path": "M215.0,114.74l0.19,0.68l0.67,0.4l0.84,-0.17l1.4,-0.93l2.84,0.51l1.15,-0.47l3.33,-3.1l2.74,-0.72l1.03,-0.08l7.56,1.27l2.02,5.19l-1.5,1.01l-0.48,1.56l-1.27,0.04l-1.1,0.67l-0.37,2.34l1.83,2.99l0.97,2.27l4.63,4.95l0.53,1.09l0.2,1.62l-0.78,2.24l0.19,0.81l0.44,0.3l1.7,-0.5l1.69,1.31l1.46,-0.25l0.31,-0.93l-0.57,-0.85l0.33,-0.79l0.91,-0.85l0.91,-0.36l7.94,0.35l7.3,2.35l10.46,0.54l4.16,0.79l2.31,-1.02l4.08,1.27l4.12,0.0l2.91,1.4l3.03,0.6l5.69,2.93l0.43,-0.04l1.48,-1.14l9.72,-1.95l2.93,-1.18l1.7,-1.25l1.45,-0.37l2.06,-2.35l3.94,-2.42l15.26,-2.94l2.9,-1.27l2.26,-2.14l0.01,-0.51l-0.5,-0.1l-4.29,2.28l-4.93,0.6l-4.99,-0.57l-4.35,-1.26l-3.7,-0.45l-1.09,-0.56l-0.79,-1.28l-0.73,-0.42l0.09,-1.68l3.15,-4.92l2.42,-6.93l3.76,-2.82l9.31,-3.67l0.73,-0.8l7.56,-3.82l2.18,-0.58l2.37,-1.37l4.68,-1.45l5.32,0.04l25.22,-6.87l1.56,-1.02l1.59,-0.51l2.41,-2.26l6.63,-4.5l8.53,5.05l10.02,8.92l0.82,1.05l0.92,3.13l2.44,4.07l0.21,1.13l-2.03,1.49l-2.12,2.89l-0.43,1.1l0.07,0.84l0.35,0.34l2.53,-0.43l0.4,0.34l-0.82,1.37l-1.94,1.09l-0.47,0.89l0.74,1.37l0.19,3.89l0.54,1.79l0.44,3.63l0.8,0.82l2.01,-0.46l0.65,0.53l-0.4,1.31l-1.05,0.52l-0.44,0.58l-1.34,3.49l0.3,3.4l1.76,5.64l1.98,4.52l-0.91,-0.06l-0.81,-0.99l-1.21,-0.74l-0.85,0.03l-0.88,0.48l-0.92,1.37l0.38,1.6l-1.77,3.08l-2.9,8.4l-2.17,1.01l-7.75,1.57l-0.75,0.55l-0.17,1.05l0.69,1.52l-0.24,2.26l0.57,0.74l1.67,0.42l0.21,2.28l-2.16,1.15l-0.44,0.6l-0.21,0.94l0.52,1.61l-0.14,1.15l-0.79,0.76l-2.47,1.15l-1.51,1.17l-1.09,1.61l-0.67,1.82l-0.53,0.5l-4.94,2.31l-1.82,-0.62l-3.38,0.04l-2.24,-1.49l-1.25,-0.15l-0.48,0.48l-0.06,1.17l-0.31,0.42l-3.47,0.34l-2.42,2.37l-1.92,0.04l-5.91,1.45l-1.53,0.88l-2.02,1.86l0.26,3.84l0.66,1.39l1.17,1.83l2.61,1.67l3.16,2.99l0.37,0.83l-0.39,1.76l0.17,1.43l1.87,2.7l-1.12,1.47l-0.63,1.57l-1.95,1.77l-5.36,2.18l-2.34,0.41l-0.55,0.48l-0.55,1.79l1.37,1.79l-0.05,2.88l1.83,3.34l-0.85,1.08l-2.22,0.71l-2.49,-1.01l-2.47,-2.98l-1.91,-1.6l-3.5,0.2l-5.14,-1.24l-0.71,-0.36l-0.06,-1.74l-0.56,-0.94l-3.09,-0.02l-2.45,-1.44l-1.01,-1.58l-0.49,-1.75l0.16,-5.51l-0.43,-0.91l-1.29,-0.88l-2.69,-1.04l-1.85,-0.2l-5.49,1.1l-3.21,1.67l-1.67,2.12l-2.54,0.86l-0.71,1.68l-2.54,-0.46l-3.9,0.33l-0.22,-3.58l-0.39,-0.79l-0.77,-0.81l-1.89,-0.44l-3.02,-2.76l-0.65,-1.6l0.49,-1.46l-0.32,-0.81l-0.74,-0.61l-3.82,-1.27l-0.99,0.47l-0.03,1.62l-0.34,0.71l-1.15,0.57l-1.4,-0.02l-1.63,0.51l-1.2,1.45l-0.68,0.11l-4.11,-0.95l-3.98,-0.16l-1.2,0.44l-2.14,1.99l-1.05,0.56l-5.18,1.05l-1.18,-1.31l-0.96,-0.14l-3.52,0.92l-0.5,1.08l-0.81,0.48l-1.68,-1.15l-1.86,0.23l-1.74,-2.89l-1.1,-0.85l-2.45,0.29l-2.37,-0.8l-3.57,1.1l-2.0,0.01l-3.01,-0.43l-2.56,-1.35l-7.85,-1.68l-1.41,0.23l-2.22,2.41l-1.99,0.71l-2.78,1.91l-1.65,0.53l-2.09,-0.17l-2.56,-1.81l-2.2,-3.13l-0.99,-2.96l-2.54,-5.28l4.98,0.51l6.48,-1.24l2.14,0.69l0.44,-0.14l0.0,-0.47l-1.13,-1.5l-1.5,-0.64l-2.34,-0.18l-0.46,0.44l-0.7,-1.34l-2.87,-0.97l-0.88,-2.35l-2.17,-1.65l-0.47,-1.69l-0.34,-4.2l-0.74,-1.24l-1.4,-0.44l1.45,-1.15l0.44,-1.03l0.49,-3.71l0.92,-0.11l0.34,-0.9l0.0,-1.07l-1.2,-0.91l0.97,-5.38l0.51,-0.24l1.33,0.54l0.55,-0.37l-0.25,-0.86l-1.33,-0.51l-1.38,0.0l-1.32,0.6l-0.59,1.22l-0.56,-1.29l0.43,-3.35l-0.31,-0.52l-0.67,-0.12l-0.18,-0.32l0.72,-2.62l1.48,-1.06l0.02,-0.68l-0.75,-0.5l-0.56,0.09l-0.66,-2.09l-0.35,-2.8l0.3,-0.47l0.85,-0.05l2.15,0.54l0.5,-0.39l0.0,-0.49l-0.3,-0.39l-2.96,-0.99l-1.32,-0.03l-0.67,1.15l-0.44,-0.44l-0.98,-2.84l-0.71,-0.78l0.42,-0.24l0.06,-0.7l-2.38,-1.94l-0.24,-0.63l0.68,0.0l0.4,-0.4l-0.83,-2.29l-0.82,-0.22l-0.71,1.2l-3.02,-2.14l0.32,-0.66l-0.42,-0.61l-2.16,0.52l-0.37,-0.34l-0.17,-5.35l-1.15,-1.92l-0.39,-1.49l-2.39,-2.79l0.28,-0.81l1.64,-1.27l0.51,-0.95l0.27,-4.14l-1.3,-2.8l-0.63,-0.67l-4.47,-1.27l0.4,-1.53l-0.1,-1.22l0.13,-0.3l1.34,-0.15l2.46,1.07l1.75,-0.2l0.58,0.33l0.27,1.01l0.5,0.53l6.68,0.92l5.27,1.29Z", "name": "Normandy"}, "FR-R": {"path": "M159.66,300.12l3.14,1.13l1.62,-0.32l1.05,-1.07l0.07,-0.47l-0.56,-1.04l-2.21,-2.2l-0.46,-0.11l-0.82,0.44l-0.77,-1.59l-2.05,-1.2l4.12,-2.13l1.57,0.33l-0.09,0.55l0.45,0.48l0.58,0.01l2.59,-1.53l0.4,-0.74l-0.31,-0.53l-2.95,-0.38l0.35,-0.69l-0.16,-0.53l-0.77,-0.68l0.87,-0.21l2.37,0.81l3.21,-0.37l0.81,-0.45l0.88,-1.05l1.08,-1.85l0.93,-0.29l1.83,0.9l2.88,-0.91l0.01,0.96l0.41,0.72l0.57,0.29l0.85,-0.14l0.92,-1.04l0.66,-1.38l2.05,-1.24l0.71,-1.09l0.79,-3.53l0.74,-1.69l0.12,-1.43l-0.24,-0.62l0.35,-1.02l2.91,-1.59l2.21,-0.38l2.07,0.05l5.67,-2.08l1.82,0.61l1.95,0.17l7.4,-2.04l2.87,-1.7l1.19,-1.55l1.73,-1.21l6.3,-2.55l1.6,-1.15l1.76,-0.13l1.82,0.29l1.17,1.44l1.85,0.86l6.14,0.89l0.45,-0.31l0.47,-2.16l1.14,-1.77l2.89,-9.08l0.53,-0.9l1.85,-1.62l4.09,-0.58l1.25,-0.49l0.67,-0.66l-0.07,-4.84l-1.76,-2.27l-0.71,-4.7l0.64,-0.86l0.08,-0.99l-0.82,-4.82l-1.09,-2.36l1.95,-4.01l-0.03,-2.5l-0.74,-5.78l0.2,-5.45l4.76,0.37l3.56,-1.09l2.14,0.78l2.29,-0.33l0.82,0.61l1.89,3.04l0.78,0.28l1.22,-0.43l1.2,1.0l0.96,0.2l0.9,-0.36l0.74,-1.34l3.16,-0.79l0.67,0.27l0.43,0.85l0.82,0.32l5.49,-1.07l1.32,-0.69l2.1,-1.96l0.92,-0.33l3.75,0.17l4.09,0.95l1.06,-0.14l1.34,-1.53l1.33,-0.41l1.5,0.0l1.45,-0.72l0.62,-1.2l-0.17,-1.13l0.3,-0.28l3.98,1.51l0.19,0.36l-0.49,1.44l0.18,1.02l0.67,1.13l3.2,2.92l2.03,0.53l0.36,0.46l0.28,0.51l0.24,3.91l0.44,0.37l3.61,-0.38l3.37,0.46l0.6,-0.45l0.44,-1.41l2.46,-0.81l2.23,-2.53l2.43,-1.15l5.27,-1.07l1.66,0.18l3.55,1.66l0.35,1.07l-0.32,2.68l0.3,3.32l0.87,2.03l1.63,1.4l1.84,0.94l2.82,-0.07l0.41,2.48l1.13,0.63l5.3,1.27l2.3,0.07l0.97,-0.32l1.62,1.39l1.93,2.55l2.19,1.39l1.53,0.31l1.53,-0.36l2.97,1.92l3.09,0.38l0.63,0.45l-0.41,0.52l-4.24,2.22l-0.26,1.28l1.21,1.18l-2.67,0.5l-0.56,0.47l-0.11,1.1l0.84,1.7l0.5,0.5l1.48,0.31l-0.65,3.22l0.42,1.92l-0.15,0.49l-3.53,3.05l-0.56,1.67l-0.05,3.43l-1.51,4.18l-1.33,1.2l-1.74,0.98l-3.44,1.47l-1.46,1.3l-0.79,1.81l0.64,1.76l-0.14,0.45l-2.17,0.43l-3.23,1.43l-2.52,0.52l-1.04,0.58l-0.9,0.99l-1.95,-0.85l-1.07,0.0l-0.78,0.53l-0.36,0.7l0.4,2.57l-8.48,-1.68l-0.46,0.23l-1.7,4.29l0.46,3.58l-1.91,3.72l-1.03,3.13l0.2,2.82l-4.39,6.08l-1.47,5.38l-0.85,5.56l-2.84,-0.47l-1.46,0.44l-2.01,2.22l-0.96,2.4l-2.38,0.81l-1.53,2.05l-1.11,-0.31l-0.83,-2.02l-0.97,-0.76l-0.79,-0.2l-1.88,0.35l-3.55,-0.08l-6.53,0.7l-5.83,1.67l-2.05,-0.73l-2.08,0.46l-1.21,0.8l-0.31,0.62l0.12,0.77l0.69,0.97l-0.13,0.38l-4.92,2.46l-3.85,0.33l-5.2,-0.68l-4.23,0.56l-4.16,-1.9l-0.94,-0.18l-0.84,0.51l-0.29,1.01l0.17,0.47l2.2,1.37l2.18,3.03l1.67,0.89l0.69,0.84l0.32,2.18l1.04,2.25l0.66,0.7l3.5,1.91l1.73,1.57l0.1,0.48l-0.78,1.59l0.1,0.98l3.83,6.52l0.57,3.11l1.44,2.21l0.79,4.91l-1.22,1.54l-0.25,0.91l0.97,4.27l-0.6,2.86l0.25,1.23l0.83,0.72l1.04,-0.23l1.97,1.38l0.71,1.02l-0.74,0.77l-1.26,-0.1l-1.22,0.34l-2.25,2.0l-2.76,0.16l-3.62,1.68l-4.06,-2.24l-1.7,-0.27l-6.67,1.09l-0.44,-0.27l0.9,-1.15l0.15,-0.7l-0.48,-0.9l-0.77,-0.24l-6.96,1.54l-1.16,0.7l-1.12,1.42l-0.75,-0.72l-2.95,-0.11l-2.27,1.19l-0.16,2.27l-1.02,-0.24l-2.4,-2.73l-1.56,-0.33l-4.08,-2.32l-3.43,0.87l-1.24,-0.06l-0.97,-3.42l-1.1,-1.51l-1.55,-0.91l-6.9,-0.76l0.18,-1.01l-1.0,-0.83l-3.36,-0.58l-1.97,-1.51l-2.47,-0.81l-1.08,-2.24l-0.58,-0.83l-0.45,-0.15l-0.28,0.39l0.27,2.62l-0.46,-0.56l-1.32,-5.47l0.25,-1.25l-0.25,-0.45l-0.84,-0.31l-1.14,-2.75l-2.53,-2.31l-0.74,-2.09l-0.93,-0.62l-1.98,-0.4l-2.24,-3.59l-3.47,-3.13l-4.07,-2.07l-0.39,-1.05l-0.3,-2.69l0.47,-2.19l1.48,-0.93l0.17,-0.46l-0.28,-0.85l3.12,-1.98l2.48,-5.26l1.17,-1.01l-0.16,-1.45l-0.69,-1.37l-1.7,-1.83l-3.77,-1.84l-7.12,-1.1l-1.45,-0.69l1.47,-1.03l1.91,-0.24l0.8,-0.55l0.42,-2.94l-0.66,-1.35l-0.09,-1.84l1.02,-2.31l1.32,-0.5l5.58,-0.5l1.1,-0.5l1.01,0.86l3.14,0.71l1.04,-0.02l0.24,-0.51l0.65,0.2l-0.47,0.4l0.19,0.91l2.51,1.59l2.62,0.48l1.97,1.62l1.54,0.57l3.31,0.09l0.4,-0.29l-0.19,-0.46l-1.37,-0.76l-2.42,-0.42l-2.85,-2.6l-4.32,-2.68l-2.78,-0.52l-1.38,-0.93l-2.33,-0.59l-8.74,0.54l-2.06,1.13l-1.5,1.94l-1.74,0.44l-1.54,1.27l-1.02,0.36l-2.05,-0.36l-2.32,-2.13l-1.22,-0.61l-2.17,0.0l-0.78,0.6l-0.33,0.97l-1.39,-0.03l-4.87,-2.21ZM161.53,297.57l0.02,0.14l-0.01,0.02l-0.01,-0.17ZM179.99,325.41l2.68,1.47l0.24,2.88l-0.47,-0.24l-2.28,-3.55l-1.56,-0.93l-1.75,0.59l-0.73,-0.9l-0.93,-2.89l-0.56,-0.68l2.62,-0.12l2.02,0.71l-0.04,2.78l0.75,0.89ZM174.33,345.92l-4.93,-0.12l-0.49,-0.98l0.24,-0.36l1.99,0.02l3.18,1.44Z", "name": "Pays de la Loire"}, "FR-GP": {"path": "M44.87,452.95l2.26,-1.9l1.31,-0.53l0.63,0.19l-2.39,1.57l-1.81,0.66ZM16.07,454.56l0.99,-3.24l0.45,-0.54l1.25,-0.4l0.33,-0.98l-0.15,-1.3l-1.63,-0.93l-0.61,-3.02l1.65,-2.23l2.47,-1.44l2.87,2.33l0.67,1.2l0.24,4.01l1.84,2.68l1.77,1.09l0.71,-0.33l2.34,0.36l6.21,4.32l1.16,0.34l-0.55,0.18l-3.31,-0.89l-10.9,2.46l-3.09,1.07l-2.38,-0.65l-1.77,-1.2l-0.78,-1.34l0.24,-1.57ZM29.3,476.81l1.29,-2.59l1.05,-1.18l1.16,-0.64l1.27,0.28l1.08,0.91l0.68,1.72l0.94,0.93l0.13,1.34l-1.12,1.36l-1.47,0.73l-1.99,0.48l-1.58,-0.25l-1.44,-3.1ZM6.63,475.24l-0.25,-0.65l0.35,-0.72l-0.44,-0.85l-1.95,-1.6l-0.87,-1.97l-0.57,-0.45l-0.69,-2.06l-0.05,-4.94l-0.89,-2.29l0.25,-1.07l-1.09,-2.09l0.05,-3.66l1.5,-2.21l0.77,-0.65l0.89,-0.23l1.5,1.13l3.84,1.09l2.02,1.06l0.67,0.81l-0.4,0.18l0.01,0.74l0.87,0.07l0.72,0.74l0.65,-0.12l0.7,-0.95l0.47,-0.08l0.26,0.32l-0.35,1.27l0.32,1.1l-1.34,0.42l-0.48,0.89l0.13,2.94l0.8,2.29l0.41,3.37l-0.49,3.19l-1.83,2.19l-2.76,1.62l-2.74,1.16ZM13.68,480.6l0.09,-0.17l0.15,-0.01l-0.11,0.1l-0.13,0.09ZM10.63,481.22l0.17,0.27l-0.27,0.31l-0.19,-0.11l0.3,-0.46Z", "name": "Guadeloupe"}, "FR-U": {"path": "M574.87,589.37l0.92,-0.18l1.37,-1.04l2.17,-0.54l3.45,-2.45l1.63,-0.49l0.58,-1.36l1.97,-0.33l0.5,-0.38l0.72,-1.53l-0.09,-0.84l-1.94,-0.6l1.3,-2.75l1.5,-1.9l1.28,-0.92l2.03,-0.52l3.72,1.32l1.03,-0.3l0.65,-1.54l-0.04,-1.78l1.98,-4.92l-0.49,-4.74l5.08,-3.33l2.76,-1.14l1.8,-1.27l1.33,-1.63l0.03,-2.18l1.18,0.07l0.47,-0.43l0.15,-1.04l-0.37,-0.8l-4.15,-4.77l-1.27,-0.56l-1.83,0.31l-0.37,-2.47l0.33,-2.07l-0.19,-2.88l-0.5,-0.93l-1.47,-1.11l-0.09,-1.56l-1.29,-1.64l-0.54,-1.66l-0.02,-2.97l3.17,-0.14l2.43,0.62l1.57,1.66l1.7,4.01l1.31,0.65l1.08,-0.2l2.24,-1.34l2.77,-0.41l3.47,-1.46l4.07,-1.05l3.48,0.59l1.1,-0.08l2.31,-1.4l0.14,0.38l-0.71,1.56l-0.03,1.7l0.31,1.17l0.77,0.67l2.96,0.79l2.82,-0.21l4.22,1.37l1.95,0.19l0.66,0.8l0.94,2.37l4.51,2.92l2.5,0.22l1.96,-1.1l2.53,-2.56l1.32,-0.74l1.8,0.54l0.64,1.31l0.52,0.4l0.87,0.13l0.61,-0.33l0.31,-0.68l-0.23,-1.68l0.64,-1.04l0.14,-4.96l-0.53,-0.87l-1.46,-0.73l-1.74,-1.84l0.47,-1.33l-0.29,-0.71l-1.33,-0.38l-2.81,0.16l-3.98,-1.31l-2.2,-1.6l-0.54,-1.85l-1.31,-1.69l0.85,-0.19l2.33,0.46l0.67,-0.16l0.58,-0.67l-0.17,-1.21l-1.58,-1.26l-0.32,-1.32l0.2,-0.43l2.95,0.15l4.34,1.28l0.95,-0.24l2.8,-1.78l0.61,-0.81l-0.12,-1.02l-0.85,-1.05l-1.56,-0.99l-0.6,-0.98l0.34,-1.04l1.84,-2.49l0.74,-2.54l1.28,-0.26l2.49,0.32l4.9,-1.34l1.9,-1.99l0.0,-1.34l-0.94,-1.02l1.78,-2.52l4.33,-0.43l2.59,-0.77l1.06,-1.17l-0.23,-1.81l1.51,-1.3l1.93,-0.81l1.61,0.45l1.3,-0.18l3.71,-2.08l2.21,0.4l1.91,-0.35l1.7,0.15l3.74,-0.98l2.72,0.76l1.33,-0.13l0.6,-0.99l0.28,-3.45l-0.47,-1.39l-1.68,-1.88l-0.61,-3.45l-1.52,-0.82l-3.62,0.45l-0.92,-0.3l-0.21,-0.57l1.03,-6.05l1.31,-1.51l1.5,0.78l3.9,0.36l1.08,0.74l1.0,1.99l4.33,1.4l1.59,-0.46l0.96,-1.07l0.85,-2.13l2.87,-0.24l2.8,-1.28l-0.62,0.73l-0.02,0.5l2.03,2.18l0.17,1.69l0.79,1.24l0.95,0.66l2.05,0.17l1.38,0.88l0.35,1.96l-0.12,4.19l1.23,1.91l2.07,1.56l4.22,2.16l1.41,0.3l3.93,-0.45l2.94,1.06l1.2,1.26l-0.4,2.57l1.25,4.13l2.03,3.55l-3.87,-0.56l-1.7,0.81l-1.13,1.22l-0.53,1.69l0.58,1.56l-0.69,0.5l-2.06,3.14l-3.05,2.06l-0.83,1.38l0.25,2.53l1.44,2.18l2.96,2.54l-1.46,0.71l-0.59,0.79l-0.73,3.01l0.24,1.21l1.67,1.86l1.59,2.88l2.27,1.81l0.83,2.02l0.66,0.7l1.16,0.41l2.19,-0.38l0.67,0.17l6.04,2.48l6.53,3.55l3.45,0.91l0.74,1.13l1.35,0.71l2.64,0.05l10.62,-2.7l1.73,-0.12l2.57,-1.44l1.28,0.21l-0.66,2.31l0.83,1.51l1.3,1.15l0.87,1.66l-0.1,1.05l-2.22,2.08l-1.33,3.37l-4.45,3.63l-1.3,1.81l-2.63,2.56l-1.02,1.63l0.26,2.23l1.1,3.29l-1.5,0.69l0.05,1.26l-0.73,0.15l-1.26,1.13l-0.56,-0.67l-1.18,-0.6l-1.65,0.49l-1.0,1.05l-0.43,1.64l-1.32,1.04l-0.71,1.53l-2.86,-0.54l-1.41,0.13l-2.01,1.42l0.04,0.96l-1.09,1.0l-0.54,-0.78l-1.17,-0.24l-2.01,0.57l-0.96,1.09l-0.66,2.71l0.71,3.75l-0.22,0.12l-0.57,-0.92l-0.68,-0.42l-1.15,-0.07l-1.27,0.64l-1.75,1.52l-0.56,-0.6l-2.19,-0.07l-1.21,0.15l-0.99,0.57l-1.1,1.01l-0.38,1.3l0.79,0.89l-1.67,1.9l-0.35,1.79l-1.2,0.73l-0.35,0.74l-0.79,0.06l-0.5,-0.8l-0.56,-0.07l-0.45,0.47l0.04,1.32l-0.33,0.1l-1.7,-0.24l-2.06,0.51l-0.64,-0.66l-0.97,-0.32l-1.96,1.17l-0.06,2.1l-0.82,1.01l-0.09,1.11l-2.6,0.48l-0.8,1.76l-2.13,1.86l-1.64,0.87l-0.58,1.35l0.27,0.52l1.27,0.34l3.83,-0.86l1.01,0.19l-0.51,1.21l-1.15,0.87l-0.18,1.36l0.76,1.4l-2.03,1.21l-1.78,0.59l-1.1,-1.03l-3.19,0.39l-1.04,1.7l-1.07,0.59l-1.62,-0.35l-3.45,0.27l-1.36,0.42l-1.49,0.84l-0.91,1.44l0.37,1.87l-1.34,0.0l-1.03,-0.98l-2.86,-1.09l-1.75,-0.16l-3.76,0.92l-1.97,1.27l-0.72,1.7l-0.05,1.91l0.91,0.63l-3.08,0.19l0.74,-0.26l0.95,-0.93l-0.33,-1.65l-1.19,-0.96l-5.05,0.37l-0.84,-1.54l-3.51,-0.25l-1.12,-0.63l0.3,-1.17l-0.36,-0.56l-2.16,0.24l-1.78,0.81l-0.23,0.38l1.15,0.68l1.01,1.7l1.93,0.76l-3.17,0.02l-0.89,0.28l-1.2,1.7l-1.96,-0.54l-1.85,-1.41l1.88,-1.3l0.07,-0.54l-0.41,-0.57l-1.72,-0.7l-0.74,-1.26l-2.11,-0.09l-2.49,-1.0l-0.47,-1.46l-1.08,-1.07l-2.53,-0.57l-1.03,0.91l-0.53,0.98l-2.05,-0.53l-1.98,-2.66l-0.96,-0.55l-1.48,0.47l-6.6,-0.49l-1.53,0.31l-1.02,-0.43l0.34,-1.68l0.94,-1.98l-0.08,-0.43l-0.62,-0.64l-1.13,-3.95l-2.92,-1.81l-3.73,1.99l-4.48,-0.09l-2.35,0.26l-3.62,-0.16l-1.71,-0.5l-1.11,-1.51l-0.44,-1.53l1.11,-1.82l1.71,-0.86l5.36,0.0l1.8,-0.48l2.62,-2.32l0.89,-2.0l-0.21,-1.77l-0.6,-0.3l-3.34,1.54l-1.34,-0.21l-1.17,-1.2l-0.81,-2.2l-1.53,-0.53l-1.81,-0.01l-1.47,-1.47l-0.5,0.08l-0.49,0.59l-0.81,2.82l0.42,1.59l2.15,1.63l0.63,1.61l-0.57,1.4l-1.25,0.8l-1.63,0.16l-4.46,-1.86l-2.21,1.1l-1.58,0.35l-0.71,0.61l-0.46,1.44l0.98,2.54l0.42,0.33l0.81,-0.05l-1.29,0.81l-1.31,-2.62l-2.66,-1.4l-1.98,-1.65l-0.86,-1.8l-0.02,-5.7l-1.08,-2.53l-0.85,-1.1l-1.19,-0.67l-0.59,0.35l0.0,0.46l2.09,3.43l0.0,5.28l0.86,2.64l4.89,4.15l-0.11,1.02l-9.05,-0.1l-4.41,-0.9l-1.34,-0.7l-0.03,-0.85l1.11,-1.09l0.22,-1.41l-0.65,-1.13l-1.58,-1.03l-2.76,-0.96l-6.31,0.6l-10.72,-0.78l1.08,-2.45ZM708.84,625.18l0.07,-0.56l1.07,-0.35l0.67,-0.95l0.94,-0.47l-1.31,1.7l-1.44,0.64ZM692.6,626.12l1.76,-0.0l0.97,-0.54l0.94,-0.02l0.43,-0.62l0.24,0.26l0.04,0.66l-2.62,1.0l-1.76,-0.73ZM619.44,527.85l-4.96,0.01l-0.37,-0.2l-0.33,-0.9l0.44,-1.6l2.99,-4.46l1.31,-0.8l1.47,0.37l2.37,2.16l0.58,1.0l-0.0,0.54l-1.24,1.1l-1.26,2.17l-1.01,0.62Z", "name": "Provence-Alpes-C\u00f4te-d'Azur"}, "FR-J": {"path": "M472.43,160.67l2.91,-0.96l1.28,0.25l1.79,1.42l0.99,0.02l1.16,-0.44l1.27,0.83l1.39,0.28l2.4,-1.49l4.01,0.91l5.72,-1.07l1.57,0.83l2.35,-1.11l1.82,-0.03l2.03,-1.04l3.48,0.96l0.98,1.05l0.87,1.67l-0.52,2.79l0.73,1.41l8.88,6.73l0.87,0.26l1.23,-0.5l0.48,0.14l0.61,2.97l0.7,1.03l3.28,1.81l2.3,-0.04l-0.11,1.1l-0.51,0.67l-2.55,0.08l-0.94,0.42l-0.16,0.75l1.09,1.07l-1.54,1.52l-0.27,1.55l0.54,0.66l1.24,-0.02l1.67,1.83l0.7,2.85l-0.5,1.9l0.28,1.65l0.9,0.56l2.22,-0.3l1.49,1.83l-2.45,1.85l-1.06,1.42l-0.92,2.34l-0.48,0.4l-2.35,0.42l-0.63,0.51l-0.08,0.73l0.94,1.41l-1.79,1.84l-0.05,0.79l0.65,1.23l-0.56,2.16l0.16,0.69l-2.61,2.88l-2.24,-0.49l-6.28,0.91l-4.68,-0.48l-2.32,0.9l-3.26,0.0l-0.8,0.78l-1.14,3.17l0.16,2.32l0.83,1.42l-1.58,2.76l-3.77,2.32l-0.95,3.37l-5.9,1.83l-1.36,-0.07l0.46,-1.24l-0.4,-0.63l-0.91,-0.28l-2.7,0.45l-1.78,1.66l-1.87,0.81l-8.32,-0.58l-3.25,0.65l-1.6,-0.18l-0.78,-0.59l0.23,-0.94l0.72,-0.24l1.65,0.3l0.91,-0.65l0.07,-0.64l-0.51,-1.19l0.65,-0.98l0.11,-1.36l-1.39,-1.54l-3.36,-1.92l-1.3,-3.89l-1.33,-1.28l-2.27,0.3l-2.83,-1.36l-0.86,0.16l-1.36,1.23l-1.4,0.35l-0.76,-0.38l-0.47,-1.03l-0.68,-0.61l-0.85,-0.52l-0.84,-0.03l-0.66,0.4l-1.38,1.92l-1.99,0.8l-8.7,1.71l-0.72,-0.42l-0.0,-0.42l1.65,-1.87l0.02,-0.74l-1.91,-1.77l-0.62,-2.84l-0.52,-0.9l-1.62,-1.5l-0.35,-2.59l-0.81,-0.45l-2.11,0.38l-4.37,-1.8l-0.92,-0.66l-1.17,-1.71l0.01,-2.65l-0.44,-1.51l-0.7,-0.87l-2.25,-1.46l-0.79,-2.45l-3.87,-2.43l-1.32,-1.5l-0.63,-1.5l-1.41,-0.91l0.0,-0.93l1.6,-2.06l0.18,-1.09l-0.28,-0.53l-1.69,-0.85l-0.41,-0.65l-0.06,-1.41l0.53,-2.41l-0.31,-1.9l-1.49,-1.94l-3.28,-5.55l-0.4,-2.82l-2.11,-0.85l0.25,-2.13l-0.72,-1.71l0.41,-0.57l7.7,-1.56l2.46,-1.13l3.15,-8.76l1.58,-2.72l0.43,0.35l0.8,2.03l0.97,0.67l3.39,0.3l5.65,1.41l6.54,-0.78l5.01,-2.69l3.66,2.09l2.47,0.26l3.97,1.5l1.83,0.1l3.18,-1.39l11.5,5.26l0.91,0.03l0.87,-0.37l1.31,1.53l1.38,0.99Z", "name": "\u00cele-de-France"}, "FR-X2": {"path": "M204.81,598.27l0.63,0.4l0.52,-0.08l1.38,-0.84l5.64,-0.92l1.36,-1.72l2.57,-1.46l2.17,-3.85l5.18,-6.42l0.5,-2.5l1.48,-4.27l2.51,-12.23l1.46,-4.3l2.15,-9.72l3.95,-21.25l1.68,-10.56l0.42,-4.7l-0.62,-3.76l1.59,-2.05l1.5,-4.83l1.04,-1.14l1.32,-0.04l3.84,0.81l2.32,-0.34l1.43,-1.11l0.02,-1.15l-1.01,-1.12l0.28,-0.48l-0.7,-1.19l-4.63,-3.83l-1.79,-0.89l-0.92,0.36l-3.56,5.22l-0.53,2.34l3.34,-33.36l2.55,-12.04l1.09,-15.98l3.2,-5.75l1.08,-0.08l-0.29,2.7l1.44,2.01l4.22,2.89l3.51,1.53l7.32,7.13l1.65,2.15l1.65,6.53l1.42,7.99l2.13,4.49l2.13,2.43l2.35,2.0l2.44,1.49l0.52,1.41l-0.17,1.23l0.35,3.2l0.54,1.31l0.97,0.73l0.45,-0.0l0.16,-0.42l-0.81,-4.06l0.53,-2.18l-0.8,-1.78l-1.38,-1.23l1.66,0.3l2.68,1.57l0.51,-0.03l0.06,-0.51l-1.72,-2.53l-5.08,-1.82l-2.05,-1.4l-1.05,-1.86l-0.76,-2.33l-2.32,-14.51l-0.81,-2.98l-2.08,-4.88l-2.62,-4.07l-2.95,-2.95l-8.61,-5.47l-0.48,-1.77l-2.47,-1.03l-3.22,-2.81l-4.04,-1.44l-2.76,-2.39l-2.34,0.33l-0.67,-0.24l0.99,-5.73l3.71,-0.99l0.98,0.04l3.79,3.91l1.46,1.04l4.4,1.81l0.48,-0.15l-0.05,-0.5l-1.38,-1.36l-5.52,-3.9l-1.51,-1.58l-1.36,-4.22l2.03,-1.93l0.85,-0.46l1.1,-0.0l0.61,-0.43l0.19,-1.83l-0.98,-1.77l0.89,-0.77l-0.02,-0.68l-0.92,-0.54l-1.09,-2.34l1.55,0.32l1.08,-0.72l0.78,-1.42l-0.03,-0.9l-1.1,-1.07l-1.08,-0.37l-0.71,-3.23l-1.9,-1.16l0.55,-0.47l-0.04,-0.64l-1.96,-1.09l0.07,-0.62l-0.38,-0.5l-2.85,-0.2l-0.39,-0.36l0.27,-0.97l1.24,-1.31l-0.29,-1.3l0.52,-0.79l4.3,-2.4l0.5,-0.98l-0.01,-0.83l-0.87,-2.37l1.16,-1.51l0.86,-0.51l6.69,-1.49l0.44,0.35l-0.06,0.32l-1.0,1.63l0.99,0.9l1.99,-0.09l4.86,-0.96l1.46,0.21l4.42,2.32l3.79,-1.72l2.86,-0.19l2.34,-2.04l2.77,-0.34l0.86,-1.23l-0.25,-0.98l-0.76,-0.79l-2.09,-1.47l-1.48,-0.05l-0.2,-0.92l0.59,-2.98l-0.97,-4.09l1.47,-2.55l-0.66,-4.53l-1.62,-2.86l-0.6,-3.2l-3.78,-6.41l-0.05,-0.67l0.8,-2.07l-0.78,-1.19l-1.4,-1.1l-3.53,-1.93l-0.48,-0.54l-0.88,-1.94l-0.43,-2.43l-0.91,-1.07l-1.53,-0.78l-2.22,-3.06l-2.05,-1.29l0.13,-0.56l1.47,0.22l2.4,1.36l1.33,0.38l4.31,-0.56l5.13,0.68l3.99,-0.34l1.28,-0.41l1.37,-1.03l2.73,-1.24l0.34,-1.13l-0.81,-1.37l1.0,-0.85l1.73,-0.42l2.13,0.74l5.97,-1.69l6.45,-0.7l5.88,-0.12l0.56,0.42l1.0,2.22l1.71,0.55l0.45,-0.18l1.48,-2.08l2.51,-0.92l1.0,-2.45l1.89,-2.08l0.9,-0.26l2.97,0.49l1.47,2.34l0.64,0.37l0.98,-0.07l1.14,-0.55l0.13,1.56l0.57,0.55l2.68,-0.26l0.19,0.85l-0.35,1.75l0.25,0.7l0.48,0.33l1.15,0.07l2.51,-0.61l1.03,1.31l1.83,0.26l-0.34,5.65l0.36,1.29l1.37,1.15l1.25,0.23l2.61,-0.25l2.91,0.46l1.93,-1.14l1.04,-0.24l5.49,-0.33l0.79,-0.44l0.19,-0.71l-0.77,-1.6l-0.1,-0.95l5.63,2.78l1.17,1.63l1.3,3.39l7.23,9.31l2.64,1.85l1.67,1.93l0.84,2.19l-0.61,2.63l0.01,1.65l0.57,2.3l0.55,0.83l2.33,2.03l3.29,1.27l0.85,2.04l0.88,0.33l3.79,0.0l1.03,0.35l0.88,0.74l0.67,1.18l-0.49,1.9l0.16,1.06l0.74,0.86l1.78,1.01l0.54,0.76l-1.01,2.95l0.15,0.46l1.04,0.72l2.54,0.83l3.65,-0.3l1.07,-0.33l1.0,-1.33l1.05,-0.24l1.47,1.8l3.13,1.64l2.0,-1.13l3.93,-3.54l0.68,-0.15l2.17,0.53l2.02,-0.06l0.36,1.35l0.7,0.52l1.01,0.19l1.02,-0.2l1.87,-1.33l3.01,0.41l0.9,-0.2l1.03,-0.98l0.25,-2.59l0.71,-0.54l0.76,0.32l1.92,1.93l0.96,0.16l2.07,-1.12l1.08,-0.24l5.41,0.14l2.45,0.84l3.5,0.01l2.22,0.72l3.19,-0.59l5.83,0.29l2.01,2.5l1.67,1.44l0.91,2.78l0.59,0.64l0.74,0.43l2.88,0.63l0.67,0.63l1.08,2.07l0.77,0.02l0.86,-0.61l1.19,0.76l2.45,3.45l1.01,3.07l2.11,3.67l-0.39,3.35l0.22,1.7l2.06,4.03l-0.15,3.39l-1.62,1.78l-1.56,3.24l-2.36,2.46l-1.64,-0.11l-1.29,0.59l-1.33,1.29l-1.33,0.73l-0.92,1.43l0.25,0.94l1.58,1.96l0.73,2.07l0.5,0.47l1.47,0.35l0.84,0.76l1.85,2.04l0.51,1.09l-0.24,3.82l-0.55,0.67l-1.67,0.69l-0.46,0.57l-0.73,2.83l0.51,1.34l1.35,1.7l0.25,4.1l1.11,1.0l-1.14,4.37l-0.87,1.76l-2.16,-0.09l-3.12,-1.6l-1.18,-0.01l-1.52,0.59l-0.21,0.82l0.95,0.93l0.15,0.84l-1.24,2.6l-1.06,0.64l-1.96,2.84l-3.1,1.35l-0.66,2.04l-2.65,2.08l-0.16,1.81l0.96,1.75l-0.04,1.26l-2.76,5.43l-2.8,2.03l-0.55,0.87l-0.03,0.76l1.6,2.88l-0.03,0.57l-4.22,1.17l-4.52,0.2l-1.94,0.88l-1.38,-0.66l-0.83,-0.05l-4.06,1.88l-3.12,0.95l-1.23,-0.04l-3.73,-1.98l-1.24,-1.82l-2.13,-1.68l-3.07,-1.73l-1.98,-0.53l-2.06,0.56l-0.77,-1.17l-0.7,-0.11l-1.4,1.03l-1.03,0.25l-3.64,2.43l-0.29,1.46l1.3,3.78l-0.03,0.72l-0.72,1.24l-0.01,2.07l-2.54,2.21l-1.66,2.62l-2.23,0.65l-0.87,1.1l-0.29,0.94l0.72,1.44l-0.03,0.57l-1.25,1.78l-4.31,2.66l-2.39,0.56l-0.98,0.82l-3.33,5.17l-3.48,2.85l-2.93,1.29l-0.86,0.82l-0.26,0.78l1.31,2.09l0.06,1.85l0.83,2.15l2.02,2.25l-0.18,3.0l-0.59,0.58l-4.81,0.36l-1.13,-0.2l-1.77,-0.98l-0.77,0.08l-0.72,0.57l-0.27,2.47l-0.74,1.55l-0.06,0.88l0.85,1.37l2.45,0.96l0.36,0.51l-2.45,5.11l-2.16,1.72l0.1,0.72l1.14,0.8l-0.03,0.97l-1.25,0.21l-2.22,-0.7l-1.4,0.32l-0.49,0.48l-0.46,1.35l-2.26,1.33l-1.04,2.84l-3.57,1.87l-1.05,0.18l-2.71,-2.15l-1.51,-0.47l-5.15,1.53l-2.7,-0.26l-1.21,0.8l-4.35,1.91l-1.3,0.2l-3.0,1.53l-4.83,-1.62l-0.8,0.09l-1.07,0.84l-1.29,1.99l-1.07,0.78l-0.59,0.02l-0.58,-0.74l-0.76,-0.21l-2.4,0.81l-0.9,1.56l0.26,2.33l-0.72,0.77l-2.48,-0.06l-1.1,-0.37l-0.37,-0.73l0.78,-1.23l-0.06,-1.08l-0.91,-0.88l-1.22,-0.35l-1.33,0.44l-1.59,1.05l-1.8,1.72l-1.77,0.13l-2.38,-0.3l-2.89,1.82l-0.59,0.71l-0.12,1.04l1.31,1.37l1.05,2.2l-1.49,3.87l-0.05,2.41l0.82,1.36l-1.48,3.09l-1.21,0.16l-0.79,0.5l-0.11,0.65l0.54,1.41l-1.07,1.59l-0.25,1.25l0.98,0.76l0.47,1.52l0.52,0.63l2.33,-0.0l5.59,1.04l1.06,0.66l0.67,1.47l1.56,1.16l2.16,4.89l-0.31,0.26l-1.15,-0.07l-0.56,0.49l0.03,2.28l0.52,0.69l0.76,0.17l1.43,-1.29l0.75,0.02l-0.11,3.16l1.06,3.23l-0.48,0.48l-1.62,0.52l-0.96,1.06l-0.61,2.64l0.6,2.08l-0.4,0.75l-1.97,1.89l-1.1,3.23l-1.55,0.13l-1.74,2.98l-2.28,1.29l-0.98,1.23l0.15,3.83l-0.4,0.28l-2.98,0.33l-2.69,2.77l-0.17,0.81l0.39,1.61l-0.03,1.69l-1.67,2.29l-0.35,1.23l0.55,3.77l-0.88,-0.07l-0.78,1.18l-0.86,-0.35l-4.31,2.79l-1.69,0.12l-3.22,-1.34l-1.7,-0.07l-0.41,0.38l-0.09,1.49l-1.58,0.74l-0.62,-1.55l-1.55,-0.25l-0.08,-0.92l-2.44,-2.91l-3.24,-2.0l-1.85,-0.11l-0.47,-0.41l-0.25,-0.49l0.25,-1.36l-1.4,-2.86l-1.82,-0.51l-4.68,0.75l-4.79,-0.35l-2.24,-0.65l-2.95,-2.22l-3.08,-0.49l-2.02,-1.09l-2.32,0.15l-4.04,-2.44l-3.6,-0.59l-1.04,-0.56l-0.92,-0.94l-0.21,-0.75l0.38,-0.75l1.21,-0.93l-0.15,-0.71l-1.6,-0.32l-1.53,0.56l-1.05,1.06l-0.53,1.66l-0.16,1.94l-0.41,0.78l-0.81,0.24l-3.0,-0.46l-1.26,-0.64l-1.02,-1.03l-0.63,-1.32l3.7,-3.88l0.95,-2.41l0.66,-2.96l-0.35,-3.1l-2.03,-1.72l-2.04,0.3l-2.51,-1.16l-3.21,-0.56l-1.3,0.75l-0.75,1.77l-1.7,0.25l-0.8,-0.46l-0.49,-1.68l0.17,-0.84l-0.85,-0.76l-1.84,-0.58l-3.76,1.0l-0.43,-1.87l-0.91,-1.03l-1.52,-0.66l0.07,-2.41ZM309.11,602.32l1.15,-0.9l0.67,-2.47l-0.61,-1.33l-1.64,-0.44l-1.19,0.8l-0.49,2.49l0.63,1.45l1.49,0.4ZM307.84,608.3l0.94,-0.4l1.08,-1.94l-0.6,-1.74l-1.63,-0.95l-0.46,0.07l-1.45,1.45l-0.2,1.38l0.25,1.08l0.52,0.68l1.55,0.37ZM235.41,400.43l1.09,0.41l1.35,-0.28l0.64,0.57l0.15,2.37l0.68,0.73l-0.16,1.32l2.38,1.46l0.35,0.53l-0.41,3.62l-0.61,1.91l-0.67,0.91l-0.62,-0.25l-0.84,-2.53l-1.25,-2.19l-3.59,-3.54l-1.32,-0.83l-2.14,-2.59l0.33,-1.57l-1.72,-3.8l1.1,0.13l1.99,0.91l3.27,2.7ZM219.58,381.29l3.07,-0.67l0.94,0.18l0.51,0.48l-0.09,0.29l-1.95,-0.5l-0.35,0.62l1.41,1.8l1.75,-0.06l1.83,-0.69l0.25,0.77l1.02,0.43l6.19,0.88l1.32,0.74l1.5,1.94l-0.96,0.35l-3.3,-0.75l-5.87,-3.31l-3.6,0.51l-0.76,-0.27l-2.9,-2.73Z", "name": "Aquitaine-Limousin-Poitou-Charentes"}, "FR-RE": {"path": "M761.79,701.36l1.08,0.18l1.12,-0.39l1.21,0.39l2.77,-0.03l2.17,1.11l3.51,0.8l0.97,0.55l2.4,2.39l0.54,1.06l0.32,2.77l0.52,1.06l1.9,1.97l0.91,3.81l1.85,0.93l1.43,2.47l3.94,1.89l0.84,0.82l0.32,1.39l-1.08,2.72l-1.31,6.18l-0.27,4.98l-0.6,1.25l-1.42,0.53l-4.24,0.16l-2.56,1.32l-1.76,0.26l-1.74,-0.1l-1.22,-0.48l-1.58,0.46l-1.92,0.08l-3.62,-0.55l-3.79,-2.43l-5.72,-1.87l-1.23,-0.75l-1.75,-2.11l-3.42,-0.26l-3.52,-4.42l-0.9,-1.55l-0.63,-4.75l-3.33,-4.36l-1.6,-3.39l0.0,-1.42l0.43,-1.55l0.75,-1.19l2.55,-1.05l1.15,-1.41l0.43,-1.65l-0.32,-1.19l0.55,-0.82l-0.29,-0.86l0.61,-0.27l2.76,-0.09l5.6,-3.4l4.93,-0.0l2.25,0.81Z", "name": "R\u00e9union"}}, "height": 749.2159980728637, "projection": {"type": "mill", "centralMeridian": 0.0}, "width": 900.0});
\ No newline at end of file
diff --git a/js/vmap/package.json b/js/vmap/package.json
new file mode 100644 (file)
index 0000000..d0c9c74
--- /dev/null
@@ -0,0 +1,45 @@
+{
+  "name": "jqvmap",
+  "version": "1.5.1",
+  "homepage": "http://jqvmap.com",
+  "author": {
+    "name": "JQVMap",
+    "email": "me@peterschmalfeldt.com",
+    "url": "http://jqvmap.com"
+  },
+  "license": "(MIT OR GPL-3.0)",
+  "description": "jQuery Vector Map Library",
+  "main": "dist/jquery.vmap.min.js",
+  "keywords": [
+    "jquery",
+    "map",
+    "svg",
+    "vml",
+    "vector"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/manifestinteractive/jqvmap.git"
+  },
+  "dependencies": {
+    "jquery": "~1.11.3"
+  },
+  "scripts": {
+    "test": "grunt test"
+  },
+  "devDependencies": {
+    "eslint": "^0.21.0",
+    "grunt": "^0.4.5",
+    "grunt-bump": "0.0.15",
+    "grunt-changelog": "^0.2.2",
+    "grunt-contrib-clean": "^0.6.0",
+    "grunt-contrib-concat": "*",
+    "grunt-contrib-copy": "^0.5.0",
+    "grunt-contrib-qunit": "^0.7.0",
+    "grunt-contrib-uglify": "^0.10.0",
+    "grunt-gulp": "^0.1.0",
+    "grunt-shell": "^1.1.1",
+    "gruntfile-gtx": "^0.3.0",
+    "require-directory": "^2.0.0"
+  }
+}
diff --git a/js/vmap/src/Base.js b/js/vmap/src/Base.js
new file mode 100644 (file)
index 0000000..9bd3d57
--- /dev/null
@@ -0,0 +1,80 @@
+(function(){
+
+  var apiParams = {
+    colors: 1,
+    values: 1,
+    backgroundColor: 1,
+    scaleColors: 1,
+    normalizeFunction: 1,
+    enableZoom: 1,
+    showTooltip: 1,
+    borderColor: 1,
+    borderWidth: 1,
+    borderOpacity: 1,
+    selectedRegions: 1,
+    multiSelectRegion: 1
+  };
+
+  var apiEvents = {
+    onLabelShow: 'labelShow',
+    onLoad: 'load',
+    onRegionOver: 'regionMouseOver',
+    onRegionOut: 'regionMouseOut',
+    onRegionClick: 'regionClick',
+    onRegionSelect: 'regionSelect',
+    onRegionDeselect: 'regionDeselect',
+    onResize: 'resize'
+  };
+
+  jQuery.fn.vectorMap = function (options) {
+
+    var defaultParams = {
+      map: 'world_en',
+      backgroundColor: '#a5bfdd',
+      color: '#f4f3f0',
+      hoverColor: '#c9dfaf',
+      hoverColors: {},
+      selectedColor: '#c9dfaf',
+      scaleColors: ['#b6d6ff', '#005ace'],
+      normalizeFunction: 'linear',
+      enableZoom: true,
+      showTooltip: true,
+      borderColor: '#818181',
+      borderWidth: 1,
+      borderOpacity: 0.25,
+      selectedRegions: null,
+      multiSelectRegion: false
+    }, map = this.data('mapObject');
+
+    if (options === 'addMap') {
+      JQVMap.maps[arguments[1]] = arguments[2];
+    } else if (options === 'set' && apiParams[arguments[1]]) {
+      map['set' + arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1)].apply(map, Array.prototype.slice.call(arguments, 2));
+    } else if (typeof options === 'string' &&
+      typeof map[options] === 'function') {
+      return map[options].apply(map, Array.prototype.slice.call(arguments, 1));
+    } else {
+      jQuery.extend(defaultParams, options);
+      defaultParams.container = this;
+      this.css({ position: 'relative', overflow: 'hidden' });
+
+      map = new JQVMap(defaultParams);
+
+      this.data('mapObject', map);
+
+      this.unbind('.jqvmap');
+
+      for (var e in apiEvents) {
+        if (defaultParams[e]) {
+          this.bind(apiEvents[e] + '.jqvmap', defaultParams[e]);
+        }
+      }
+
+      var loadEvent = jQuery.Event('load.jqvmap');
+      jQuery(defaultParams.container).trigger(loadEvent, map);
+
+      return map;
+    }
+  };
+
+})(jQuery);
diff --git a/js/vmap/src/ColorScale.js b/js/vmap/src/ColorScale.js
new file mode 100644 (file)
index 0000000..34d0eee
--- /dev/null
@@ -0,0 +1,18 @@
+var ColorScale = function (colors, normalizeFunction, minValue, maxValue) {
+  if (colors) {
+    this.setColors(colors);
+  }
+  if (normalizeFunction) {
+    this.setNormalizeFunction(normalizeFunction);
+  }
+  if (minValue) {
+    this.setMin(minValue);
+  }
+  if (minValue) {
+    this.setMax(maxValue);
+  }
+};
+
+ColorScale.prototype = {
+  colors: []
+};
diff --git a/js/vmap/src/ColorScale/arrayToRgb.js b/js/vmap/src/ColorScale/arrayToRgb.js
new file mode 100644 (file)
index 0000000..afd4414
--- /dev/null
@@ -0,0 +1,9 @@
+ColorScale.arrayToRgb = function (ar) {
+  var rgb = '#';
+  var d;
+  for (var i = 0; i < ar.length; i++) {
+    d = ar[i].toString(16);
+    rgb += d.length === 1 ? '0' + d : d;
+  }
+  return rgb;
+};
diff --git a/js/vmap/src/ColorScale/getColor.js b/js/vmap/src/ColorScale/getColor.js
new file mode 100644 (file)
index 0000000..1ecdfe7
--- /dev/null
@@ -0,0 +1,41 @@
+ColorScale.prototype.getColor = function (value) {
+  if (typeof this.normalize === 'function') {
+    value = this.normalize(value);
+  }
+
+  var lengthes = [];
+  var fullLength = 0;
+  var l;
+
+  for (var i = 0; i < this.colors.length - 1; i++) {
+    l = this.vectorLength(this.vectorSubtract(this.colors[i + 1], this.colors[i]));
+    lengthes.push(l);
+    fullLength += l;
+  }
+
+  var c = (this.maxValue - this.minValue) / fullLength;
+
+  for (i = 0; i < lengthes.length; i++) {
+    lengthes[i] *= c;
+  }
+
+  i = 0;
+  value -= this.minValue;
+
+  while (value - lengthes[i] >= 0) {
+    value -= lengthes[i];
+    i++;
+  }
+
+  var color;
+  if (i === this.colors.length - 1) {
+    color = this.vectorToNum(this.colors[i]).toString(16);
+  } else {
+    color = (this.vectorToNum(this.vectorAdd(this.colors[i], this.vectorMult(this.vectorSubtract(this.colors[i + 1], this.colors[i]), (value) / (lengthes[i]))))).toString(16);
+  }
+
+  while (color.length < 6) {
+    color = '0' + color;
+  }
+  return '#' + color;
+};
diff --git a/js/vmap/src/ColorScale/rgbToArray.js b/js/vmap/src/ColorScale/rgbToArray.js
new file mode 100644 (file)
index 0000000..47f55d0
--- /dev/null
@@ -0,0 +1,4 @@
+ColorScale.rgbToArray = function (rgb) {
+  rgb = rgb.substr(1);
+  return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];
+};
diff --git a/js/vmap/src/ColorScale/setColors.js b/js/vmap/src/ColorScale/setColors.js
new file mode 100644 (file)
index 0000000..03b58f9
--- /dev/null
@@ -0,0 +1,6 @@
+ColorScale.prototype.setColors = function (colors) {
+  for (var i = 0; i < colors.length; i++) {
+    colors[i] = ColorScale.rgbToArray(colors[i]);
+  }
+  this.colors = colors;
+};
diff --git a/js/vmap/src/ColorScale/setMax.js b/js/vmap/src/ColorScale/setMax.js
new file mode 100644 (file)
index 0000000..80f9b5e
--- /dev/null
@@ -0,0 +1,8 @@
+ColorScale.prototype.setMax = function (max) {
+  this.clearMaxValue = max;
+  if (typeof this.normalize === 'function') {
+    this.maxValue = this.normalize(max);
+  } else {
+    this.maxValue = max;
+  }
+};
diff --git a/js/vmap/src/ColorScale/setMin.js b/js/vmap/src/ColorScale/setMin.js
new file mode 100644 (file)
index 0000000..fc9a650
--- /dev/null
@@ -0,0 +1,9 @@
+ColorScale.prototype.setMin = function (min) {
+  this.clearMinValue = min;
+
+  if (typeof this.normalize === 'function') {
+    this.minValue = this.normalize(min);
+  } else {
+    this.minValue = min;
+  }
+};
diff --git a/js/vmap/src/ColorScale/setNormalizeFunction.js b/js/vmap/src/ColorScale/setNormalizeFunction.js
new file mode 100644 (file)
index 0000000..0598e4e
--- /dev/null
@@ -0,0 +1,13 @@
+ColorScale.prototype.setNormalizeFunction = function (f) {
+  if (f === 'polynomial') {
+    this.normalize = function (value) {
+      return Math.pow(value, 0.2);
+    };
+  } else if (f === 'linear') {
+    delete this.normalize;
+  } else {
+    this.normalize = f;
+  }
+  this.setMin(this.clearMinValue);
+  this.setMax(this.clearMaxValue);
+};
diff --git a/js/vmap/src/ColorScale/vectorAdd.js b/js/vmap/src/ColorScale/vectorAdd.js
new file mode 100644 (file)
index 0000000..14c32c9
--- /dev/null
@@ -0,0 +1,7 @@
+ColorScale.prototype.vectorAdd = function (vector1, vector2) {
+  var vector = [];
+  for (var i = 0; i < vector1.length; i++) {
+    vector[i] = vector1[i] + vector2[i];
+  }
+  return vector;
+};
diff --git a/js/vmap/src/ColorScale/vectorLength.js b/js/vmap/src/ColorScale/vectorLength.js
new file mode 100644 (file)
index 0000000..73be3a4
--- /dev/null
@@ -0,0 +1,7 @@
+ColorScale.prototype.vectorLength = function (vector) {
+  var result = 0;
+  for (var i = 0; i < vector.length; i++) {
+    result += vector[i] * vector[i];
+  }
+  return Math.sqrt(result);
+};
diff --git a/js/vmap/src/ColorScale/vectorMult.js b/js/vmap/src/ColorScale/vectorMult.js
new file mode 100644 (file)
index 0000000..4ca48d1
--- /dev/null
@@ -0,0 +1,7 @@
+ColorScale.prototype.vectorMult = function (vector, num) {
+  var result = [];
+  for (var i = 0; i < vector.length; i++) {
+    result[i] = vector[i] * num;
+  }
+  return result;
+};
diff --git a/js/vmap/src/ColorScale/vectorSubtract.js b/js/vmap/src/ColorScale/vectorSubtract.js
new file mode 100644 (file)
index 0000000..0dd64e5
--- /dev/null
@@ -0,0 +1,7 @@
+ColorScale.prototype.vectorSubtract = function (vector1, vector2) {
+  var vector = [];
+  for (var i = 0; i < vector1.length; i++) {
+    vector[i] = vector1[i] - vector2[i];
+  }
+  return vector;
+};
diff --git a/js/vmap/src/ColorScale/vectorToNum.js b/js/vmap/src/ColorScale/vectorToNum.js
new file mode 100644 (file)
index 0000000..13ce934
--- /dev/null
@@ -0,0 +1,7 @@
+ColorScale.prototype.vectorToNum = function (vector) {
+  var num = 0;
+  for (var i = 0; i < vector.length; i++) {
+    num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1);
+  }
+  return num;
+};
diff --git a/js/vmap/src/JQVMap.js b/js/vmap/src/JQVMap.js
new file mode 100644 (file)
index 0000000..ac87a73
--- /dev/null
@@ -0,0 +1,251 @@
+//var JQVMap = function (params) {
+//  params = params || {};
+//  var map = this;
+//  var mapData = JQVMap.maps[params.map];
+//  var mapPins;
+//
+//  if( !mapData){
+//    throw new Error('Invalid "' + params.map + '" map parameter. Please make sure you have loaded this map file in your HTML.');
+//  }
+//
+//  this.selectedRegions = [];
+//  this.multiSelectRegion = params.multiSelectRegion;
+//
+//  this.container = params.container;
+//
+//  this.defaultWidth = mapData.width;
+//  this.defaultHeight = mapData.height;
+//
+//  this.color = params.color;
+//  this.selectedColor = params.selectedColor;
+//  this.hoverColor = params.hoverColor;
+//  this.hoverColors = params.hoverColors;
+//  this.hoverOpacity = params.hoverOpacity;
+//  this.setBackgroundColor(params.backgroundColor);
+//
+//  this.width = params.container.width();
+//  this.height = params.container.height();
+//
+//  this.resize();
+//
+//  jQuery(window).resize(function () {
+//    var newWidth = params.container.width();
+//    var newHeight = params.container.height();
+//
+//    if(newWidth && newHeight){
+//      map.width = newWidth;
+//      map.height = newHeight;
+//      map.resize();
+//      map.canvas.setSize(map.width, map.height);
+//      map.applyTransform();
+//
+//      var resizeEvent = jQuery.Event('resize.jqvmap');
+//      jQuery(params.container).trigger(resizeEvent, [newWidth, newHeight]);
+//
+//      if(mapPins){
+//        jQuery('.jqvmap-pin').remove();
+//        map.pinHandlers = false;
+//        map.placePins(mapPins.pins, mapPins.mode);
+//      }
+//    }
+//  });
+//
+//  this.canvas = new VectorCanvas(this.width, this.height, params);
+//  params.container.append(this.canvas.canvas);
+//
+//  this.makeDraggable();
+//
+//  this.rootGroup = this.canvas.createGroup(true);
+//
+//  this.index = JQVMap.mapIndex;
+//  this.label = jQuery('<div/>').addClass('jqvmap-label').appendTo(jQuery('body')).hide();
+//  this.desc = jQuery('<div/>').addClass('jqvmap-desc').appendTo(jQuery('body')).hide();
+//  this.post_id = jQuery('<div/>').addClass('jqvmap-post_id').appendTo(jQuery('body')).hide();
+//
+//  if (params.enableZoom) {
+//    jQuery('<div/>').addClass('jqvmap-zoomin').text('+').appendTo(params.container);
+//    jQuery('<div/>').addClass('jqvmap-zoomout').html('&#x2212;').appendTo(params.container);
+//  }
+//
+//  map.countries = [];
+//
+//  for (var key in mapData.paths) {
+//    var path = this.canvas.createPath({
+//      path: mapData.paths[key].path
+//    });
+//
+//    path.setFill(this.color);
+//    path.id = map.getCountryId(key);
+//    map.countries[key] = path;
+//
+//    if (this.canvas.mode === 'svg') {
+//      path.setAttribute('class', 'jqvmap-region');
+//    } else {
+//      jQuery(path).addClass('jqvmap-region');
+//    }
+//
+//    jQuery(this.rootGroup).append(path);
+//  }
+//
+//  jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'mouseover mouseout', function (e) {
+//    var containerPath = e.target,
+//      code = e.target.id.split('_').pop(),
+//      labelShowEvent = jQuery.Event('labelShow.jqvmap'),
+//      regionMouseOverEvent = jQuery.Event('regionMouseOver.jqvmap');
+//
+//    code = code.toLowerCase();
+//
+//    if (e.type === 'mouseover') {
+//      jQuery(params.container).trigger(regionMouseOverEvent, [code, mapData.paths[code].name, mapData.paths[code].desc, mapData.paths[code].post_id]);
+//      if (!regionMouseOverEvent.isDefaultPrevented()) {
+//        map.highlight(code, containerPath);
+//      }
+//      if (params.showTooltip) {
+//        map.label.text(mapData.paths[code].name);
+//        map.desc.text(mapData.paths[code].desc);
+//        map.post_id.text(mapData.paths[code].post_id)
+//        jQuery(params.container).trigger(labelShowEvent, [map.label, map.desc, map.post_id, code]);
+//
+//        if (!labelShowEvent.isDefaultPrevented()) {
+//          map.label.show();
+//          map.desc.show();
+//          map.post_id.show();
+//          map.labelWidth = map.label.width();
+//          map.labelHeight = map.label.height();
+//          map.descWidth = map.desc.width();
+//          map.descHeight = map.desc.height();
+//        }
+//      }
+//    } else {
+//      map.unhighlight(code, containerPath);
+//
+//      map.label.hide();
+//      jQuery(params.container).trigger('regionMouseOut.jqvmap', [code, mapData.paths[code].name, mapData.paths[code].desc, mapData.paths[code].post_id]);
+//    }
+//  });
+//
+//  jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'click', function (regionClickEvent) {
+//
+//    var targetPath = regionClickEvent.target;
+//    var code = regionClickEvent.target.id.split('_').pop();
+//    var mapClickEvent = jQuery.Event('regionClick.jqvmap');
+//
+//    code = code.toLowerCase();
+//
+//    jQuery(params.container).trigger(mapClickEvent, [code, mapData.paths[code].name], mapData.paths[code].desc, mapData.paths[code].post_id);
+//
+//    if ( !params.multiSelectRegion && !mapClickEvent.isDefaultPrevented()) {
+//      for (var keyPath in mapData.paths) {
+//        map.countries[keyPath].currentFillColor = map.countries[keyPath].getOriginalFill();
+//        map.countries[keyPath].setFill(map.countries[keyPath].getOriginalFill());
+//      }
+//    }
+//
+//    if ( !mapClickEvent.isDefaultPrevented()) {
+//      if (map.isSelected(code)) {
+//        map.deselect(code, targetPath);
+//      } else {
+//        map.select(code, targetPath);
+//      }
+//    }
+//  });
+//
+//  if (params.showTooltip) {
+//    params.container.mousemove(function (e) {
+//      if (map.label.is(':visible')) {
+//        var left = e.pageX - 15 - map.labelWidth;
+//        var top = e.pageY - 15 - map.labelHeight;
+//
+//        if(left < 0) {
+//          left = e.pageX + 15;
+//        }
+//        if(top < 0) {
+//          top = e.pageY + 15;
+//        }
+//
+//        map.label.css({
+//          left: left,
+//          top: top
+//        });
+//      }
+//    });
+//  }
+//
+//  this.setColors(params.colors);
+//
+//  this.canvas.canvas.appendChild(this.rootGroup);
+//
+//  this.applyTransform();
+//
+//  this.colorScale = new ColorScale(params.scaleColors, params.normalizeFunction, params.valueMin, params.valueMax);
+//
+//  if (params.values) {
+//    this.values = params.values;
+//    this.setValues(params.values);
+//  }
+//
+//  if (params.selectedRegions) {
+//    if (params.selectedRegions instanceof Array) {
+//      for(var k in params.selectedRegions) {
+//        this.select(params.selectedRegions[k].toLowerCase());
+//      }
+//    } else {
+//      this.select(params.selectedRegions.toLowerCase());
+//    }
+//  }
+//
+//  this.bindZoomButtons();
+//
+//  if(params.pins) {
+//    mapPins = {
+//      pins: params.pins,
+//      mode: params.pinMode
+//    };
+//
+//    this.pinHandlers = false;
+//    this.placePins(params.pins, params.pinMode);
+//  }
+//
+//  if(params.showLabels){
+//    this.pinHandlers = false;
+//
+//    var pins = {};
+//    for (key in map.countries){
+//      if (typeof map.countries[key] !== 'function') {
+//        if( !params.pins || !params.pins[key] ){
+//          pins[key] = key.toUpperCase();
+//        }
+//      }
+//    }
+//
+//    mapPins = {
+//      pins: pins,
+//      mode: 'content'
+//    };
+//
+//    this.placePins(pins, 'content');
+//  }
+//
+//  JQVMap.mapIndex++;
+//};
+//
+//JQVMap.prototype = {
+//  transX: 0,
+//  transY: 0,
+//  scale: 1,
+//  baseTransX: 0,
+//  baseTransY: 0,
+//  baseScale: 1,
+//  width: 0,
+//  height: 0,
+//  countries: {},
+//  countriesColors: {},
+//  countriesData: {},
+//  zoomStep: 1.4,
+//  zoomMaxStep: 4,
+//  zoomCurStep: 1
+//};
+//
+//JQVMap.xlink = 'http://www.w3.org/1999/xlink';
+//JQVMap.mapIndex = 1;
+//JQVMap.maps = {};
diff --git a/js/vmap/src/JQVMap/applyTransform.js b/js/vmap/src/JQVMap/applyTransform.js
new file mode 100644 (file)
index 0000000..013c381
--- /dev/null
@@ -0,0 +1,31 @@
+JQVMap.prototype.applyTransform = function () {
+  var maxTransX, maxTransY, minTransX, minTransY;
+  if (this.defaultWidth * this.scale <= this.width) {
+    maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);
+    minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);
+  } else {
+    maxTransX = 0;
+    minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;
+  }
+
+  if (this.defaultHeight * this.scale <= this.height) {
+    maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);
+    minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);
+  } else {
+    maxTransY = 0;
+    minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;
+  }
+
+  if (this.transY > maxTransY) {
+    this.transY = maxTransY;
+  } else if (this.transY < minTransY) {
+    this.transY = minTransY;
+  }
+  if (this.transX > maxTransX) {
+    this.transX = maxTransX;
+  } else if (this.transX < minTransX) {
+    this.transX = minTransX;
+  }
+
+  this.canvas.applyTransformParams(this.scale, this.transX, this.transY);
+};
diff --git a/js/vmap/src/JQVMap/bindZoomButtons.js b/js/vmap/src/JQVMap/bindZoomButtons.js
new file mode 100644 (file)
index 0000000..a6b1e38
--- /dev/null
@@ -0,0 +1,9 @@
+JQVMap.prototype.bindZoomButtons = function () {
+  var map = this;
+  this.container.find('.jqvmap-zoomin').click(function(){
+    map.zoomIn();
+  });
+  this.container.find('.jqvmap-zoomout').click(function(){
+    map.zoomOut();
+  });
+};
diff --git a/js/vmap/src/JQVMap/deselect.js b/js/vmap/src/JQVMap/deselect.js
new file mode 100644 (file)
index 0000000..7ace1bc
--- /dev/null
@@ -0,0 +1,18 @@
+JQVMap.prototype.deselect = function (cc, path) {
+  cc = cc.toLowerCase();
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+
+  if (this.isSelected(cc)) {
+    this.selectedRegions.splice(this.selectIndex(cc), 1);
+
+    jQuery(this.container).trigger('regionDeselect.jqvmap', [cc]);
+    path.currentFillColor = path.getOriginalFill();
+    path.setFill(path.getOriginalFill());
+  } else {
+    for (var key in this.countries) {
+      this.selectedRegions.splice(this.selectedRegions.indexOf(key), 1);
+      this.countries[key].currentFillColor = this.color;
+      this.countries[key].setFill(this.color);
+    }
+  }
+};
diff --git a/js/vmap/src/JQVMap/getCountryId.js b/js/vmap/src/JQVMap/getCountryId.js
new file mode 100644 (file)
index 0000000..6862afa
--- /dev/null
@@ -0,0 +1,3 @@
+JQVMap.prototype.getCountryId = function (cc) {
+  return 'jqvmap' + this.index + '_' + cc;
+};
diff --git a/js/vmap/src/JQVMap/getPin.js b/js/vmap/src/JQVMap/getPin.js
new file mode 100644 (file)
index 0000000..d9e3843
--- /dev/null
@@ -0,0 +1,4 @@
+JQVMap.prototype.getPin = function(cc){
+  var pinObj = jQuery('#' + this.getPinId(cc));
+  return pinObj.html();
+};
diff --git a/js/vmap/src/JQVMap/getPinId.js b/js/vmap/src/JQVMap/getPinId.js
new file mode 100644 (file)
index 0000000..636192a
--- /dev/null
@@ -0,0 +1,3 @@
+JQVMap.prototype.getPinId = function (cc) {
+  return this.getCountryId(cc) + '_pin';
+};
diff --git a/js/vmap/src/JQVMap/getPins.js b/js/vmap/src/JQVMap/getPins.js
new file mode 100644 (file)
index 0000000..2d30e30
--- /dev/null
@@ -0,0 +1,11 @@
+JQVMap.prototype.getPins = function(){
+  var pins = this.container.find('.jqvmap-pin');
+  var ret = {};
+  jQuery.each(pins, function(index, pinObj){
+    pinObj = jQuery(pinObj);
+    var cc = pinObj.attr('for').toLowerCase();
+    var pinContent = pinObj.html();
+    ret[cc] = pinContent;
+  });
+  return JSON.stringify(ret);
+};
diff --git a/js/vmap/src/JQVMap/highlight.js b/js/vmap/src/JQVMap/highlight.js
new file mode 100644 (file)
index 0000000..d247eb5
--- /dev/null
@@ -0,0 +1,12 @@
+JQVMap.prototype.highlight = function (cc, path) {
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+  if (this.hoverOpacity) {
+    path.setOpacity(this.hoverOpacity);
+  } else if (this.hoverColors && (cc in this.hoverColors)) {
+    path.currentFillColor = path.getFill() + '';
+    path.setFill(this.hoverColors[cc]);
+  } else if (this.hoverColor) {
+    path.currentFillColor = path.getFill() + '';
+    path.setFill(this.hoverColor);
+  }
+};
diff --git a/js/vmap/src/JQVMap/isSelected.js b/js/vmap/src/JQVMap/isSelected.js
new file mode 100644 (file)
index 0000000..08d8abb
--- /dev/null
@@ -0,0 +1,3 @@
+JQVMap.prototype.isSelected = function(cc) {
+  return this.selectIndex(cc) >= 0;
+};
diff --git a/js/vmap/src/JQVMap/makeDraggable.js b/js/vmap/src/JQVMap/makeDraggable.js
new file mode 100644 (file)
index 0000000..eabbd62
--- /dev/null
@@ -0,0 +1,159 @@
+JQVMap.prototype.makeDraggable = function () {
+  var mouseDown = false;
+  var oldPageX, oldPageY;
+  var self = this;
+
+  self.isMoving = false;
+  self.isMovingTimeout = false;
+
+  var lastTouchCount;
+  var touchCenterX;
+  var touchCenterY;
+  var touchStartDistance;
+  var touchStartScale;
+  var touchX;
+  var touchY;
+
+  this.container.mousemove(function (e) {
+
+    if (mouseDown) {
+      self.transX -= (oldPageX - e.pageX) / self.scale;
+      self.transY -= (oldPageY - e.pageY) / self.scale;
+
+      self.applyTransform();
+
+      oldPageX = e.pageX;
+      oldPageY = e.pageY;
+
+      self.isMoving = true;
+      if (self.isMovingTimeout) {
+        clearTimeout(self.isMovingTimeout);
+      }
+
+      self.container.trigger('drag');
+    }
+
+    return false;
+
+  }).mousedown(function (e) {
+
+    mouseDown = true;
+    oldPageX = e.pageX;
+    oldPageY = e.pageY;
+
+    return false;
+
+  }).mouseup(function () {
+
+    mouseDown = false;
+
+    clearTimeout(self.isMovingTimeout);
+    self.isMovingTimeout = setTimeout(function () {
+      self.isMoving = false;
+    }, 100);
+
+    return false;
+
+  }).mouseout(function () {
+
+    if(mouseDown && self.isMoving){
+
+      clearTimeout(self.isMovingTimeout);
+      self.isMovingTimeout = setTimeout(function () {
+        mouseDown = false;
+        self.isMoving = false;
+      }, 100);
+
+      return false;
+    }
+  });
+
+  jQuery(this.container).bind('touchmove', function (e) {
+
+    var offset;
+    var scale;
+    var touches = e.originalEvent.touches;
+    var transformXOld;
+    var transformYOld;
+
+    if (touches.length === 1) {
+      if (lastTouchCount === 1) {
+
+        if(touchX === touches[0].pageX && touchY === touches[0].pageY){
+          return;
+        }
+
+        transformXOld = self.transX;
+        transformYOld = self.transY;
+
+        self.transX -= (touchX - touches[0].pageX) / self.scale;
+        self.transY -= (touchY - touches[0].pageY) / self.scale;
+
+        self.applyTransform();
+
+        if (transformXOld !== self.transX || transformYOld !== self.transY) {
+          e.preventDefault();
+        }
+
+        self.isMoving = true;
+        if (self.isMovingTimeout) {
+          clearTimeout(self.isMovingTimeout);
+        }
+      }
+
+      touchX = touches[0].pageX;
+      touchY = touches[0].pageY;
+
+    } else if (touches.length === 2) {
+
+      if (lastTouchCount === 2) {
+        scale = Math.sqrt(
+            Math.pow(touches[0].pageX - touches[1].pageX, 2) +
+            Math.pow(touches[0].pageY - touches[1].pageY, 2)
+          ) / touchStartDistance;
+
+        self.setScale(
+          touchStartScale * scale,
+          touchCenterX,
+          touchCenterY
+        );
+
+        e.preventDefault();
+
+      } else {
+
+        offset = jQuery(self.container).offset();
+        if (touches[0].pageX > touches[1].pageX) {
+          touchCenterX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2;
+        } else {
+          touchCenterX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2;
+        }
+
+        if (touches[0].pageY > touches[1].pageY) {
+          touchCenterY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2;
+        } else {
+          touchCenterY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2;
+        }
+
+        touchCenterX -= offset.left;
+        touchCenterY -= offset.top;
+        touchStartScale = self.scale;
+
+        touchStartDistance = Math.sqrt(
+          Math.pow(touches[0].pageX - touches[1].pageX, 2) +
+          Math.pow(touches[0].pageY - touches[1].pageY, 2)
+        );
+      }
+    }
+
+    lastTouchCount = touches.length;
+  });
+
+  jQuery(this.container).bind('touchstart', function () {
+    lastTouchCount = 0;
+  });
+
+  jQuery(this.container).bind('touchend', function () {
+    lastTouchCount = 0;
+  });
+};
diff --git a/js/vmap/src/JQVMap/placePins.js b/js/vmap/src/JQVMap/placePins.js
new file mode 100644 (file)
index 0000000..433f9d1
--- /dev/null
@@ -0,0 +1,46 @@
+JQVMap.prototype.placePins = function(pins, pinMode){
+  var map = this;
+
+  if(!pinMode || (pinMode !== 'content' && pinMode !== 'id')) {
+    pinMode = 'content';
+  }
+
+  if(pinMode === 'content') {//treat pin as content
+    jQuery.each(pins, function(index, pin){
+      if(jQuery('#' + map.getCountryId(index)).length === 0){
+        return;
+      }
+
+      var pinIndex = map.getPinId(index);
+      var $pin = jQuery('#' + pinIndex);
+      if($pin.length > 0){
+        $pin.remove();
+      }
+      map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute">' + pin + '</div>');
+    });
+  } else { //treat pin as id of an html content
+    jQuery.each(pins, function(index, pin){
+      if(jQuery('#' + map.getCountryId(index)).length === 0){
+        return;
+      }
+      var pinIndex = map.getPinId(index);
+      var $pin = jQuery('#' + pinIndex);
+      if($pin.length > 0){
+        $pin.remove();
+      }
+      map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute"></div>');
+      $pin.append(jQuery('#' + pin));
+    });
+  }
+
+  this.positionPins();
+  if(!this.pinHandlers){
+    this.pinHandlers = true;
+    var positionFix = function(){
+      map.positionPins();
+    };
+    this.container.bind('zoomIn', positionFix)
+      .bind('zoomOut', positionFix)
+      .bind('drag', positionFix);
+  }
+};
diff --git a/js/vmap/src/JQVMap/positionPins.js b/js/vmap/src/JQVMap/positionPins.js
new file mode 100644 (file)
index 0000000..2e9e035
--- /dev/null
@@ -0,0 +1,22 @@
+JQVMap.prototype.positionPins = function(){
+  var map = this;
+  var pins = this.container.find('.jqvmap-pin');
+  jQuery.each(pins, function(index, pinObj){
+    pinObj = jQuery(pinObj);
+    var countryId = map.getCountryId(pinObj.attr('for').toLowerCase());
+    var countryObj = jQuery('#' + countryId);
+    var bbox = countryObj[0].getBBox();
+
+    var scale = map.scale;
+    var rootCoords = map.canvas.rootGroup.getBoundingClientRect();
+    var mapCoords = map.container[0].getBoundingClientRect();
+
+    var middleX = (bbox.x * scale) + ((bbox.width * scale) / 2);
+    var middleY = (bbox.y * scale) + ((bbox.height * scale) / 2);
+
+    pinObj.css({
+      left: (rootCoords.left - mapCoords.left) + middleX - (pinObj.width() / 2),
+      top: (rootCoords.top - mapCoords.top) + middleY - (pinObj.height() / 2)
+    });
+  });
+};
diff --git a/js/vmap/src/JQVMap/removePin.js b/js/vmap/src/JQVMap/removePin.js
new file mode 100644 (file)
index 0000000..17f9504
--- /dev/null
@@ -0,0 +1,4 @@
+JQVMap.prototype.removePin = function(cc) {
+  cc = cc.toLowerCase();
+  jQuery('#' + this.getPinId(cc)).remove();
+};
diff --git a/js/vmap/src/JQVMap/removePins.js b/js/vmap/src/JQVMap/removePins.js
new file mode 100644 (file)
index 0000000..b8a3875
--- /dev/null
@@ -0,0 +1,3 @@
+JQVMap.prototype.removePins = function(){
+  this.container.find('.jqvmap-pin').remove();
+};
diff --git a/js/vmap/src/JQVMap/reset.js b/js/vmap/src/JQVMap/reset.js
new file mode 100644 (file)
index 0000000..ff83a1b
--- /dev/null
@@ -0,0 +1,9 @@
+JQVMap.prototype.reset = function () {
+  for (var key in this.countries) {
+    this.countries[key].setFill(this.color);
+  }
+  this.scale = this.baseScale;
+  this.transX = this.baseTransX;
+  this.transY = this.baseTransY;
+  this.applyTransform();
+};
diff --git a/js/vmap/src/JQVMap/resize.js b/js/vmap/src/JQVMap/resize.js
new file mode 100644 (file)
index 0000000..c8842af
--- /dev/null
@@ -0,0 +1,13 @@
+JQVMap.prototype.resize = function () {
+  var curBaseScale = this.baseScale;
+  if (this.width / this.height > this.defaultWidth / this.defaultHeight) {
+    this.baseScale = this.height / this.defaultHeight;
+    this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);
+  } else {
+    this.baseScale = this.width / this.defaultWidth;
+    this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);
+  }
+  this.scale *= this.baseScale / curBaseScale;
+  this.transX *= this.baseScale / curBaseScale;
+  this.transY *= this.baseScale / curBaseScale;
+};
diff --git a/js/vmap/src/JQVMap/select.js b/js/vmap/src/JQVMap/select.js
new file mode 100644 (file)
index 0000000..0116644
--- /dev/null
@@ -0,0 +1,18 @@
+JQVMap.prototype.select = function (cc, path) {
+  cc = cc.toLowerCase();
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+
+  if (!this.isSelected(cc)) {
+    if (this.multiSelectRegion) {
+      this.selectedRegions.push(cc);
+    } else {
+      this.selectedRegions = [cc];
+    }
+
+    jQuery(this.container).trigger('regionSelect.jqvmap', [cc]);
+    if (this.selectedColor && path) {
+      path.currentFillColor = this.selectedColor;
+      path.setFill(this.selectedColor);
+    }
+  }
+};
diff --git a/js/vmap/src/JQVMap/selectIndex.js b/js/vmap/src/JQVMap/selectIndex.js
new file mode 100644 (file)
index 0000000..adaac50
--- /dev/null
@@ -0,0 +1,9 @@
+JQVMap.prototype.selectIndex = function (cc) {
+  cc = cc.toLowerCase();
+  for (var i = 0; i < this.selectedRegions.length; i++) {
+    if (cc === this.selectedRegions[i]) {
+      return i;
+    }
+  }
+  return -1;
+};
diff --git a/js/vmap/src/JQVMap/setBackgroundColor.js b/js/vmap/src/JQVMap/setBackgroundColor.js
new file mode 100644 (file)
index 0000000..c430f3f
--- /dev/null
@@ -0,0 +1,3 @@
+JQVMap.prototype.setBackgroundColor = function (backgroundColor) {
+  this.container.css('background-color', backgroundColor);
+};
diff --git a/js/vmap/src/JQVMap/setColors.js b/js/vmap/src/JQVMap/setColors.js
new file mode 100644 (file)
index 0000000..bc74c16
--- /dev/null
@@ -0,0 +1,15 @@
+JQVMap.prototype.setColors = function (key, color) {
+  if (typeof key === 'string') {
+    this.countries[key].setFill(color);
+    this.countries[key].setAttribute('original', color);
+  } else {
+    var colors = key;
+
+    for (var code in colors) {
+      if (this.countries[code]) {
+        this.countries[code].setFill(colors[code]);
+        this.countries[code].setAttribute('original', colors[code]);
+      }
+    }
+  }
+};
diff --git a/js/vmap/src/JQVMap/setNormalizeFunction.js b/js/vmap/src/JQVMap/setNormalizeFunction.js
new file mode 100644 (file)
index 0000000..c94deae
--- /dev/null
@@ -0,0 +1,7 @@
+JQVMap.prototype.setNormalizeFunction = function (f) {
+  this.colorScale.setNormalizeFunction(f);
+
+  if (this.values) {
+    this.setValues(this.values);
+  }
+};
diff --git a/js/vmap/src/JQVMap/setScale.js b/js/vmap/src/JQVMap/setScale.js
new file mode 100644 (file)
index 0000000..24273f8
--- /dev/null
@@ -0,0 +1,4 @@
+JQVMap.prototype.setScale = function (scale) {
+  this.scale = scale;
+  this.applyTransform();
+};
diff --git a/js/vmap/src/JQVMap/setScaleColors.js b/js/vmap/src/JQVMap/setScaleColors.js
new file mode 100644 (file)
index 0000000..542522b
--- /dev/null
@@ -0,0 +1,7 @@
+JQVMap.prototype.setScaleColors = function (colors) {
+  this.colorScale.setColors(colors);
+
+  if (this.values) {
+    this.setValues(this.values);
+  }
+};
diff --git a/js/vmap/src/JQVMap/setValues.js b/js/vmap/src/JQVMap/setValues.js
new file mode 100644 (file)
index 0000000..02711b0
--- /dev/null
@@ -0,0 +1,36 @@
+JQVMap.prototype.setValues = function (values) {
+  var max = 0,
+    min = Number.MAX_VALUE,
+    val;
+
+  for (var cc in values) {
+    cc = cc.toLowerCase();
+    val = parseFloat(values[cc]);
+
+    if (isNaN(val)) {
+      continue;
+    }
+    if (val > max) {
+      max = values[cc];
+    }
+    if (val < min) {
+      min = val;
+    }
+  }
+
+  if (min === max) {
+    max++;
+  }
+
+  this.colorScale.setMin(min);
+  this.colorScale.setMax(max);
+
+  var colors = {};
+  for (cc in values) {
+    cc = cc.toLowerCase();
+    val = parseFloat(values[cc]);
+    colors[cc] = isNaN(val) ? this.color : this.colorScale.getColor(val);
+  }
+  this.setColors(colors);
+  this.values = values;
+};
diff --git a/js/vmap/src/JQVMap/unhighlight.js b/js/vmap/src/JQVMap/unhighlight.js
new file mode 100644 (file)
index 0000000..2980cc8
--- /dev/null
@@ -0,0 +1,8 @@
+JQVMap.prototype.unhighlight = function (cc, path) {
+  cc = cc.toLowerCase();
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+  path.setOpacity(1);
+  if (path.currentFillColor) {
+    path.setFill(path.currentFillColor);
+  }
+};
diff --git a/js/vmap/src/JQVMap/zoomIn.js b/js/vmap/src/JQVMap/zoomIn.js
new file mode 100644 (file)
index 0000000..0718195
--- /dev/null
@@ -0,0 +1,17 @@
+JQVMap.prototype.zoomIn = function () {
+  var map = this;
+  var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);
+
+  if (map.zoomCurStep < map.zoomMaxStep) {
+    map.transX -= (map.width / map.scale - map.width / (map.scale * map.zoomStep)) / 2;
+    map.transY -= (map.height / map.scale - map.height / (map.scale * map.zoomStep)) / 2;
+    map.setScale(map.scale * map.zoomStep);
+    map.zoomCurStep++;
+
+    var $slider = jQuery('#zoomSlider');
+
+    $slider.css('top', parseInt($slider.css('top'), 10) - sliderDelta);
+
+    map.container.trigger('zoomIn');
+  }
+};
diff --git a/js/vmap/src/JQVMap/zoomOut.js b/js/vmap/src/JQVMap/zoomOut.js
new file mode 100644 (file)
index 0000000..5de5759
--- /dev/null
@@ -0,0 +1,17 @@
+JQVMap.prototype.zoomOut = function () {
+  var map = this;
+  var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);
+
+  if (map.zoomCurStep > 1) {
+    map.transX += (map.width / (map.scale / map.zoomStep) - map.width / map.scale) / 2;
+    map.transY += (map.height / (map.scale / map.zoomStep) - map.height / map.scale) / 2;
+    map.setScale(map.scale / map.zoomStep);
+    map.zoomCurStep--;
+
+    var $slider = jQuery('#zoomSlider');
+
+    $slider.css('top', parseInt($slider.css('top'), 10) + sliderDelta);
+
+    map.container.trigger('zoomOut');
+  }
+};
diff --git a/js/vmap/src/VectorCanvas.js b/js/vmap/src/VectorCanvas.js
new file mode 100644 (file)
index 0000000..8aa6060
--- /dev/null
@@ -0,0 +1,42 @@
+var VectorCanvas = function (width, height, params) {
+  this.mode = window.SVGAngle ? 'svg' : 'vml';
+  this.params = params;
+
+  if (this.mode === 'svg') {
+    this.createSvgNode = function (nodeName) {
+      return document.createElementNS(this.svgns, nodeName);
+    };
+  } else {
+    try {
+      if (!document.namespaces.rvml) {
+        document.namespaces.add('rvml', 'urn:schemas-microsoft-com:vml');
+      }
+      this.createVmlNode = function (tagName) {
+        return document.createElement('<rvml:' + tagName + ' class="rvml">');
+      };
+    } catch (e) {
+      this.createVmlNode = function (tagName) {
+        return document.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
+      };
+    }
+
+    document.createStyleSheet().addRule('.rvml', 'behavior:url(#default#VML)');
+  }
+
+  if (this.mode === 'svg') {
+    this.canvas = this.createSvgNode('svg');
+  } else {
+    this.canvas = this.createVmlNode('group');
+    this.canvas.style.position = 'absolute';
+  }
+
+  this.setSize(width, height);
+};
+
+VectorCanvas.prototype = {
+  svgns: 'http://www.w3.org/2000/svg',
+  mode: 'svg',
+  width: 0,
+  height: 0,
+  canvas: null
+};
diff --git a/js/vmap/src/VectorCanvas/applyTransformParams.js b/js/vmap/src/VectorCanvas/applyTransformParams.js
new file mode 100644 (file)
index 0000000..9c0ad2b
--- /dev/null
@@ -0,0 +1,8 @@
+VectorCanvas.prototype.applyTransformParams = function (scale, transX, transY) {
+  if (this.mode === 'svg') {
+    this.rootGroup.setAttribute('transform', 'scale(' + scale + ') translate(' + transX + ', ' + transY + ')');
+  } else {
+    this.rootGroup.coordorigin = (this.width - transX) + ',' + (this.height - transY);
+    this.rootGroup.coordsize = this.width / scale + ',' + this.height / scale;
+  }
+};
diff --git a/js/vmap/src/VectorCanvas/createGroup.js b/js/vmap/src/VectorCanvas/createGroup.js
new file mode 100644 (file)
index 0000000..bb8a490
--- /dev/null
@@ -0,0 +1,19 @@
+VectorCanvas.prototype.createGroup = function (isRoot) {
+  var node;
+  if (this.mode === 'svg') {
+    node = this.createSvgNode('g');
+  } else {
+    node = this.createVmlNode('group');
+    node.style.width = this.width + 'px';
+    node.style.height = this.height + 'px';
+    node.style.left = '0px';
+    node.style.top = '0px';
+    node.coordorigin = '0 0';
+    node.coordsize = this.width + ' ' + this.height;
+  }
+
+  if (isRoot) {
+    this.rootGroup = node;
+  }
+  return node;
+};
diff --git a/js/vmap/src/VectorCanvas/createPath.js b/js/vmap/src/VectorCanvas/createPath.js
new file mode 100644 (file)
index 0000000..94cc05e
--- /dev/null
@@ -0,0 +1,75 @@
+VectorCanvas.prototype.createPath = function (config) {
+  var node;
+  if (this.mode === 'svg') {
+    node = this.createSvgNode('path');
+    node.setAttribute('d', config.path);
+
+    if (this.params.borderColor !== null) {
+      node.setAttribute('stroke', this.params.borderColor);
+    }
+    if (this.params.borderWidth > 0) {
+      node.setAttribute('stroke-width', this.params.borderWidth);
+      node.setAttribute('stroke-linecap', 'round');
+      node.setAttribute('stroke-linejoin', 'round');
+    }
+    if (this.params.borderOpacity > 0) {
+      node.setAttribute('stroke-opacity', this.params.borderOpacity);
+    }
+
+    node.setFill = function (color) {
+      this.setAttribute('fill', color);
+      if (this.getAttribute('original') === null) {
+        this.setAttribute('original', color);
+      }
+    };
+
+    node.getFill = function () {
+      return this.getAttribute('fill');
+    };
+
+    node.getOriginalFill = function () {
+      return this.getAttribute('original');
+    };
+
+    node.setOpacity = function (opacity) {
+      this.setAttribute('fill-opacity', opacity);
+    };
+  } else {
+    node = this.createVmlNode('shape');
+    node.coordorigin = '0 0';
+    node.coordsize = this.width + ' ' + this.height;
+    node.style.width = this.width + 'px';
+    node.style.height = this.height + 'px';
+    node.fillcolor = JQVMap.defaultFillColor;
+    node.stroked = false;
+    node.path = VectorCanvas.pathSvgToVml(config.path);
+
+    var scale = this.createVmlNode('skew');
+    scale.on = true;
+    scale.matrix = '0.01,0,0,0.01,0,0';
+    scale.offset = '0,0';
+
+    node.appendChild(scale);
+
+    var fill = this.createVmlNode('fill');
+    node.appendChild(fill);
+
+    node.setFill = function (color) {
+      this.getElementsByTagName('fill')[0].color = color;
+      if (this.getAttribute('original') === null) {
+        this.setAttribute('original', color);
+      }
+    };
+
+    node.getFill = function () {
+      return this.getElementsByTagName('fill')[0].color;
+    };
+    node.getOriginalFill = function () {
+      return this.getAttribute('original');
+    };
+    node.setOpacity = function (opacity) {
+      this.getElementsByTagName('fill')[0].opacity = parseInt(opacity * 100, 10) + '%';
+    };
+  }
+  return node;
+};
diff --git a/js/vmap/src/VectorCanvas/pathSvgToVml.js b/js/vmap/src/VectorCanvas/pathSvgToVml.js
new file mode 100644 (file)
index 0000000..c480b87
--- /dev/null
@@ -0,0 +1,103 @@
+VectorCanvas.prototype.pathSvgToVml = function (path) {
+  var result = '';
+  var cx = 0, cy = 0, ctrlx, ctrly;
+
+  return path.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g, function (segment, letter, coords) {
+    coords = coords.replace(/(\d)-/g, '$1,-').replace(/\s+/g, ',').split(',');
+    if (!coords[0]) {
+      coords.shift();
+    }
+
+    for (var i = 0, l = coords.length; i < l; i++) {
+      coords[i] = Math.round(100 * coords[i]);
+    }
+
+    switch (letter) {
+      case 'm':
+        cx += coords[0];
+        cy += coords[1];
+        result = 't' + coords.join(',');
+        break;
+
+      case 'M':
+        cx = coords[0];
+        cy = coords[1];
+        result = 'm' + coords.join(',');
+        break;
+
+      case 'l':
+        cx += coords[0];
+        cy += coords[1];
+        result = 'r' + coords.join(',');
+        break;
+
+      case 'L':
+        cx = coords[0];
+        cy = coords[1];
+        result = 'l' + coords.join(',');
+        break;
+
+      case 'h':
+        cx += coords[0];
+        result = 'r' + coords[0] + ',0';
+        break;
+
+      case 'H':
+        cx = coords[0];
+        result = 'l' + cx + ',' + cy;
+        break;
+
+      case 'v':
+        cy += coords[0];
+        result = 'r0,' + coords[0];
+        break;
+
+      case 'V':
+        cy = coords[0];
+        result = 'l' + cx + ',' + cy;
+        break;
+
+      case 'c':
+        ctrlx = cx + coords[coords.length - 4];
+        ctrly = cy + coords[coords.length - 3];
+        cx += coords[coords.length - 2];
+        cy += coords[coords.length - 1];
+        result = 'v' + coords.join(',');
+        break;
+
+      case 'C':
+        ctrlx = coords[coords.length - 4];
+        ctrly = coords[coords.length - 3];
+        cx = coords[coords.length - 2];
+        cy = coords[coords.length - 1];
+        result = 'c' + coords.join(',');
+        break;
+
+      case 's':
+        coords.unshift(cy - ctrly);
+        coords.unshift(cx - ctrlx);
+        ctrlx = cx + coords[coords.length - 4];
+        ctrly = cy + coords[coords.length - 3];
+        cx += coords[coords.length - 2];
+        cy += coords[coords.length - 1];
+        result = 'v' + coords.join(',');
+        break;
+
+      case 'S':
+        coords.unshift(cy + cy - ctrly);
+        coords.unshift(cx + cx - ctrlx);
+        ctrlx = coords[coords.length - 4];
+        ctrly = coords[coords.length - 3];
+        cx = coords[coords.length - 2];
+        cy = coords[coords.length - 1];
+        result = 'c' + coords.join(',');
+        break;
+
+      default:
+        break;
+    }
+
+    return result;
+
+  }).replace(/z/g, '');
+};
diff --git a/js/vmap/src/VectorCanvas/setSize.js b/js/vmap/src/VectorCanvas/setSize.js
new file mode 100644 (file)
index 0000000..f8be97f
--- /dev/null
@@ -0,0 +1,24 @@
+VectorCanvas.prototype.setSize = function (width, height) {
+  if (this.mode === 'svg') {
+    this.canvas.setAttribute('width', width);
+    this.canvas.setAttribute('height', height);
+  } else {
+    this.canvas.style.width = width + 'px';
+    this.canvas.style.height = height + 'px';
+    this.canvas.coordsize = width + ' ' + height;
+    this.canvas.coordorigin = '0 0';
+    if (this.rootGroup) {
+      var paths = this.rootGroup.getElementsByTagName('shape');
+      for (var i = 0, l = paths.length; i < l; i++) {
+        paths[i].coordsize = width + ' ' + height;
+        paths[i].style.width = width + 'px';
+        paths[i].style.height = height + 'px';
+      }
+      this.rootGroup.coordsize = width + ' ' + height;
+      this.rootGroup.style.width = width + 'px';
+      this.rootGroup.style.height = height + 'px';
+    }
+  }
+  this.width = width;
+  this.height = height;
+};
diff --git a/js/vmap/tests/index.html b/js/vmap/tests/index.html
new file mode 100644 (file)
index 0000000..859e424
--- /dev/null
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html id="html">
+  <head>
+    <meta charset="utf-8">
+    <title>JQVMap - Test Suite</title>
+    <link rel="stylesheet" href="qunit/qunit.css">
+    <link rel="stylesheet" href="../dist/jqvmap.css">
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
+    <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
+    <script type="text/javascript" src="../dist/maps/jquery.vmap.world.js" charset="utf-8"></script>
+    <script src="qunit/qunit.js"></script>
+
+    <script src="tests.js"></script>
+  </head>
+  <body id="body">
+    <h1 id="qunit-header">
+      <a href="http://jqvmap.com/">JQVMap</a> Test Suite
+    </h1>
+
+    <div></div>
+    <h2 id="qunit-banner"></h2>
+
+    <div id="qunit-testrunner-toolbar"></div>
+    <h2 id="qunit-userAgent"></h2>
+    <ol id="qunit-tests"></ol>
+
+    <!-- Test HTML -->
+    <div id="test-map"></div>
+
+  </body>
+</html>
diff --git a/js/vmap/tests/qunit/qunit.css b/js/vmap/tests/qunit/qunit.css
new file mode 100644 (file)
index 0000000..8764c67
--- /dev/null
@@ -0,0 +1,291 @@
+/*!
+ * QUnit 1.18.0
+ * http://qunitjs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-04-03T10:23Z
+ */
+
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+  font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
+  margin: 0;
+  padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+  padding: 0.5em 0 0.5em 1em;
+
+  color: #8699A4;
+  background-color: #0D3349;
+
+  font-size: 1.5em;
+  line-height: 1em;
+  font-weight: 400;
+
+  border-radius: 5px 5px 0 0;
+}
+
+#qunit-header a {
+  text-decoration: none;
+  color: #C2CCD1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+  color: #FFF;
+}
+
+#qunit-testrunner-toolbar label {
+  display: inline-block;
+  padding: 0 0.5em 0 0.1em;
+}
+
+#qunit-banner {
+  height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+  padding: 0.5em 1em 0.5em 1em;
+  color: #5E740B;
+  background-color: #EEE;
+  overflow: hidden;
+}
+
+#qunit-userAgent {
+  padding: 0.5em 1em 0.5em 1em;
+  background-color: #2B81AF;
+  color: #FFF;
+  text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+#qunit-modulefilter-container {
+  float: right;
+  padding: 0.2em;
+}
+
+.qunit-url-config {
+  display: inline-block;
+  padding: 0.1em;
+}
+
+.qunit-filter {
+  display: block;
+  float: right;
+  margin-left: 1em;
+}
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+  list-style-position: inside;
+}
+
+#qunit-tests li {
+  padding: 0.4em 1em 0.4em 1em;
+  border-bottom: 1px solid #FFF;
+  list-style-position: inside;
+}
+
+#qunit-tests > li {
+  display: none;
+}
+
+#qunit-tests li.running,
+#qunit-tests li.pass,
+#qunit-tests li.fail,
+#qunit-tests li.skipped {
+  display: list-item;
+}
+
+#qunit-tests.hidepass li.running,
+#qunit-tests.hidepass li.pass {
+  visibility: hidden;
+  position: absolute;
+  width:   0px;
+  height:  0px;
+  padding: 0;
+  border:  0;
+  margin:  0;
+}
+
+#qunit-tests li strong {
+  cursor: pointer;
+}
+
+#qunit-tests li.skipped strong {
+  cursor: default;
+}
+
+#qunit-tests li a {
+  padding: 0.5em;
+  color: #C2CCD1;
+  text-decoration: none;
+}
+
+#qunit-tests li p a {
+  padding: 0.25em;
+  color: #6B6464;
+}
+#qunit-tests li a:hover,
+#qunit-tests li a:focus {
+  color: #000;
+}
+
+#qunit-tests li .runtime {
+  float: right;
+  font-size: smaller;
+}
+
+.qunit-assert-list {
+  margin-top: 0.5em;
+  padding: 0.5em;
+
+  background-color: #FFF;
+
+  border-radius: 5px;
+}
+
+.qunit-collapsed {
+  display: none;
+}
+
+#qunit-tests table {
+  border-collapse: collapse;
+  margin-top: 0.2em;
+}
+
+#qunit-tests th {
+  text-align: right;
+  vertical-align: top;
+  padding: 0 0.5em 0 0;
+}
+
+#qunit-tests td {
+  vertical-align: top;
+}
+
+#qunit-tests pre {
+  margin: 0;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+
+#qunit-tests del {
+  background-color: #E0F2BE;
+  color: #374E0C;
+  text-decoration: none;
+}
+
+#qunit-tests ins {
+  background-color: #FFCACA;
+  color: #500;
+  text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts                       { color: #000; }
+#qunit-tests b.passed                       { color: #5E740B; }
+#qunit-tests b.failed                       { color: #710909; }
+
+#qunit-tests li li {
+  padding: 5px;
+  background-color: #FFF;
+  border-bottom: none;
+  list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+  color: #3C510C;
+  background-color: #FFF;
+  border-left: 10px solid #C6E746;
+}
+
+#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name               { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected           { color: #999; }
+
+#qunit-banner.qunit-pass                    { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+  color: #710909;
+  background-color: #FFF;
+  border-left: 10px solid #EE5757;
+  white-space: pre;
+}
+
+#qunit-tests > li:last-child {
+  border-radius: 0 0 5px 5px;
+}
+
+#qunit-tests .fail                          { color: #000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name             { color: #000; }
+
+#qunit-tests .fail .test-actual             { color: #EE5757; }
+#qunit-tests .fail .test-expected           { color: #008000; }
+
+#qunit-banner.qunit-fail                    { background-color: #EE5757; }
+
+/*** Skipped tests */
+
+#qunit-tests .skipped {
+  background-color: #EBECE9;
+}
+
+#qunit-tests .qunit-skipped-label {
+  background-color: #F4FF77;
+  display: inline-block;
+  font-style: normal;
+  color: #366097;
+  line-height: 1.8em;
+  padding: 0 0.5em;
+  margin: -0.4em 0.4em -0.4em 0;
+}
+
+/** Result */
+
+#qunit-testresult {
+  padding: 0.5em 1em 0.5em 1em;
+
+  color: #2B81AF;
+  background-color: #D2E0E6;
+
+  border-bottom: 1px solid #FFF;
+}
+#qunit-testresult .module-name {
+  font-weight: 700;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+  position: absolute;
+  top: -10000px;
+  left: -10000px;
+  width: 1000px;
+  height: 1000px;
+}
diff --git a/js/vmap/tests/qunit/qunit.js b/js/vmap/tests/qunit/qunit.js
new file mode 100644 (file)
index 0000000..808e4ca
--- /dev/null
@@ -0,0 +1,3828 @@
+/*!
+ * QUnit 1.18.0
+ * http://qunitjs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-04-03T10:23Z
+ */
+
+(function( window ) {
+
+  var QUnit,
+    config,
+    onErrorFnPrev,
+    loggingCallbacks = {},
+    fileName = ( sourceFromStacktrace( 0 ) || "" ).replace( /(:\d+)+\)?/, "" ).replace( /.+\//, "" ),
+    toString = Object.prototype.toString,
+    hasOwn = Object.prototype.hasOwnProperty,
+  // Keep a local reference to Date (GH-283)
+    Date = window.Date,
+    now = Date.now || function() {
+        return new Date().getTime();
+      },
+    globalStartCalled = false,
+    runStarted = false,
+    setTimeout = window.setTimeout,
+    clearTimeout = window.clearTimeout,
+    defined = {
+      document: window.document !== undefined,
+      setTimeout: window.setTimeout !== undefined,
+      sessionStorage: (function() {
+        var x = "qunit-test-string";
+        try {
+          sessionStorage.setItem( x, x );
+          sessionStorage.removeItem( x );
+          return true;
+        } catch ( e ) {
+          return false;
+        }
+      }())
+    },
+    /**
+     * Provides a normalized error string, correcting an issue
+     * with IE 7 (and prior) where Error.prototype.toString is
+     * not properly implemented
+     *
+     * Based on http://es5.github.com/#x15.11.4.4
+     *
+     * @param {String|Error} error
+     * @return {String} error message
+     */
+    errorString = function( error ) {
+      var name, message,
+        errorString = error.toString();
+      if ( errorString.substring( 0, 7 ) === "[object" ) {
+        name = error.name ? error.name.toString() : "Error";
+        message = error.message ? error.message.toString() : "";
+        if ( name && message ) {
+          return name + ": " + message;
+        } else if ( name ) {
+          return name;
+        } else if ( message ) {
+          return message;
+        } else {
+          return "Error";
+        }
+      } else {
+        return errorString;
+      }
+    },
+    /**
+     * Makes a clone of an object using only Array or Object as base,
+     * and copies over the own enumerable properties.
+     *
+     * @param {Object} obj
+     * @return {Object} New object with only the own properties (recursively).
+     */
+    objectValues = function( obj ) {
+      var key, val,
+        vals = QUnit.is( "array", obj ) ? [] : {};
+      for ( key in obj ) {
+        if ( hasOwn.call( obj, key ) ) {
+          val = obj[ key ];
+          vals[ key ] = val === Object( val ) ? objectValues( val ) : val;
+        }
+      }
+      return vals;
+    };
+
+  QUnit = {};
+
+  /**
+   * Config object: Maintain internal state
+   * Later exposed as QUnit.config
+   * `config` initialized at top of scope
+   */
+  config = {
+    // The queue of tests to run
+    queue: [],
+
+    // block until document ready
+    blocking: true,
+
+    // by default, run previously failed tests first
+    // very useful in combination with "Hide passed tests" checked
+    reorder: true,
+
+    // by default, modify document.title when suite is done
+    altertitle: true,
+
+    // by default, scroll to top of the page when suite is done
+    scrolltop: true,
+
+    // when enabled, all tests must call expect()
+    requireExpects: false,
+
+    // depth up-to which object will be dumped
+    maxDepth: 5,
+
+    // add checkboxes that are persisted in the query-string
+    // when enabled, the id is set to `true` as a `QUnit.config` property
+    urlConfig: [
+      {
+        id: "hidepassed",
+        label: "Hide passed tests",
+        tooltip: "Only show tests and assertions that fail. Stored as query-strings."
+      },
+      {
+        id: "noglobals",
+        label: "Check for Globals",
+        tooltip: "Enabling this will test if any test introduces new properties on the " +
+        "`window` object. Stored as query-strings."
+      },
+      {
+        id: "notrycatch",
+        label: "No try-catch",
+        tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging " +
+        "exceptions in IE reasonable. Stored as query-strings."
+      }
+    ],
+
+    // Set of all modules.
+    modules: [],
+
+    // The first unnamed module
+    currentModule: {
+      name: "",
+      tests: []
+    },
+
+    callbacks: {}
+  };
+
+// Push a loose unnamed module to the modules collection
+  config.modules.push( config.currentModule );
+
+// Initialize more QUnit.config and QUnit.urlParams
+  (function() {
+    var i, current,
+      location = window.location || { search: "", protocol: "file:" },
+      params = location.search.slice( 1 ).split( "&" ),
+      length = params.length,
+      urlParams = {};
+
+    if ( params[ 0 ] ) {
+      for ( i = 0; i < length; i++ ) {
+        current = params[ i ].split( "=" );
+        current[ 0 ] = decodeURIComponent( current[ 0 ] );
+
+        // allow just a key to turn on a flag, e.g., test.html?noglobals
+        current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
+        if ( urlParams[ current[ 0 ] ] ) {
+          urlParams[ current[ 0 ] ] = [].concat( urlParams[ current[ 0 ] ], current[ 1 ] );
+        } else {
+          urlParams[ current[ 0 ] ] = current[ 1 ];
+        }
+      }
+    }
+
+    if ( urlParams.filter === true ) {
+      delete urlParams.filter;
+    }
+
+    QUnit.urlParams = urlParams;
+
+    // String search anywhere in moduleName+testName
+    config.filter = urlParams.filter;
+
+    if ( urlParams.maxDepth ) {
+      config.maxDepth = parseInt( urlParams.maxDepth, 10 ) === -1 ?
+        Number.POSITIVE_INFINITY :
+        urlParams.maxDepth;
+    }
+
+    config.testId = [];
+    if ( urlParams.testId ) {
+
+      // Ensure that urlParams.testId is an array
+      urlParams.testId = decodeURIComponent( urlParams.testId ).split( "," );
+      for ( i = 0; i < urlParams.testId.length; i++ ) {
+        config.testId.push( urlParams.testId[ i ] );
+      }
+    }
+
+    // Figure out if we're running the tests from a server or not
+    QUnit.isLocal = location.protocol === "file:";
+
+    // Expose the current QUnit version
+    QUnit.version = "1.18.0";
+  }());
+
+// Root QUnit object.
+// `QUnit` initialized at top of scope
+  extend( QUnit, {
+
+    // call on start of module test to prepend name to all tests
+    module: function( name, testEnvironment ) {
+      var currentModule = {
+        name: name,
+        testEnvironment: testEnvironment,
+        tests: []
+      };
+
+      // DEPRECATED: handles setup/teardown functions,
+      // beforeEach and afterEach should be used instead
+      if ( testEnvironment && testEnvironment.setup ) {
+        testEnvironment.beforeEach = testEnvironment.setup;
+        delete testEnvironment.setup;
+      }
+      if ( testEnvironment && testEnvironment.teardown ) {
+        testEnvironment.afterEach = testEnvironment.teardown;
+        delete testEnvironment.teardown;
+      }
+
+      config.modules.push( currentModule );
+      config.currentModule = currentModule;
+    },
+
+    // DEPRECATED: QUnit.asyncTest() will be removed in QUnit 2.0.
+    asyncTest: function( testName, expected, callback ) {
+      if ( arguments.length === 2 ) {
+        callback = expected;
+        expected = null;
+      }
+
+      QUnit.test( testName, expected, callback, true );
+    },
+
+    test: function( testName, expected, callback, async ) {
+      var test;
+
+      if ( arguments.length === 2 ) {
+        callback = expected;
+        expected = null;
+      }
+
+      test = new Test({
+        testName: testName,
+        expected: expected,
+        async: async,
+        callback: callback
+      });
+
+      test.queue();
+    },
+
+    skip: function( testName ) {
+      var test = new Test({
+        testName: testName,
+        skip: true
+      });
+
+      test.queue();
+    },
+
+    // DEPRECATED: The functionality of QUnit.start() will be altered in QUnit 2.0.
+    // In QUnit 2.0, invoking it will ONLY affect the `QUnit.config.autostart` blocking behavior.
+    start: function( count ) {
+      var globalStartAlreadyCalled = globalStartCalled;
+
+      if ( !config.current ) {
+        globalStartCalled = true;
+
+        if ( runStarted ) {
+          throw new Error( "Called start() outside of a test context while already started" );
+        } else if ( globalStartAlreadyCalled || count > 1 ) {
+          throw new Error( "Called start() outside of a test context too many times" );
+        } else if ( config.autostart ) {
+          throw new Error( "Called start() outside of a test context when " +
+            "QUnit.config.autostart was true" );
+        } else if ( !config.pageLoaded ) {
+
+          // The page isn't completely loaded yet, so bail out and let `QUnit.load` handle it
+          config.autostart = true;
+          return;
+        }
+      } else {
+
+        // If a test is running, adjust its semaphore
+        config.current.semaphore -= count || 1;
+
+        // Don't start until equal number of stop-calls
+        if ( config.current.semaphore > 0 ) {
+          return;
+        }
+
+        // throw an Error if start is called more often than stop
+        if ( config.current.semaphore < 0 ) {
+          config.current.semaphore = 0;
+
+          QUnit.pushFailure(
+            "Called start() while already started (test's semaphore was 0 already)",
+            sourceFromStacktrace( 2 )
+          );
+          return;
+        }
+      }
+
+      resumeProcessing();
+    },
+
+    // DEPRECATED: QUnit.stop() will be removed in QUnit 2.0.
+    stop: function( count ) {
+
+      // If there isn't a test running, don't allow QUnit.stop() to be called
+      if ( !config.current ) {
+        throw new Error( "Called stop() outside of a test context" );
+      }
+
+      // If a test is running, adjust its semaphore
+      config.current.semaphore += count || 1;
+
+      pauseProcessing();
+    },
+
+    config: config,
+
+    // Safe object type checking
+    is: function( type, obj ) {
+      return QUnit.objectType( obj ) === type;
+    },
+
+    objectType: function( obj ) {
+      if ( typeof obj === "undefined" ) {
+        return "undefined";
+      }
+
+      // Consider: typeof null === object
+      if ( obj === null ) {
+        return "null";
+      }
+
+      var match = toString.call( obj ).match( /^\[object\s(.*)\]$/ ),
+        type = match && match[ 1 ] || "";
+
+      switch ( type ) {
+        case "Number":
+          if ( isNaN( obj ) ) {
+            return "nan";
+          }
+          return "number";
+        case "String":
+        case "Boolean":
+        case "Array":
+        case "Date":
+        case "RegExp":
+        case "Function":
+          return type.toLowerCase();
+      }
+      if ( typeof obj === "object" ) {
+        return "object";
+      }
+      return undefined;
+    },
+
+    extend: extend,
+
+    load: function() {
+      config.pageLoaded = true;
+
+      // Initialize the configuration options
+      extend( config, {
+        stats: { all: 0, bad: 0 },
+        moduleStats: { all: 0, bad: 0 },
+        started: 0,
+        updateRate: 1000,
+        autostart: true,
+        filter: ""
+      }, true );
+
+      config.blocking = false;
+
+      if ( config.autostart ) {
+        resumeProcessing();
+      }
+    }
+  });
+
+// Register logging callbacks
+  (function() {
+    var i, l, key,
+      callbacks = [ "begin", "done", "log", "testStart", "testDone",
+        "moduleStart", "moduleDone" ];
+
+    function registerLoggingCallback( key ) {
+      var loggingCallback = function( callback ) {
+        if ( QUnit.objectType( callback ) !== "function" ) {
+          throw new Error(
+            "QUnit logging methods require a callback function as their first parameters."
+          );
+        }
+
+        config.callbacks[ key ].push( callback );
+      };
+
+      // DEPRECATED: This will be removed on QUnit 2.0.0+
+      // Stores the registered functions allowing restoring
+      // at verifyLoggingCallbacks() if modified
+      loggingCallbacks[ key ] = loggingCallback;
+
+      return loggingCallback;
+    }
+
+    for ( i = 0, l = callbacks.length; i < l; i++ ) {
+      key = callbacks[ i ];
+
+      // Initialize key collection of logging callback
+      if ( QUnit.objectType( config.callbacks[ key ] ) === "undefined" ) {
+        config.callbacks[ key ] = [];
+      }
+
+      QUnit[ key ] = registerLoggingCallback( key );
+    }
+  })();
+
+// `onErrorFnPrev` initialized at top of scope
+// Preserve other handlers
+  onErrorFnPrev = window.onerror;
+
+// Cover uncaught exceptions
+// Returning true will suppress the default browser handler,
+// returning false will let it run.
+  window.onerror = function( error, filePath, linerNr ) {
+    var ret = false;
+    if ( onErrorFnPrev ) {
+      ret = onErrorFnPrev( error, filePath, linerNr );
+    }
+
+    // Treat return value as window.onerror itself does,
+    // Only do our handling if not suppressed.
+    if ( ret !== true ) {
+      if ( QUnit.config.current ) {
+        if ( QUnit.config.current.ignoreGlobalErrors ) {
+          return true;
+        }
+        QUnit.pushFailure( error, filePath + ":" + linerNr );
+      } else {
+        QUnit.test( "global failure", extend(function() {
+          QUnit.pushFailure( error, filePath + ":" + linerNr );
+        }, { validTest: true } ) );
+      }
+      return false;
+    }
+
+    return ret;
+  };
+
+  function done() {
+    var runtime, passed;
+
+    config.autorun = true;
+
+    // Log the last module results
+    if ( config.previousModule ) {
+      runLoggingCallbacks( "moduleDone", {
+        name: config.previousModule.name,
+        tests: config.previousModule.tests,
+        failed: config.moduleStats.bad,
+        passed: config.moduleStats.all - config.moduleStats.bad,
+        total: config.moduleStats.all,
+        runtime: now() - config.moduleStats.started
+      });
+    }
+    delete config.previousModule;
+
+    runtime = now() - config.started;
+    passed = config.stats.all - config.stats.bad;
+
+    runLoggingCallbacks( "done", {
+      failed: config.stats.bad,
+      passed: passed,
+      total: config.stats.all,
+      runtime: runtime
+    });
+  }
+
+// Doesn't support IE6 to IE9, it will return undefined on these browsers
+// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
+  function extractStacktrace( e, offset ) {
+    offset = offset === undefined ? 4 : offset;
+
+    var stack, include, i;
+
+    if ( e.stack ) {
+      stack = e.stack.split( "\n" );
+      if ( /^error$/i.test( stack[ 0 ] ) ) {
+        stack.shift();
+      }
+      if ( fileName ) {
+        include = [];
+        for ( i = offset; i < stack.length; i++ ) {
+          if ( stack[ i ].indexOf( fileName ) !== -1 ) {
+            break;
+          }
+          include.push( stack[ i ] );
+        }
+        if ( include.length ) {
+          return include.join( "\n" );
+        }
+      }
+      return stack[ offset ];
+
+      // Support: Safari <=6 only
+    } else if ( e.sourceURL ) {
+
+      // exclude useless self-reference for generated Error objects
+      if ( /qunit.js$/.test( e.sourceURL ) ) {
+        return;
+      }
+
+      // for actual exceptions, this is useful
+      return e.sourceURL + ":" + e.line;
+    }
+  }
+
+  function sourceFromStacktrace( offset ) {
+    var error = new Error();
+
+    // Support: Safari <=7 only, IE <=10 - 11 only
+    // Not all browsers generate the `stack` property for `new Error()`, see also #636
+    if ( !error.stack ) {
+      try {
+        throw error;
+      } catch ( err ) {
+        error = err;
+      }
+    }
+
+    return extractStacktrace( error, offset );
+  }
+
+  function synchronize( callback, last ) {
+    if ( QUnit.objectType( callback ) === "array" ) {
+      while ( callback.length ) {
+        synchronize( callback.shift() );
+      }
+      return;
+    }
+    config.queue.push( callback );
+
+    if ( config.autorun && !config.blocking ) {
+      process( last );
+    }
+  }
+
+  function process( last ) {
+    function next() {
+      process( last );
+    }
+    var start = now();
+    config.depth = ( config.depth || 0 ) + 1;
+
+    while ( config.queue.length && !config.blocking ) {
+      if ( !defined.setTimeout || config.updateRate <= 0 ||
+        ( ( now() - start ) < config.updateRate ) ) {
+        if ( config.current ) {
+
+          // Reset async tracking for each phase of the Test lifecycle
+          config.current.usedAsync = false;
+        }
+        config.queue.shift()();
+      } else {
+        setTimeout( next, 13 );
+        break;
+      }
+    }
+    config.depth--;
+    if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
+      done();
+    }
+  }
+
+  function begin() {
+    var i, l,
+      modulesLog = [];
+
+    // If the test run hasn't officially begun yet
+    if ( !config.started ) {
+
+      // Record the time of the test run's beginning
+      config.started = now();
+
+      verifyLoggingCallbacks();
+
+      // Delete the loose unnamed module if unused.
+      if ( config.modules[ 0 ].name === "" && config.modules[ 0 ].tests.length === 0 ) {
+        config.modules.shift();
+      }
+
+      // Avoid unnecessary information by not logging modules' test environments
+      for ( i = 0, l = config.modules.length; i < l; i++ ) {
+        modulesLog.push({
+          name: config.modules[ i ].name,
+          tests: config.modules[ i ].tests
+        });
+      }
+
+      // The test run is officially beginning now
+      runLoggingCallbacks( "begin", {
+        totalTests: Test.count,
+        modules: modulesLog
+      });
+    }
+
+    config.blocking = false;
+    process( true );
+  }
+
+  function resumeProcessing() {
+    runStarted = true;
+
+    // A slight delay to allow this iteration of the event loop to finish (more assertions, etc.)
+    if ( defined.setTimeout ) {
+      setTimeout(function() {
+        if ( config.current && config.current.semaphore > 0 ) {
+          return;
+        }
+        if ( config.timeout ) {
+          clearTimeout( config.timeout );
+        }
+
+        begin();
+      }, 13 );
+    } else {
+      begin();
+    }
+  }
+
+  function pauseProcessing() {
+    config.blocking = true;
+
+    if ( config.testTimeout && defined.setTimeout ) {
+      clearTimeout( config.timeout );
+      config.timeout = setTimeout(function() {
+        if ( config.current ) {
+          config.current.semaphore = 0;
+          QUnit.pushFailure( "Test timed out", sourceFromStacktrace( 2 ) );
+        } else {
+          throw new Error( "Test timed out" );
+        }
+        resumeProcessing();
+      }, config.testTimeout );
+    }
+  }
+
+  function saveGlobal() {
+    config.pollution = [];
+
+    if ( config.noglobals ) {
+      for ( var key in window ) {
+        if ( hasOwn.call( window, key ) ) {
+          // in Opera sometimes DOM element ids show up here, ignore them
+          if ( /^qunit-test-output/.test( key ) ) {
+            continue;
+          }
+          config.pollution.push( key );
+        }
+      }
+    }
+  }
+
+  function checkPollution() {
+    var newGlobals,
+      deletedGlobals,
+      old = config.pollution;
+
+    saveGlobal();
+
+    newGlobals = diff( config.pollution, old );
+    if ( newGlobals.length > 0 ) {
+      QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join( ", " ) );
+    }
+
+    deletedGlobals = diff( old, config.pollution );
+    if ( deletedGlobals.length > 0 ) {
+      QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join( ", " ) );
+    }
+  }
+
+// returns a new Array with the elements that are in a but not in b
+  function diff( a, b ) {
+    var i, j,
+      result = a.slice();
+
+    for ( i = 0; i < result.length; i++ ) {
+      for ( j = 0; j < b.length; j++ ) {
+        if ( result[ i ] === b[ j ] ) {
+          result.splice( i, 1 );
+          i--;
+          break;
+        }
+      }
+    }
+    return result;
+  }
+
+  function extend( a, b, undefOnly ) {
+    for ( var prop in b ) {
+      if ( hasOwn.call( b, prop ) ) {
+
+        // Avoid "Member not found" error in IE8 caused by messing with window.constructor
+        if ( !( prop === "constructor" && a === window ) ) {
+          if ( b[ prop ] === undefined ) {
+            delete a[ prop ];
+          } else if ( !( undefOnly && typeof a[ prop ] !== "undefined" ) ) {
+            a[ prop ] = b[ prop ];
+          }
+        }
+      }
+    }
+
+    return a;
+  }
+
+  function runLoggingCallbacks( key, args ) {
+    var i, l, callbacks;
+
+    callbacks = config.callbacks[ key ];
+    for ( i = 0, l = callbacks.length; i < l; i++ ) {
+      callbacks[ i ]( args );
+    }
+  }
+
+// DEPRECATED: This will be removed on 2.0.0+
+// This function verifies if the loggingCallbacks were modified by the user
+// If so, it will restore it, assign the given callback and print a console warning
+  function verifyLoggingCallbacks() {
+    var loggingCallback, userCallback;
+
+    for ( loggingCallback in loggingCallbacks ) {
+      if ( QUnit[ loggingCallback ] !== loggingCallbacks[ loggingCallback ] ) {
+
+        userCallback = QUnit[ loggingCallback ];
+
+        // Restore the callback function
+        QUnit[ loggingCallback ] = loggingCallbacks[ loggingCallback ];
+
+        // Assign the deprecated given callback
+        QUnit[ loggingCallback ]( userCallback );
+
+        if ( window.console && window.console.warn ) {
+          window.console.warn(
+            "QUnit." + loggingCallback + " was replaced with a new value.\n" +
+            "Please, check out the documentation on how to apply logging callbacks.\n" +
+            "Reference: http://api.qunitjs.com/category/callbacks/"
+          );
+        }
+      }
+    }
+  }
+
+// from jquery.js
+  function inArray( elem, array ) {
+    if ( array.indexOf ) {
+      return array.indexOf( elem );
+    }
+
+    for ( var i = 0, length = array.length; i < length; i++ ) {
+      if ( array[ i ] === elem ) {
+        return i;
+      }
+    }
+
+    return -1;
+  }
+
+  function Test( settings ) {
+    var i, l;
+
+    ++Test.count;
+
+    extend( this, settings );
+    this.assertions = [];
+    this.semaphore = 0;
+    this.usedAsync = false;
+    this.module = config.currentModule;
+    this.stack = sourceFromStacktrace( 3 );
+
+    // Register unique strings
+    for ( i = 0, l = this.module.tests; i < l.length; i++ ) {
+      if ( this.module.tests[ i ].name === this.testName ) {
+        this.testName += " ";
+      }
+    }
+
+    this.testId = generateHash( this.module.name, this.testName );
+
+    this.module.tests.push({
+      name: this.testName,
+      testId: this.testId
+    });
+
+    if ( settings.skip ) {
+
+      // Skipped tests will fully ignore any sent callback
+      this.callback = function() {};
+      this.async = false;
+      this.expected = 0;
+    } else {
+      this.assert = new Assert( this );
+    }
+  }
+
+  Test.count = 0;
+
+  Test.prototype = {
+    before: function() {
+      if (
+
+        // Emit moduleStart when we're switching from one module to another
+      this.module !== config.previousModule ||
+
+        // They could be equal (both undefined) but if the previousModule property doesn't
+        // yet exist it means this is the first test in a suite that isn't wrapped in a
+        // module, in which case we'll just emit a moduleStart event for 'undefined'.
+        // Without this, reporters can get testStart before moduleStart  which is a problem.
+      !hasOwn.call( config, "previousModule" )
+      ) {
+        if ( hasOwn.call( config, "previousModule" ) ) {
+          runLoggingCallbacks( "moduleDone", {
+            name: config.previousModule.name,
+            tests: config.previousModule.tests,
+            failed: config.moduleStats.bad,
+            passed: config.moduleStats.all - config.moduleStats.bad,
+            total: config.moduleStats.all,
+            runtime: now() - config.moduleStats.started
+          });
+        }
+        config.previousModule = this.module;
+        config.moduleStats = { all: 0, bad: 0, started: now() };
+        runLoggingCallbacks( "moduleStart", {
+          name: this.module.name,
+          tests: this.module.tests
+        });
+      }
+
+      config.current = this;
+
+      this.testEnvironment = extend( {}, this.module.testEnvironment );
+      delete this.testEnvironment.beforeEach;
+      delete this.testEnvironment.afterEach;
+
+      this.started = now();
+      runLoggingCallbacks( "testStart", {
+        name: this.testName,
+        module: this.module.name,
+        testId: this.testId
+      });
+
+      if ( !config.pollution ) {
+        saveGlobal();
+      }
+    },
+
+    run: function() {
+      var promise;
+
+      config.current = this;
+
+      if ( this.async ) {
+        QUnit.stop();
+      }
+
+      this.callbackStarted = now();
+
+      if ( config.notrycatch ) {
+        promise = this.callback.call( this.testEnvironment, this.assert );
+        this.resolvePromise( promise );
+        return;
+      }
+
+      try {
+        promise = this.callback.call( this.testEnvironment, this.assert );
+        this.resolvePromise( promise );
+      } catch ( e ) {
+        this.pushFailure( "Died on test #" + ( this.assertions.length + 1 ) + " " +
+          this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) );
+
+        // else next test will carry the responsibility
+        saveGlobal();
+
+        // Restart the tests if they're blocking
+        if ( config.blocking ) {
+          QUnit.start();
+        }
+      }
+    },
+
+    after: function() {
+      checkPollution();
+    },
+
+    queueHook: function( hook, hookName ) {
+      var promise,
+        test = this;
+      return function runHook() {
+        config.current = test;
+        if ( config.notrycatch ) {
+          promise = hook.call( test.testEnvironment, test.assert );
+          test.resolvePromise( promise, hookName );
+          return;
+        }
+        try {
+          promise = hook.call( test.testEnvironment, test.assert );
+          test.resolvePromise( promise, hookName );
+        } catch ( error ) {
+          test.pushFailure( hookName + " failed on " + test.testName + ": " +
+            ( error.message || error ), extractStacktrace( error, 0 ) );
+        }
+      };
+    },
+
+    // Currently only used for module level hooks, can be used to add global level ones
+    hooks: function( handler ) {
+      var hooks = [];
+
+      // Hooks are ignored on skipped tests
+      if ( this.skip ) {
+        return hooks;
+      }
+
+      if ( this.module.testEnvironment &&
+        QUnit.objectType( this.module.testEnvironment[ handler ] ) === "function" ) {
+        hooks.push( this.queueHook( this.module.testEnvironment[ handler ], handler ) );
+      }
+
+      return hooks;
+    },
+
+    finish: function() {
+      config.current = this;
+      if ( config.requireExpects && this.expected === null ) {
+        this.pushFailure( "Expected number of assertions to be defined, but expect() was " +
+          "not called.", this.stack );
+      } else if ( this.expected !== null && this.expected !== this.assertions.length ) {
+        this.pushFailure( "Expected " + this.expected + " assertions, but " +
+          this.assertions.length + " were run", this.stack );
+      } else if ( this.expected === null && !this.assertions.length ) {
+        this.pushFailure( "Expected at least one assertion, but none were run - call " +
+          "expect(0) to accept zero assertions.", this.stack );
+      }
+
+      var i,
+        bad = 0;
+
+      this.runtime = now() - this.started;
+      config.stats.all += this.assertions.length;
+      config.moduleStats.all += this.assertions.length;
+
+      for ( i = 0; i < this.assertions.length; i++ ) {
+        if ( !this.assertions[ i ].result ) {
+          bad++;
+          config.stats.bad++;
+          config.moduleStats.bad++;
+        }
+      }
+
+      runLoggingCallbacks( "testDone", {
+        name: this.testName,
+        module: this.module.name,
+        skipped: !!this.skip,
+        failed: bad,
+        passed: this.assertions.length - bad,
+        total: this.assertions.length,
+        runtime: this.runtime,
+
+        // HTML Reporter use
+        assertions: this.assertions,
+        testId: this.testId,
+
+        // DEPRECATED: this property will be removed in 2.0.0, use runtime instead
+        duration: this.runtime
+      });
+
+      // QUnit.reset() is deprecated and will be replaced for a new
+      // fixture reset function on QUnit 2.0/2.1.
+      // It's still called here for backwards compatibility handling
+      QUnit.reset();
+
+      config.current = undefined;
+    },
+
+    queue: function() {
+      var bad,
+        test = this;
+
+      if ( !this.valid() ) {
+        return;
+      }
+
+      function run() {
+
+        // each of these can by async
+        synchronize([
+          function() {
+            test.before();
+          },
+
+          test.hooks( "beforeEach" ),
+
+          function() {
+            test.run();
+          },
+
+          test.hooks( "afterEach" ).reverse(),
+
+          function() {
+            test.after();
+          },
+          function() {
+            test.finish();
+          }
+        ]);
+      }
+
+      // `bad` initialized at top of scope
+      // defer when previous test run passed, if storage is available
+      bad = QUnit.config.reorder && defined.sessionStorage &&
+        +sessionStorage.getItem( "qunit-test-" + this.module.name + "-" + this.testName );
+
+      if ( bad ) {
+        run();
+      } else {
+        synchronize( run, true );
+      }
+    },
+
+    push: function( result, actual, expected, message ) {
+      var source,
+        details = {
+          module: this.module.name,
+          name: this.testName,
+          result: result,
+          message: message,
+          actual: actual,
+          expected: expected,
+          testId: this.testId,
+          runtime: now() - this.started
+        };
+
+      if ( !result ) {
+        source = sourceFromStacktrace();
+
+        if ( source ) {
+          details.source = source;
+        }
+      }
+
+      runLoggingCallbacks( "log", details );
+
+      this.assertions.push({
+        result: !!result,
+        message: message
+      });
+    },
+
+    pushFailure: function( message, source, actual ) {
+      if ( !this instanceof Test ) {
+        throw new Error( "pushFailure() assertion outside test context, was " +
+          sourceFromStacktrace( 2 ) );
+      }
+
+      var details = {
+        module: this.module.name,
+        name: this.testName,
+        result: false,
+        message: message || "error",
+        actual: actual || null,
+        testId: this.testId,
+        runtime: now() - this.started
+      };
+
+      if ( source ) {
+        details.source = source;
+      }
+
+      runLoggingCallbacks( "log", details );
+
+      this.assertions.push({
+        result: false,
+        message: message
+      });
+    },
+
+    resolvePromise: function( promise, phase ) {
+      var then, message,
+        test = this;
+      if ( promise != null ) {
+        then = promise.then;
+        if ( QUnit.objectType( then ) === "function" ) {
+          QUnit.stop();
+          then.call(
+            promise,
+            QUnit.start,
+            function( error ) {
+              message = "Promise rejected " +
+                ( !phase ? "during" : phase.replace( /Each$/, "" ) ) +
+                " " + test.testName + ": " + ( error.message || error );
+              test.pushFailure( message, extractStacktrace( error, 0 ) );
+
+              // else next test will carry the responsibility
+              saveGlobal();
+
+              // Unblock
+              QUnit.start();
+            }
+          );
+        }
+      }
+    },
+
+    valid: function() {
+      var include,
+        filter = config.filter && config.filter.toLowerCase(),
+        module = QUnit.urlParams.module && QUnit.urlParams.module.toLowerCase(),
+        fullName = ( this.module.name + ": " + this.testName ).toLowerCase();
+
+      // Internally-generated tests are always valid
+      if ( this.callback && this.callback.validTest ) {
+        return true;
+      }
+
+      if ( config.testId.length > 0 && inArray( this.testId, config.testId ) < 0 ) {
+        return false;
+      }
+
+      if ( module && ( !this.module.name || this.module.name.toLowerCase() !== module ) ) {
+        return false;
+      }
+
+      if ( !filter ) {
+        return true;
+      }
+
+      include = filter.charAt( 0 ) !== "!";
+      if ( !include ) {
+        filter = filter.slice( 1 );
+      }
+
+      // If the filter matches, we need to honour include
+      if ( fullName.indexOf( filter ) !== -1 ) {
+        return include;
+      }
+
+      // Otherwise, do the opposite
+      return !include;
+    }
+
+  };
+
+// Resets the test setup. Useful for tests that modify the DOM.
+  /*
+   DEPRECATED: Use multiple tests instead of resetting inside a test.
+   Use testStart or testDone for custom cleanup.
+   This method will throw an error in 2.0, and will be removed in 2.1
+   */
+  QUnit.reset = function() {
+
+    // Return on non-browser environments
+    // This is necessary to not break on node tests
+    if ( typeof window === "undefined" ) {
+      return;
+    }
+
+    var fixture = defined.document && document.getElementById &&
+      document.getElementById( "qunit-fixture" );
+
+    if ( fixture ) {
+      fixture.innerHTML = config.fixture;
+    }
+  };
+
+  QUnit.pushFailure = function() {
+    if ( !QUnit.config.current ) {
+      throw new Error( "pushFailure() assertion outside test context, in " +
+        sourceFromStacktrace( 2 ) );
+    }
+
+    // Gets current test obj
+    var currentTest = QUnit.config.current;
+
+    return currentTest.pushFailure.apply( currentTest, arguments );
+  };
+
+// Based on Java's String.hashCode, a simple but not
+// rigorously collision resistant hashing function
+  function generateHash( module, testName ) {
+    var hex,
+      i = 0,
+      hash = 0,
+      str = module + "\x1C" + testName,
+      len = str.length;
+
+    for ( ; i < len; i++ ) {
+      hash  = ( ( hash << 5 ) - hash ) + str.charCodeAt( i );
+      hash |= 0;
+    }
+
+    // Convert the possibly negative integer hash code into an 8 character hex string, which isn't
+    // strictly necessary but increases user understanding that the id is a SHA-like hash
+    hex = ( 0x100000000 + hash ).toString( 16 );
+    if ( hex.length < 8 ) {
+      hex = "0000000" + hex;
+    }
+
+    return hex.slice( -8 );
+  }
+
+  function Assert( testContext ) {
+    this.test = testContext;
+  }
+
+// Assert helpers
+  QUnit.assert = Assert.prototype = {
+
+    // Specify the number of expected assertions to guarantee that failed test
+    // (no assertions are run at all) don't slip through.
+    expect: function( asserts ) {
+      if ( arguments.length === 1 ) {
+        this.test.expected = asserts;
+      } else {
+        return this.test.expected;
+      }
+    },
+
+    // Increment this Test's semaphore counter, then return a single-use function that
+    // decrements that counter a maximum of once.
+    async: function() {
+      var test = this.test,
+        popped = false;
+
+      test.semaphore += 1;
+      test.usedAsync = true;
+      pauseProcessing();
+
+      return function done() {
+        if ( !popped ) {
+          test.semaphore -= 1;
+          popped = true;
+          resumeProcessing();
+        } else {
+          test.pushFailure( "Called the callback returned from `assert.async` more than once",
+            sourceFromStacktrace( 2 ) );
+        }
+      };
+    },
+
+    // Exports test.push() to the user API
+    push: function( /* result, actual, expected, message */ ) {
+      var assert = this,
+        currentTest = ( assert instanceof Assert && assert.test ) || QUnit.config.current;
+
+      // Backwards compatibility fix.
+      // Allows the direct use of global exported assertions and QUnit.assert.*
+      // Although, it's use is not recommended as it can leak assertions
+      // to other tests from async tests, because we only get a reference to the current test,
+      // not exactly the test where assertion were intended to be called.
+      if ( !currentTest ) {
+        throw new Error( "assertion outside test context, in " + sourceFromStacktrace( 2 ) );
+      }
+
+      if ( currentTest.usedAsync === true && currentTest.semaphore === 0 ) {
+        currentTest.pushFailure( "Assertion after the final `assert.async` was resolved",
+          sourceFromStacktrace( 2 ) );
+
+        // Allow this assertion to continue running anyway...
+      }
+
+      if ( !( assert instanceof Assert ) ) {
+        assert = currentTest.assert;
+      }
+      return assert.test.push.apply( assert.test, arguments );
+    },
+
+    ok: function( result, message ) {
+      message = message || ( result ? "okay" : "failed, expected argument to be truthy, was: " +
+        QUnit.dump.parse( result ) );
+      this.push( !!result, result, true, message );
+    },
+
+    notOk: function( result, message ) {
+      message = message || ( !result ? "okay" : "failed, expected argument to be falsy, was: " +
+        QUnit.dump.parse( result ) );
+      this.push( !result, result, false, message );
+    },
+
+    equal: function( actual, expected, message ) {
+      /*jshint eqeqeq:false */
+      this.push( expected == actual, actual, expected, message );
+    },
+
+    notEqual: function( actual, expected, message ) {
+      /*jshint eqeqeq:false */
+      this.push( expected != actual, actual, expected, message );
+    },
+
+    propEqual: function( actual, expected, message ) {
+      actual = objectValues( actual );
+      expected = objectValues( expected );
+      this.push( QUnit.equiv( actual, expected ), actual, expected, message );
+    },
+
+    notPropEqual: function( actual, expected, message ) {
+      actual = objectValues( actual );
+      expected = objectValues( expected );
+      this.push( !QUnit.equiv( actual, expected ), actual, expected, message );
+    },
+
+    deepEqual: function( actual, expected, message ) {
+      this.push( QUnit.equiv( actual, expected ), actual, expected, message );
+    },
+
+    notDeepEqual: function( actual, expected, message ) {
+      this.push( !QUnit.equiv( actual, expected ), actual, expected, message );
+    },
+
+    strictEqual: function( actual, expected, message ) {
+      this.push( expected === actual, actual, expected, message );
+    },
+
+    notStrictEqual: function( actual, expected, message ) {
+      this.push( expected !== actual, actual, expected, message );
+    },
+
+    "throws": function( block, expected, message ) {
+      var actual, expectedType,
+        expectedOutput = expected,
+        ok = false,
+        currentTest = ( this instanceof Assert && this.test ) || QUnit.config.current;
+
+      // 'expected' is optional unless doing string comparison
+      if ( message == null && typeof expected === "string" ) {
+        message = expected;
+        expected = null;
+      }
+
+      currentTest.ignoreGlobalErrors = true;
+      try {
+        block.call( currentTest.testEnvironment );
+      } catch (e) {
+        actual = e;
+      }
+      currentTest.ignoreGlobalErrors = false;
+
+      if ( actual ) {
+        expectedType = QUnit.objectType( expected );
+
+        // we don't want to validate thrown error
+        if ( !expected ) {
+          ok = true;
+          expectedOutput = null;
+
+          // expected is a regexp
+        } else if ( expectedType === "regexp" ) {
+          ok = expected.test( errorString( actual ) );
+
+          // expected is a string
+        } else if ( expectedType === "string" ) {
+          ok = expected === errorString( actual );
+
+          // expected is a constructor, maybe an Error constructor
+        } else if ( expectedType === "function" && actual instanceof expected ) {
+          ok = true;
+
+          // expected is an Error object
+        } else if ( expectedType === "object" ) {
+          ok = actual instanceof expected.constructor &&
+            actual.name === expected.name &&
+            actual.message === expected.message;
+
+          // expected is a validation function which returns true if validation passed
+        } else if ( expectedType === "function" && expected.call( {}, actual ) === true ) {
+          expectedOutput = null;
+          ok = true;
+        }
+      }
+
+      currentTest.assert.push( ok, actual, expectedOutput, message );
+    }
+  };
+
+// Provide an alternative to assert.throws(), for enviroments that consider throws a reserved word
+// Known to us are: Closure Compiler, Narwhal
+  (function() {
+    /*jshint sub:true */
+    Assert.prototype.raises = Assert.prototype[ "throws" ];
+  }());
+
+// Test for equality any JavaScript type.
+// Author: Philippe Rathé <prathe@gmail.com>
+  QUnit.equiv = (function() {
+
+    // Call the o related callback with the given arguments.
+    function bindCallbacks( o, callbacks, args ) {
+      var prop = QUnit.objectType( o );
+      if ( prop ) {
+        if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
+          return callbacks[ prop ].apply( callbacks, args );
+        } else {
+          return callbacks[ prop ]; // or undefined
+        }
+      }
+    }
+
+    // the real equiv function
+    var innerEquiv,
+
+    // stack to decide between skip/abort functions
+      callers = [],
+
+    // stack to avoiding loops from circular referencing
+      parents = [],
+      parentsB = [],
+
+      getProto = Object.getPrototypeOf || function( obj ) {
+          /* jshint camelcase: false, proto: true */
+          return obj.__proto__;
+        },
+      callbacks = (function() {
+
+        // for string, boolean, number and null
+        function useStrictEquality( b, a ) {
+
+          /*jshint eqeqeq:false */
+          if ( b instanceof a.constructor || a instanceof b.constructor ) {
+
+            // to catch short annotation VS 'new' annotation of a
+            // declaration
+            // e.g. var i = 1;
+            // var j = new Number(1);
+            return a == b;
+          } else {
+            return a === b;
+          }
+        }
+
+        return {
+          "string": useStrictEquality,
+          "boolean": useStrictEquality,
+          "number": useStrictEquality,
+          "null": useStrictEquality,
+          "undefined": useStrictEquality,
+
+          "nan": function( b ) {
+            return isNaN( b );
+          },
+
+          "date": function( b, a ) {
+            return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
+          },
+
+          "regexp": function( b, a ) {
+            return QUnit.objectType( b ) === "regexp" &&
+
+                // the regex itself
+              a.source === b.source &&
+
+                // and its modifiers
+              a.global === b.global &&
+
+                // (gmi) ...
+              a.ignoreCase === b.ignoreCase &&
+              a.multiline === b.multiline &&
+              a.sticky === b.sticky;
+          },
+
+          // - skip when the property is a method of an instance (OOP)
+          // - abort otherwise,
+          // initial === would have catch identical references anyway
+          "function": function() {
+            var caller = callers[ callers.length - 1 ];
+            return caller !== Object && typeof caller !== "undefined";
+          },
+
+          "array": function( b, a ) {
+            var i, j, len, loop, aCircular, bCircular;
+
+            // b could be an object literal here
+            if ( QUnit.objectType( b ) !== "array" ) {
+              return false;
+            }
+
+            len = a.length;
+            if ( len !== b.length ) {
+              // safe and faster
+              return false;
+            }
+
+            // track reference to avoid circular references
+            parents.push( a );
+            parentsB.push( b );
+            for ( i = 0; i < len; i++ ) {
+              loop = false;
+              for ( j = 0; j < parents.length; j++ ) {
+                aCircular = parents[ j ] === a[ i ];
+                bCircular = parentsB[ j ] === b[ i ];
+                if ( aCircular || bCircular ) {
+                  if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
+                    loop = true;
+                  } else {
+                    parents.pop();
+                    parentsB.pop();
+                    return false;
+                  }
+                }
+              }
+              if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
+                parents.pop();
+                parentsB.pop();
+                return false;
+              }
+            }
+            parents.pop();
+            parentsB.pop();
+            return true;
+          },
+
+          "object": function( b, a ) {
+
+            /*jshint forin:false */
+            var i, j, loop, aCircular, bCircular,
+            // Default to true
+              eq = true,
+              aProperties = [],
+              bProperties = [];
+
+            // comparing constructors is more strict than using
+            // instanceof
+            if ( a.constructor !== b.constructor ) {
+
+              // Allow objects with no prototype to be equivalent to
+              // objects with Object as their constructor.
+              if ( !( ( getProto( a ) === null && getProto( b ) === Object.prototype ) ||
+                ( getProto( b ) === null && getProto( a ) === Object.prototype ) ) ) {
+                return false;
+              }
+            }
+
+            // stack constructor before traversing properties
+            callers.push( a.constructor );
+
+            // track reference to avoid circular references
+            parents.push( a );
+            parentsB.push( b );
+
+            // be strict: don't ensure hasOwnProperty and go deep
+            for ( i in a ) {
+              loop = false;
+              for ( j = 0; j < parents.length; j++ ) {
+                aCircular = parents[ j ] === a[ i ];
+                bCircular = parentsB[ j ] === b[ i ];
+                if ( aCircular || bCircular ) {
+                  if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
+                    loop = true;
+                  } else {
+                    eq = false;
+                    break;
+                  }
+                }
+              }
+              aProperties.push( i );
+              if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
+                eq = false;
+                break;
+              }
+            }
+
+            parents.pop();
+            parentsB.pop();
+            callers.pop(); // unstack, we are done
+
+            for ( i in b ) {
+              bProperties.push( i ); // collect b's properties
+            }
+
+            // Ensures identical properties name
+            return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
+          }
+        };
+      }());
+
+    innerEquiv = function() { // can take multiple arguments
+      var args = [].slice.apply( arguments );
+      if ( args.length < 2 ) {
+        return true; // end transition
+      }
+
+      return ( (function( a, b ) {
+        if ( a === b ) {
+          return true; // catch the most you can
+        } else if ( a === null || b === null || typeof a === "undefined" ||
+          typeof b === "undefined" ||
+          QUnit.objectType( a ) !== QUnit.objectType( b ) ) {
+
+          // don't lose time with error prone cases
+          return false;
+        } else {
+          return bindCallbacks( a, callbacks, [ b, a ] );
+        }
+
+        // apply transition with (1..n) arguments
+      }( args[ 0 ], args[ 1 ] ) ) &&
+      innerEquiv.apply( this, args.splice( 1, args.length - 1 ) ) );
+    };
+
+    return innerEquiv;
+  }());
+
+// Based on jsDump by Ariel Flesler
+// http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html
+  QUnit.dump = (function() {
+    function quote( str ) {
+      return "\"" + str.toString().replace( /"/g, "\\\"" ) + "\"";
+    }
+    function literal( o ) {
+      return o + "";
+    }
+    function join( pre, arr, post ) {
+      var s = dump.separator(),
+        base = dump.indent(),
+        inner = dump.indent( 1 );
+      if ( arr.join ) {
+        arr = arr.join( "," + s + inner );
+      }
+      if ( !arr ) {
+        return pre + post;
+      }
+      return [ pre, inner + arr, base + post ].join( s );
+    }
+    function array( arr, stack ) {
+      var i = arr.length,
+        ret = new Array( i );
+
+      if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
+        return "[object Array]";
+      }
+
+      this.up();
+      while ( i-- ) {
+        ret[ i ] = this.parse( arr[ i ], undefined, stack );
+      }
+      this.down();
+      return join( "[", ret, "]" );
+    }
+
+    var reName = /^function (\w+)/,
+      dump = {
+
+        // objType is used mostly internally, you can fix a (custom) type in advance
+        parse: function( obj, objType, stack ) {
+          stack = stack || [];
+          var res, parser, parserType,
+            inStack = inArray( obj, stack );
+
+          if ( inStack !== -1 ) {
+            return "recursion(" + ( inStack - stack.length ) + ")";
+          }
+
+          objType = objType || this.typeOf( obj  );
+          parser = this.parsers[ objType ];
+          parserType = typeof parser;
+
+          if ( parserType === "function" ) {
+            stack.push( obj );
+            res = parser.call( this, obj, stack );
+            stack.pop();
+            return res;
+          }
+          return ( parserType === "string" ) ? parser : this.parsers.error;
+        },
+        typeOf: function( obj ) {
+          var type;
+          if ( obj === null ) {
+            type = "null";
+          } else if ( typeof obj === "undefined" ) {
+            type = "undefined";
+          } else if ( QUnit.is( "regexp", obj ) ) {
+            type = "regexp";
+          } else if ( QUnit.is( "date", obj ) ) {
+            type = "date";
+          } else if ( QUnit.is( "function", obj ) ) {
+            type = "function";
+          } else if ( obj.setInterval !== undefined &&
+            obj.document !== undefined &&
+            obj.nodeType === undefined ) {
+            type = "window";
+          } else if ( obj.nodeType === 9 ) {
+            type = "document";
+          } else if ( obj.nodeType ) {
+            type = "node";
+          } else if (
+
+            // native arrays
+          toString.call( obj ) === "[object Array]" ||
+
+            // NodeList objects
+          ( typeof obj.length === "number" && obj.item !== undefined &&
+          ( obj.length ? obj.item( 0 ) === obj[ 0 ] : ( obj.item( 0 ) === null &&
+          obj[ 0 ] === undefined ) ) )
+          ) {
+            type = "array";
+          } else if ( obj.constructor === Error.prototype.constructor ) {
+            type = "error";
+          } else {
+            type = typeof obj;
+          }
+          return type;
+        },
+        separator: function() {
+          return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&#160;" : " ";
+        },
+        // extra can be a number, shortcut for increasing-calling-decreasing
+        indent: function( extra ) {
+          if ( !this.multiline ) {
+            return "";
+          }
+          var chr = this.indentChar;
+          if ( this.HTML ) {
+            chr = chr.replace( /\t/g, "   " ).replace( / /g, "&#160;" );
+          }
+          return new Array( this.depth + ( extra || 0 ) ).join( chr );
+        },
+        up: function( a ) {
+          this.depth += a || 1;
+        },
+        down: function( a ) {
+          this.depth -= a || 1;
+        },
+        setParser: function( name, parser ) {
+          this.parsers[ name ] = parser;
+        },
+        // The next 3 are exposed so you can use them
+        quote: quote,
+        literal: literal,
+        join: join,
+        //
+        depth: 1,
+        maxDepth: QUnit.config.maxDepth,
+
+        // This is the list of parsers, to modify them, use dump.setParser
+        parsers: {
+          window: "[Window]",
+          document: "[Document]",
+          error: function( error ) {
+            return "Error(\"" + error.message + "\")";
+          },
+          unknown: "[Unknown]",
+          "null": "null",
+          "undefined": "undefined",
+          "function": function( fn ) {
+            var ret = "function",
+
+            // functions never have name in IE
+              name = "name" in fn ? fn.name : ( reName.exec( fn ) || [] )[ 1 ];
+
+            if ( name ) {
+              ret += " " + name;
+            }
+            ret += "( ";
+
+            ret = [ ret, dump.parse( fn, "functionArgs" ), "){" ].join( "" );
+            return join( ret, dump.parse( fn, "functionCode" ), "}" );
+          },
+          array: array,
+          nodelist: array,
+          "arguments": array,
+          object: function( map, stack ) {
+            var keys, key, val, i, nonEnumerableProperties,
+              ret = [];
+
+            if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
+              return "[object Object]";
+            }
+
+            dump.up();
+            keys = [];
+            for ( key in map ) {
+              keys.push( key );
+            }
+
+            // Some properties are not always enumerable on Error objects.
+            nonEnumerableProperties = [ "message", "name" ];
+            for ( i in nonEnumerableProperties ) {
+              key = nonEnumerableProperties[ i ];
+              if ( key in map && inArray( key, keys ) < 0 ) {
+                keys.push( key );
+              }
+            }
+            keys.sort();
+            for ( i = 0; i < keys.length; i++ ) {
+              key = keys[ i ];
+              val = map[ key ];
+              ret.push( dump.parse( key, "key" ) + ": " +
+                dump.parse( val, undefined, stack ) );
+            }
+            dump.down();
+            return join( "{", ret, "}" );
+          },
+          node: function( node ) {
+            var len, i, val,
+              open = dump.HTML ? "&lt;" : "<",
+              close = dump.HTML ? "&gt;" : ">",
+              tag = node.nodeName.toLowerCase(),
+              ret = open + tag,
+              attrs = node.attributes;
+
+            if ( attrs ) {
+              for ( i = 0, len = attrs.length; i < len; i++ ) {
+                val = attrs[ i ].nodeValue;
+
+                // IE6 includes all attributes in .attributes, even ones not explicitly
+                // set. Those have values like undefined, null, 0, false, "" or
+                // "inherit".
+                if ( val && val !== "inherit" ) {
+                  ret += " " + attrs[ i ].nodeName + "=" +
+                    dump.parse( val, "attribute" );
+                }
+              }
+            }
+            ret += close;
+
+            // Show content of TextNode or CDATASection
+            if ( node.nodeType === 3 || node.nodeType === 4 ) {
+              ret += node.nodeValue;
+            }
+
+            return ret + open + "/" + tag + close;
+          },
+
+          // function calls it internally, it's the arguments part of the function
+          functionArgs: function( fn ) {
+            var args,
+              l = fn.length;
+
+            if ( !l ) {
+              return "";
+            }
+
+            args = new Array( l );
+            while ( l-- ) {
+
+              // 97 is 'a'
+              args[ l ] = String.fromCharCode( 97 + l );
+            }
+            return " " + args.join( ", " ) + " ";
+          },
+          // object calls it internally, the key part of an item in a map
+          key: quote,
+          // function calls it internally, it's the content of the function
+          functionCode: "[code]",
+          // node calls it internally, it's an html attribute value
+          attribute: quote,
+          string: quote,
+          date: quote,
+          regexp: literal,
+          number: literal,
+          "boolean": literal
+        },
+        // if true, entities are escaped ( <, >, \t, space and \n )
+        HTML: false,
+        // indentation unit
+        indentChar: "  ",
+        // if true, items in a collection, are separated by a \n, else just a space.
+        multiline: true
+      };
+
+    return dump;
+  }());
+
+// back compat
+  QUnit.jsDump = QUnit.dump;
+
+// For browser, export only select globals
+  if ( typeof window !== "undefined" ) {
+
+    // Deprecated
+    // Extend assert methods to QUnit and Global scope through Backwards compatibility
+    (function() {
+      var i,
+        assertions = Assert.prototype;
+
+      function applyCurrent( current ) {
+        return function() {
+          var assert = new Assert( QUnit.config.current );
+          current.apply( assert, arguments );
+        };
+      }
+
+      for ( i in assertions ) {
+        QUnit[ i ] = applyCurrent( assertions[ i ] );
+      }
+    })();
+
+    (function() {
+      var i, l,
+        keys = [
+          "test",
+          "module",
+          "expect",
+          "asyncTest",
+          "start",
+          "stop",
+          "ok",
+          "notOk",
+          "equal",
+          "notEqual",
+          "propEqual",
+          "notPropEqual",
+          "deepEqual",
+          "notDeepEqual",
+          "strictEqual",
+          "notStrictEqual",
+          "throws"
+        ];
+
+      for ( i = 0, l = keys.length; i < l; i++ ) {
+        window[ keys[ i ] ] = QUnit[ keys[ i ] ];
+      }
+    })();
+
+    window.QUnit = QUnit;
+  }
+
+// For nodejs
+  if ( typeof module !== "undefined" && module && module.exports ) {
+    module.exports = QUnit;
+
+    // For consistency with CommonJS environments' exports
+    module.exports.QUnit = QUnit;
+  }
+
+// For CommonJS with exports, but without module.exports, like Rhino
+  if ( typeof exports !== "undefined" && exports ) {
+    exports.QUnit = QUnit;
+  }
+
+  if ( typeof define === "function" && define.amd ) {
+    define( function() {
+      return QUnit;
+    } );
+    QUnit.config.autostart = false;
+  }
+
+// Get a reference to the global object, like window in browsers
+}( (function() {
+  return this;
+})() ));
+
+/*istanbul ignore next */
+// jscs:disable maximumLineLength
+/*
+ * This file is a modified version of google-diff-match-patch's JavaScript implementation
+ * (https://code.google.com/p/google-diff-match-patch/source/browse/trunk/javascript/diff_match_patch_uncompressed.js),
+ * modifications are licensed as more fully set forth in LICENSE.txt.
+ *
+ * The original source of google-diff-match-patch is attributable and licensed as follows:
+ *
+ * Copyright 2006 Google Inc.
+ * http://code.google.com/p/google-diff-match-patch/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * More Info:
+ *  https://code.google.com/p/google-diff-match-patch/
+ *
+ * Usage: QUnit.diff(expected, actual)
+ *
+ * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) === "the  quick <del>brown </del> fox jump<ins>s</ins><del>ed</del over"
+ */
+QUnit.diff = (function() {
+
+  function DiffMatchPatch() {
+
+    // Defaults.
+    // Redefine these in your program to override the defaults.
+
+    // Number of seconds to map a diff before giving up (0 for infinity).
+    this.DiffTimeout = 1.0;
+    // Cost of an empty edit operation in terms of edit characters.
+    this.DiffEditCost = 4;
+  }
+
+  //  DIFF FUNCTIONS
+
+  /**
+   * The data structure representing a diff is an array of tuples:
+   * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]
+   * which means: delete 'Hello', add 'Goodbye' and keep ' world.'
+   */
+  var DIFF_DELETE = -1,
+    DIFF_INSERT = 1,
+    DIFF_EQUAL = 0;
+
+  /**
+   * Find the differences between two texts.  Simplifies the problem by stripping
+   * any common prefix or suffix off the texts before diffing.
+   * @param {string} text1 Old string to be diffed.
+   * @param {string} text2 New string to be diffed.
+   * @param {boolean=} optChecklines Optional speedup flag. If present and false,
+   *     then don't run a line-level diff first to identify the changed areas.
+   *     Defaults to true, which does a faster, slightly less optimal diff.
+   * @param {number} optDeadline Optional time when the diff should be complete
+   *     by.  Used internally for recursive calls.  Users should set DiffTimeout
+   *     instead.
+   * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
+   */
+  DiffMatchPatch.prototype.DiffMain = function( text1, text2, optChecklines, optDeadline ) {
+    var deadline, checklines, commonlength,
+      commonprefix, commonsuffix, diffs;
+    // Set a deadline by which time the diff must be complete.
+    if ( typeof optDeadline === "undefined" ) {
+      if ( this.DiffTimeout <= 0 ) {
+        optDeadline = Number.MAX_VALUE;
+      } else {
+        optDeadline = ( new Date() ).getTime() + this.DiffTimeout * 1000;
+      }
+    }
+    deadline = optDeadline;
+
+    // Check for null inputs.
+    if ( text1 === null || text2 === null ) {
+      throw new Error( "Null input. (DiffMain)" );
+    }
+
+    // Check for equality (speedup).
+    if ( text1 === text2 ) {
+      if ( text1 ) {
+        return [
+          [ DIFF_EQUAL, text1 ]
+        ];
+      }
+      return [];
+    }
+
+    if ( typeof optChecklines === "undefined" ) {
+      optChecklines = true;
+    }
+
+    checklines = optChecklines;
+
+    // Trim off common prefix (speedup).
+    commonlength = this.diffCommonPrefix( text1, text2 );
+    commonprefix = text1.substring( 0, commonlength );
+    text1 = text1.substring( commonlength );
+    text2 = text2.substring( commonlength );
+
+    // Trim off common suffix (speedup).
+    /////////
+    commonlength = this.diffCommonSuffix( text1, text2 );
+    commonsuffix = text1.substring( text1.length - commonlength );
+    text1 = text1.substring( 0, text1.length - commonlength );
+    text2 = text2.substring( 0, text2.length - commonlength );
+
+    // Compute the diff on the middle block.
+    diffs = this.diffCompute( text1, text2, checklines, deadline );
+
+    // Restore the prefix and suffix.
+    if ( commonprefix ) {
+      diffs.unshift( [ DIFF_EQUAL, commonprefix ] );
+    }
+    if ( commonsuffix ) {
+      diffs.push( [ DIFF_EQUAL, commonsuffix ] );
+    }
+    this.diffCleanupMerge( diffs );
+    return diffs;
+  };
+
+  /**
+   * Reduce the number of edits by eliminating operationally trivial equalities.
+   * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
+   */
+  DiffMatchPatch.prototype.diffCleanupEfficiency = function( diffs ) {
+    var changes, equalities, equalitiesLength, lastequality,
+      pointer, preIns, preDel, postIns, postDel;
+    changes = false;
+    equalities = []; // Stack of indices where equalities are found.
+    equalitiesLength = 0; // Keeping our own length var is faster in JS.
+    /** @type {?string} */
+    lastequality = null;
+    // Always equal to diffs[equalities[equalitiesLength - 1]][1]
+    pointer = 0; // Index of current position.
+    // Is there an insertion operation before the last equality.
+    preIns = false;
+    // Is there a deletion operation before the last equality.
+    preDel = false;
+    // Is there an insertion operation after the last equality.
+    postIns = false;
+    // Is there a deletion operation after the last equality.
+    postDel = false;
+    while ( pointer < diffs.length ) {
+      if ( diffs[ pointer ][ 0 ] === DIFF_EQUAL ) { // Equality found.
+        if ( diffs[ pointer ][ 1 ].length < this.DiffEditCost && ( postIns || postDel ) ) {
+          // Candidate found.
+          equalities[ equalitiesLength++ ] = pointer;
+          preIns = postIns;
+          preDel = postDel;
+          lastequality = diffs[ pointer ][ 1 ];
+        } else {
+          // Not a candidate, and can never become one.
+          equalitiesLength = 0;
+          lastequality = null;
+        }
+        postIns = postDel = false;
+      } else { // An insertion or deletion.
+        if ( diffs[ pointer ][ 0 ] === DIFF_DELETE ) {
+          postDel = true;
+        } else {
+          postIns = true;
+        }
+        /*
+         * Five types to be split:
+         * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
+         * <ins>A</ins>X<ins>C</ins><del>D</del>
+         * <ins>A</ins><del>B</del>X<ins>C</ins>
+         * <ins>A</del>X<ins>C</ins><del>D</del>
+         * <ins>A</ins><del>B</del>X<del>C</del>
+         */
+        if ( lastequality && ( ( preIns && preDel && postIns && postDel ) ||
+          ( ( lastequality.length < this.DiffEditCost / 2 ) &&
+          ( preIns + preDel + postIns + postDel ) === 3 ) ) ) {
+          // Duplicate record.
+          diffs.splice( equalities[equalitiesLength - 1], 0, [ DIFF_DELETE, lastequality ] );
+          // Change second copy to insert.
+          diffs[ equalities[ equalitiesLength - 1 ] + 1 ][ 0 ] = DIFF_INSERT;
+          equalitiesLength--; // Throw away the equality we just deleted;
+          lastequality = null;
+          if (preIns && preDel) {
+            // No changes made which could affect previous entry, keep going.
+            postIns = postDel = true;
+            equalitiesLength = 0;
+          } else {
+            equalitiesLength--; // Throw away the previous equality.
+            pointer = equalitiesLength > 0 ? equalities[ equalitiesLength - 1 ] : -1;
+            postIns = postDel = false;
+          }
+          changes = true;
+        }
+      }
+      pointer++;
+    }
+
+    if ( changes ) {
+      this.diffCleanupMerge( diffs );
+    }
+  };
+
+  /**
+   * Convert a diff array into a pretty HTML report.
+   * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
+   * @param {integer} string to be beautified.
+   * @return {string} HTML representation.
+   */
+  DiffMatchPatch.prototype.diffPrettyHtml = function( diffs ) {
+    var op, data, x, html = [];
+    for ( x = 0; x < diffs.length; x++ ) {
+      op = diffs[x][0]; // Operation (insert, delete, equal)
+      data = diffs[x][1]; // Text of change.
+      switch ( op ) {
+        case DIFF_INSERT:
+          html[x] = "<ins>" + data + "</ins>";
+          break;
+        case DIFF_DELETE:
+          html[x] = "<del>" + data + "</del>";
+          break;
+        case DIFF_EQUAL:
+          html[x] = "<span>" + data + "</span>";
+          break;
+      }
+    }
+    return html.join("");
+  };
+
+  /**
+   * Determine the common prefix of two strings.
+   * @param {string} text1 First string.
+   * @param {string} text2 Second string.
+   * @return {number} The number of characters common to the start of each
+   *     string.
+   */
+  DiffMatchPatch.prototype.diffCommonPrefix = function( text1, text2 ) {
+    var pointermid, pointermax, pointermin, pointerstart;
+    // Quick check for common null cases.
+    if ( !text1 || !text2 || text1.charAt(0) !== text2.charAt(0) ) {
+      return 0;
+    }
+    // Binary search.
+    // Performance analysis: http://neil.fraser.name/news/2007/10/09/
+    pointermin = 0;
+    pointermax = Math.min( text1.length, text2.length );
+    pointermid = pointermax;
+    pointerstart = 0;
+    while ( pointermin < pointermid ) {
+      if ( text1.substring( pointerstart, pointermid ) === text2.substring( pointerstart, pointermid ) ) {
+        pointermin = pointermid;
+        pointerstart = pointermin;
+      } else {
+        pointermax = pointermid;
+      }
+      pointermid = Math.floor( ( pointermax - pointermin ) / 2 + pointermin );
+    }
+    return pointermid;
+  };
+
+  /**
+   * Determine the common suffix of two strings.
+   * @param {string} text1 First string.
+   * @param {string} text2 Second string.
+   * @return {number} The number of characters common to the end of each string.
+   */
+  DiffMatchPatch.prototype.diffCommonSuffix = function( text1, text2 ) {
+    var pointermid, pointermax, pointermin, pointerend;
+    // Quick check for common null cases.
+    if (!text1 || !text2 || text1.charAt(text1.length - 1) !== text2.charAt(text2.length - 1)) {
+      return 0;
+    }
+    // Binary search.
+    // Performance analysis: http://neil.fraser.name/news/2007/10/09/
+    pointermin = 0;
+    pointermax = Math.min(text1.length, text2.length);
+    pointermid = pointermax;
+    pointerend = 0;
+    while ( pointermin < pointermid ) {
+      if (text1.substring( text1.length - pointermid, text1.length - pointerend ) ===
+        text2.substring( text2.length - pointermid, text2.length - pointerend ) ) {
+        pointermin = pointermid;
+        pointerend = pointermin;
+      } else {
+        pointermax = pointermid;
+      }
+      pointermid = Math.floor( ( pointermax - pointermin ) / 2 + pointermin );
+    }
+    return pointermid;
+  };
+
+  /**
+   * Find the differences between two texts.  Assumes that the texts do not
+   * have any common prefix or suffix.
+   * @param {string} text1 Old string to be diffed.
+   * @param {string} text2 New string to be diffed.
+   * @param {boolean} checklines Speedup flag.  If false, then don't run a
+   *     line-level diff first to identify the changed areas.
+   *     If true, then run a faster, slightly less optimal diff.
+   * @param {number} deadline Time when the diff should be complete by.
+   * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
+   * @private
+   */
+  DiffMatchPatch.prototype.diffCompute = function( text1, text2, checklines, deadline ) {
+    var diffs, longtext, shorttext, i, hm,
+      text1A, text2A, text1B, text2B,
+      midCommon, diffsA, diffsB;
+
+    if ( !text1 ) {
+      // Just add some text (speedup).
+      return [
+        [ DIFF_INSERT, text2 ]
+      ];
+    }
+
+    if (!text2) {
+      // Just delete some text (speedup).
+      return [
+        [ DIFF_DELETE, text1 ]
+      ];
+    }
+
+    longtext = text1.length > text2.length ? text1 : text2;
+    shorttext = text1.length > text2.length ? text2 : text1;
+    i = longtext.indexOf( shorttext );
+    if ( i !== -1 ) {
+      // Shorter text is inside the longer text (speedup).
+      diffs = [
+        [ DIFF_INSERT, longtext.substring( 0, i ) ],
+        [ DIFF_EQUAL, shorttext ],
+        [ DIFF_INSERT, longtext.substring( i + shorttext.length ) ]
+      ];
+      // Swap insertions for deletions if diff is reversed.
+      if ( text1.length > text2.length ) {
+        diffs[0][0] = diffs[2][0] = DIFF_DELETE;
+      }
+      return diffs;
+    }
+
+    if ( shorttext.length === 1 ) {
+      // Single character string.
+      // After the previous speedup, the character can't be an equality.
+      return [
+        [ DIFF_DELETE, text1 ],
+        [ DIFF_INSERT, text2 ]
+      ];
+    }
+
+    // Check to see if the problem can be split in two.
+    hm = this.diffHalfMatch(text1, text2);
+    if (hm) {
+      // A half-match was found, sort out the return data.
+      text1A = hm[0];
+      text1B = hm[1];
+      text2A = hm[2];
+      text2B = hm[3];
+      midCommon = hm[4];
+      // Send both pairs off for separate processing.
+      diffsA = this.DiffMain(text1A, text2A, checklines, deadline);
+      diffsB = this.DiffMain(text1B, text2B, checklines, deadline);
+      // Merge the results.
+      return diffsA.concat([
+        [ DIFF_EQUAL, midCommon ]
+      ], diffsB);
+    }
+
+    if (checklines && text1.length > 100 && text2.length > 100) {
+      return this.diffLineMode(text1, text2, deadline);
+    }
+
+    return this.diffBisect(text1, text2, deadline);
+  };
+
+  /**
+   * Do the two texts share a substring which is at least half the length of the
+   * longer text?
+   * This speedup can produce non-minimal diffs.
+   * @param {string} text1 First string.
+   * @param {string} text2 Second string.
+   * @return {Array.<string>} Five element Array, containing the prefix of
+   *     text1, the suffix of text1, the prefix of text2, the suffix of
+   *     text2 and the common middle.  Or null if there was no match.
+   * @private
+   */
+  DiffMatchPatch.prototype.diffHalfMatch = function(text1, text2) {
+    var longtext, shorttext, dmp,
+      text1A, text2B, text2A, text1B, midCommon,
+      hm1, hm2, hm;
+    if (this.DiffTimeout <= 0) {
+      // Don't risk returning a non-optimal diff if we have unlimited time.
+      return null;
+    }
+    longtext = text1.length > text2.length ? text1 : text2;
+    shorttext = text1.length > text2.length ? text2 : text1;
+    if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {
+      return null; // Pointless.
+    }
+    dmp = this; // 'this' becomes 'window' in a closure.
+
+    /**
+     * Does a substring of shorttext exist within longtext such that the substring
+     * is at least half the length of longtext?
+     * Closure, but does not reference any external variables.
+     * @param {string} longtext Longer string.
+     * @param {string} shorttext Shorter string.
+     * @param {number} i Start index of quarter length substring within longtext.
+     * @return {Array.<string>} Five element Array, containing the prefix of
+     *     longtext, the suffix of longtext, the prefix of shorttext, the suffix
+     *     of shorttext and the common middle.  Or null if there was no match.
+     * @private
+     */
+    function diffHalfMatchI(longtext, shorttext, i) {
+      var seed, j, bestCommon, prefixLength, suffixLength,
+        bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB;
+      // Start with a 1/4 length substring at position i as a seed.
+      seed = longtext.substring(i, i + Math.floor(longtext.length / 4));
+      j = -1;
+      bestCommon = "";
+      while ((j = shorttext.indexOf(seed, j + 1)) !== -1) {
+        prefixLength = dmp.diffCommonPrefix(longtext.substring(i),
+          shorttext.substring(j));
+        suffixLength = dmp.diffCommonSuffix(longtext.substring(0, i),
+          shorttext.substring(0, j));
+        if (bestCommon.length < suffixLength + prefixLength) {
+          bestCommon = shorttext.substring(j - suffixLength, j) +
+            shorttext.substring(j, j + prefixLength);
+          bestLongtextA = longtext.substring(0, i - suffixLength);
+          bestLongtextB = longtext.substring(i + prefixLength);
+          bestShorttextA = shorttext.substring(0, j - suffixLength);
+          bestShorttextB = shorttext.substring(j + prefixLength);
+        }
+      }
+      if (bestCommon.length * 2 >= longtext.length) {
+        return [ bestLongtextA, bestLongtextB,
+          bestShorttextA, bestShorttextB, bestCommon
+        ];
+      } else {
+        return null;
+      }
+    }
+
+    // First check if the second quarter is the seed for a half-match.
+    hm1 = diffHalfMatchI(longtext, shorttext,
+      Math.ceil(longtext.length / 4));
+    // Check again based on the third quarter.
+    hm2 = diffHalfMatchI(longtext, shorttext,
+      Math.ceil(longtext.length / 2));
+    if (!hm1 && !hm2) {
+      return null;
+    } else if (!hm2) {
+      hm = hm1;
+    } else if (!hm1) {
+      hm = hm2;
+    } else {
+      // Both matched.  Select the longest.
+      hm = hm1[4].length > hm2[4].length ? hm1 : hm2;
+    }
+
+    // A half-match was found, sort out the return data.
+    text1A, text1B, text2A, text2B;
+    if (text1.length > text2.length) {
+      text1A = hm[0];
+      text1B = hm[1];
+      text2A = hm[2];
+      text2B = hm[3];
+    } else {
+      text2A = hm[0];
+      text2B = hm[1];
+      text1A = hm[2];
+      text1B = hm[3];
+    }
+    midCommon = hm[4];
+    return [ text1A, text1B, text2A, text2B, midCommon ];
+  };
+
+  /**
+   * Do a quick line-level diff on both strings, then rediff the parts for
+   * greater accuracy.
+   * This speedup can produce non-minimal diffs.
+   * @param {string} text1 Old string to be diffed.
+   * @param {string} text2 New string to be diffed.
+   * @param {number} deadline Time when the diff should be complete by.
+   * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
+   * @private
+   */
+  DiffMatchPatch.prototype.diffLineMode = function(text1, text2, deadline) {
+    var a, diffs, linearray, pointer, countInsert,
+      countDelete, textInsert, textDelete, j;
+    // Scan the text on a line-by-line basis first.
+    a = this.diffLinesToChars(text1, text2);
+    text1 = a.chars1;
+    text2 = a.chars2;
+    linearray = a.lineArray;
+
+    diffs = this.DiffMain(text1, text2, false, deadline);
+
+    // Convert the diff back to original text.
+    this.diffCharsToLines(diffs, linearray);
+    // Eliminate freak matches (e.g. blank lines)
+    this.diffCleanupSemantic(diffs);
+
+    // Rediff any replacement blocks, this time character-by-character.
+    // Add a dummy entry at the end.
+    diffs.push( [ DIFF_EQUAL, "" ] );
+    pointer = 0;
+    countDelete = 0;
+    countInsert = 0;
+    textDelete = "";
+    textInsert = "";
+    while (pointer < diffs.length) {
+      switch ( diffs[pointer][0] ) {
+        case DIFF_INSERT:
+          countInsert++;
+          textInsert += diffs[pointer][1];
+          break;
+        case DIFF_DELETE:
+          countDelete++;
+          textDelete += diffs[pointer][1];
+          break;
+        case DIFF_EQUAL:
+          // Upon reaching an equality, check for prior redundancies.
+          if (countDelete >= 1 && countInsert >= 1) {
+            // Delete the offending records and add the merged ones.
+            diffs.splice(pointer - countDelete - countInsert,
+              countDelete + countInsert);
+            pointer = pointer - countDelete - countInsert;
+            a = this.DiffMain(textDelete, textInsert, false, deadline);
+            for (j = a.length - 1; j >= 0; j--) {
+              diffs.splice( pointer, 0, a[j] );
+            }
+            pointer = pointer + a.length;
+          }
+          countInsert = 0;
+          countDelete = 0;
+          textDelete = "";
+          textInsert = "";
+          break;
+      }
+      pointer++;
+    }
+    diffs.pop(); // Remove the dummy entry at the end.
+
+    return diffs;
+  };
+
+  /**
+   * Find the 'middle snake' of a diff, split the problem in two
+   * and return the recursively constructed diff.
+   * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
+   * @param {string} text1 Old string to be diffed.
+   * @param {string} text2 New string to be diffed.
+   * @param {number} deadline Time at which to bail if not yet complete.
+   * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
+   * @private
+   */
+  DiffMatchPatch.prototype.diffBisect = function(text1, text2, deadline) {
+    var text1Length, text2Length, maxD, vOffset, vLength,
+      v1, v2, x, delta, front, k1start, k1end, k2start,
+      k2end, k2Offset, k1Offset, x1, x2, y1, y2, d, k1, k2;
+    // Cache the text lengths to prevent multiple calls.
+    text1Length = text1.length;
+    text2Length = text2.length;
+    maxD = Math.ceil((text1Length + text2Length) / 2);
+    vOffset = maxD;
+    vLength = 2 * maxD;
+    v1 = new Array(vLength);
+    v2 = new Array(vLength);
+    // Setting all elements to -1 is faster in Chrome & Firefox than mixing
+    // integers and undefined.
+    for (x = 0; x < vLength; x++) {
+      v1[x] = -1;
+      v2[x] = -1;
+    }
+    v1[vOffset + 1] = 0;
+    v2[vOffset + 1] = 0;
+    delta = text1Length - text2Length;
+    // If the total number of characters is odd, then the front path will collide
+    // with the reverse path.
+    front = (delta % 2 !== 0);
+    // Offsets for start and end of k loop.
+    // Prevents mapping of space beyond the grid.
+    k1start = 0;
+    k1end = 0;
+    k2start = 0;
+    k2end = 0;
+    for (d = 0; d < maxD; d++) {
+      // Bail out if deadline is reached.
+      if ((new Date()).getTime() > deadline) {
+        break;
+      }
+
+      // Walk the front path one step.
+      for (k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {
+        k1Offset = vOffset + k1;
+        if ( k1 === -d || ( k1 !== d && v1[ k1Offset - 1 ] < v1[ k1Offset + 1 ] ) ) {
+          x1 = v1[k1Offset + 1];
+        } else {
+          x1 = v1[k1Offset - 1] + 1;
+        }
+        y1 = x1 - k1;
+        while (x1 < text1Length && y1 < text2Length &&
+        text1.charAt(x1) === text2.charAt(y1)) {
+          x1++;
+          y1++;
+        }
+        v1[k1Offset] = x1;
+        if (x1 > text1Length) {
+          // Ran off the right of the graph.
+          k1end += 2;
+        } else if (y1 > text2Length) {
+          // Ran off the bottom of the graph.
+          k1start += 2;
+        } else if (front) {
+          k2Offset = vOffset + delta - k1;
+          if (k2Offset >= 0 && k2Offset < vLength && v2[k2Offset] !== -1) {
+            // Mirror x2 onto top-left coordinate system.
+            x2 = text1Length - v2[k2Offset];
+            if (x1 >= x2) {
+              // Overlap detected.
+              return this.diffBisectSplit(text1, text2, x1, y1, deadline);
+            }
+          }
+        }
+      }
+
+      // Walk the reverse path one step.
+      for (k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {
+        k2Offset = vOffset + k2;
+        if ( k2 === -d || (k2 !== d && v2[ k2Offset - 1 ] < v2[ k2Offset + 1 ] ) ) {
+          x2 = v2[k2Offset + 1];
+        } else {
+          x2 = v2[k2Offset - 1] + 1;
+        }
+        y2 = x2 - k2;
+        while (x2 < text1Length && y2 < text2Length &&
+        text1.charAt(text1Length - x2 - 1) ===
+        text2.charAt(text2Length - y2 - 1)) {
+          x2++;
+          y2++;
+        }
+        v2[k2Offset] = x2;
+        if (x2 > text1Length) {
+          // Ran off the left of the graph.
+          k2end += 2;
+        } else if (y2 > text2Length) {
+          // Ran off the top of the graph.
+          k2start += 2;
+        } else if (!front) {
+          k1Offset = vOffset + delta - k2;
+          if (k1Offset >= 0 && k1Offset < vLength && v1[k1Offset] !== -1) {
+            x1 = v1[k1Offset];
+            y1 = vOffset + x1 - k1Offset;
+            // Mirror x2 onto top-left coordinate system.
+            x2 = text1Length - x2;
+            if (x1 >= x2) {
+              // Overlap detected.
+              return this.diffBisectSplit(text1, text2, x1, y1, deadline);
+            }
+          }
+        }
+      }
+    }
+    // Diff took too long and hit the deadline or
+    // number of diffs equals number of characters, no commonality at all.
+    return [
+      [ DIFF_DELETE, text1 ],
+      [ DIFF_INSERT, text2 ]
+    ];
+  };
+
+  /**
+   * Given the location of the 'middle snake', split the diff in two parts
+   * and recurse.
+   * @param {string} text1 Old string to be diffed.
+   * @param {string} text2 New string to be diffed.
+   * @param {number} x Index of split point in text1.
+   * @param {number} y Index of split point in text2.
+   * @param {number} deadline Time at which to bail if not yet complete.
+   * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
+   * @private
+   */
+  DiffMatchPatch.prototype.diffBisectSplit = function( text1, text2, x, y, deadline ) {
+    var text1a, text1b, text2a, text2b, diffs, diffsb;
+    text1a = text1.substring(0, x);
+    text2a = text2.substring(0, y);
+    text1b = text1.substring(x);
+    text2b = text2.substring(y);
+
+    // Compute both diffs serially.
+    diffs = this.DiffMain(text1a, text2a, false, deadline);
+    diffsb = this.DiffMain(text1b, text2b, false, deadline);
+
+    return diffs.concat(diffsb);
+  };
+
+  /**
+   * Reduce the number of edits by eliminating semantically trivial equalities.
+   * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
+   */
+  DiffMatchPatch.prototype.diffCleanupSemantic = function(diffs) {
+    var changes, equalities, equalitiesLength, lastequality,
+      pointer, lengthInsertions2, lengthDeletions2, lengthInsertions1,
+      lengthDeletions1, deletion, insertion, overlapLength1, overlapLength2;
+    changes = false;
+    equalities = []; // Stack of indices where equalities are found.
+    equalitiesLength = 0; // Keeping our own length var is faster in JS.
+    /** @type {?string} */
+    lastequality = null;
+    // Always equal to diffs[equalities[equalitiesLength - 1]][1]
+    pointer = 0; // Index of current position.
+    // Number of characters that changed prior to the equality.
+    lengthInsertions1 = 0;
+    lengthDeletions1 = 0;
+    // Number of characters that changed after the equality.
+    lengthInsertions2 = 0;
+    lengthDeletions2 = 0;
+    while (pointer < diffs.length) {
+      if (diffs[pointer][0] === DIFF_EQUAL) { // Equality found.
+        equalities[equalitiesLength++] = pointer;
+        lengthInsertions1 = lengthInsertions2;
+        lengthDeletions1 = lengthDeletions2;
+        lengthInsertions2 = 0;
+        lengthDeletions2 = 0;
+        lastequality = diffs[pointer][1];
+      } else { // An insertion or deletion.
+        if (diffs[pointer][0] === DIFF_INSERT) {
+          lengthInsertions2 += diffs[pointer][1].length;
+        } else {
+          lengthDeletions2 += diffs[pointer][1].length;
+        }
+        // Eliminate an equality that is smaller or equal to the edits on both
+        // sides of it.
+        if (lastequality && (lastequality.length <=
+          Math.max(lengthInsertions1, lengthDeletions1)) &&
+          (lastequality.length <= Math.max(lengthInsertions2,
+            lengthDeletions2))) {
+          // Duplicate record.
+          diffs.splice( equalities[ equalitiesLength - 1 ], 0, [ DIFF_DELETE, lastequality ] );
+          // Change second copy to insert.
+          diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;
+          // Throw away the equality we just deleted.
+          equalitiesLength--;
+          // Throw away the previous equality (it needs to be reevaluated).
+          equalitiesLength--;
+          pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;
+          lengthInsertions1 = 0; // Reset the counters.
+          lengthDeletions1 = 0;
+          lengthInsertions2 = 0;
+          lengthDeletions2 = 0;
+          lastequality = null;
+          changes = true;
+        }
+      }
+      pointer++;
+    }
+
+    // Normalize the diff.
+    if (changes) {
+      this.diffCleanupMerge(diffs);
+    }
+
+    // Find any overlaps between deletions and insertions.
+    // e.g: <del>abcxxx</del><ins>xxxdef</ins>
+    //   -> <del>abc</del>xxx<ins>def</ins>
+    // e.g: <del>xxxabc</del><ins>defxxx</ins>
+    //   -> <ins>def</ins>xxx<del>abc</del>
+    // Only extract an overlap if it is as big as the edit ahead or behind it.
+    pointer = 1;
+    while (pointer < diffs.length) {
+      if (diffs[pointer - 1][0] === DIFF_DELETE &&
+        diffs[pointer][0] === DIFF_INSERT) {
+        deletion = diffs[pointer - 1][1];
+        insertion = diffs[pointer][1];
+        overlapLength1 = this.diffCommonOverlap(deletion, insertion);
+        overlapLength2 = this.diffCommonOverlap(insertion, deletion);
+        if (overlapLength1 >= overlapLength2) {
+          if (overlapLength1 >= deletion.length / 2 ||
+            overlapLength1 >= insertion.length / 2) {
+            // Overlap found.  Insert an equality and trim the surrounding edits.
+            diffs.splice( pointer, 0, [ DIFF_EQUAL, insertion.substring( 0, overlapLength1 ) ] );
+            diffs[pointer - 1][1] =
+              deletion.substring(0, deletion.length - overlapLength1);
+            diffs[pointer + 1][1] = insertion.substring(overlapLength1);
+            pointer++;
+          }
+        } else {
+          if (overlapLength2 >= deletion.length / 2 ||
+            overlapLength2 >= insertion.length / 2) {
+            // Reverse overlap found.
+            // Insert an equality and swap and trim the surrounding edits.
+            diffs.splice( pointer, 0, [ DIFF_EQUAL, deletion.substring( 0, overlapLength2 ) ] );
+            diffs[pointer - 1][0] = DIFF_INSERT;
+            diffs[pointer - 1][1] =
+              insertion.substring(0, insertion.length - overlapLength2);
+            diffs[pointer + 1][0] = DIFF_DELETE;
+            diffs[pointer + 1][1] =
+              deletion.substring(overlapLength2);
+            pointer++;
+          }
+        }
+        pointer++;
+      }
+      pointer++;
+    }
+  };
+
+  /**
+   * Determine if the suffix of one string is the prefix of another.
+   * @param {string} text1 First string.
+   * @param {string} text2 Second string.
+   * @return {number} The number of characters common to the end of the first
+   *     string and the start of the second string.
+   * @private
+   */
+  DiffMatchPatch.prototype.diffCommonOverlap = function(text1, text2) {
+    var text1Length, text2Length, textLength,
+      best, length, pattern, found;
+    // Cache the text lengths to prevent multiple calls.
+    text1Length = text1.length;
+    text2Length = text2.length;
+    // Eliminate the null case.
+    if (text1Length === 0 || text2Length === 0) {
+      return 0;
+    }
+    // Truncate the longer string.
+    if (text1Length > text2Length) {
+      text1 = text1.substring(text1Length - text2Length);
+    } else if (text1Length < text2Length) {
+      text2 = text2.substring(0, text1Length);
+    }
+    textLength = Math.min(text1Length, text2Length);
+    // Quick check for the worst case.
+    if (text1 === text2) {
+      return textLength;
+    }
+
+    // Start by looking for a single character match
+    // and increase length until no match is found.
+    // Performance analysis: http://neil.fraser.name/news/2010/11/04/
+    best = 0;
+    length = 1;
+    while (true) {
+      pattern = text1.substring(textLength - length);
+      found = text2.indexOf(pattern);
+      if (found === -1) {
+        return best;
+      }
+      length += found;
+      if (found === 0 || text1.substring(textLength - length) ===
+        text2.substring(0, length)) {
+        best = length;
+        length++;
+      }
+    }
+  };
+
+  /**
+   * Split two texts into an array of strings.  Reduce the texts to a string of
+   * hashes where each Unicode character represents one line.
+   * @param {string} text1 First string.
+   * @param {string} text2 Second string.
+   * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}}
+   *     An object containing the encoded text1, the encoded text2 and
+   *     the array of unique strings.
+   *     The zeroth element of the array of unique strings is intentionally blank.
+   * @private
+   */
+  DiffMatchPatch.prototype.diffLinesToChars = function(text1, text2) {
+    var lineArray, lineHash, chars1, chars2;
+    lineArray = []; // e.g. lineArray[4] === 'Hello\n'
+    lineHash = {}; // e.g. lineHash['Hello\n'] === 4
+
+    // '\x00' is a valid character, but various debuggers don't like it.
+    // So we'll insert a junk entry to avoid generating a null character.
+    lineArray[0] = "";
+
+    /**
+     * Split a text into an array of strings.  Reduce the texts to a string of
+     * hashes where each Unicode character represents one line.
+     * Modifies linearray and linehash through being a closure.
+     * @param {string} text String to encode.
+     * @return {string} Encoded string.
+     * @private
+     */
+    function diffLinesToCharsMunge(text) {
+      var chars, lineStart, lineEnd, lineArrayLength, line;
+      chars = "";
+      // Walk the text, pulling out a substring for each line.
+      // text.split('\n') would would temporarily double our memory footprint.
+      // Modifying text would create many large strings to garbage collect.
+      lineStart = 0;
+      lineEnd = -1;
+      // Keeping our own length variable is faster than looking it up.
+      lineArrayLength = lineArray.length;
+      while (lineEnd < text.length - 1) {
+        lineEnd = text.indexOf("\n", lineStart);
+        if (lineEnd === -1) {
+          lineEnd = text.length - 1;
+        }
+        line = text.substring(lineStart, lineEnd + 1);
+        lineStart = lineEnd + 1;
+
+        if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) :
+            (lineHash[line] !== undefined)) {
+          chars += String.fromCharCode( lineHash[ line ] );
+        } else {
+          chars += String.fromCharCode(lineArrayLength);
+          lineHash[line] = lineArrayLength;
+          lineArray[lineArrayLength++] = line;
+        }
+      }
+      return chars;
+    }
+
+    chars1 = diffLinesToCharsMunge(text1);
+    chars2 = diffLinesToCharsMunge(text2);
+    return {
+      chars1: chars1,
+      chars2: chars2,
+      lineArray: lineArray
+    };
+  };
+
+  /**
+   * Rehydrate the text in a diff from a string of line hashes to real lines of
+   * text.
+   * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
+   * @param {!Array.<string>} lineArray Array of unique strings.
+   * @private
+   */
+  DiffMatchPatch.prototype.diffCharsToLines = function( diffs, lineArray ) {
+    var x, chars, text, y;
+    for ( x = 0; x < diffs.length; x++ ) {
+      chars = diffs[x][1];
+      text = [];
+      for ( y = 0; y < chars.length; y++ ) {
+        text[y] = lineArray[chars.charCodeAt(y)];
+      }
+      diffs[x][1] = text.join("");
+    }
+  };
+
+  /**
+   * Reorder and merge like edit sections.  Merge equalities.
+   * Any edit section can move as long as it doesn't cross an equality.
+   * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
+   */
+  DiffMatchPatch.prototype.diffCleanupMerge = function(diffs) {
+    var pointer, countDelete, countInsert, textInsert, textDelete,
+      commonlength, changes;
+    diffs.push( [ DIFF_EQUAL, "" ] ); // Add a dummy entry at the end.
+    pointer = 0;
+    countDelete = 0;
+    countInsert = 0;
+    textDelete = "";
+    textInsert = "";
+    commonlength;
+    while (pointer < diffs.length) {
+      switch ( diffs[ pointer ][ 0 ] ) {
+        case DIFF_INSERT:
+          countInsert++;
+          textInsert += diffs[pointer][1];
+          pointer++;
+          break;
+        case DIFF_DELETE:
+          countDelete++;
+          textDelete += diffs[pointer][1];
+          pointer++;
+          break;
+        case DIFF_EQUAL:
+          // Upon reaching an equality, check for prior redundancies.
+          if (countDelete + countInsert > 1) {
+            if (countDelete !== 0 && countInsert !== 0) {
+              // Factor out any common prefixies.
+              commonlength = this.diffCommonPrefix(textInsert, textDelete);
+              if (commonlength !== 0) {
+                if ((pointer - countDelete - countInsert) > 0 &&
+                  diffs[pointer - countDelete - countInsert - 1][0] ===
+                  DIFF_EQUAL) {
+                  diffs[pointer - countDelete - countInsert - 1][1] +=
+                    textInsert.substring(0, commonlength);
+                } else {
+                  diffs.splice( 0, 0, [ DIFF_EQUAL,
+                    textInsert.substring( 0, commonlength )
+                  ] );
+                  pointer++;
+                }
+                textInsert = textInsert.substring(commonlength);
+                textDelete = textDelete.substring(commonlength);
+              }
+              // Factor out any common suffixies.
+              commonlength = this.diffCommonSuffix(textInsert, textDelete);
+              if (commonlength !== 0) {
+                diffs[pointer][1] = textInsert.substring(textInsert.length -
+                    commonlength) + diffs[pointer][1];
+                textInsert = textInsert.substring(0, textInsert.length -
+                  commonlength);
+                textDelete = textDelete.substring(0, textDelete.length -
+                  commonlength);
+              }
+            }
+            // Delete the offending records and add the merged ones.
+            if (countDelete === 0) {
+              diffs.splice( pointer - countInsert,
+                countDelete + countInsert, [ DIFF_INSERT, textInsert ] );
+            } else if (countInsert === 0) {
+              diffs.splice( pointer - countDelete,
+                countDelete + countInsert, [ DIFF_DELETE, textDelete ] );
+            } else {
+              diffs.splice( pointer - countDelete - countInsert,
+                countDelete + countInsert, [ DIFF_DELETE, textDelete ], [ DIFF_INSERT, textInsert ] );
+            }
+            pointer = pointer - countDelete - countInsert +
+              (countDelete ? 1 : 0) + (countInsert ? 1 : 0) + 1;
+          } else if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) {
+            // Merge this equality with the previous one.
+            diffs[pointer - 1][1] += diffs[pointer][1];
+            diffs.splice(pointer, 1);
+          } else {
+            pointer++;
+          }
+          countInsert = 0;
+          countDelete = 0;
+          textDelete = "";
+          textInsert = "";
+          break;
+      }
+    }
+    if (diffs[diffs.length - 1][1] === "") {
+      diffs.pop(); // Remove the dummy entry at the end.
+    }
+
+    // Second pass: look for single edits surrounded on both sides by equalities
+    // which can be shifted sideways to eliminate an equality.
+    // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC
+    changes = false;
+    pointer = 1;
+    // Intentionally ignore the first and last element (don't need checking).
+    while (pointer < diffs.length - 1) {
+      if (diffs[pointer - 1][0] === DIFF_EQUAL &&
+        diffs[pointer + 1][0] === DIFF_EQUAL) {
+        // This is a single edit surrounded by equalities.
+        if ( diffs[ pointer ][ 1 ].substring( diffs[ pointer ][ 1 ].length -
+            diffs[ pointer - 1 ][ 1 ].length ) === diffs[ pointer - 1 ][ 1 ] ) {
+          // Shift the edit over the previous equality.
+          diffs[pointer][1] = diffs[pointer - 1][1] +
+            diffs[pointer][1].substring(0, diffs[pointer][1].length -
+              diffs[pointer - 1][1].length);
+          diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];
+          diffs.splice(pointer - 1, 1);
+          changes = true;
+        } else if ( diffs[ pointer ][ 1 ].substring( 0, diffs[ pointer + 1 ][ 1 ].length ) ===
+          diffs[ pointer + 1 ][ 1 ] ) {
+          // Shift the edit over the next equality.
+          diffs[pointer - 1][1] += diffs[pointer + 1][1];
+          diffs[pointer][1] =
+            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +
+            diffs[pointer + 1][1];
+          diffs.splice(pointer + 1, 1);
+          changes = true;
+        }
+      }
+      pointer++;
+    }
+    // If shifts were made, the diff needs reordering and another shift sweep.
+    if (changes) {
+      this.diffCleanupMerge(diffs);
+    }
+  };
+
+  return function(o, n) {
+    var diff, output, text;
+    diff = new DiffMatchPatch();
+    output = diff.DiffMain(o, n);
+    //console.log(output);
+    diff.diffCleanupEfficiency(output);
+    text = diff.diffPrettyHtml(output);
+
+    return text;
+  };
+}());
+// jscs:enable
+
+(function() {
+
+// Deprecated QUnit.init - Ref #530
+// Re-initialize the configuration options
+  QUnit.init = function() {
+    var tests, banner, result, qunit,
+      config = QUnit.config;
+
+    config.stats = { all: 0, bad: 0 };
+    config.moduleStats = { all: 0, bad: 0 };
+    config.started = 0;
+    config.updateRate = 1000;
+    config.blocking = false;
+    config.autostart = true;
+    config.autorun = false;
+    config.filter = "";
+    config.queue = [];
+
+    // Return on non-browser environments
+    // This is necessary to not break on node tests
+    if ( typeof window === "undefined" ) {
+      return;
+    }
+
+    qunit = id( "qunit" );
+    if ( qunit ) {
+      qunit.innerHTML =
+        "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
+        "<h2 id='qunit-banner'></h2>" +
+        "<div id='qunit-testrunner-toolbar'></div>" +
+        "<h2 id='qunit-userAgent'></h2>" +
+        "<ol id='qunit-tests'></ol>";
+    }
+
+    tests = id( "qunit-tests" );
+    banner = id( "qunit-banner" );
+    result = id( "qunit-testresult" );
+
+    if ( tests ) {
+      tests.innerHTML = "";
+    }
+
+    if ( banner ) {
+      banner.className = "";
+    }
+
+    if ( result ) {
+      result.parentNode.removeChild( result );
+    }
+
+    if ( tests ) {
+      result = document.createElement( "p" );
+      result.id = "qunit-testresult";
+      result.className = "result";
+      tests.parentNode.insertBefore( result, tests );
+      result.innerHTML = "Running...<br />&#160;";
+    }
+  };
+
+// Don't load the HTML Reporter on non-Browser environments
+  if ( typeof window === "undefined" ) {
+    return;
+  }
+
+  var config = QUnit.config,
+    hasOwn = Object.prototype.hasOwnProperty,
+    defined = {
+      document: window.document !== undefined,
+      sessionStorage: (function() {
+        var x = "qunit-test-string";
+        try {
+          sessionStorage.setItem( x, x );
+          sessionStorage.removeItem( x );
+          return true;
+        } catch ( e ) {
+          return false;
+        }
+      }())
+    },
+    modulesList = [];
+
+  /**
+   * Escape text for attribute or text content.
+   */
+  function escapeText( s ) {
+    if ( !s ) {
+      return "";
+    }
+    s = s + "";
+
+    // Both single quotes and double quotes (for attributes)
+    return s.replace( /['"<>&]/g, function( s ) {
+      switch ( s ) {
+        case "'":
+          return "&#039;";
+        case "\"":
+          return "&quot;";
+        case "<":
+          return "&lt;";
+        case ">":
+          return "&gt;";
+        case "&":
+          return "&amp;";
+      }
+    });
+  }
+
+  /**
+   * @param {HTMLElement} elem
+   * @param {string} type
+   * @param {Function} fn
+   */
+  function addEvent( elem, type, fn ) {
+    if ( elem.addEventListener ) {
+
+      // Standards-based browsers
+      elem.addEventListener( type, fn, false );
+    } else if ( elem.attachEvent ) {
+
+      // support: IE <9
+      elem.attachEvent( "on" + type, function() {
+        var event = window.event;
+        if ( !event.target ) {
+          event.target = event.srcElement || document;
+        }
+
+        fn.call( elem, event );
+      });
+    }
+  }
+
+  /**
+   * @param {Array|NodeList} elems
+   * @param {string} type
+   * @param {Function} fn
+   */
+  function addEvents( elems, type, fn ) {
+    var i = elems.length;
+    while ( i-- ) {
+      addEvent( elems[ i ], type, fn );
+    }
+  }
+
+  function hasClass( elem, name ) {
+    return ( " " + elem.className + " " ).indexOf( " " + name + " " ) >= 0;
+  }
+
+  function addClass( elem, name ) {
+    if ( !hasClass( elem, name ) ) {
+      elem.className += ( elem.className ? " " : "" ) + name;
+    }
+  }
+
+  function toggleClass( elem, name ) {
+    if ( hasClass( elem, name ) ) {
+      removeClass( elem, name );
+    } else {
+      addClass( elem, name );
+    }
+  }
+
+  function removeClass( elem, name ) {
+    var set = " " + elem.className + " ";
+
+    // Class name may appear multiple times
+    while ( set.indexOf( " " + name + " " ) >= 0 ) {
+      set = set.replace( " " + name + " ", " " );
+    }
+
+    // trim for prettiness
+    elem.className = typeof set.trim === "function" ? set.trim() : set.replace( /^\s+|\s+$/g, "" );
+  }
+
+  function id( name ) {
+    return defined.document && document.getElementById && document.getElementById( name );
+  }
+
+  function getUrlConfigHtml() {
+    var i, j, val,
+      escaped, escapedTooltip,
+      selection = false,
+      len = config.urlConfig.length,
+      urlConfigHtml = "";
+
+    for ( i = 0; i < len; i++ ) {
+      val = config.urlConfig[ i ];
+      if ( typeof val === "string" ) {
+        val = {
+          id: val,
+          label: val
+        };
+      }
+
+      escaped = escapeText( val.id );
+      escapedTooltip = escapeText( val.tooltip );
+
+      if ( config[ val.id ] === undefined ) {
+        config[ val.id ] = QUnit.urlParams[ val.id ];
+      }
+
+      if ( !val.value || typeof val.value === "string" ) {
+        urlConfigHtml += "<input id='qunit-urlconfig-" + escaped +
+          "' name='" + escaped + "' type='checkbox'" +
+          ( val.value ? " value='" + escapeText( val.value ) + "'" : "" ) +
+          ( config[ val.id ] ? " checked='checked'" : "" ) +
+          " title='" + escapedTooltip + "' /><label for='qunit-urlconfig-" + escaped +
+          "' title='" + escapedTooltip + "'>" + val.label + "</label>";
+      } else {
+        urlConfigHtml += "<label for='qunit-urlconfig-" + escaped +
+          "' title='" + escapedTooltip + "'>" + val.label +
+          ": </label><select id='qunit-urlconfig-" + escaped +
+          "' name='" + escaped + "' title='" + escapedTooltip + "'><option></option>";
+
+        if ( QUnit.is( "array", val.value ) ) {
+          for ( j = 0; j < val.value.length; j++ ) {
+            escaped = escapeText( val.value[ j ] );
+            urlConfigHtml += "<option value='" + escaped + "'" +
+              ( config[ val.id ] === val.value[ j ] ?
+              ( selection = true ) && " selected='selected'" : "" ) +
+              ">" + escaped + "</option>";
+          }
+        } else {
+          for ( j in val.value ) {
+            if ( hasOwn.call( val.value, j ) ) {
+              urlConfigHtml += "<option value='" + escapeText( j ) + "'" +
+                ( config[ val.id ] === j ?
+                ( selection = true ) && " selected='selected'" : "" ) +
+                ">" + escapeText( val.value[ j ] ) + "</option>";
+            }
+          }
+        }
+        if ( config[ val.id ] && !selection ) {
+          escaped = escapeText( config[ val.id ] );
+          urlConfigHtml += "<option value='" + escaped +
+            "' selected='selected' disabled='disabled'>" + escaped + "</option>";
+        }
+        urlConfigHtml += "</select>";
+      }
+    }
+
+    return urlConfigHtml;
+  }
+
+// Handle "click" events on toolbar checkboxes and "change" for select menus.
+// Updates the URL with the new state of `config.urlConfig` values.
+  function toolbarChanged() {
+    var updatedUrl, value,
+      field = this,
+      params = {};
+
+    // Detect if field is a select menu or a checkbox
+    if ( "selectedIndex" in field ) {
+      value = field.options[ field.selectedIndex ].value || undefined;
+    } else {
+      value = field.checked ? ( field.defaultValue || true ) : undefined;
+    }
+
+    params[ field.name ] = value;
+    updatedUrl = setUrl( params );
+
+    if ( "hidepassed" === field.name && "replaceState" in window.history ) {
+      config[ field.name ] = value || false;
+      if ( value ) {
+        addClass( id( "qunit-tests" ), "hidepass" );
+      } else {
+        removeClass( id( "qunit-tests" ), "hidepass" );
+      }
+
+      // It is not necessary to refresh the whole page
+      window.history.replaceState( null, "", updatedUrl );
+    } else {
+      window.location = updatedUrl;
+    }
+  }
+
+  function setUrl( params ) {
+    var key,
+      querystring = "?";
+
+    params = QUnit.extend( QUnit.extend( {}, QUnit.urlParams ), params );
+
+    for ( key in params ) {
+      if ( hasOwn.call( params, key ) ) {
+        if ( params[ key ] === undefined ) {
+          continue;
+        }
+        querystring += encodeURIComponent( key );
+        if ( params[ key ] !== true ) {
+          querystring += "=" + encodeURIComponent( params[ key ] );
+        }
+        querystring += "&";
+      }
+    }
+    return location.protocol + "//" + location.host +
+      location.pathname + querystring.slice( 0, -1 );
+  }
+
+  function applyUrlParams() {
+    var selectedModule,
+      modulesList = id( "qunit-modulefilter" ),
+      filter = id( "qunit-filter-input" ).value;
+
+    selectedModule = modulesList ?
+      decodeURIComponent( modulesList.options[ modulesList.selectedIndex ].value ) :
+      undefined;
+
+    window.location = setUrl({
+      module: ( selectedModule === "" ) ? undefined : selectedModule,
+      filter: ( filter === "" ) ? undefined : filter,
+
+      // Remove testId filter
+      testId: undefined
+    });
+  }
+
+  function toolbarUrlConfigContainer() {
+    var urlConfigContainer = document.createElement( "span" );
+
+    urlConfigContainer.innerHTML = getUrlConfigHtml();
+    addClass( urlConfigContainer, "qunit-url-config" );
+
+    // For oldIE support:
+    // * Add handlers to the individual elements instead of the container
+    // * Use "click" instead of "change" for checkboxes
+    addEvents( urlConfigContainer.getElementsByTagName( "input" ), "click", toolbarChanged );
+    addEvents( urlConfigContainer.getElementsByTagName( "select" ), "change", toolbarChanged );
+
+    return urlConfigContainer;
+  }
+
+  function toolbarLooseFilter() {
+    var filter = document.createElement( "form" ),
+      label = document.createElement( "label" ),
+      input = document.createElement( "input" ),
+      button = document.createElement( "button" );
+
+    addClass( filter, "qunit-filter" );
+
+    label.innerHTML = "Filter: ";
+
+    input.type = "text";
+    input.value = config.filter || "";
+    input.name = "filter";
+    input.id = "qunit-filter-input";
+
+    button.innerHTML = "Go";
+
+    label.appendChild( input );
+
+    filter.appendChild( label );
+    filter.appendChild( button );
+    addEvent( filter, "submit", function( ev ) {
+      applyUrlParams();
+
+      if ( ev && ev.preventDefault ) {
+        ev.preventDefault();
+      }
+
+      return false;
+    });
+
+    return filter;
+  }
+
+  function toolbarModuleFilterHtml() {
+    var i,
+      moduleFilterHtml = "";
+
+    if ( !modulesList.length ) {
+      return false;
+    }
+
+    modulesList.sort(function( a, b ) {
+      return a.localeCompare( b );
+    });
+
+    moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label>" +
+      "<select id='qunit-modulefilter' name='modulefilter'><option value='' " +
+      ( QUnit.urlParams.module === undefined ? "selected='selected'" : "" ) +
+      ">< All Modules ></option>";
+
+    for ( i = 0; i < modulesList.length; i++ ) {
+      moduleFilterHtml += "<option value='" +
+        escapeText( encodeURIComponent( modulesList[ i ] ) ) + "' " +
+        ( QUnit.urlParams.module === modulesList[ i ] ? "selected='selected'" : "" ) +
+        ">" + escapeText( modulesList[ i ] ) + "</option>";
+    }
+    moduleFilterHtml += "</select>";
+
+    return moduleFilterHtml;
+  }
+
+  function toolbarModuleFilter() {
+    var toolbar = id( "qunit-testrunner-toolbar" ),
+      moduleFilter = document.createElement( "span" ),
+      moduleFilterHtml = toolbarModuleFilterHtml();
+
+    if ( !toolbar || !moduleFilterHtml ) {
+      return false;
+    }
+
+    moduleFilter.setAttribute( "id", "qunit-modulefilter-container" );
+    moduleFilter.innerHTML = moduleFilterHtml;
+
+    addEvent( moduleFilter.lastChild, "change", applyUrlParams );
+
+    toolbar.appendChild( moduleFilter );
+  }
+
+  function appendToolbar() {
+    var toolbar = id( "qunit-testrunner-toolbar" );
+
+    if ( toolbar ) {
+      toolbar.appendChild( toolbarUrlConfigContainer() );
+      toolbar.appendChild( toolbarLooseFilter() );
+    }
+  }
+
+  function appendHeader() {
+    var header = id( "qunit-header" );
+
+    if ( header ) {
+      header.innerHTML = "<a href='" +
+        setUrl({ filter: undefined, module: undefined, testId: undefined }) +
+        "'>" + header.innerHTML + "</a> ";
+    }
+  }
+
+  function appendBanner() {
+    var banner = id( "qunit-banner" );
+
+    if ( banner ) {
+      banner.className = "";
+    }
+  }
+
+  function appendTestResults() {
+    var tests = id( "qunit-tests" ),
+      result = id( "qunit-testresult" );
+
+    if ( result ) {
+      result.parentNode.removeChild( result );
+    }
+
+    if ( tests ) {
+      tests.innerHTML = "";
+      result = document.createElement( "p" );
+      result.id = "qunit-testresult";
+      result.className = "result";
+      tests.parentNode.insertBefore( result, tests );
+      result.innerHTML = "Running...<br />&#160;";
+    }
+  }
+
+  function storeFixture() {
+    var fixture = id( "qunit-fixture" );
+    if ( fixture ) {
+      config.fixture = fixture.innerHTML;
+    }
+  }
+
+  function appendUserAgent() {
+    var userAgent = id( "qunit-userAgent" );
+
+    if ( userAgent ) {
+      userAgent.innerHTML = "";
+      userAgent.appendChild(
+        document.createTextNode(
+          "QUnit " + QUnit.version  + "; " + navigator.userAgent
+        )
+      );
+    }
+  }
+
+  function appendTestsList( modules ) {
+    var i, l, x, z, test, moduleObj;
+
+    for ( i = 0, l = modules.length; i < l; i++ ) {
+      moduleObj = modules[ i ];
+
+      if ( moduleObj.name ) {
+        modulesList.push( moduleObj.name );
+      }
+
+      for ( x = 0, z = moduleObj.tests.length; x < z; x++ ) {
+        test = moduleObj.tests[ x ];
+
+        appendTest( test.name, test.testId, moduleObj.name );
+      }
+    }
+  }
+
+  function appendTest( name, testId, moduleName ) {
+    var title, rerunTrigger, testBlock, assertList,
+      tests = id( "qunit-tests" );
+
+    if ( !tests ) {
+      return;
+    }
+
+    title = document.createElement( "strong" );
+    title.innerHTML = getNameHtml( name, moduleName );
+
+    rerunTrigger = document.createElement( "a" );
+    rerunTrigger.innerHTML = "Rerun";
+    rerunTrigger.href = setUrl({ testId: testId });
+
+    testBlock = document.createElement( "li" );
+    testBlock.appendChild( title );
+    testBlock.appendChild( rerunTrigger );
+    testBlock.id = "qunit-test-output-" + testId;
+
+    assertList = document.createElement( "ol" );
+    assertList.className = "qunit-assert-list";
+
+    testBlock.appendChild( assertList );
+
+    tests.appendChild( testBlock );
+  }
+
+// HTML Reporter initialization and load
+  QUnit.begin(function( details ) {
+    var qunit = id( "qunit" );
+
+    // Fixture is the only one necessary to run without the #qunit element
+    storeFixture();
+
+    if ( qunit ) {
+      qunit.innerHTML =
+        "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
+        "<h2 id='qunit-banner'></h2>" +
+        "<div id='qunit-testrunner-toolbar'></div>" +
+        "<h2 id='qunit-userAgent'></h2>" +
+        "<ol id='qunit-tests'></ol>";
+    }
+
+    appendHeader();
+    appendBanner();
+    appendTestResults();
+    appendUserAgent();
+    appendToolbar();
+    appendTestsList( details.modules );
+    toolbarModuleFilter();
+
+    if ( qunit && config.hidepassed ) {
+      addClass( qunit.lastChild, "hidepass" );
+    }
+  });
+
+  QUnit.done(function( details ) {
+    var i, key,
+      banner = id( "qunit-banner" ),
+      tests = id( "qunit-tests" ),
+      html = [
+        "Tests completed in ",
+        details.runtime,
+        " milliseconds.<br />",
+        "<span class='passed'>",
+        details.passed,
+        "</span> assertions of <span class='total'>",
+        details.total,
+        "</span> passed, <span class='failed'>",
+        details.failed,
+        "</span> failed."
+      ].join( "" );
+
+    if ( banner ) {
+      banner.className = details.failed ? "qunit-fail" : "qunit-pass";
+    }
+
+    if ( tests ) {
+      id( "qunit-testresult" ).innerHTML = html;
+    }
+
+    if ( config.altertitle && defined.document && document.title ) {
+
+      // show ✖ for good, ✔ for bad suite result in title
+      // use escape sequences in case file gets loaded with non-utf-8-charset
+      document.title = [
+        ( details.failed ? "\u2716" : "\u2714" ),
+        document.title.replace( /^[\u2714\u2716] /i, "" )
+      ].join( " " );
+    }
+
+    // clear own sessionStorage items if all tests passed
+    if ( config.reorder && defined.sessionStorage && details.failed === 0 ) {
+      for ( i = 0; i < sessionStorage.length; i++ ) {
+        key = sessionStorage.key( i++ );
+        if ( key.indexOf( "qunit-test-" ) === 0 ) {
+          sessionStorage.removeItem( key );
+        }
+      }
+    }
+
+    // scroll back to top to show results
+    if ( config.scrolltop && window.scrollTo ) {
+      window.scrollTo( 0, 0 );
+    }
+  });
+
+  function getNameHtml( name, module ) {
+    var nameHtml = "";
+
+    if ( module ) {
+      nameHtml = "<span class='module-name'>" + escapeText( module ) + "</span>: ";
+    }
+
+    nameHtml += "<span class='test-name'>" + escapeText( name ) + "</span>";
+
+    return nameHtml;
+  }
+
+  QUnit.testStart(function( details ) {
+    var running, testBlock, bad;
+
+    testBlock = id( "qunit-test-output-" + details.testId );
+    if ( testBlock ) {
+      testBlock.className = "running";
+    } else {
+
+      // Report later registered tests
+      appendTest( details.name, details.testId, details.module );
+    }
+
+    running = id( "qunit-testresult" );
+    if ( running ) {
+      bad = QUnit.config.reorder && defined.sessionStorage &&
+        +sessionStorage.getItem( "qunit-test-" + details.module + "-" + details.name );
+
+      running.innerHTML = ( bad ?
+          "Rerunning previously failed test: <br />" :
+          "Running: <br />" ) +
+        getNameHtml( details.name, details.module );
+    }
+
+  });
+
+  QUnit.log(function( details ) {
+    var assertList, assertLi,
+      message, expected, actual,
+      testItem = id( "qunit-test-output-" + details.testId );
+
+    if ( !testItem ) {
+      return;
+    }
+
+    message = escapeText( details.message ) || ( details.result ? "okay" : "failed" );
+    message = "<span class='test-message'>" + message + "</span>";
+    message += "<span class='runtime'>@ " + details.runtime + " ms</span>";
+
+    // pushFailure doesn't provide details.expected
+    // when it calls, it's implicit to also not show expected and diff stuff
+    // Also, we need to check details.expected existence, as it can exist and be undefined
+    if ( !details.result && hasOwn.call( details, "expected" ) ) {
+      expected = escapeText( QUnit.dump.parse( details.expected ) );
+      actual = escapeText( QUnit.dump.parse( details.actual ) );
+      message += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" +
+        expected +
+        "</pre></td></tr>";
+
+      if ( actual !== expected ) {
+        message += "<tr class='test-actual'><th>Result: </th><td><pre>" +
+          actual + "</pre></td></tr>" +
+          "<tr class='test-diff'><th>Diff: </th><td><pre>" +
+          QUnit.diff( expected, actual ) + "</pre></td></tr>";
+      } else {
+        if ( expected.indexOf( "[object Array]" ) !== -1 ||
+          expected.indexOf( "[object Object]" ) !== -1 ) {
+          message += "<tr class='test-message'><th>Message: </th><td>" +
+            "Diff suppressed as the depth of object is more than current max depth (" +
+            QUnit.config.maxDepth + ").<p>Hint: Use <code>QUnit.dump.maxDepth</code> to " +
+            " run with a higher max depth or <a href='" + setUrl({ maxDepth: -1 }) + "'>" +
+            "Rerun</a> without max depth.</p></td></tr>";
+        }
+      }
+
+      if ( details.source ) {
+        message += "<tr class='test-source'><th>Source: </th><td><pre>" +
+          escapeText( details.source ) + "</pre></td></tr>";
+      }
+
+      message += "</table>";
+
+      // this occours when pushFailure is set and we have an extracted stack trace
+    } else if ( !details.result && details.source ) {
+      message += "<table>" +
+        "<tr class='test-source'><th>Source: </th><td><pre>" +
+        escapeText( details.source ) + "</pre></td></tr>" +
+        "</table>";
+    }
+
+    assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
+
+    assertLi = document.createElement( "li" );
+    assertLi.className = details.result ? "pass" : "fail";
+    assertLi.innerHTML = message;
+    assertList.appendChild( assertLi );
+  });
+
+  QUnit.testDone(function( details ) {
+    var testTitle, time, testItem, assertList,
+      good, bad, testCounts, skipped,
+      tests = id( "qunit-tests" );
+
+    if ( !tests ) {
+      return;
+    }
+
+    testItem = id( "qunit-test-output-" + details.testId );
+
+    assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
+
+    good = details.passed;
+    bad = details.failed;
+
+    // store result when possible
+    if ( config.reorder && defined.sessionStorage ) {
+      if ( bad ) {
+        sessionStorage.setItem( "qunit-test-" + details.module + "-" + details.name, bad );
+      } else {
+        sessionStorage.removeItem( "qunit-test-" + details.module + "-" + details.name );
+      }
+    }
+
+    if ( bad === 0 ) {
+      addClass( assertList, "qunit-collapsed" );
+    }
+
+    // testItem.firstChild is the test name
+    testTitle = testItem.firstChild;
+
+    testCounts = bad ?
+    "<b class='failed'>" + bad + "</b>, " + "<b class='passed'>" + good + "</b>, " :
+      "";
+
+    testTitle.innerHTML += " <b class='counts'>(" + testCounts +
+      details.assertions.length + ")</b>";
+
+    if ( details.skipped ) {
+      testItem.className = "skipped";
+      skipped = document.createElement( "em" );
+      skipped.className = "qunit-skipped-label";
+      skipped.innerHTML = "skipped";
+      testItem.insertBefore( skipped, testTitle );
+    } else {
+      addEvent( testTitle, "click", function() {
+        toggleClass( assertList, "qunit-collapsed" );
+      });
+
+      testItem.className = bad ? "fail" : "pass";
+
+      time = document.createElement( "span" );
+      time.className = "runtime";
+      time.innerHTML = details.runtime + " ms";
+      testItem.insertBefore( time, assertList );
+    }
+  });
+
+  if ( defined.document ) {
+    if ( document.readyState === "complete" ) {
+      QUnit.load();
+    } else {
+      addEvent( window, "load", QUnit.load );
+    }
+  } else {
+    config.pageLoaded = true;
+    config.autorun = true;
+  }
+
+})();
diff --git a/js/vmap/tests/tests.js b/js/vmap/tests/tests.js
new file mode 100644 (file)
index 0000000..e209877
--- /dev/null
@@ -0,0 +1,422 @@
+/**
+ * --------------------------------------------------------------------------------
+ * Test Basic Constructor
+ * --------------------------------------------------------------------------------
+ */
+
+module("jqvmap-base");
+
+test("Constructor Only", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap();
+
+  ok(map instanceof JQVMap, 'vectorMap() is instance of JQVMap');
+
+  $container.html('');
+});
+
+test("Accepts Config Options", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    backgroundColor: '#ffffff',
+    color: '#0D3349',
+    hoverOpacity: 0.7,
+    selectedColor: '#2B81AF',
+    enableZoom: true,
+    showTooltip: true
+  });
+
+  ok(map instanceof JQVMap, 'vectorMap() is instance of JQVMap');
+
+  $container.html('');
+});
+
+/**
+ * --------------------------------------------------------------------------------
+ * Test for Successful Configuration
+ * --------------------------------------------------------------------------------
+ */
+
+module("jqvmap-config-validation");
+
+test("Test Config Options", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    backgroundColor: '#ffffff',
+    borderColor: '#ffffff',
+    borderOpacity: 0.25,
+    borderWidth: 1,
+    color: '#000000',
+    colors: {
+      us: '#ff0000'
+    },
+    enableZoom: false,
+    hoverColor: '#0000FF',
+    hoverColors: {
+      us: '#ff0000'
+    },
+    hoverOpacity: 0.7,
+    normalizeFunction: 'polynomial',
+    scaleColors: ['#b6d6ff', '#005ace'],
+    selectedColor: '#333333',
+    selectedRegions: ['us', 'mx'],
+    multiSelectRegion: false,
+    showTooltip: false,
+    showLabels: true,
+    onLabelShow: function(){ return 'Label Showing'; },
+    onRegionOver: function(){ return 'Region Over'; },
+    onRegionOut: function(){ return 'Region Out'; },
+    onRegionClick: function(){ return 'Region Clicked'; },
+    pins: {
+      us: 'America'
+    },
+    pinMode: 'content'
+  });
+
+  equal(map.canvas.params.map, 'world_en', 'vectorMap({ map: "world_en" }) set correctly');
+  equal(map.canvas.params.backgroundColor, '#ffffff', 'vectorMap({ backgroundColor: "#ffffff" }) set correctly');
+  equal(map.canvas.params.borderColor, '#ffffff', 'vectorMap({ borderColor: "#ffffff" }) set correctly');
+  equal(map.canvas.params.borderOpacity, 0.25, 'vectorMap({ borderOpacity: 0.25 }) set correctly');
+  equal(map.canvas.params.borderWidth, 1, 'vectorMap({ borderWidth: 1 }) set correctly');
+  equal(map.canvas.params.color, '#000000', 'vectorMap({ color: "#000000" }) set correctly');
+  equal(map.canvas.params.colors['us'], '#ff0000', 'vectorMap({ colors: { us: "#ff0000" } }) set correctly');
+  equal(map.canvas.params.enableZoom, false, 'vectorMap({ enableZoom: false }) set correctly');
+  equal(map.canvas.params.hoverColor, '#0000FF', 'vectorMap({ hoverColor: "#0000FF" }) set correctly');
+  equal(map.canvas.params.hoverColors['us'], '#ff0000', 'vectorMap({ hoverColors: { us: "#ff0000" } }) set correctly');
+  equal(map.canvas.params.hoverOpacity, 0.7, 'vectorMap({ hoverOpacity: 0.7 }) set correctly');
+  equal(map.canvas.params.normalizeFunction, 'polynomial', 'vectorMap({ normalizeFunction: "polynomial" }) set correctly');
+  equal(map.canvas.params.scaleColors[0][0], 182, 'vectorMap({ scaleColors: ["#b6d6ff", "#005ace"] }) first color red set correctly');
+  equal(map.canvas.params.scaleColors[0][1], 214, 'vectorMap({ scaleColors: ["#b6d6ff", "#005ace"] }) first color green set correctly');
+  equal(map.canvas.params.scaleColors[0][2], 255, 'vectorMap({ scaleColors: ["#b6d6ff", "#005ace"] }) first color blue set correctly');
+  equal(map.canvas.params.scaleColors[1][0], 0, 'vectorMap({ scaleColors: ["#b6d6ff", "#005ace"] }) second color red set correctly');
+  equal(map.canvas.params.scaleColors[1][1], 90, 'vectorMap({ scaleColors: ["#b6d6ff", "#005ace"] }) second color green set correctly');
+  equal(map.canvas.params.scaleColors[1][2], 206, 'vectorMap({ scaleColors: ["#b6d6ff", "#005ace"] }) second color blue set correctly');
+  equal(map.canvas.params.selectedColor, '#333333', 'vectorMap({ selectedColor: "#333333" }) US set correctly');
+  equal(map.canvas.params.selectedRegions[0], 'us', 'vectorMap({ selectedRegions: ["us", "mx"] }) US set correctly');
+  equal(map.canvas.params.selectedRegions[1], 'mx', 'vectorMap({ selectedRegions: ["us", "mx"] }) MX set correctly');
+  equal(map.canvas.params.multiSelectRegion, false, 'vectorMap({ multiSelectRegion: false }) set correctly');
+  equal(map.canvas.params.showTooltip, false, 'vectorMap({ showTooltip: false }) set correctly');
+  equal(map.canvas.params.showLabels, true, 'vectorMap({ showLabels: true }) set correctly');
+  equal(map.canvas.params.onLabelShow(), 'Label Showing', 'vectorMap({ onLabelShow: function(){} }) set correctly');
+  equal(map.canvas.params.onRegionOver(), 'Region Over', 'vectorMap({ onRegionOver: function(){} }) set correctly');
+  equal(map.canvas.params.onRegionOut(), 'Region Out', 'vectorMap({ onRegionOut: function(){} }) set correctly');
+  equal(map.canvas.params.onRegionClick(), 'Region Clicked', 'vectorMap({ onRegionClick: function(){} }) set correctly');
+  equal(map.canvas.params.pins['us'], 'America', 'vectorMap({ pins: { us: "America" } }) set correctly');
+  equal(map.canvas.params.pinMode, 'content', 'vectorMap({ pinMode: "content" }) set correctly');
+
+  $container.html('');
+});
+
+test("Test selectedRegions actually set in canvas", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    selectedRegions: ['us', 'mx'],
+    selectedColor: '#333333'
+  });
+
+  equal(map.countries['us'].getFill(), '#333333', 'vectorMap({ selectedColor: "#333333" }) set correctly for US');
+  equal(map.countries['mx'].getFill(), '#333333', 'vectorMap({ selectedColor: "#333333" }) set correctly for MX');
+
+  $container.html('');
+});
+
+test("Test colors actually set in canvas", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    colors: {
+      us: '#0000FF',
+      mx: '#00FF00'
+    }
+  });
+
+  equal(map.countries['us'].getFill(), '#0000FF', 'vectorMap({ colors: { us: "#0000FF", mx: "#00FF00" } }) set correctly for US');
+  equal(map.countries['mx'].getFill(), '#00FF00', 'vectorMap({ colors: { us: "#0000FF", mx: "#00FF00" } }) set correctly for MX');
+
+  $container.html('');
+});
+
+test("Test labels show up", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    showLabels: true
+  });
+
+  var labelsExist = (jQuery('.jqvmap-pin').length > 0);
+
+  equal(labelsExist, 1, 'vectorMap({ showLabels: true }) set correctly and label showing');
+
+  jQuery('.jqvmap-pin').remove();
+  $container.html('');
+});
+
+/**
+ * --------------------------------------------------------------------------------
+ * Test Event Handlers
+ * --------------------------------------------------------------------------------
+ */
+
+module("jqvmap-event-handling");
+
+test("onLoad() event handler", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+  var testHandler = {
+    event: null,
+    map: null
+  };
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    onLoad: function(event, map){
+      testHandler.event = typeof event;
+      testHandler.map = map;
+
+      console.log(testHandler);
+    }
+  });
+
+  equal(testHandler.event, 'object', 'vectorMap({ onLoad: function(event, map }) fires correctly and returns an event');
+  equal(testHandler.map.canvas.params.map, 'world_en', 'vectorMap({ onLoad: function(event, map }) fires correctly and returns map');
+
+  $container.html('');
+});
+
+test("onLabelShow() event handler", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+  var testHandler = {
+    event: null,
+    code: null,
+    label: null
+  };
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    onLabelShow: function(event, label, code){
+      testHandler.event = typeof event;
+      testHandler.code = code;
+      testHandler.label = label;
+    }
+  });
+
+  jQuery('#vmap').trigger('labelShow.jqvmap', ['United States', 'us']);
+
+  equal(testHandler.event, 'object', 'vectorMap({ onLabelShow: function(event, label, code){ ... } }) fires correctly and returns an event');
+  equal(testHandler.code, 'us', 'vectorMap({ onLabelShow: function(event, label, code){ ... } }) fires correctly and returns code');
+  equal(testHandler.label, 'United States', 'vectorMap({ onLabelShow: function(event, label, code){ ... } }) fires correctly and returns label');
+
+  $container.html('');
+});
+
+test("onRegionOver() event handler", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+  var testHandler = {
+    event: null,
+    code: null,
+    region: null
+  };
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    onRegionOver: function(event, code, region){
+      testHandler.event = typeof event;
+      testHandler.code = code;
+      testHandler.region = region;
+    }
+  });
+
+  jQuery('#vmap').trigger('regionMouseOver.jqvmap', ['us', 'United States']);
+
+  equal(testHandler.event, 'object', 'vectorMap({ onRegionOver: function(event, code, region){ ... } }) fires correctly and returns an event');
+  equal(testHandler.code, 'us', 'vectorMap({ onRegionOver: function(event, code, region){ ... } }) fires correctly and returns code');
+  equal(testHandler.region, 'United States', 'vectorMap({ onRegionOver: function(event, code, region){ ... } }) fires correctly and returns region');
+
+  $container.html('');
+});
+
+test("onRegionOut() event handler", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+  var testHandler = {
+    event: null,
+    code: null,
+    region: null
+  };
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    onRegionOut: function(event, code, region){
+      testHandler.event = typeof event;
+      testHandler.code = code;
+      testHandler.region = region;
+    }
+  });
+
+  jQuery('#vmap').trigger('regionMouseOut.jqvmap', ['us', 'United States']);
+
+  equal(testHandler.event, 'object', 'vectorMap({ onRegionOut: function(event, code, region){ ... } }) fires correctly and returns an event');
+  equal(testHandler.code, 'us', 'vectorMap({ onRegionOut: function(event, code, region){ ... } }) fires correctly and returns code');
+  equal(testHandler.region, 'United States', 'vectorMap({ onRegionOut: function(event, code, region){ ... } }) fires correctly and returns region');
+
+  $container.html('');
+});
+
+test("onRegionClick() event handler", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+  var testHandler = {
+    event: null,
+    code: null,
+    region: null
+  };
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    onRegionClick: function(event, code, region){
+      testHandler.event = typeof event;
+      testHandler.code = code;
+      testHandler.region = region;
+    }
+  });
+
+  jQuery('#vmap').trigger('regionClick.jqvmap', ['us', 'United States']);
+
+  equal(testHandler.event, 'object', 'vectorMap({ onRegionClick: function(event, code, region){ ... } }) fires correctly and returns an event');
+  equal(testHandler.code, 'us', 'vectorMap({ onRegionClick: function(event, code, region){ ... } }) fires correctly and returns code');
+  equal(testHandler.region, 'United States', 'vectorMap({ onRegionClick: function(event, code, region){ ... } }) fires correctly and returns region');
+
+  $container.html('');
+});
+
+test("onRegionSelect() event handler", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+  var testHandler = {
+    event: null,
+    code: null,
+    region: null
+  };
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    onRegionSelect: function(event, code, region){
+      testHandler.event = typeof event;
+      testHandler.code = code;
+      testHandler.region = region;
+    }
+  });
+
+  jQuery('#vmap').trigger('regionSelect.jqvmap', ['us', 'United States']);
+
+  equal(testHandler.event, 'object', 'vectorMap({ onRegionSelect: function(event, code, region){ ... } }) fires correctly and returns an event');
+  equal(testHandler.code, 'us', 'vectorMap({ onRegionSelect: function(event, code, region){ ... } }) fires correctly and returns code');
+  equal(testHandler.region, 'United States', 'vectorMap({ onRegionSelect: function(event, code, region){ ... } }) fires correctly and returns region');
+
+  $container.html('');
+});
+
+test("onRegionDeselect() event handler", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+  var testHandler = {
+    event: null,
+    code: null,
+    region: null
+  };
+
+  $container.append(testMap);
+
+  var map = $('#vmap').vectorMap({
+    map: 'world_en',
+    onRegionDeselect: function(event, code, region){
+      testHandler.event = typeof event;
+      testHandler.code = code;
+      testHandler.region = region;
+    }
+  });
+
+  jQuery('#vmap').trigger('regionDeselect.jqvmap', ['us', 'United States']);
+
+  equal(testHandler.event, 'object', 'vectorMap({ onRegionDeselect: function(event, code, region){ ... } }) fires correctly and returns an event');
+  equal(testHandler.code, 'us', 'vectorMap({ onRegionDeselect: function(event, code, region){ ... } }) fires correctly and returns code');
+  equal(testHandler.region, 'United States', 'vectorMap({ onRegionDeselect: function(event, code, region){ ... } }) fires correctly and returns region');
+
+  $container.html('');
+});
+
+/**
+ * --------------------------------------------------------------------------------
+ * Test for Known Errors
+ * --------------------------------------------------------------------------------
+ */
+
+module("jqvmap-error-handling");
+
+test("Invalid Map Name", function () {
+
+  var $container = $('#test-map');
+  var testMap = $('<div id="vmap" style="width: 600px; height: 400px;"></div>');
+
+  $container.append(testMap);
+
+  throws(function(){ $('#vmap').vectorMap({ map: 'made_up_map' }); }, function( err ) {
+    return err.toString() === 'Error: Invalid "made_up_map" map parameter. Please make sure you have loaded this map file in your HTML.';
+  }, 'Correctly threw invalid map error');
+
+  $container.html('');
+});
diff --git a/js/vmap/vmap.js b/js/vmap/vmap.js
new file mode 100644 (file)
index 0000000..ee3f340
--- /dev/null
@@ -0,0 +1 @@
+jQuery.fn.vectorMap('addMap', 'fr_regions_2016_mill',{"insets": [{"width": 100, "top": 600, "height": 122.71220181016422, "bbox": [{"y": -640515.9263248637, "x": -6082830.163693012}, {"y": -235112.28629661424, "x": -5752460.702426716}], "left": 0}, {"width": 50, "top": 440, "height": 42.928059423707, "bbox": [{"y": -1855676.1027106678, "x": -6882793.3793751765}, {"y": -1778355.8860469644, "x": -6792735.480530344}], "left": 0}, {"width": 50, "top": 510, "height": 57.21127928831266, "bbox": [{"y": -1668974.3969949444, "x": -6819419.302373176}, {"y": -1615651.747314515, "x": -6772817.783980524}], "left": 0}, {"width": 50, "top": 700, "height": 42.31095479952366, "bbox": [{"y": 2357030.8412201093, "x": 6150785.273719754}, {"y": 2416319.6251247157, "x": 6220848.433704593}], "left": 740}, {"width": 40, "top": 690, "height": 55.96611426730096, "bbox": [{"y": 1415975.8044653006, "x": 5016650.333473452}, {"y": 1454680.1669724442, "x": 5044313.045465417}], "left": 640}, {"width": 900, "top": 0, "height": 749.2159980728637, "bbox": [{"y": -6244653.662562441, "x": -571670.6975907331}, {"y": -4882430.695155527, "x": 1064707.428102987}], "left": 0}], "paths": {"FR-GF": {"path": "M0.97,715.11l0.03,-0.01l1.04,0.32l0.16,0.02l0.86,-0.15l0.51,-0.46l0.86,-2.17l2.19,-0.54l1.75,-1.7l3.1,-6.63l2.47,-3.35l0.8,-2.07l0.47,-0.34l0.06,-0.66l-0.55,-0.79l0.94,-2.39l-0.02,-0.46l-0.64,-0.76l0.44,-0.66l-0.5,-1.65l0.23,-1.91l-0.45,-0.69l-0.46,-0.14l0.86,-1.73l2.07,-2.81l1.19,-0.89l0.84,-2.29l1.16,-1.21l0.63,-1.48l-0.08,-2.67l0.59,-2.69l-0.24,-0.63l-0.99,-0.8l-0.94,0.14l-0.73,-1.11l-0.67,-2.34l-1.1,-1.52l-2.15,-0.96l-0.85,-1.38l-0.94,-0.69l-0.78,-1.45l-0.91,-0.91l-0.6,-1.53l-1.41,-1.5l0.64,-2.85l-0.13,-0.85l-2.32,-1.44l0.46,-1.46l-0.01,-1.08l-0.33,-1.55l-1.0,-2.09l-0.57,-3.53l0.9,-2.56l0.01,-1.55l-0.48,-1.52l0.02,-2.19l-1.39,-1.38l0.0,-4.12l-0.26,-0.77l1.19,-1.14l-0.22,-1.91l0.25,-0.92l2.73,-3.76l0.74,-0.61l1.11,-2.37l4.66,-4.06l2.22,-1.17l1.58,-1.93l1.87,-4.21l0.52,-3.48l1.46,-2.55l2.53,0.36l1.76,0.65l0.25,-0.36l3.4,2.05l6.81,3.12l3.05,0.38l3.49,0.88l0.86,-0.07l1.81,1.42l0.75,-0.24l0.28,-0.38l-0.11,-0.54l0.6,0.16l3.21,1.77l2.63,0.74l0.44,-0.2l3.1,1.65l2.24,2.12l1.54,0.85l1.06,1.69l7.47,6.54l0.33,0.77l1.43,0.41l2.53,2.16l0.64,1.06l-0.27,1.23l0.6,0.43l2.01,-1.77l1.2,0.54l0.54,0.96l-2.76,4.28l0.03,1.47l0.4,0.37l0.6,-0.32l0.54,-0.93l0.57,-1.94l2.11,-1.78l0.87,0.63l1.21,1.89l2.18,1.25l2.26,2.1l0.89,1.31l1.5,6.51l-0.33,1.34l-1.91,1.37l-0.89,1.13l-0.01,0.47l0.45,0.15l2.11,-0.67l1.15,-0.61l0.64,-0.84l0.53,-2.04l-0.28,-4.87l0.65,-1.95l1.05,-0.2l1.97,1.65l0.0,0.74l1.13,1.9l0.28,1.83l0.66,0.89l-0.25,0.37l0.26,0.94l0.51,0.66l1.03,0.2l-0.69,0.86l-0.09,1.41l1.97,3.43l0.18,0.84l-0.06,2.16l-0.64,2.0l-0.3,0.58l-2.4,1.19l-1.04,0.92l-1.71,3.75l-2.1,2.32l-1.35,0.82l-0.13,1.42l-0.89,0.24l-0.67,0.68l-0.88,2.96l-1.99,3.34l-0.78,0.63l0.04,0.74l-4.48,7.35l-0.56,0.42l-1.13,0.12l-0.77,0.72l-0.64,1.51l-1.27,1.01l-0.24,0.8l0.31,2.33l-2.32,4.42l0.33,0.96l-1.39,1.05l-2.96,7.18l-1.09,0.6l0.67,2.17l-2.13,3.57l-1.21,1.07l-1.71,2.4l-5.24,2.87l-0.69,0.6l-0.84,1.79l-2.17,0.93l-2.57,-0.42l-1.92,-1.13l-5.09,0.79l1.41,-1.11l-0.13,-0.65l-2.09,-1.75l-0.88,-1.21l-0.87,-0.45l-0.43,0.08l-1.13,1.43l-2.74,1.58l-2.14,0.34l-1.52,-0.76l-2.22,-0.27l-2.22,-0.96l-0.87,-0.06l0.23,-1.21l-0.6,-0.69l-0.75,-0.14l-1.33,0.55l-1.05,1.47l-1.27,0.26l-0.98,1.22l-1.24,-0.04l-0.49,1.63l-0.46,0.33l-1.97,0.97l-0.71,-0.32l-1.16,0.23l-0.87,2.01l-0.86,0.39l-1.72,-1.68l-2.66,0.42l-1.6,-0.21l-2.03,-1.41l-3.41,-0.59l-1.86,-1.51l0.34,-0.7l-0.6,-0.59l-1.7,-0.92Z", "name": "Guyane fran\u00e7aise"}, "FR-H": {"path": "M838.53,672.37l1.08,0.06l0.88,-0.67l0.97,0.12l1.07,-2.21l1.86,-0.26l0.74,-0.59l0.25,-1.79l0.9,-1.48l-0.38,-0.73l-0.69,-0.15l0.49,-1.84l0.66,-0.7l2.07,-0.66l0.26,-0.57l-0.29,-0.57l0.29,-1.57l1.09,-0.31l1.75,0.99l1.22,-0.28l0.96,-0.92l0.83,-2.39l1.69,-0.12l3.84,-1.79l6.8,-1.3l2.03,-0.92l0.4,-1.61l3.75,-3.54l2.7,-0.22l4.3,0.91l1.55,0.91l1.19,2.4l0.37,0.25l0.75,-0.18l2.19,-3.35l0.93,-2.22l-0.53,-1.78l0.44,-1.29l-0.33,-1.53l-1.69,-2.25l1.55,-2.06l-0.41,-1.45l0.2,-1.05l1.75,-1.77l0.11,-1.69l-1.01,-1.98l0.14,-1.93l0.77,-0.45l2.42,-0.01l0.97,-0.35l0.69,0.85l1.59,0.95l-0.62,1.65l0.32,1.04l0.64,0.74l-0.24,1.34l1.15,6.71l-0.1,2.14l-1.97,6.87l-0.02,4.12l-0.45,1.01l0.91,0.83l0.24,0.8l-0.14,1.25l1.14,1.91l2.33,1.17l0.51,-0.65l0.25,0.54l0.31,7.85l0.73,1.54l-0.6,1.91l-0.19,2.68l1.67,5.79l-0.45,9.13l0.43,1.76l-0.38,2.31l-0.37,0.56l-1.68,1.43l-1.61,2.76l-5.49,7.01l-0.58,7.85l0.53,5.07l-0.08,5.26l-1.16,0.85l-0.93,1.45l0.36,0.56l0.38,0.0l-0.34,1.47l-1.74,0.45l-0.13,1.0l-2.1,-0.31l-0.71,0.1l-0.34,0.46l0.08,0.47l-0.87,1.33l0.15,0.53l1.18,0.53l2.94,-0.89l0.29,0.34l-0.16,0.77l-1.25,1.25l-1.71,0.61l-1.08,1.44l-0.92,0.16l-0.29,0.57l0.28,0.85l-0.28,0.85l0.82,0.98l-0.71,0.84l0.01,0.67l-2.14,1.17l-0.98,0.12l-0.35,0.4l0.0,0.54l0.75,0.99l-0.59,0.7l-0.15,0.77l0.54,0.37l1.71,-1.1l-1.36,2.96l-0.77,0.37l-0.56,-0.17l-1.56,-1.26l-4.09,-1.13l0.5,-1.41l0.63,-0.25l0.15,-0.7l-3.04,-1.76l0.64,-0.96l0.0,-0.46l-0.51,-0.38l-2.15,1.21l-0.36,-0.76l-1.07,0.38l-0.9,-0.82l-1.69,-0.51l-2.48,-0.05l-1.61,-1.23l-1.4,-0.31l-0.77,-0.93l-1.36,-0.18l0.42,-0.48l-0.28,-0.83l-3.45,-1.04l0.22,-1.42l-0.44,-0.73l-0.5,-0.17l1.06,-2.73l1.05,0.33l3.28,-1.35l0.76,-0.71l0.25,-0.88l2.21,-1.71l-0.28,-0.67l-8.03,-1.29l-0.49,-0.46l0.45,-1.23l-0.37,-0.54l-1.66,0.01l-3.15,0.9l0.15,-0.36l-0.39,-0.56l-1.58,-0.18l1.37,-0.22l1.43,-1.12l0.36,-1.08l-0.11,-0.68l-0.53,-0.48l2.22,-0.4l2.07,-1.1l0.18,-0.51l-0.3,-0.7l-0.72,-0.7l1.32,-0.68l0.04,-0.58l-0.51,-0.92l1.44,-2.22l-1.63,-2.04l-1.3,-0.47l-1.37,0.15l-3.3,1.36l-2.54,0.15l-1.78,0.63l-0.16,-0.36l0.64,-1.35l-0.36,-1.17l-1.16,-1.23l2.2,-0.2l1.3,-0.47l1.04,-1.45l-0.12,-0.56l-0.44,-0.27l0.27,-0.44l1.08,-0.73l3.47,-1.33l0.38,-0.36l0.09,-0.92l-0.43,-0.78l-0.97,-0.68l-1.71,-2.86l-0.82,-0.13l-1.52,0.37l-0.72,-1.14l-1.11,-0.59l-2.23,-0.31l0.1,-0.87l-0.66,-0.46l0.63,-0.4l0.19,-0.89l-0.4,-0.4l-0.84,0.0l0.49,-1.2l-0.24,-0.73l-0.53,-0.37l0.18,-0.95l-1.46,-1.0l2.12,-0.06l1.46,-0.81l2.49,-0.44l2.27,-0.94l0.28,-0.91l-1.26,-1.16l-2.16,-0.95l-0.59,-1.02l-0.54,-0.04l-0.76,0.57l-0.02,-0.4l1.8,-0.96l0.05,-0.67l-1.61,-1.07l-1.41,0.12l-1.48,0.55l-0.55,-1.32l-0.01,-0.82Z", "name": "Corse"}, "FR-F": {"path": "M352.12,269.71l-0.39,-0.79l0.59,-1.42l1.29,-1.16l5.17,-2.45l1.63,-1.53l1.57,-4.34l0.07,-3.55l0.45,-1.34l2.91,-2.22l0.88,-1.62l-0.43,-1.98l0.6,-3.59l-0.6,-0.63l-1.31,-0.12l-0.88,-2.08l2.47,-0.44l0.71,-0.46l0.07,-1.0l-1.12,-0.94l0.07,-0.52l3.99,-2.03l0.86,-0.92l-0.08,-0.73l-0.51,-0.52l-3.66,-0.66l-2.36,-1.54l1.12,-0.96l0.25,-1.0l-1.86,-3.44l0.07,-2.76l-0.31,-0.7l-0.92,-0.77l0.03,-1.1l0.42,-0.63l2.29,-0.4l5.6,-2.3l2.13,-1.95l0.67,-1.64l1.22,-1.8l-0.16,-0.83l-1.74,-2.11l0.08,-3.7l-3.65,-3.73l-2.55,-1.62l-1.61,-2.81l-0.36,-3.23l1.82,-1.67l1.34,-0.77l5.76,-1.41l2.04,-0.07l0.74,-0.36l1.7,-2.02l3.48,-0.35l0.63,-0.53l0.22,-1.53l3.0,1.67l3.49,-0.02l1.93,0.63l4.71,-2.07l1.42,-1.16l0.69,-1.87l0.95,-1.4l1.34,-1.03l2.49,-1.16l1.05,-1.01l0.26,-1.64l-0.52,-1.68l0.12,-0.44l2.22,-1.39l3.12,5.29l1.41,1.78l0.26,1.59l-0.56,2.83l0.31,1.68l0.56,0.67l1.6,0.81l-0.36,1.11l-1.35,1.63l-0.2,0.71l0.26,0.98l1.48,0.99l0.55,1.38l1.5,1.71l3.83,2.4l0.73,2.38l2.38,1.58l0.52,0.67l0.38,1.69l-0.03,2.29l1.38,2.04l1.1,0.79l4.59,1.88l2.43,-0.21l0.24,2.38l2.15,2.42l0.66,2.91l0.56,0.84l1.26,0.74l-1.59,2.0l-0.13,0.8l0.28,0.63l1.27,0.64l8.96,-1.77l2.18,-0.89l1.74,-2.19l1.08,0.42l1.34,1.84l0.89,0.32l1.9,-0.44l1.41,-1.25l0.41,-0.04l2.61,1.32l2.42,-0.25l1.05,1.47l1.06,3.38l3.56,2.09l1.09,1.21l-0.82,1.86l0.48,1.68l-2.36,-0.11l-1.14,1.09l0.09,1.33l1.07,0.83l2.02,0.26l3.17,-0.65l8.35,0.59l2.29,-0.94l1.66,-1.6l0.83,-0.26l2.03,0.05l-0.41,1.53l0.32,0.38l1.06,0.2l7.05,-1.97l1.76,0.12l2.27,0.58l1.52,1.02l1.38,4.33l1.05,1.28l2.81,2.18l0.52,2.18l-1.42,3.21l-0.46,0.6l-2.42,1.45l-1.42,1.43l-1.36,0.14l-0.46,0.42l0.1,2.67l0.95,2.06l-0.78,1.4l0.13,1.67l-0.42,0.96l-4.41,2.06l-4.17,0.46l-1.07,0.84l-0.36,1.76l0.56,1.49l2.33,0.9l2.32,2.0l1.13,2.08l-0.6,1.62l0.07,0.78l2.52,3.57l-3.82,0.47l-2.79,1.57l-0.07,0.91l1.55,1.67l1.57,3.11l1.42,1.89l-0.51,2.82l-0.86,1.93l-2.02,2.99l-0.1,0.83l0.94,1.66l1.73,0.94l3.6,3.47l0.78,3.4l1.43,3.27l1.23,3.95l-0.07,3.7l2.22,2.27l0.43,5.38l-1.31,4.71l1.12,2.83l-0.12,0.92l-2.12,3.69l-0.31,1.64l-3.08,-0.17l-2.72,0.77l-4.06,2.3l-1.68,2.09l-2.02,-0.32l-1.56,1.24l-2.13,-0.62l-0.64,-0.74l-0.84,-0.12l-4.12,3.34l-1.44,0.06l-0.57,0.31l-0.14,1.87l-2.29,0.13l-0.55,1.04l1.04,1.73l-0.51,1.0l0.05,1.2l1.67,2.1l0.3,1.38l-5.07,1.34l-7.99,0.81l-3.73,1.66l-1.58,1.88l-1.55,0.74l-2.19,3.55l-5.83,-0.29l-3.22,0.59l-2.11,-0.72l-3.44,0.0l-2.44,-0.84l-5.56,-0.15l-1.36,0.29l-1.79,1.06l-1.02,-0.37l-1.84,-1.89l-0.73,-0.15l-0.91,0.28l-0.52,0.62l-0.16,2.28l-0.72,0.98l-3.85,-0.24l-2.6,1.5l-1.18,-0.45l-0.12,-1.0l-0.46,-0.52l-0.8,-0.24l-1.55,0.21l-2.31,-0.53l-1.04,0.29l-3.98,3.58l-1.69,0.94l-2.46,-1.47l-0.93,-1.4l-0.84,-0.54l-0.84,-0.04l-0.83,0.37l-0.7,1.07l-1.07,0.49l-3.45,0.3l-2.25,-0.75l-0.71,-0.49l0.93,-3.22l-0.72,-1.01l-1.32,-0.68l-1.11,-1.06l0.45,-2.58l-0.5,-1.16l-0.91,-1.04l-1.23,-0.68l-5.0,-0.37l-0.32,-1.41l-0.46,-0.57l-3.41,-1.35l-2.07,-1.8l-0.45,-0.65l-0.51,-2.09l-0.01,-1.46l0.61,-2.86l-0.92,-2.42l-1.83,-2.14l-2.6,-1.8l-7.16,-9.22l-1.26,-3.31l-1.36,-1.88l-6.25,-3.03l-0.71,0.68l0.16,1.39l0.73,1.37l-0.4,0.35l-5.41,0.31l-1.21,0.29l-1.78,1.09l-2.67,-0.46l-2.71,0.24l-1.01,-0.19l-0.92,-0.81l-0.25,-0.98l0.04,-2.48l0.47,-2.57l-0.35,-1.03l-2.01,-0.4l-0.72,-1.12l-0.61,-0.29l-3.43,0.61l-0.29,-0.38l0.35,-1.68l-0.32,-1.32l-0.99,-0.39l-1.98,0.41l-0.5,-1.99l-0.74,-0.2l-1.7,0.66l-1.69,-2.39l0.88,-5.76l1.43,-5.26l4.43,-6.2l-0.2,-2.84l0.98,-2.98l1.96,-3.88l-0.45,-3.6l1.51,-3.81l7.61,1.68l0.98,-0.08l0.62,-0.83l-0.48,-2.31l0.7,-0.71l2.9,0.89l2.04,-1.63l2.39,-0.48l3.32,-1.45l2.28,-0.47l0.53,-0.73l-0.22,-1.26Z", "name": "Centre"}, "FR-E": {"path": "M25.63,242.25l0.98,-1.98l0.98,0.49l19.62,-3.77l3.65,0.88l0.91,-0.32l0.5,-0.76l0.62,-2.51l-0.36,-1.04l-0.81,-0.89l-0.58,-2.39l-1.01,-0.81l-2.92,-0.69l-0.66,-1.14l-0.5,-0.27l-1.37,0.44l-3.11,-1.71l-2.01,0.46l-2.96,4.7l-0.73,0.21l0.57,-1.39l-1.14,-2.33l0.91,-1.36l-0.39,-1.22l-1.09,-0.38l-3.21,-0.11l-0.03,-1.0l1.84,0.17l0.95,-0.24l0.41,-0.81l-0.22,-0.93l0.98,-2.21l0.53,-0.43l0.46,0.19l-0.71,2.55l0.23,0.48l1.87,0.72l5.36,-0.32l1.36,0.83l1.04,0.18l3.66,-0.78l2.04,-0.12l0.21,0.35l1.46,0.44l5.01,-0.91l0.33,-0.98l-0.42,-0.4l-1.83,0.11l-0.45,-0.19l-0.2,-0.74l-0.68,-0.16l-1.09,0.67l-1.22,-1.03l-2.07,0.18l0.59,-0.25l0.44,-0.73l1.79,-1.5l0.1,-0.44l-0.38,-0.25l-1.24,0.08l-1.29,0.8l0.0,-0.47l-0.85,-0.4l-0.96,1.04l-0.96,-0.2l-1.87,1.11l-0.5,0.08l-0.43,-0.77l-0.56,-0.05l-1.09,0.68l-1.02,0.2l3.24,-3.36l6.46,-3.39l0.19,-0.5l-0.47,-0.25l-4.22,1.6l-4.19,0.6l-5.77,2.77l-2.94,0.62l-1.85,0.8l-1.08,0.12l-4.35,-1.11l-0.58,0.4l-0.15,1.12l-0.27,0.13l-3.57,-0.23l-0.68,-1.74l0.68,-0.06l0.36,-0.44l-0.1,-1.01l-1.05,-2.18l-0.09,-1.34l0.28,-1.34l0.6,-0.89l1.01,-0.27l0.3,-0.88l-1.49,-1.16l0.52,-1.93l2.34,-3.42l1.07,0.45l0.46,-0.14l-0.19,-0.71l0.54,-0.32l2.86,-0.47l3.08,1.22l1.04,-0.16l0.21,-0.65l-1.67,-2.31l0.37,-0.22l2.65,0.59l1.24,-0.03l0.38,-0.34l-0.26,-0.44l-1.23,-0.43l0.07,-0.55l-0.35,-0.44l4.17,-0.0l3.43,-1.04l1.35,-0.03l0.38,-0.31l-0.2,-0.45l-0.86,-0.45l1.38,-0.23l3.24,-1.36l1.36,0.05l0.84,0.86l-0.39,1.52l0.42,0.5l1.58,-0.18l2.35,-1.07l2.95,0.58l0.4,-0.4l0.0,-0.59l-1.04,-0.57l0.11,-0.28l1.91,-1.43l2.45,-0.6l1.27,0.07l1.03,0.52l0.71,-0.39l0.36,0.69l0.75,0.24l1.01,-1.05l-0.02,-1.18l4.45,-1.51l-0.24,1.62l0.55,0.4l-0.25,0.84l1.04,1.07l-0.07,1.9l0.48,-0.03l1.68,-1.43l0.9,-0.29l-0.28,0.38l0.1,0.75l3.35,2.74l0.61,-0.01l0.45,-0.54l-0.24,-0.79l0.28,-0.74l-0.54,-1.41l0.79,0.35l0.21,-0.4l0.01,-2.72l0.24,-0.43l0.93,0.16l0.45,-0.85l1.48,0.59l2.89,-0.11l2.82,1.61l2.57,-0.38l0.28,1.21l1.61,0.42l1.96,-0.05l0.87,-0.41l0.21,-0.49l-0.71,-3.08l2.98,-0.46l0.33,-0.33l-3.03,-3.0l-0.19,-0.98l2.29,-1.26l1.58,-2.51l0.68,0.39l1.86,0.1l2.17,1.06l-0.28,0.54l0.32,0.6l2.25,0.04l1.71,-1.23l5.84,-2.09l1.17,0.0l1.67,-1.78l0.55,0.11l0.26,2.26l-0.4,1.28l-0.83,1.08l0.5,1.21l0.41,0.18l0.97,-1.9l1.78,-1.89l1.89,-1.51l0.81,0.06l1.06,-1.09l0.51,-0.13l0.85,0.83l-0.4,1.97l0.68,0.68l-1.05,2.42l-1.65,2.02l-0.1,0.85l0.4,0.4l0.8,-0.2l3.03,-4.81l0.76,0.15l1.33,-0.56l0.67,0.24l-0.02,0.75l-1.71,1.0l-0.01,1.15l2.48,1.16l4.01,0.41l0.01,1.2l-0.8,0.72l0.21,0.84l1.94,1.27l1.37,1.73l3.87,2.85l0.88,3.1l-0.26,0.69l0.22,0.77l2.78,1.74l3.18,1.32l-1.16,1.99l1.46,0.52l1.88,1.65l0.62,-0.24l0.25,-2.13l2.16,0.1l1.16,-0.4l3.22,-3.61l5.89,-2.95l0.99,-1.12l0.0,-0.53l-0.84,-0.45l1.49,-0.39l1.05,0.13l0.44,0.89l0.49,0.2l3.51,-1.61l2.1,-2.09l0.67,0.82l1.02,0.23l-1.01,1.46l-1.68,1.58l0.05,0.62l1.51,0.76l3.43,-2.2l0.62,2.37l0.78,0.42l0.63,2.14l0.57,0.3l1.25,-1.02l0.75,0.88l1.35,-0.4l0.22,-0.89l-0.64,-0.57l0.93,-0.86l1.16,0.66l0.55,-0.01l0.02,-0.55l-1.01,-1.64l2.26,-0.68l2.61,-0.22l1.31,2.11l0.42,1.64l1.16,0.92l-0.26,1.06l1.54,2.0l0.32,0.9l-0.23,1.64l0.21,0.41l0.46,-0.06l2.43,-1.55l0.01,-0.69l-1.38,-0.83l0.13,-0.69l-0.92,-1.66l0.91,0.63l0.48,-0.04l0.09,-0.48l-1.1,-1.52l-1.85,-0.63l-1.61,-3.1l0.13,-0.41l0.98,-1.09l1.07,-0.34l0.37,-1.34l0.28,-0.13l2.22,0.0l0.28,-0.7l4.99,-0.86l0.54,1.16l-1.35,1.87l-0.06,2.08l1.7,1.73l2.67,0.63l4.54,0.04l4.83,-0.64l3.02,-1.39l2.6,5.45l1.04,3.06l1.91,2.9l3.27,2.38l2.44,0.21l1.93,-0.61l2.78,-1.91l2.08,-0.77l2.22,-2.4l2.39,0.03l6.14,1.5l2.32,1.25l-0.2,5.67l0.77,8.15l-1.95,4.1l0.21,1.05l0.9,1.52l0.8,4.72l-0.73,1.74l0.74,4.88l0.57,1.17l1.18,1.08l0.09,4.44l-1.36,0.63l-4.18,0.61l-2.21,1.9l-0.63,1.08l-2.9,9.1l-1.14,1.77l-0.41,1.91l-6.47,-1.09l-0.75,-0.44l-0.77,-1.22l-1.29,-0.55l-3.34,-0.0l-1.83,1.23l-6.34,2.57l-1.86,1.31l-1.2,1.55l-2.58,1.54l-7.31,2.01l-3.72,-0.8l-4.42,1.41l-1.22,0.67l-2.07,-0.04l-2.38,0.42l-3.35,1.92l-0.46,1.34l0.13,2.04l-0.71,1.59l-0.73,3.38l-0.54,0.87l-2.15,1.35l-1.11,2.03l-0.68,0.15l-0.2,-1.32l-0.56,-0.55l-0.75,-0.02l-2.38,0.9l-1.56,-0.86l-0.9,0.05l-0.9,0.52l-1.08,1.85l-1.37,1.25l-3.37,0.29l-1.9,-0.8l-1.35,0.35l-0.47,0.66l-0.66,-0.06l-0.41,-0.22l0.4,-1.16l-0.67,-1.08l0.25,-0.19l3.7,-0.17l2.26,-0.53l1.21,0.07l0.42,-0.34l-0.3,-0.45l-0.99,-0.24l-2.8,0.23l-5.66,-1.72l-2.91,0.66l-1.93,0.0l1.05,-1.04l0.47,-1.05l-0.12,-0.48l-0.5,0.01l-0.86,0.73l-2.73,0.25l-0.32,0.4l1.11,0.66l-1.57,-0.11l-0.6,-0.37l-0.61,0.32l-0.09,1.63l-0.48,0.24l-1.89,-0.59l-1.16,0.04l-4.35,1.05l-1.51,-0.37l-2.24,-2.86l-1.34,-0.5l-0.54,-0.67l1.53,-0.13l1.13,1.56l1.15,-0.56l0.69,0.46l0.65,-0.25l0.21,-0.93l0.66,0.6l1.69,0.45l1.67,-0.14l1.46,-0.78l-0.13,-0.88l2.17,-2.6l0.37,-1.63l-1.48,-1.88l-0.44,-0.11l-0.26,0.86l0.64,0.9l-1.1,0.64l0.6,0.74l-0.39,0.02l-1.13,-0.82l0.39,-0.14l-0.02,-0.47l-0.84,-1.0l-0.86,-0.45l-1.89,-0.29l-0.44,0.26l0.31,0.55l-3.56,0.47l-0.85,0.64l-0.55,0.91l-2.13,0.65l0.0,-0.48l-0.46,-0.4l-1.32,0.49l-0.19,-1.21l0.7,-1.13l-1.61,-0.61l-0.47,-1.47l-0.85,-0.33l-0.4,0.46l0.45,2.1l0.01,1.94l0.27,0.88l1.3,1.72l-0.77,0.06l-1.84,-1.77l-0.48,-0.01l0.02,1.33l-0.45,-1.98l-0.51,-0.31l-0.67,0.4l-0.04,1.56l-1.22,-0.46l-1.86,0.87l-0.79,0.06l0.11,-0.88l-1.36,-0.9l-0.9,-0.02l-0.6,0.64l-1.75,-2.35l-1.96,-1.13l0.78,-2.82l4.43,-1.77l0.2,-0.57l-0.36,-1.98l-0.6,-0.34l-0.71,0.3l0.01,-1.53l-0.4,-0.43l-0.73,0.2l-0.33,0.57l-1.35,-0.45l-0.97,0.16l-0.33,0.36l1.51,1.12l0.5,1.38l-0.92,0.03l-0.89,0.76l-0.75,0.18l-0.19,0.67l0.52,0.61l-0.59,0.38l-0.66,1.45l-2.06,-1.94l-1.14,-0.34l-0.21,-0.79l-2.13,-0.87l-1.87,-0.17l0.38,-0.4l0.08,-1.06l0.95,0.1l0.65,-0.32l1.28,-2.54l0.88,-0.82l-0.25,-0.95l-0.44,0.09l-2.95,2.66l-1.78,0.9l-1.23,0.25l-0.32,0.34l0.22,0.41l0.92,0.77l-4.61,0.99l-0.63,-0.17l-2.02,-2.33l-2.01,-3.11l-0.6,-0.18l-0.57,0.4l-0.83,-0.02l-2.13,-0.46l-2.06,0.0l-1.4,-1.03l-2.45,0.05l-0.95,-0.29l-0.44,-0.91l-0.74,-0.41l-3.29,1.44l-0.96,-0.68l-3.48,0.2l-1.22,-1.97l-0.89,-0.77l0.11,-1.0l-0.37,-0.51l-1.34,-0.44l-0.26,-0.87l-1.15,-1.13l-1.72,-1.0l-1.75,-0.32l-0.44,0.53l0.51,1.46l-0.36,0.96l-0.24,0.22l-0.49,-0.49l-1.37,0.27l-0.79,0.62l-1.44,-1.0l-2.43,-0.67l-0.69,-0.82l-1.04,-2.67l-0.42,0.16l-0.7,1.27l0.43,1.31l1.4,1.55l-1.0,0.23l-0.97,0.66l-0.91,-1.34l-1.28,0.04l-0.48,1.28l0.73,0.75l-0.22,0.89l0.4,0.4l1.27,0.0l-1.81,1.5l-2.27,0.79l-8.52,-0.35l-0.07,-1.48l1.2,-0.18l0.52,-0.76l-0.21,-1.72l-1.54,-4.18l-0.96,-1.47l-2.99,-3.31l-6.1,-3.99l-1.18,0.45l-1.3,1.04l-1.84,-1.46l-3.15,-0.06l-3.8,-0.92ZM122.84,278.42l0.11,0.08l-0.08,0.32l-0.03,-0.4ZM122.52,282.02l0.23,1.3l1.65,2.47l-0.96,-0.23l-0.59,0.29l-0.71,-2.5l0.37,-1.33ZM133.84,278.57l0.45,0.38l-0.04,0.12l-0.41,-0.51ZM123.36,297.99l1.01,0.42l1.66,-0.07l0.33,0.33l-0.17,0.99l-1.32,0.33l-4.68,-0.38l-3.08,-0.8l-0.79,-0.48l0.14,-1.16l-1.41,-3.37l0.57,-0.67l4.02,1.8l3.72,3.05ZM1.37,208.95l2.5,-0.92l1.47,0.95l-2.48,1.11l-0.61,-1.01l-0.88,-0.14Z", "name": "Bretagne"}, "FR-X1": {"path": "M572.78,248.31l2.08,2.76l1.34,0.84l0.91,0.04l2.45,-1.72l13.22,-1.52l1.29,-0.82l0.21,-1.86l1.83,-1.16l3.72,0.47l2.38,-0.98l2.0,1.2l3.68,0.69l0.55,0.46l-0.52,1.12l0.41,0.79l2.84,0.99l0.59,0.52l-1.02,1.96l0.47,1.65l1.15,0.43l0.67,-0.37l0.54,-0.83l0.47,-0.03l3.02,3.37l2.43,4.0l0.05,1.03l-2.6,0.55l-0.58,0.46l-0.24,0.88l1.41,1.97l0.37,2.77l0.83,1.89l1.58,0.62l1.84,-1.46l0.41,0.07l2.15,2.8l2.67,1.55l2.02,-0.25l1.44,-1.65l0.75,-0.28l0.74,1.67l1.78,1.46l2.45,1.22l0.68,2.08l0.94,0.42l0.76,-0.18l2.08,-1.37l1.1,1.03l1.19,-0.18l2.67,-4.97l0.7,-0.81l0.64,-0.2l3.99,-0.6l3.21,1.65l1.53,0.3l6.58,-1.86l0.7,-0.44l0.69,-0.83l0.2,-0.97l-0.19,-2.21l0.55,-2.48l-0.58,-2.14l0.19,-0.51l0.63,-0.82l6.42,-3.94l2.41,-2.91l2.03,-0.75l0.4,-0.92l-0.24,-0.87l1.66,-0.91l1.8,-2.61l0.31,0.88l-0.17,1.53l0.84,0.59l3.53,-2.14l2.66,-2.84l1.54,-0.3l2.78,0.53l1.12,0.68l0.83,1.02l-0.06,1.28l0.31,0.67l3.72,1.77l2.64,-0.19l2.39,-1.21l3.0,-0.19l2.26,0.8l5.28,2.92l1.38,0.35l2.17,-0.03l1.59,-0.57l1.93,-2.36l0.72,-0.14l3.61,3.45l3.4,1.51l6.19,4.28l1.5,0.2l0.14,1.19l0.91,0.99l8.6,4.3l0.93,0.78l0.84,1.51l0.15,2.71l-0.51,1.44l-1.54,2.09l0.01,1.47l0.98,0.9l2.57,0.38l3.76,3.82l0.41,1.01l0.0,1.19l-0.38,1.14l-2.02,-0.53l-3.13,0.45l-2.79,-0.68l-2.25,0.79l-0.29,0.46l0.15,0.87l0.88,1.86l-1.14,1.05l-2.47,0.75l-0.32,0.37l-0.08,1.24l-1.37,0.7l-1.02,1.11l-1.15,2.35l0.42,0.52l7.29,-0.62l1.04,-0.41l2.04,1.73l-0.29,0.52l-1.73,0.73l-0.94,1.05l-0.92,0.22l-1.15,1.02l-0.52,1.79l0.21,1.82l-4.0,2.53l-1.78,1.58l-1.19,1.68l-3.91,3.12l-1.76,0.53l-0.28,0.41l0.06,1.05l-0.9,0.44l-0.31,0.51l-1.37,0.42l-0.72,0.57l-0.9,1.31l0.59,1.61l-1.2,1.49l-3.98,2.62l-6.53,1.77l-3.04,1.51l-1.11,2.94l1.07,2.32l0.08,1.66l-1.81,4.3l0.94,1.51l-0.16,1.55l-1.18,1.03l-2.12,1.0l-2.15,1.96l-4.43,2.12l-8.29,6.58l-0.92,1.27l0.3,1.23l1.2,1.17l-1.94,2.13l-3.09,4.33l0.33,2.88l-3.79,4.35l-2.1,1.94l-1.03,1.64l-4.26,3.58l-2.33,0.56l-7.03,-0.44l-0.45,-0.65l-0.22,-1.3l-0.66,-0.88l-3.08,-2.47l-0.52,-0.06l-2.8,2.33l-0.57,1.15l-1.28,0.24l-1.18,1.22l-1.45,0.59l-0.82,0.73l-1.63,-0.33l-0.55,-0.58l0.17,-3.09l-0.55,-0.51l-1.61,-0.3l-0.9,-1.08l-2.54,-0.97l-1.18,-3.01l-1.25,-0.94l-1.43,-0.41l-0.41,-0.65l-0.02,-2.61l-0.31,-0.39l-4.28,-1.02l-1.53,-0.8l-2.16,-1.97l-1.58,-0.52l-2.05,0.18l-3.7,1.25l-1.28,0.13l-3.18,-1.12l-1.8,-0.3l-1.05,0.23l-0.72,0.64l-1.5,3.9l-0.84,4.18l-1.47,2.56l-0.15,1.93l-3.53,6.7l-1.32,4.86l0.08,0.87l-2.89,-0.32l-0.98,-0.75l-0.98,-2.54l0.04,-1.79l-1.73,-1.29l-0.18,-1.86l-0.76,-0.6l-1.87,-0.55l-1.12,0.62l-0.53,1.93l-1.03,0.26l-2.35,-2.01l-0.72,0.04l-1.62,0.92l-1.03,0.08l-2.29,-0.51l-2.25,-0.92l-0.92,0.11l-0.68,0.9l-1.27,4.46l-1.74,2.06l-1.51,1.09l-1.62,0.57l-1.65,0.02l-4.83,-1.24l-3.08,0.65l-4.17,-0.93l-4.25,1.28l-1.42,-0.08l-2.06,-1.47l-2.77,-1.06l0.11,-2.73l-0.6,-1.7l5.26,-2.58l1.52,-1.33l0.08,-0.97l-0.86,-1.29l0.04,-1.38l-0.52,-1.25l0.64,-3.0l-0.8,-3.17l-2.08,-1.35l-4.18,-0.89l-2.7,-2.24l-1.72,-0.07l-3.83,-1.94l0.37,-3.1l-0.38,-1.88l-1.07,-0.72l-1.57,-2.64l-2.41,-2.14l-0.51,-1.65l-1.52,-2.44l-2.0,-0.46l-0.44,0.26l-0.43,1.96l-1.36,0.87l-0.44,1.79l-3.8,2.0l-1.31,0.28l-0.45,-0.19l-0.06,-1.53l-1.67,-2.57l-1.59,-0.43l-0.82,0.13l-1.33,1.43l-0.97,0.48l-2.64,-1.07l-1.82,-0.29l-1.87,0.11l-3.04,1.06l-3.34,-2.82l-1.29,-0.36l-1.77,0.04l-2.77,-1.63l-1.05,-1.28l-0.19,-0.83l0.34,-2.43l2.35,-4.46l-1.16,-3.32l1.31,-4.66l-0.44,-5.56l-2.26,-2.43l0.11,-3.58l-1.26,-4.05l-1.41,-3.21l-0.84,-3.54l-3.63,-3.57l-1.85,-1.04l-0.71,-1.21l2.92,-5.34l0.56,-3.19l-0.17,-0.62l-1.7,-2.2l-1.25,-2.57l-1.44,-1.56l0.08,-0.29l2.27,-1.1l2.94,-0.21l1.27,-0.38l0.25,-0.54l-0.6,-1.33l-2.08,-2.61l0.57,-2.21l-1.26,-2.45l-2.54,-2.22l-2.26,-0.85l-0.21,-1.48l0.17,-0.7l0.75,-0.56l4.07,-0.42l4.77,-2.29l0.53,-0.86l-0.08,-2.09l0.82,-1.64l-0.97,-2.16l-0.15,-2.18l1.55,-0.25l1.46,-1.47l2.5,-1.52l2.08,-4.18l-0.63,-2.78l-2.95,-2.35l-0.89,-1.09l-1.46,-4.45l-1.91,-1.27l-3.81,-0.73l0.73,-2.78l3.72,-2.26l1.64,-2.66l0.15,-0.86l-0.86,-1.48l-0.18,-1.43l1.15,-3.5l0.41,-0.36l3.03,0.06l2.27,-0.89l4.61,0.48l6.23,-0.91l2.51,0.47l0.72,-0.38l0.87,-1.43l1.29,-1.21l0.68,0.48l0.65,2.62l0.7,0.31l1.89,-0.13l2.82,1.56l5.42,6.18l0.37,0.67l0.39,2.99l-1.82,2.13l0.14,1.13l2.19,0.89l3.06,2.04l1.02,0.12l1.09,-0.29l0.78,-1.18l1.07,0.24l1.04,2.12l1.93,1.93l4.55,6.82l-1.58,0.69l-0.06,1.02l2.02,1.14l2.25,-0.31l0.24,0.47l-0.05,2.31l0.83,1.24l2.41,0.53l2.82,-0.18l1.96,0.66l0.71,-0.08l1.68,-1.15l1.71,0.44l2.04,-0.07l2.04,-1.61l0.63,0.05l1.22,0.92l0.82,0.12l0.66,-0.82l0.03,-1.6Z", "name": "Bourgogne-Franche-Comt\u00e9"}, "FR-MQ": {"path": "M29.58,521.59l2.04,4.09l0.61,0.13l1.69,-1.37l2.35,-1.15l2.71,-0.7l1.66,-0.01l-1.1,1.0l0.15,0.92l-1.99,2.03l-1.17,-1.91l-0.57,-0.12l-1.08,0.91l-0.34,2.42l0.25,2.72l0.56,0.33l1.58,-0.37l0.87,0.65l-2.81,1.51l-0.09,0.63l0.51,0.51l-0.97,0.5l-0.21,0.44l0.48,1.35l1.03,0.35l0.45,-0.14l0.84,-1.13l2.53,1.1l-1.26,0.61l-0.22,0.52l0.83,1.98l1.01,1.02l2.32,1.31l0.92,2.1l2.03,0.78l0.32,0.71l-0.03,1.98l0.6,0.39l0.71,-0.41l-0.25,2.4l0.41,1.46l0.77,1.07l-1.35,1.57l0.15,0.59l1.42,0.69l1.69,5.35l-1.43,0.75l-1.43,3.51l-1.14,1.51l-1.19,0.51l-1.52,0.14l-1.15,-0.51l-0.42,-1.43l0.56,-0.96l1.27,-0.41l1.36,-0.96l0.05,-2.11l-1.15,-1.71l-0.48,-0.15l-3.49,1.8l-1.39,-0.1l0.06,-0.84l-0.32,-0.42l-0.79,-0.15l-3.38,0.55l-6.91,-0.91l-2.07,0.3l-2.92,1.18l-1.59,0.24l-0.81,-0.46l-2.5,-3.48l-0.12,-1.4l-1.35,-0.99l2.86,-2.99l3.07,-1.49l0.78,-0.71l1.21,1.62l2.11,0.55l1.94,-0.83l0.87,-2.13l-2.15,-3.7l-0.25,-2.0l-0.53,-0.33l-3.16,0.87l-5.49,-0.02l-1.6,-2.4l-4.32,-2.94l-2.07,-1.98l-1.24,-3.51l-1.31,-1.93l0.78,-2.27l-0.31,-1.75l-1.64,-2.67l-3.41,-3.56l-0.79,-1.4l-0.29,-1.59l0.29,-1.51l0.74,-1.23l0.98,-0.9l4.61,-2.61l4.02,-0.06l3.94,1.27l5.23,3.33l4.71,2.09l1.84,1.19l1.36,2.81l1.45,0.5Z", "name": "Martinique"}, "FR-YT": {"path": "M678.38,715.39l-0.52,0.0l-2.02,-6.29l2.65,-2.73l0.87,2.15l0.24,2.21l-0.38,2.26l-0.84,2.4ZM647.49,692.27l-1.04,0.75l-0.14,0.46l1.6,0.36l0.6,0.88l2.18,1.87l2.93,3.52l1.63,1.28l2.49,0.62l4.96,-0.04l2.61,0.78l2.6,1.74l1.05,1.73l0.02,2.1l-0.68,2.82l-3.71,5.46l-1.53,1.19l0.14,2.09l1.04,1.92l2.81,1.86l-0.3,1.89l-3.07,6.4l-2.6,3.07l-1.21,3.45l2.82,4.18l-1.15,1.69l-1.53,1.06l-0.76,-1.37l-0.41,-0.2l-1.1,0.17l-1.53,1.03l-1.83,0.51l-1.63,-0.43l-2.25,-1.33l-1.24,0.41l0.12,-1.88l-0.84,-1.8l-1.74,-0.77l-1.92,0.17l0.0,-0.31l2.91,-1.61l0.29,-2.68l-1.49,-2.81l-2.83,-1.57l0.22,-0.43l1.06,-0.67l1.55,-0.14l0.82,0.5l2.83,3.33l2.81,1.68l1.89,-0.73l0.6,-2.42l-0.76,-2.88l-1.37,-2.17l-1.74,-1.96l-4.21,-3.56l2.58,-0.75l0.36,-0.4l-0.07,-1.34l-0.91,-1.33l-0.68,-2.3l-0.55,-4.71l-0.6,-2.37l-1.57,-1.23l-1.87,-0.61l-1.59,-1.03l-1.74,-2.81l-0.41,-4.1l7.31,-7.87l0.59,1.27l-0.82,0.34Z", "name": "Mayotte"}, "FR-X4": {"path": "M522.82,186.37l0.16,-1.02l1.68,-1.84l-0.22,-0.68l-0.89,-0.72l3.35,-0.37l0.76,-1.01l0.2,-1.75l1.48,-2.59l4.29,-3.81l1.07,-2.07l1.68,-1.1l0.81,-1.18l2.06,-1.61l0.39,-0.63l-0.02,-1.16l-0.99,-0.78l-3.39,0.04l-0.83,-0.47l0.06,-1.11l1.31,-0.86l1.17,-1.67l0.21,-0.79l-0.25,-2.97l1.17,-0.73l3.12,0.34l1.45,-0.25l1.33,-1.0l0.36,-0.86l-0.5,-1.26l-1.41,-0.81l-0.87,-0.98l-1.6,-0.47l-0.56,-4.86l-0.91,-2.12l2.95,-1.52l5.1,-1.23l4.31,-0.57l0.52,-0.78l-0.12,-1.35l0.85,-0.54l2.04,0.1l3.04,1.4l2.06,-0.68l2.32,0.84l1.14,-0.78l0.49,-1.35l0.08,-2.0l-0.52,-1.32l-0.68,-0.44l0.36,-0.58l1.56,-0.48l0.31,-0.52l-1.82,-3.65l1.76,-1.97l-0.32,-2.31l0.46,-1.54l-1.6,-4.48l0.75,-0.67l1.86,-0.09l1.55,-0.83l1.47,-2.03l1.72,-1.03l3.2,-2.67l0.94,-1.48l0.01,-1.35l-1.51,-2.11l0.44,-2.67l1.83,-3.2l0.19,-1.43l-0.27,-1.06l-1.76,-2.77l-0.03,-2.56l3.32,-0.4l9.73,2.22l1.91,-0.29l8.49,-3.54l2.64,-0.38l0.81,-0.51l1.03,-2.26l0.49,-2.73l-0.42,-1.4l0.42,-1.14l6.43,-5.47l1.16,-0.45l0.43,1.03l0.89,0.26l1.7,-0.3l0.3,0.34l-0.46,3.48l-0.42,-0.16l-0.65,0.28l-1.15,2.13l-0.07,2.33l-2.32,4.87l-0.3,1.37l0.89,1.44l2.96,1.1l0.83,1.27l-0.04,1.46l-1.51,3.13l0.87,1.86l0.09,3.19l0.8,0.73l1.7,0.19l5.18,-1.02l3.3,2.38l3.4,1.12l3.27,3.72l2.07,1.47l1.72,0.4l3.86,-0.67l2.26,2.11l0.31,0.88l-0.71,0.59l-0.19,1.13l0.55,1.39l1.85,0.16l0.84,-1.02l2.66,0.93l1.03,0.78l2.89,4.41l0.2,1.33l-0.26,1.48l0.69,1.13l1.59,0.26l4.1,-2.17l2.36,0.84l1.04,-0.1l1.27,-1.8l1.33,-0.57l4.11,0.97l2.13,-1.42l2.44,0.88l3.06,3.02l1.61,0.63l3.79,0.76l0.99,0.85l0.81,2.18l0.48,0.25l7.2,-0.85l1.6,-1.26l0.33,-1.21l1.94,-0.22l0.21,-0.79l2.88,-0.27l3.24,0.68l4.79,2.7l1.85,0.15l2.29,-0.93l0.53,0.08l5.52,2.34l0.95,0.78l0.43,1.78l3.49,3.43l-1.28,0.51l-0.34,1.05l0.39,0.92l5.12,4.46l-0.0,1.31l1.48,0.85l1.03,2.86l0.65,0.17l0.76,-0.38l0.24,0.78l-0.46,1.9l1.04,1.55l0.86,0.29l2.67,0.02l2.33,0.73l0.97,-0.14l1.37,-1.65l-0.67,-2.53l0.24,-0.75l2.79,0.42l1.85,-0.14l4.34,1.88l1.09,0.08l-0.03,2.41l0.73,2.3l1.51,1.11l2.29,-0.99l0.3,-0.66l-0.21,-0.77l0.26,-0.22l2.39,1.43l1.98,0.72l5.31,0.06l2.06,0.7l0.67,-0.41l0.98,-1.46l2.37,-0.6l0.98,-1.9l2.23,-0.77l0.85,0.06l0.55,0.9l3.47,0.42l0.22,0.64l-0.49,0.46l-0.0,0.71l3.02,3.51l1.57,0.84l2.62,0.39l1.24,0.55l0.93,1.37l0.84,0.6l1.01,0.16l2.14,-0.55l2.64,0.55l2.77,-0.96l5.0,1.23l4.59,-0.2l9.65,4.37l6.29,1.29l-1.02,1.01l-1.91,3.08l-2.79,6.52l-0.7,1.0l-3.2,1.38l-0.7,0.85l-0.46,1.3l-2.12,0.14l-0.95,0.41l-0.65,2.78l-3.8,3.45l-2.72,1.47l-2.58,3.44l-0.59,2.73l-0.01,2.81l0.72,2.0l-2.23,1.72l-0.47,2.28l-1.12,1.98l-0.77,3.01l-0.07,1.2l0.89,2.96l-0.06,0.91l-0.71,0.98l-2.24,1.43l-0.92,4.51l-4.46,5.68l-0.61,2.23l-1.16,1.77l-0.81,2.75l0.18,3.35l2.65,4.1l0.12,2.21l-2.19,2.41l-0.36,2.63l-1.24,1.91l0.21,3.21l-1.19,0.9l-1.06,3.68l0.75,2.84l-0.03,1.09l-1.25,1.28l-0.34,0.8l0.43,2.7l1.23,0.87l2.11,3.24l1.05,1.06l-0.21,1.33l-3.51,1.37l-2.73,1.91l0.1,0.7l1.12,0.69l0.01,0.32l-1.72,0.61l-0.07,0.53l0.6,1.0l-0.84,0.74l-2.31,-0.79l-0.93,0.18l-0.3,0.87l0.9,1.46l-1.22,1.75l-1.53,0.53l-4.27,-0.15l-4.24,1.21l-0.96,-0.82l-3.02,-1.12l-0.26,-0.95l1.04,-2.07l-0.39,-0.58l-1.82,0.11l0.39,-1.2l0.0,-1.45l-1.12,-2.14l-3.45,-3.28l-0.86,-0.37l-1.8,-0.05l-0.57,-0.53l0.01,-0.77l1.5,-2.01l0.61,-1.75l-0.17,-3.01l-1.03,-1.85l-1.11,-0.92l-8.58,-4.29l-0.62,-0.69l-0.07,-1.18l-0.36,-0.37l-1.57,-0.16l-6.14,-4.25l-3.36,-1.49l-2.89,-3.05l-1.0,-0.52l-0.66,-0.08l-0.72,0.37l-1.82,2.29l-1.32,0.48l-1.98,0.03l-1.09,-0.27l-5.28,-2.92l-2.42,-0.87l-3.37,0.19l-1.11,0.31l-1.36,0.92l-2.15,0.18l-3.33,-1.51l-0.16,-1.78l-1.1,-1.33l-1.36,-0.79l-2.91,-0.55l-2.05,0.41l-2.72,2.89l-3.08,1.95l0.04,-2.28l-0.66,-0.67l-0.65,0.03l-0.83,0.72l-1.26,2.11l-1.69,0.8l-0.26,0.52l0.33,0.93l-0.2,0.45l-1.94,0.67l-2.38,2.89l-6.41,3.93l-0.82,1.02l-0.32,1.1l0.57,2.0l-0.54,2.43l0.2,2.14l-0.58,1.27l-6.85,2.14l-1.15,-0.23l-3.43,-1.72l-4.29,0.62l-1.46,0.81l-2.83,5.28l-0.39,0.11l-0.67,-0.88l-0.77,-0.22l-2.89,1.56l-0.53,-0.69l-0.42,-1.51l-3.74,-2.21l-0.5,-0.48l-0.45,-1.41l-0.55,-0.47l-1.19,0.09l-1.76,1.89l-1.49,0.14l-2.23,-1.34l-2.42,-2.98l-1.06,-0.04l-1.62,1.4l-0.89,-0.42l-0.59,-1.48l-0.36,-2.77l-1.38,-1.79l0.33,-0.6l2.33,-0.37l0.83,-0.93l-0.18,-1.31l-1.18,-2.31l-4.52,-5.41l-1.18,-0.18l-1.09,1.24l-0.51,-0.21l-0.23,-0.95l0.85,-1.35l0.11,-1.07l-1.02,-0.91l-2.65,-0.91l0.44,-1.3l-0.31,-0.7l-0.84,-0.49l-3.68,-0.69l-1.99,-1.23l-2.67,0.98l-2.98,-0.51l-1.76,0.38l-1.47,1.25l-0.22,1.84l-0.81,0.45l-13.17,1.5l-2.39,1.7l-0.5,0.01l-1.12,-0.71l-1.95,-2.64l-0.78,-0.38l-0.55,0.41l-0.26,2.11l-1.42,-0.99l-1.02,-0.13l-0.91,0.39l-1.31,1.25l-1.75,0.05l-1.93,-0.43l-1.85,1.2l-2.25,-0.63l-2.87,0.17l-1.97,-0.36l-0.57,-0.86l0.08,-2.22l-0.52,-0.94l-0.98,-0.2l-1.67,0.35l-1.41,-0.73l1.56,-0.67l0.12,-0.94l-4.65,-7.0l-1.91,-1.9l-0.72,-1.79l-0.62,-0.61l-1.22,-0.42l-0.78,0.28l-0.57,1.04l-1.58,0.12l-2.82,-1.93l-2.05,-0.84l1.35,-1.41l0.55,-1.05l-0.39,-3.31l-0.49,-0.96l-5.62,-6.39l-3.0,-1.66l-2.3,-0.01l-0.47,-2.37l-1.12,-0.92l-0.15,-0.51l0.56,-2.27l-0.63,-1.75l1.81,-1.89l-0.93,-1.96l2.55,-0.54l0.75,-0.59l1.02,-2.47l0.98,-1.32l2.66,-1.99l0.06,-0.58l-1.98,-2.34l-2.8,0.05l-0.2,-1.26l0.51,-1.93l-0.76,-3.12l-2.03,-2.25l-1.36,-0.04Z", "name": "Alsace-Champagne-Ardenne-Lorraine"}, "FR-X5": {"path": "M296.09,638.61l-0.69,-4.39l0.23,-0.9l1.78,-2.58l-0.28,-3.88l2.39,-2.45l2.79,-0.25l0.84,-0.59l0.32,-0.83l-0.41,-1.39l0.02,-1.75l0.72,-0.92l2.37,-1.37l1.67,-2.92l1.05,0.11l0.6,-0.32l1.2,-3.37l1.88,-1.77l0.55,-1.02l0.07,-0.67l-0.62,-1.7l0.51,-2.21l0.68,-0.76l2.02,-0.75l0.47,-0.89l-1.07,-3.38l0.21,-2.73l-0.21,-0.77l-0.56,-0.5l-0.61,-0.06l-0.78,0.37l-1.02,1.09l-0.38,-0.27l-0.07,-1.71l1.65,-0.19l0.44,-0.8l-0.43,-1.63l-1.92,-3.78l-1.59,-1.2l-0.74,-1.54l-1.23,-0.77l-5.85,-1.11l-1.94,0.13l-0.8,-1.93l-0.88,-0.6l1.33,-2.32l-0.5,-1.87l1.41,-0.23l0.84,-0.72l1.33,-3.17l-0.83,-1.53l0.05,-2.22l1.48,-3.42l-0.0,-0.64l-0.91,-2.1l-1.51,-1.7l0.06,-0.26l3.02,-2.18l2.14,0.33l2.17,-0.22l1.91,-1.79l2.5,-1.32l1.3,0.7l0.06,0.52l-0.83,1.47l0.06,0.63l0.61,0.78l1.48,0.53l2.83,0.04l0.81,-0.49l0.46,-0.83l-0.21,-2.54l0.68,-1.02l1.79,-0.56l0.96,0.87l1.31,-0.01l1.3,-0.95l2.0,-2.61l0.42,-0.08l4.36,1.63l0.81,-0.02l3.09,-1.56l1.3,-0.2l4.46,-1.96l1.1,-0.75l2.5,0.3l5.09,-1.52l1.7,0.75l2.19,1.82l1.56,-0.16l3.92,-2.03l1.14,-2.97l2.17,-1.22l0.77,-1.7l1.0,-0.23l2.2,0.69l1.76,-0.35l0.51,-0.77l-0.02,-0.8l-0.33,-0.62l-1.03,-0.71l2.05,-1.55l2.29,-4.41l0.28,-1.14l-0.68,-1.14l-2.14,-0.75l-0.89,-1.21l0.8,-1.93l0.2,-2.29l0.6,-0.27l1.68,0.95l1.42,0.26l5.01,-0.38l1.18,-1.19l0.12,-3.52l-1.84,-1.84l-0.96,-2.38l-0.09,-1.96l-1.19,-1.7l0.07,-0.49l0.56,-0.53l2.99,-1.33l3.6,-2.94l3.41,-5.27l0.78,-0.63l2.29,-0.5l4.57,-2.86l1.44,-2.18l-0.02,-1.02l-0.61,-0.82l0.11,-0.81l0.64,-0.86l2.37,-0.76l1.69,-2.66l2.13,-1.79l0.74,-1.12l-0.14,-1.73l0.68,-1.13l0.08,-1.03l-1.31,-3.89l0.24,-0.96l3.33,-2.09l1.05,-0.26l1.04,-0.9l1.16,1.27l2.28,-0.55l2.62,0.91l4.01,2.82l1.3,1.87l1.92,0.91l1.31,1.01l0.85,0.2l1.52,0.03l3.21,-0.98l3.94,-1.84l2.17,0.72l1.98,-0.89l4.23,-0.19l0.61,1.12l0.9,5.86l3.12,4.71l1.22,2.47l-0.85,4.57l-0.66,1.67l0.13,0.4l1.71,1.0l1.23,3.98l0.91,0.71l0.84,0.16l0.43,-0.29l0.49,-1.7l5.01,-1.51l1.0,0.08l1.12,1.11l0.62,0.08l1.36,-0.63l3.34,0.11l1.98,-0.21l1.25,-0.59l3.91,-4.25l0.61,-2.45l2.43,-3.52l0.63,-2.44l7.94,-7.42l2.16,2.45l0.35,2.78l0.85,0.31l2.55,-0.29l2.18,2.96l0.8,2.12l1.02,0.73l1.85,0.66l-1.03,0.82l-0.2,0.72l0.58,1.36l0.58,3.63l1.38,2.09l2.07,1.57l0.62,-0.19l0.85,-2.42l1.89,-2.92l0.36,-2.65l1.38,-4.58l0.47,-0.79l1.76,-1.22l0.98,-3.72l0.74,-0.4l1.59,1.82l1.21,-0.05l1.38,-0.79l3.42,-3.06l2.41,-0.28l3.68,-2.03l1.93,-0.24l0.36,0.35l0.79,2.6l3.5,5.9l1.31,1.29l1.23,0.42l1.33,-0.63l3.37,-0.36l1.07,-0.91l0.56,-2.31l0.89,-0.32l1.69,0.16l0.84,0.67l-0.48,1.5l0.3,0.89l4.51,0.95l4.08,3.38l2.89,1.45l1.57,0.41l-0.03,2.85l1.28,3.55l0.51,3.07l0.72,2.11l0.66,1.17l1.36,0.88l0.8,1.32l2.21,6.94l1.77,1.52l1.64,2.61l-0.83,2.07l0.49,3.26l0.42,0.65l0.92,0.24l4.17,-0.59l1.08,1.04l4.93,2.42l1.51,0.3l1.25,-0.53l1.13,-1.2l2.93,-1.99l2.23,-0.62l0.91,0.24l-0.18,1.71l0.35,0.84l1.54,0.89l0.98,-0.13l1.05,-0.78l0.46,-2.02l0.63,-0.49l3.18,-0.06l1.68,0.67l2.19,2.02l1.73,0.78l2.57,0.61l0.57,1.69l1.23,1.54l0.1,1.58l1.9,1.83l0.18,2.73l-0.33,2.14l0.45,2.79l0.62,0.47l1.22,-0.4l1.2,0.21l4.51,5.33l-0.09,0.53l-1.09,-0.09l-0.55,0.26l-0.07,2.45l-1.05,1.25l-1.67,1.19l-2.8,1.16l-5.36,3.57l-0.17,0.92l0.54,4.15l-1.95,4.79l0.01,1.9l-0.43,1.1l-4.47,-1.25l-2.03,0.57l-1.49,1.04l-1.68,2.12l-1.37,2.92l0.45,1.06l1.58,0.26l-0.52,1.33l-2.32,0.57l-0.61,1.38l-1.54,0.44l-3.46,2.46l-2.02,0.48l-1.44,1.06l-1.17,0.31l-1.37,3.01l-2.27,-0.34l-2.81,-1.63l-0.8,-1.47l0.85,-1.47l-0.07,-0.6l-1.92,-1.42l-3.63,-0.32l-3.46,0.39l-2.41,0.83l-13.11,9.5l-7.26,2.86l-2.05,1.55l-4.61,5.42l-1.04,0.41l-2.52,-1.04l-4.05,0.36l-4.36,1.63l-4.56,3.3l-1.44,1.8l-2.59,2.25l-1.5,2.23l-2.41,2.09l-2.8,6.09l-1.93,6.26l0.17,0.94l0.79,0.58l0.07,1.22l-0.96,8.67l0.17,4.88l-0.34,3.08l0.26,4.02l0.72,5.72l1.02,1.05l4.27,1.24l0.37,0.52l-0.12,1.76l1.98,2.59l0.3,1.34l-2.29,0.36l-3.05,-0.09l-1.83,-0.7l-1.61,-2.13l-2.87,-0.28l-1.16,0.57l-2.17,-0.57l-1.94,1.35l-3.1,0.24l-3.76,2.65l-4.83,-0.08l-1.22,0.53l-2.65,1.86l-0.57,0.72l0.5,1.8l0.52,0.57l-2.26,-0.17l-2.79,-0.85l-1.31,0.01l-0.83,0.63l-0.48,1.11l-0.67,0.22l-2.94,-1.07l-1.08,-0.76l-1.67,-2.44l-2.78,-0.4l-6.16,-2.91l-1.99,0.2l-3.71,1.04l-3.02,-0.29l-1.14,0.54l-1.01,1.86l-2.45,1.95l-0.62,0.36l-2.45,0.36l-0.71,-0.1l-1.77,-1.24l-1.32,-3.75l-1.07,-1.5l-3.53,-0.74l-4.73,-2.58l-4.65,-0.78l-0.31,-0.6l0.18,-1.54l0.62,-1.4l0.95,-0.83l1.41,-0.12l0.28,-0.64l-0.97,-1.12l-2.03,-0.75l0.42,-1.19l-0.34,-0.53l-6.9,-0.61l-4.12,-2.32l-2.77,0.67l-1.86,-0.09l-0.4,0.28l-0.88,2.73l-0.91,0.33l-0.66,-0.77l-1.07,-2.58l-2.23,-3.15l-1.29,-0.49l0.21,-0.83l-0.29,-0.49l-1.53,-0.36l-7.55,-0.02l-2.58,0.53l-0.9,-0.58l-1.64,-3.14l-1.32,-1.06l-1.36,-0.37l-5.14,-0.31l-1.98,-1.15l-1.93,0.82l-1.92,-1.37l-4.63,-2.09l-2.28,-0.07l-4.25,-1.04l-1.85,0.13l-1.67,0.77l-0.3,1.2l0.12,1.49l-0.82,1.99l0.47,0.91l-0.83,1.28l0.24,0.56l0.76,0.24l0.61,0.69l0.36,0.97l-0.05,1.0l-0.39,0.58l-10.29,0.14l-1.18,-0.37l-3.41,0.59l-1.07,-0.19l-0.39,-1.05l-2.06,-1.35l-1.26,0.44l-2.75,3.06l-0.55,0.07l-2.26,-3.03l-4.31,-1.22l-1.14,0.13l-1.23,0.71l-3.75,0.5l-4.68,1.54l-1.99,0.16l-2.26,-0.8l-1.02,-1.0l-1.36,-0.45l-0.27,-0.97l-1.39,-1.16l-0.66,-0.99l-0.32,-1.14l0.13,-1.21l-0.54,-0.42l-2.76,0.82l-1.36,-0.14l-0.79,-1.35l-3.39,-1.83ZM436.08,668.09l0.96,-0.22l0.2,-0.59l-1.32,-2.33l-0.63,-0.79l-0.47,-0.12l-0.9,0.48l-0.67,1.33l0.07,1.16l0.97,0.84l1.79,0.25ZM309.0,601.52l-0.8,-0.16l-0.41,-0.99l0.4,-2.01l0.84,-0.4l0.79,0.28l0.31,0.77l-0.59,2.03l-0.54,0.47ZM307.75,607.5l-0.9,-0.16l-0.53,-1.24l0.07,-0.86l1.14,-1.14l1.03,0.52l0.48,1.4l-0.86,1.31l-0.43,0.15Z", "name": "Languedoc-Roussillon-Midi-Pyr\u00e9n\u00e9es"}, "FR-X6": {"path": "M415.84,70.92l0.57,0.0l0.4,-0.4l0.0,-0.59l-0.39,-0.4l-2.26,-0.33l-0.8,-0.54l-1.15,-2.03l-2.54,-1.04l-0.42,-0.47l0.59,-5.43l1.08,-1.83l2.08,0.36l0.47,-0.39l-0.18,-0.83l-3.2,-2.12l1.12,-3.04l0.33,-6.83l1.74,-1.1l0.1,-0.58l-1.61,-2.08l-0.3,-1.01l-0.26,-3.74l-0.64,-3.46l0.26,-2.94l2.0,-4.41l0.34,-1.54l-1.52,-6.24l1.26,-0.84l3.05,-0.71l2.82,-2.96l1.8,-1.42l11.58,-4.22l1.24,0.13l2.03,-1.0l9.83,-1.04l11.16,-3.16l4.16,0.3l5.0,-1.09l3.16,-1.35l0.71,1.42l0.6,3.51l0.63,1.64l3.14,3.26l0.16,1.34l-1.61,1.47l-0.46,0.87l1.16,3.76l-0.52,1.99l1.22,0.87l1.03,1.61l4.25,0.56l0.92,1.61l2.23,1.78l1.46,2.61l1.24,0.91l5.27,2.03l1.32,0.13l0.92,-0.63l1.82,-2.63l2.37,-1.63l7.93,-2.08l1.41,0.36l0.92,0.73l2.64,4.35l0.72,0.59l1.48,0.27l0.38,0.58l0.61,1.69l-0.8,1.48l0.51,2.38l1.6,4.47l0.09,2.5l0.42,1.17l1.9,1.66l3.82,1.44l1.7,-0.16l2.68,-0.82l2.06,-1.38l0.72,-0.05l0.89,0.38l-0.6,1.19l0.12,0.56l0.76,0.47l4.13,0.08l2.56,0.75l1.12,0.9l0.91,1.39l1.05,10.05l2.3,1.94l1.29,-0.74l1.51,-2.44l1.09,-0.6l2.59,-0.16l2.45,0.25l3.52,1.61l1.52,-0.04l3.85,-1.36l1.15,-0.1l1.03,0.41l1.98,1.84l2.53,1.56l1.84,3.13l1.53,0.38l0.59,-0.74l-0.06,-0.72l0.39,-0.14l1.83,1.02l0.14,0.88l-2.69,2.35l-1.79,5.34l-0.17,1.55l1.11,0.78l1.48,-0.45l0.84,0.08l1.74,4.81l-3.86,2.3l-0.55,0.59l-0.59,1.62l0.62,1.5l0.04,0.67l-0.45,0.3l0.22,0.46l3.43,1.56l1.54,0.17l0.08,2.76l1.79,2.83l0.07,1.8l-1.86,3.26l-0.49,2.91l0.31,0.92l0.9,0.74l0.32,1.65l-0.7,1.08l-3.14,2.62l-1.8,1.1l-1.44,2.0l-1.21,0.65l-2.01,0.15l-1.16,1.07l0.06,0.89l1.48,3.98l-0.45,1.42l0.37,2.06l-1.37,1.28l-0.45,0.95l0.11,0.84l1.61,2.67l-1.45,0.55l-0.75,1.27l0.2,0.5l0.68,0.33l0.4,0.93l-0.07,1.86l-0.63,1.32l-0.79,0.0l-1.69,-0.75l-2.03,0.68l-2.88,-1.37l-2.38,-0.13l-1.45,0.91l-0.06,1.82l-4.11,0.52l-5.16,1.25l-3.39,1.78l-0.06,0.98l0.85,1.81l0.67,5.15l0.51,0.49l1.41,0.26l2.36,2.15l-0.2,0.54l-0.95,0.74l-1.13,0.21l-3.3,-0.33l-1.51,0.77l-0.45,1.51l0.35,1.68l-0.15,1.05l-0.98,1.37l-1.47,1.05l-0.1,1.7l0.34,0.61l1.16,0.44l3.19,-0.1l0.6,0.44l-0.02,0.44l-2.28,1.99l-0.73,1.1l-1.76,1.18l-1.05,2.05l-3.83,3.24l-2.02,3.25l-2.26,0.11l-3.0,-1.67l-0.43,-0.63l-0.47,-2.75l-0.76,-0.9l-0.81,-0.01l-0.99,0.47l-0.51,-0.14l-8.73,-6.6l-0.51,-1.18l0.6,-1.73l-0.09,-0.9l-0.97,-1.91l-1.19,-1.29l-3.91,-1.13l-2.27,1.08l-1.86,0.05l-1.84,1.04l-1.74,-0.79l-5.87,1.07l-4.04,-0.91l-0.77,0.16l-1.31,1.18l-0.79,0.15l-2.03,-1.11l-1.93,0.48l-1.66,-1.34l-1.69,-0.39l-2.67,0.99l-1.08,-0.76l-1.25,-1.57l-0.8,-0.23l-1.37,0.39l-10.67,-5.04l-1.18,-0.26l-1.21,0.29l-2.01,1.11l-1.55,-0.09l-3.94,-1.5l-2.4,-0.25l-1.47,-0.68l-1.66,-1.28l-0.74,-0.17l-1.89,0.7l-3.44,2.04l-4.01,0.26l-2.09,0.47l-5.65,-1.4l-2.68,-0.11l-1.23,-0.58l-0.69,-1.87l-0.93,-0.84l-0.28,-0.86l-0.07,-0.43l0.7,-0.94l0.92,-0.28l0.45,0.19l1.28,1.38l0.8,0.35l0.78,-0.08l0.66,-0.55l-0.41,-1.62l-1.62,-3.45l-1.74,-5.57l-0.28,-3.2l1.24,-3.11l1.48,-1.09l0.51,-1.75l-0.83,-1.22l-2.26,0.41l-0.42,-0.32l-0.42,-3.51l-0.53,-1.76l-0.18,-3.85l-0.71,-1.37l2.2,-1.38l0.74,-1.07l0.26,-1.01l-0.65,-0.89l-2.49,0.44l-0.22,-0.26l2.37,-3.65l2.12,-1.58l0.03,-1.31l-2.65,-4.66l-0.9,-3.09l-1.01,-1.33l-10.08,-8.97l-8.3,-4.93l5.17,-5.05l1.41,-4.28l1.94,-2.2l1.85,-0.21l5.97,2.46l0.78,-0.01l0.75,-0.53l0.14,-0.85l-1.42,-0.64Z", "name": "Nord-Pas-de-Calais-Picardie"}, "FR-X7": {"path": "M458.84,445.76l1.95,-0.35l3.03,1.58l1.95,0.27l1.37,-0.72l0.73,-1.76l1.22,-4.68l-1.19,-1.15l-0.26,-4.14l-1.44,-1.87l-0.36,-0.94l0.86,-2.7l1.65,-0.68l0.84,-1.03l0.29,-4.28l-0.66,-1.43l-1.92,-2.11l-0.96,-0.86l-1.78,-0.64l-0.67,-1.98l-1.72,-2.4l0.64,-0.91l3.14,-2.29l2.41,-0.16l2.48,-2.58l1.63,-3.33l1.7,-1.93l0.19,-3.74l-0.21,-0.9l-1.86,-3.26l-0.2,-1.44l0.37,-3.62l-2.17,-3.8l-1.06,-3.16l-3.18,-4.2l-1.27,-0.36l-1.13,0.66l-0.76,-1.76l-0.96,-0.91l-3.48,-0.95l-0.4,-0.39l-0.94,-2.84l-1.76,-1.56l-1.91,-2.38l2.1,-3.42l1.46,-0.64l1.48,-1.8l3.52,-1.57l7.94,-0.8l5.53,-1.6l0.14,-1.5l-1.97,-2.78l-0.03,-0.72l0.53,-1.33l-1.03,-1.64l0.3,-0.35l2.27,-0.17l0.41,-0.79l-0.09,-1.21l1.63,-0.12l4.07,-3.3l0.82,0.8l2.29,0.76l0.71,-0.21l1.28,-1.11l2.21,0.26l1.77,-2.17l3.83,-2.18l2.59,-0.73l2.86,0.18l0.27,1.52l1.25,1.52l3.22,1.84l2.72,0.19l2.74,2.56l0.75,0.33l1.03,0.0l2.4,-1.05l1.66,-0.1l1.61,0.25l2.97,1.11l1.41,-0.68l1.06,-1.27l1.82,0.28l1.29,2.19l0.04,1.49l0.5,0.54l0.6,0.12l1.71,-0.33l4.06,-2.15l0.58,-1.97l1.34,-0.87l0.39,-1.8l1.21,0.2l1.4,2.25l0.6,1.79l2.46,2.19l1.56,2.63l0.94,0.54l0.28,1.5l-0.41,3.04l0.32,0.67l4.03,2.05l1.74,0.08l2.67,2.22l3.67,0.71l2.19,1.13l0.73,2.83l-0.64,3.08l0.52,1.3l-0.02,1.46l0.82,1.68l-1.19,1.0l-5.58,2.73l-0.18,0.55l0.71,1.8l-0.19,2.42l0.26,0.72l1.01,0.63l2.01,0.62l2.09,1.49l0.85,0.18l1.12,-0.06l4.06,-1.25l3.56,0.89l3.56,-0.61l4.78,1.24l1.97,-0.03l1.79,-0.63l1.67,-1.19l1.89,-2.21l1.71,-5.14l5.06,1.43l1.25,-0.12l1.94,-0.93l1.54,1.64l0.93,0.37l1.05,-0.11l0.65,-0.45l0.57,-1.97l0.55,-0.28l1.79,0.68l0.27,1.99l1.62,1.08l0.05,2.15l1.07,2.48l1.36,0.98l3.59,0.4l0.43,-0.51l-0.22,-1.1l1.28,-4.71l3.52,-6.66l0.17,-1.98l1.46,-2.52l0.86,-4.24l1.47,-3.8l1.04,-0.4l5.0,1.43l1.47,-0.15l3.7,-1.24l1.74,-0.16l1.25,0.39l2.16,1.97l1.64,0.85l4.11,0.99l0.02,2.41l0.61,1.09l1.69,0.58l0.98,0.74l0.72,2.39l1.08,1.11l2.12,0.65l0.91,1.09l1.74,0.37l-0.08,3.17l0.9,0.94l1.79,0.47l2.93,-1.5l1.13,-1.19l1.49,-0.38l0.56,-1.17l2.38,-2.03l2.83,2.21l0.53,0.68l0.4,1.81l0.7,0.56l7.33,0.5l2.1,-0.36l4.85,-3.81l1.29,-1.9l5.29,-5.36l2.71,1.45l1.49,1.81l0.06,0.64l-2.15,4.4l-0.57,4.01l-1.43,0.34l-1.32,-0.11l-3.71,1.58l-1.69,1.08l-0.18,1.23l1.62,2.13l-1.39,2.81l0.08,0.46l0.46,0.07l1.43,-0.74l2.69,-0.56l2.68,-0.09l2.31,0.77l2.11,-0.97l3.09,-3.14l3.94,-2.28l1.58,-1.45l-0.19,-2.13l-0.68,-0.47l-1.16,0.35l-0.4,-0.18l-0.89,-2.03l4.08,-5.7l3.32,0.16l1.15,1.46l0.93,0.33l0.77,-0.37l0.82,-1.0l4.35,-1.83l1.15,-1.48l11.95,-1.05l5.16,0.78l0.08,0.91l-0.38,1.12l-1.55,1.58l-0.38,1.39l1.23,1.83l2.14,1.97l1.23,1.83l-2.07,3.51l-1.08,2.81l-0.54,2.86l0.83,1.53l4.77,0.91l0.69,0.58l-1.17,1.69l0.25,3.27l1.29,0.49l1.46,-0.85l1.18,0.45l4.32,4.17l1.84,4.74l-1.27,1.06l-1.66,3.08l-1.14,0.85l-2.54,0.9l-1.94,0.05l-0.44,1.16l-1.45,-0.68l-2.83,1.09l-0.84,1.25l-0.34,1.34l0.12,2.79l0.7,3.2l1.31,1.78l1.75,1.17l2.44,0.57l2.19,1.73l2.63,0.83l0.29,0.87l-0.98,2.48l1.03,2.1l0.33,3.09l0.49,1.22l5.55,3.27l1.58,2.67l3.72,1.73l-0.54,1.71l-1.23,1.93l-2.31,2.53l0.24,2.49l0.65,1.55l0.0,0.91l-1.6,1.21l-1.13,1.81l-0.21,0.18l-0.84,-0.84l-0.72,-0.2l-4.4,1.41l-2.78,3.01l-2.44,0.32l-0.53,0.84l0.54,1.12l-1.68,0.71l-4.37,-1.72l-2.37,-0.29l-2.05,1.2l-2.07,0.11l-2.41,1.23l-1.98,0.23l-2.21,1.2l-2.35,0.04l-0.74,0.29l-1.11,2.4l-0.81,0.88l-1.02,0.26l-3.86,-1.22l-0.85,-1.84l-1.43,-1.0l-4.05,-0.41l-1.45,-0.84l-0.51,0.04l-1.75,2.08l-1.05,4.98l0.01,1.51l0.51,1.03l1.24,0.41l3.69,-0.43l0.93,0.46l0.56,3.36l1.75,2.0l0.32,1.03l-0.27,3.17l-0.32,0.52l-3.52,-0.79l-3.8,0.98l-1.71,-0.15l-1.86,0.35l-2.28,-0.4l-3.91,2.12l-0.99,0.14l-1.72,-0.45l-1.28,0.35l-2.59,1.78l-0.33,0.77l0.25,1.63l-0.69,0.66l-2.32,0.66l-3.68,0.21l-1.02,0.38l-2.07,2.9l0.34,1.1l0.66,0.51l0.02,0.62l-1.63,1.7l-4.53,1.21l-3.09,-0.29l-1.24,0.51l-0.43,1.87l-2.53,3.81l-0.14,0.94l0.84,1.52l2.0,1.4l0.28,0.97l-0.33,0.33l-3.19,1.81l-4.16,-1.25l-1.98,-0.25l-1.44,0.11l-0.53,0.46l-0.21,0.76l0.41,1.66l1.65,1.36l0.07,0.45l-0.58,0.32l-2.77,-0.46l-0.85,0.34l-0.32,0.69l0.24,0.71l1.21,1.35l0.6,1.94l2.45,1.8l2.52,0.64l1.16,0.61l4.22,0.12l-0.41,1.18l0.12,0.71l1.56,1.75l2.09,1.43l-0.14,4.66l-0.66,1.16l0.12,1.87l-0.76,-0.17l-0.63,-1.31l-0.81,-0.55l-1.74,-0.29l-0.98,0.29l-3.26,3.17l-1.73,0.96l-2.39,-0.41l-3.82,-2.56l-1.16,-2.83l-0.73,-0.49l-2.0,-0.2l-4.34,-1.4l-2.82,0.21l-2.6,-0.66l-0.67,-0.77l-0.1,-1.5l0.78,-2.2l-0.29,-0.88l-0.62,-0.28l-2.47,1.42l-4.48,-0.52l-4.27,1.08l-3.5,1.47l-2.77,0.41l-2.98,1.5l-1.01,-0.71l-1.77,-4.15l-1.43,-1.32l-1.13,-0.54l-3.59,-0.26l-1.8,0.22l-0.35,0.4l0.02,2.88l-3.85,-1.27l-2.16,-2.01l-1.82,-0.73l-3.57,0.03l-1.2,0.93l-0.35,1.86l-1.3,0.63l-0.49,-0.12l-0.72,-0.87l0.27,-1.36l-0.32,-0.86l-0.67,-0.41l-0.94,-0.05l-2.47,0.7l-4.94,3.64l-1.17,-0.23l-4.88,-2.4l-1.24,-1.11l-4.78,0.52l-0.65,-3.42l0.81,-1.28l-0.0,-0.88l-1.75,-2.86l-1.71,-1.42l-2.22,-6.93l-0.89,-1.48l-1.35,-0.86l-0.56,-0.98l-0.68,-1.98l-0.52,-3.12l-1.27,-3.49l0.08,-2.96l-0.31,-0.43l-1.46,-0.31l-3.14,-1.55l-4.13,-3.41l-4.32,-0.85l0.51,-1.34l-0.08,-0.66l-1.42,-1.21l-1.93,-0.18l-1.33,0.48l-0.47,0.69l-0.31,1.9l-0.69,0.54l-3.23,0.32l-1.34,0.6l-0.62,-0.3l-1.06,-1.05l-3.45,-5.83l-0.79,-2.59l-0.84,-0.77l-2.38,0.25l-3.69,2.03l-1.69,-0.0l-0.85,0.32l-4.65,3.8l-0.58,0.1l-1.2,-1.57l-0.6,-0.32l-1.46,0.59l-0.57,0.8l-0.62,3.19l-1.64,1.03l-0.58,0.99l-1.42,4.71l-0.35,2.6l-1.83,2.78l-0.72,2.01l-1.6,-1.21l-1.15,-1.79l-0.53,-3.47l-0.56,-1.36l1.14,-0.77l-0.12,-1.16l-2.88,-1.38l-0.69,-1.95l-2.44,-3.26l-0.78,-0.22l-2.44,0.35l0.05,-1.49l-0.34,-1.19l-1.91,-2.42l-1.03,-0.42l-8.44,7.7l-0.74,2.6l-2.44,3.55l-0.58,2.41l-3.68,3.99l-0.93,0.45l-1.89,0.2l-3.45,-0.1l-1.45,0.62l-1.19,-1.14l-1.48,-0.11l-5.33,1.64l-0.67,1.8l-0.21,-0.03l-0.95,-1.01l-0.89,-3.39l-1.7,-1.05l1.55,-5.49l-0.1,-0.85l-1.32,-2.73l-3.07,-4.61l-0.85,-5.71l-0.6,-1.16l0.94,-0.4l2.23,-0.24l1.11,-0.74l0.08,-1.24l-1.43,-2.43l-0.11,-0.76l3.2,-2.58l2.85,-5.59l0.22,-1.14l-1.07,-2.31l0.11,-1.37l2.59,-1.98l0.51,-1.87l3.08,-1.33l2.04,-2.9l1.09,-0.69l1.42,-3.08l-0.14,-1.07l-0.95,-0.99ZM619.51,528.65l1.54,-0.89l1.27,-2.18l1.36,-1.26l0.07,-0.97l-0.77,-1.43l-2.49,-2.28l-2.0,-0.54l-1.01,0.36l-0.89,0.76l-3.05,4.55l-0.55,2.1l0.5,1.33l0.7,0.43l5.31,0.04Z", "name": "Auvergne-Rh\u00f4ne-Alpes"}, "FR-X3": {"path": "M215.0,114.74l0.19,0.68l0.67,0.4l0.84,-0.17l1.4,-0.93l2.84,0.51l1.15,-0.47l3.33,-3.1l2.74,-0.72l1.03,-0.08l7.56,1.27l2.02,5.19l-1.5,1.01l-0.48,1.56l-1.27,0.04l-1.1,0.67l-0.37,2.34l1.83,2.99l0.97,2.27l4.63,4.95l0.53,1.09l0.2,1.62l-0.78,2.24l0.19,0.81l0.44,0.3l1.7,-0.5l1.69,1.31l1.46,-0.25l0.31,-0.93l-0.57,-0.85l0.33,-0.79l0.91,-0.85l0.91,-0.36l7.94,0.35l7.3,2.35l10.46,0.54l4.16,0.79l2.31,-1.02l4.08,1.27l4.12,0.0l2.91,1.4l3.03,0.6l5.69,2.93l0.43,-0.04l1.48,-1.14l9.72,-1.95l2.93,-1.18l1.7,-1.25l1.45,-0.37l2.06,-2.35l3.94,-2.42l15.26,-2.94l2.9,-1.27l2.26,-2.14l0.01,-0.51l-0.5,-0.1l-4.29,2.28l-4.93,0.6l-4.99,-0.57l-4.35,-1.26l-3.7,-0.45l-1.09,-0.56l-0.79,-1.28l-0.73,-0.42l0.09,-1.68l3.15,-4.92l2.42,-6.93l3.76,-2.82l9.31,-3.67l0.73,-0.8l7.56,-3.82l2.18,-0.58l2.37,-1.37l4.68,-1.45l5.32,0.04l25.22,-6.87l1.56,-1.02l1.59,-0.51l2.41,-2.26l6.63,-4.5l8.53,5.05l10.02,8.92l0.82,1.05l0.92,3.13l2.44,4.07l0.21,1.13l-2.03,1.49l-2.12,2.89l-0.43,1.1l0.07,0.84l0.35,0.34l2.53,-0.43l0.4,0.34l-0.82,1.37l-1.94,1.09l-0.47,0.89l0.74,1.37l0.19,3.89l0.54,1.79l0.44,3.63l0.8,0.82l2.01,-0.46l0.65,0.53l-0.4,1.31l-1.05,0.52l-0.44,0.58l-1.34,3.49l0.3,3.4l1.76,5.64l1.98,4.52l-0.91,-0.06l-0.81,-0.99l-1.21,-0.74l-0.85,0.03l-0.88,0.48l-0.92,1.37l0.38,1.6l-1.77,3.08l-2.9,8.4l-2.17,1.01l-7.75,1.57l-0.75,0.55l-0.17,1.05l0.69,1.52l-0.24,2.26l0.57,0.74l1.67,0.42l0.21,2.28l-2.16,1.15l-0.44,0.6l-0.21,0.94l0.52,1.61l-0.14,1.15l-0.79,0.76l-2.47,1.15l-1.51,1.17l-1.09,1.61l-0.67,1.82l-0.53,0.5l-4.94,2.31l-1.82,-0.62l-3.38,0.04l-2.24,-1.49l-1.25,-0.15l-0.48,0.48l-0.06,1.17l-0.31,0.42l-3.47,0.34l-2.42,2.37l-1.92,0.04l-5.91,1.45l-1.53,0.88l-2.02,1.86l0.26,3.84l0.66,1.39l1.17,1.83l2.61,1.67l3.16,2.99l0.37,0.83l-0.39,1.76l0.17,1.43l1.87,2.7l-1.12,1.47l-0.63,1.57l-1.95,1.77l-5.36,2.18l-2.34,0.41l-0.55,0.48l-0.55,1.79l1.37,1.79l-0.05,2.88l1.83,3.34l-0.85,1.08l-2.22,0.71l-2.49,-1.01l-2.47,-2.98l-1.91,-1.6l-3.5,0.2l-5.14,-1.24l-0.71,-0.36l-0.06,-1.74l-0.56,-0.94l-3.09,-0.02l-2.45,-1.44l-1.01,-1.58l-0.49,-1.75l0.16,-5.51l-0.43,-0.91l-1.29,-0.88l-2.69,-1.04l-1.85,-0.2l-5.49,1.1l-3.21,1.67l-1.67,2.12l-2.54,0.86l-0.71,1.68l-2.54,-0.46l-3.9,0.33l-0.22,-3.58l-0.39,-0.79l-0.77,-0.81l-1.89,-0.44l-3.02,-2.76l-0.65,-1.6l0.49,-1.46l-0.32,-0.81l-0.74,-0.61l-3.82,-1.27l-0.99,0.47l-0.03,1.62l-0.34,0.71l-1.15,0.57l-1.4,-0.02l-1.63,0.51l-1.2,1.45l-0.68,0.11l-4.11,-0.95l-3.98,-0.16l-1.2,0.44l-2.14,1.99l-1.05,0.56l-5.18,1.05l-1.18,-1.31l-0.96,-0.14l-3.52,0.92l-0.5,1.08l-0.81,0.48l-1.68,-1.15l-1.86,0.23l-1.74,-2.89l-1.1,-0.85l-2.45,0.29l-2.37,-0.8l-3.57,1.1l-2.0,0.01l-3.01,-0.43l-2.56,-1.35l-7.85,-1.68l-1.41,0.23l-2.22,2.41l-1.99,0.71l-2.78,1.91l-1.65,0.53l-2.09,-0.17l-2.56,-1.81l-2.2,-3.13l-0.99,-2.96l-2.54,-5.28l4.98,0.51l6.48,-1.24l2.14,0.69l0.44,-0.14l0.0,-0.47l-1.13,-1.5l-1.5,-0.64l-2.34,-0.18l-0.46,0.44l-0.7,-1.34l-2.87,-0.97l-0.88,-2.35l-2.17,-1.65l-0.47,-1.69l-0.34,-4.2l-0.74,-1.24l-1.4,-0.44l1.45,-1.15l0.44,-1.03l0.49,-3.71l0.92,-0.11l0.34,-0.9l0.0,-1.07l-1.2,-0.91l0.97,-5.38l0.51,-0.24l1.33,0.54l0.55,-0.37l-0.25,-0.86l-1.33,-0.51l-1.38,0.0l-1.32,0.6l-0.59,1.22l-0.56,-1.29l0.43,-3.35l-0.31,-0.52l-0.67,-0.12l-0.18,-0.32l0.72,-2.62l1.48,-1.06l0.02,-0.68l-0.75,-0.5l-0.56,0.09l-0.66,-2.09l-0.35,-2.8l0.3,-0.47l0.85,-0.05l2.15,0.54l0.5,-0.39l0.0,-0.49l-0.3,-0.39l-2.96,-0.99l-1.32,-0.03l-0.67,1.15l-0.44,-0.44l-0.98,-2.84l-0.71,-0.78l0.42,-0.24l0.06,-0.7l-2.38,-1.94l-0.24,-0.63l0.68,0.0l0.4,-0.4l-0.83,-2.29l-0.82,-0.22l-0.71,1.2l-3.02,-2.14l0.32,-0.66l-0.42,-0.61l-2.16,0.52l-0.37,-0.34l-0.17,-5.35l-1.15,-1.92l-0.39,-1.49l-2.39,-2.79l0.28,-0.81l1.64,-1.27l0.51,-0.95l0.27,-4.14l-1.3,-2.8l-0.63,-0.67l-4.47,-1.27l0.4,-1.53l-0.1,-1.22l0.13,-0.3l1.34,-0.15l2.46,1.07l1.75,-0.2l0.58,0.33l0.27,1.01l0.5,0.53l6.68,0.92l5.27,1.29Z", "name": "Normandy"}, "FR-R": {"path": "M159.66,300.12l3.14,1.13l1.62,-0.32l1.05,-1.07l0.07,-0.47l-0.56,-1.04l-2.21,-2.2l-0.46,-0.11l-0.82,0.44l-0.77,-1.59l-2.05,-1.2l4.12,-2.13l1.57,0.33l-0.09,0.55l0.45,0.48l0.58,0.01l2.59,-1.53l0.4,-0.74l-0.31,-0.53l-2.95,-0.38l0.35,-0.69l-0.16,-0.53l-0.77,-0.68l0.87,-0.21l2.37,0.81l3.21,-0.37l0.81,-0.45l0.88,-1.05l1.08,-1.85l0.93,-0.29l1.83,0.9l2.88,-0.91l0.01,0.96l0.41,0.72l0.57,0.29l0.85,-0.14l0.92,-1.04l0.66,-1.38l2.05,-1.24l0.71,-1.09l0.79,-3.53l0.74,-1.69l0.12,-1.43l-0.24,-0.62l0.35,-1.02l2.91,-1.59l2.21,-0.38l2.07,0.05l5.67,-2.08l1.82,0.61l1.95,0.17l7.4,-2.04l2.87,-1.7l1.19,-1.55l1.73,-1.21l6.3,-2.55l1.6,-1.15l1.76,-0.13l1.82,0.29l1.17,1.44l1.85,0.86l6.14,0.89l0.45,-0.31l0.47,-2.16l1.14,-1.77l2.89,-9.08l0.53,-0.9l1.85,-1.62l4.09,-0.58l1.25,-0.49l0.67,-0.66l-0.07,-4.84l-1.76,-2.27l-0.71,-4.7l0.64,-0.86l0.08,-0.99l-0.82,-4.82l-1.09,-2.36l1.95,-4.01l-0.03,-2.5l-0.74,-5.78l0.2,-5.45l4.76,0.37l3.56,-1.09l2.14,0.78l2.29,-0.33l0.82,0.61l1.89,3.04l0.78,0.28l1.22,-0.43l1.2,1.0l0.96,0.2l0.9,-0.36l0.74,-1.34l3.16,-0.79l0.67,0.27l0.43,0.85l0.82,0.32l5.49,-1.07l1.32,-0.69l2.1,-1.96l0.92,-0.33l3.75,0.17l4.09,0.95l1.06,-0.14l1.34,-1.53l1.33,-0.41l1.5,0.0l1.45,-0.72l0.62,-1.2l-0.17,-1.13l0.3,-0.28l3.98,1.51l0.19,0.36l-0.49,1.44l0.18,1.02l0.67,1.13l3.2,2.92l2.03,0.53l0.36,0.46l0.28,0.51l0.24,3.91l0.44,0.37l3.61,-0.38l3.37,0.46l0.6,-0.45l0.44,-1.41l2.46,-0.81l2.23,-2.53l2.43,-1.15l5.27,-1.07l1.66,0.18l3.55,1.66l0.35,1.07l-0.32,2.68l0.3,3.32l0.87,2.03l1.63,1.4l1.84,0.94l2.82,-0.07l0.41,2.48l1.13,0.63l5.3,1.27l2.3,0.07l0.97,-0.32l1.62,1.39l1.93,2.55l2.19,1.39l1.53,0.31l1.53,-0.36l2.97,1.92l3.09,0.38l0.63,0.45l-0.41,0.52l-4.24,2.22l-0.26,1.28l1.21,1.18l-2.67,0.5l-0.56,0.47l-0.11,1.1l0.84,1.7l0.5,0.5l1.48,0.31l-0.65,3.22l0.42,1.92l-0.15,0.49l-3.53,3.05l-0.56,1.67l-0.05,3.43l-1.51,4.18l-1.33,1.2l-1.74,0.98l-3.44,1.47l-1.46,1.3l-0.79,1.81l0.64,1.76l-0.14,0.45l-2.17,0.43l-3.23,1.43l-2.52,0.52l-1.04,0.58l-0.9,0.99l-1.95,-0.85l-1.07,0.0l-0.78,0.53l-0.36,0.7l0.4,2.57l-8.48,-1.68l-0.46,0.23l-1.7,4.29l0.46,3.58l-1.91,3.72l-1.03,3.13l0.2,2.82l-4.39,6.08l-1.47,5.38l-0.85,5.56l-2.84,-0.47l-1.46,0.44l-2.01,2.22l-0.96,2.4l-2.38,0.81l-1.53,2.05l-1.11,-0.31l-0.83,-2.02l-0.97,-0.76l-0.79,-0.2l-1.88,0.35l-3.55,-0.08l-6.53,0.7l-5.83,1.67l-2.05,-0.73l-2.08,0.46l-1.21,0.8l-0.31,0.62l0.12,0.77l0.69,0.97l-0.13,0.38l-4.92,2.46l-3.85,0.33l-5.2,-0.68l-4.23,0.56l-4.16,-1.9l-0.94,-0.18l-0.84,0.51l-0.29,1.01l0.17,0.47l2.2,1.37l2.18,3.03l1.67,0.89l0.69,0.84l0.32,2.18l1.04,2.25l0.66,0.7l3.5,1.91l1.73,1.57l0.1,0.48l-0.78,1.59l0.1,0.98l3.83,6.52l0.57,3.11l1.44,2.21l0.79,4.91l-1.22,1.54l-0.25,0.91l0.97,4.27l-0.6,2.86l0.25,1.23l0.83,0.72l1.04,-0.23l1.97,1.38l0.71,1.02l-0.74,0.77l-1.26,-0.1l-1.22,0.34l-2.25,2.0l-2.76,0.16l-3.62,1.68l-4.06,-2.24l-1.7,-0.27l-6.67,1.09l-0.44,-0.27l0.9,-1.15l0.15,-0.7l-0.48,-0.9l-0.77,-0.24l-6.96,1.54l-1.16,0.7l-1.12,1.42l-0.75,-0.72l-2.95,-0.11l-2.27,1.19l-0.16,2.27l-1.02,-0.24l-2.4,-2.73l-1.56,-0.33l-4.08,-2.32l-3.43,0.87l-1.24,-0.06l-0.97,-3.42l-1.1,-1.51l-1.55,-0.91l-6.9,-0.76l0.18,-1.01l-1.0,-0.83l-3.36,-0.58l-1.97,-1.51l-2.47,-0.81l-1.08,-2.24l-0.58,-0.83l-0.45,-0.15l-0.28,0.39l0.27,2.62l-0.46,-0.56l-1.32,-5.47l0.25,-1.25l-0.25,-0.45l-0.84,-0.31l-1.14,-2.75l-2.53,-2.31l-0.74,-2.09l-0.93,-0.62l-1.98,-0.4l-2.24,-3.59l-3.47,-3.13l-4.07,-2.07l-0.39,-1.05l-0.3,-2.69l0.47,-2.19l1.48,-0.93l0.17,-0.46l-0.28,-0.85l3.12,-1.98l2.48,-5.26l1.17,-1.01l-0.16,-1.45l-0.69,-1.37l-1.7,-1.83l-3.77,-1.84l-7.12,-1.1l-1.45,-0.69l1.47,-1.03l1.91,-0.24l0.8,-0.55l0.42,-2.94l-0.66,-1.35l-0.09,-1.84l1.02,-2.31l1.32,-0.5l5.58,-0.5l1.1,-0.5l1.01,0.86l3.14,0.71l1.04,-0.02l0.24,-0.51l0.65,0.2l-0.47,0.4l0.19,0.91l2.51,1.59l2.62,0.48l1.97,1.62l1.54,0.57l3.31,0.09l0.4,-0.29l-0.19,-0.46l-1.37,-0.76l-2.42,-0.42l-2.85,-2.6l-4.32,-2.68l-2.78,-0.52l-1.38,-0.93l-2.33,-0.59l-8.74,0.54l-2.06,1.13l-1.5,1.94l-1.74,0.44l-1.54,1.27l-1.02,0.36l-2.05,-0.36l-2.32,-2.13l-1.22,-0.61l-2.17,0.0l-0.78,0.6l-0.33,0.97l-1.39,-0.03l-4.87,-2.21ZM161.53,297.57l0.02,0.14l-0.01,0.02l-0.01,-0.17ZM179.99,325.41l2.68,1.47l0.24,2.88l-0.47,-0.24l-2.28,-3.55l-1.56,-0.93l-1.75,0.59l-0.73,-0.9l-0.93,-2.89l-0.56,-0.68l2.62,-0.12l2.02,0.71l-0.04,2.78l0.75,0.89ZM174.33,345.92l-4.93,-0.12l-0.49,-0.98l0.24,-0.36l1.99,0.02l3.18,1.44Z", "name": "Pays de la Loire"}, "FR-GP": {"path": "M44.87,452.95l2.26,-1.9l1.31,-0.53l0.63,0.19l-2.39,1.57l-1.81,0.66ZM16.07,454.56l0.99,-3.24l0.45,-0.54l1.25,-0.4l0.33,-0.98l-0.15,-1.3l-1.63,-0.93l-0.61,-3.02l1.65,-2.23l2.47,-1.44l2.87,2.33l0.67,1.2l0.24,4.01l1.84,2.68l1.77,1.09l0.71,-0.33l2.34,0.36l6.21,4.32l1.16,0.34l-0.55,0.18l-3.31,-0.89l-10.9,2.46l-3.09,1.07l-2.38,-0.65l-1.77,-1.2l-0.78,-1.34l0.24,-1.57ZM29.3,476.81l1.29,-2.59l1.05,-1.18l1.16,-0.64l1.27,0.28l1.08,0.91l0.68,1.72l0.94,0.93l0.13,1.34l-1.12,1.36l-1.47,0.73l-1.99,0.48l-1.58,-0.25l-1.44,-3.1ZM6.63,475.24l-0.25,-0.65l0.35,-0.72l-0.44,-0.85l-1.95,-1.6l-0.87,-1.97l-0.57,-0.45l-0.69,-2.06l-0.05,-4.94l-0.89,-2.29l0.25,-1.07l-1.09,-2.09l0.05,-3.66l1.5,-2.21l0.77,-0.65l0.89,-0.23l1.5,1.13l3.84,1.09l2.02,1.06l0.67,0.81l-0.4,0.18l0.01,0.74l0.87,0.07l0.72,0.74l0.65,-0.12l0.7,-0.95l0.47,-0.08l0.26,0.32l-0.35,1.27l0.32,1.1l-1.34,0.42l-0.48,0.89l0.13,2.94l0.8,2.29l0.41,3.37l-0.49,3.19l-1.83,2.19l-2.76,1.62l-2.74,1.16ZM13.68,480.6l0.09,-0.17l0.15,-0.01l-0.11,0.1l-0.13,0.09ZM10.63,481.22l0.17,0.27l-0.27,0.31l-0.19,-0.11l0.3,-0.46Z", "name": "Guadeloupe"}, "FR-U": {"path": "M574.87,589.37l0.92,-0.18l1.37,-1.04l2.17,-0.54l3.45,-2.45l1.63,-0.49l0.58,-1.36l1.97,-0.33l0.5,-0.38l0.72,-1.53l-0.09,-0.84l-1.94,-0.6l1.3,-2.75l1.5,-1.9l1.28,-0.92l2.03,-0.52l3.72,1.32l1.03,-0.3l0.65,-1.54l-0.04,-1.78l1.98,-4.92l-0.49,-4.74l5.08,-3.33l2.76,-1.14l1.8,-1.27l1.33,-1.63l0.03,-2.18l1.18,0.07l0.47,-0.43l0.15,-1.04l-0.37,-0.8l-4.15,-4.77l-1.27,-0.56l-1.83,0.31l-0.37,-2.47l0.33,-2.07l-0.19,-2.88l-0.5,-0.93l-1.47,-1.11l-0.09,-1.56l-1.29,-1.64l-0.54,-1.66l-0.02,-2.97l3.17,-0.14l2.43,0.62l1.57,1.66l1.7,4.01l1.31,0.65l1.08,-0.2l2.24,-1.34l2.77,-0.41l3.47,-1.46l4.07,-1.05l3.48,0.59l1.1,-0.08l2.31,-1.4l0.14,0.38l-0.71,1.56l-0.03,1.7l0.31,1.17l0.77,0.67l2.96,0.79l2.82,-0.21l4.22,1.37l1.95,0.19l0.66,0.8l0.94,2.37l4.51,2.92l2.5,0.22l1.96,-1.1l2.53,-2.56l1.32,-0.74l1.8,0.54l0.64,1.31l0.52,0.4l0.87,0.13l0.61,-0.33l0.31,-0.68l-0.23,-1.68l0.64,-1.04l0.14,-4.96l-0.53,-0.87l-1.46,-0.73l-1.74,-1.84l0.47,-1.33l-0.29,-0.71l-1.33,-0.38l-2.81,0.16l-3.98,-1.31l-2.2,-1.6l-0.54,-1.85l-1.31,-1.69l0.85,-0.19l2.33,0.46l0.67,-0.16l0.58,-0.67l-0.17,-1.21l-1.58,-1.26l-0.32,-1.32l0.2,-0.43l2.95,0.15l4.34,1.28l0.95,-0.24l2.8,-1.78l0.61,-0.81l-0.12,-1.02l-0.85,-1.05l-1.56,-0.99l-0.6,-0.98l0.34,-1.04l1.84,-2.49l0.74,-2.54l1.28,-0.26l2.49,0.32l4.9,-1.34l1.9,-1.99l0.0,-1.34l-0.94,-1.02l1.78,-2.52l4.33,-0.43l2.59,-0.77l1.06,-1.17l-0.23,-1.81l1.51,-1.3l1.93,-0.81l1.61,0.45l1.3,-0.18l3.71,-2.08l2.21,0.4l1.91,-0.35l1.7,0.15l3.74,-0.98l2.72,0.76l1.33,-0.13l0.6,-0.99l0.28,-3.45l-0.47,-1.39l-1.68,-1.88l-0.61,-3.45l-1.52,-0.82l-3.62,0.45l-0.92,-0.3l-0.21,-0.57l1.03,-6.05l1.31,-1.51l1.5,0.78l3.9,0.36l1.08,0.74l1.0,1.99l4.33,1.4l1.59,-0.46l0.96,-1.07l0.85,-2.13l2.87,-0.24l2.8,-1.28l-0.62,0.73l-0.02,0.5l2.03,2.18l0.17,1.69l0.79,1.24l0.95,0.66l2.05,0.17l1.38,0.88l0.35,1.96l-0.12,4.19l1.23,1.91l2.07,1.56l4.22,2.16l1.41,0.3l3.93,-0.45l2.94,1.06l1.2,1.26l-0.4,2.57l1.25,4.13l2.03,3.55l-3.87,-0.56l-1.7,0.81l-1.13,1.22l-0.53,1.69l0.58,1.56l-0.69,0.5l-2.06,3.14l-3.05,2.06l-0.83,1.38l0.25,2.53l1.44,2.18l2.96,2.54l-1.46,0.71l-0.59,0.79l-0.73,3.01l0.24,1.21l1.67,1.86l1.59,2.88l2.27,1.81l0.83,2.02l0.66,0.7l1.16,0.41l2.19,-0.38l0.67,0.17l6.04,2.48l6.53,3.55l3.45,0.91l0.74,1.13l1.35,0.71l2.64,0.05l10.62,-2.7l1.73,-0.12l2.57,-1.44l1.28,0.21l-0.66,2.31l0.83,1.51l1.3,1.15l0.87,1.66l-0.1,1.05l-2.22,2.08l-1.33,3.37l-4.45,3.63l-1.3,1.81l-2.63,2.56l-1.02,1.63l0.26,2.23l1.1,3.29l-1.5,0.69l0.05,1.26l-0.73,0.15l-1.26,1.13l-0.56,-0.67l-1.18,-0.6l-1.65,0.49l-1.0,1.05l-0.43,1.64l-1.32,1.04l-0.71,1.53l-2.86,-0.54l-1.41,0.13l-2.01,1.42l0.04,0.96l-1.09,1.0l-0.54,-0.78l-1.17,-0.24l-2.01,0.57l-0.96,1.09l-0.66,2.71l0.71,3.75l-0.22,0.12l-0.57,-0.92l-0.68,-0.42l-1.15,-0.07l-1.27,0.64l-1.75,1.52l-0.56,-0.6l-2.19,-0.07l-1.21,0.15l-0.99,0.57l-1.1,1.01l-0.38,1.3l0.79,0.89l-1.67,1.9l-0.35,1.79l-1.2,0.73l-0.35,0.74l-0.79,0.06l-0.5,-0.8l-0.56,-0.07l-0.45,0.47l0.04,1.32l-0.33,0.1l-1.7,-0.24l-2.06,0.51l-0.64,-0.66l-0.97,-0.32l-1.96,1.17l-0.06,2.1l-0.82,1.01l-0.09,1.11l-2.6,0.48l-0.8,1.76l-2.13,1.86l-1.64,0.87l-0.58,1.35l0.27,0.52l1.27,0.34l3.83,-0.86l1.01,0.19l-0.51,1.21l-1.15,0.87l-0.18,1.36l0.76,1.4l-2.03,1.21l-1.78,0.59l-1.1,-1.03l-3.19,0.39l-1.04,1.7l-1.07,0.59l-1.62,-0.35l-3.45,0.27l-1.36,0.42l-1.49,0.84l-0.91,1.44l0.37,1.87l-1.34,0.0l-1.03,-0.98l-2.86,-1.09l-1.75,-0.16l-3.76,0.92l-1.97,1.27l-0.72,1.7l-0.05,1.91l0.91,0.63l-3.08,0.19l0.74,-0.26l0.95,-0.93l-0.33,-1.65l-1.19,-0.96l-5.05,0.37l-0.84,-1.54l-3.51,-0.25l-1.12,-0.63l0.3,-1.17l-0.36,-0.56l-2.16,0.24l-1.78,0.81l-0.23,0.38l1.15,0.68l1.01,1.7l1.93,0.76l-3.17,0.02l-0.89,0.28l-1.2,1.7l-1.96,-0.54l-1.85,-1.41l1.88,-1.3l0.07,-0.54l-0.41,-0.57l-1.72,-0.7l-0.74,-1.26l-2.11,-0.09l-2.49,-1.0l-0.47,-1.46l-1.08,-1.07l-2.53,-0.57l-1.03,0.91l-0.53,0.98l-2.05,-0.53l-1.98,-2.66l-0.96,-0.55l-1.48,0.47l-6.6,-0.49l-1.53,0.31l-1.02,-0.43l0.34,-1.68l0.94,-1.98l-0.08,-0.43l-0.62,-0.64l-1.13,-3.95l-2.92,-1.81l-3.73,1.99l-4.48,-0.09l-2.35,0.26l-3.62,-0.16l-1.71,-0.5l-1.11,-1.51l-0.44,-1.53l1.11,-1.82l1.71,-0.86l5.36,0.0l1.8,-0.48l2.62,-2.32l0.89,-2.0l-0.21,-1.77l-0.6,-0.3l-3.34,1.54l-1.34,-0.21l-1.17,-1.2l-0.81,-2.2l-1.53,-0.53l-1.81,-0.01l-1.47,-1.47l-0.5,0.08l-0.49,0.59l-0.81,2.82l0.42,1.59l2.15,1.63l0.63,1.61l-0.57,1.4l-1.25,0.8l-1.63,0.16l-4.46,-1.86l-2.21,1.1l-1.58,0.35l-0.71,0.61l-0.46,1.44l0.98,2.54l0.42,0.33l0.81,-0.05l-1.29,0.81l-1.31,-2.62l-2.66,-1.4l-1.98,-1.65l-0.86,-1.8l-0.02,-5.7l-1.08,-2.53l-0.85,-1.1l-1.19,-0.67l-0.59,0.35l0.0,0.46l2.09,3.43l0.0,5.28l0.86,2.64l4.89,4.15l-0.11,1.02l-9.05,-0.1l-4.41,-0.9l-1.34,-0.7l-0.03,-0.85l1.11,-1.09l0.22,-1.41l-0.65,-1.13l-1.58,-1.03l-2.76,-0.96l-6.31,0.6l-10.72,-0.78l1.08,-2.45ZM708.84,625.18l0.07,-0.56l1.07,-0.35l0.67,-0.95l0.94,-0.47l-1.31,1.7l-1.44,0.64ZM692.6,626.12l1.76,-0.0l0.97,-0.54l0.94,-0.02l0.43,-0.62l0.24,0.26l0.04,0.66l-2.62,1.0l-1.76,-0.73ZM619.44,527.85l-4.96,0.01l-0.37,-0.2l-0.33,-0.9l0.44,-1.6l2.99,-4.46l1.31,-0.8l1.47,0.37l2.37,2.16l0.58,1.0l-0.0,0.54l-1.24,1.1l-1.26,2.17l-1.01,0.62Z", "name": "Provence-Alpes-C\u00f4te-d'Azur"}, "FR-J": {"path": "M472.43,160.67l2.91,-0.96l1.28,0.25l1.79,1.42l0.99,0.02l1.16,-0.44l1.27,0.83l1.39,0.28l2.4,-1.49l4.01,0.91l5.72,-1.07l1.57,0.83l2.35,-1.11l1.82,-0.03l2.03,-1.04l3.48,0.96l0.98,1.05l0.87,1.67l-0.52,2.79l0.73,1.41l8.88,6.73l0.87,0.26l1.23,-0.5l0.48,0.14l0.61,2.97l0.7,1.03l3.28,1.81l2.3,-0.04l-0.11,1.1l-0.51,0.67l-2.55,0.08l-0.94,0.42l-0.16,0.75l1.09,1.07l-1.54,1.52l-0.27,1.55l0.54,0.66l1.24,-0.02l1.67,1.83l0.7,2.85l-0.5,1.9l0.28,1.65l0.9,0.56l2.22,-0.3l1.49,1.83l-2.45,1.85l-1.06,1.42l-0.92,2.34l-0.48,0.4l-2.35,0.42l-0.63,0.51l-0.08,0.73l0.94,1.41l-1.79,1.84l-0.05,0.79l0.65,1.23l-0.56,2.16l0.16,0.69l-2.61,2.88l-2.24,-0.49l-6.28,0.91l-4.68,-0.48l-2.32,0.9l-3.26,0.0l-0.8,0.78l-1.14,3.17l0.16,2.32l0.83,1.42l-1.58,2.76l-3.77,2.32l-0.95,3.37l-5.9,1.83l-1.36,-0.07l0.46,-1.24l-0.4,-0.63l-0.91,-0.28l-2.7,0.45l-1.78,1.66l-1.87,0.81l-8.32,-0.58l-3.25,0.65l-1.6,-0.18l-0.78,-0.59l0.23,-0.94l0.72,-0.24l1.65,0.3l0.91,-0.65l0.07,-0.64l-0.51,-1.19l0.65,-0.98l0.11,-1.36l-1.39,-1.54l-3.36,-1.92l-1.3,-3.89l-1.33,-1.28l-2.27,0.3l-2.83,-1.36l-0.86,0.16l-1.36,1.23l-1.4,0.35l-0.76,-0.38l-0.47,-1.03l-0.68,-0.61l-0.85,-0.52l-0.84,-0.03l-0.66,0.4l-1.38,1.92l-1.99,0.8l-8.7,1.71l-0.72,-0.42l-0.0,-0.42l1.65,-1.87l0.02,-0.74l-1.91,-1.77l-0.62,-2.84l-0.52,-0.9l-1.62,-1.5l-0.35,-2.59l-0.81,-0.45l-2.11,0.38l-4.37,-1.8l-0.92,-0.66l-1.17,-1.71l0.01,-2.65l-0.44,-1.51l-0.7,-0.87l-2.25,-1.46l-0.79,-2.45l-3.87,-2.43l-1.32,-1.5l-0.63,-1.5l-1.41,-0.91l0.0,-0.93l1.6,-2.06l0.18,-1.09l-0.28,-0.53l-1.69,-0.85l-0.41,-0.65l-0.06,-1.41l0.53,-2.41l-0.31,-1.9l-1.49,-1.94l-3.28,-5.55l-0.4,-2.82l-2.11,-0.85l0.25,-2.13l-0.72,-1.71l0.41,-0.57l7.7,-1.56l2.46,-1.13l3.15,-8.76l1.58,-2.72l0.43,0.35l0.8,2.03l0.97,0.67l3.39,0.3l5.65,1.41l6.54,-0.78l5.01,-2.69l3.66,2.09l2.47,0.26l3.97,1.5l1.83,0.1l3.18,-1.39l11.5,5.26l0.91,0.03l0.87,-0.37l1.31,1.53l1.38,0.99Z", "name": "\u00cele-de-France"}, "FR-X2": {"path": "M204.81,598.27l0.63,0.4l0.52,-0.08l1.38,-0.84l5.64,-0.92l1.36,-1.72l2.57,-1.46l2.17,-3.85l5.18,-6.42l0.5,-2.5l1.48,-4.27l2.51,-12.23l1.46,-4.3l2.15,-9.72l3.95,-21.25l1.68,-10.56l0.42,-4.7l-0.62,-3.76l1.59,-2.05l1.5,-4.83l1.04,-1.14l1.32,-0.04l3.84,0.81l2.32,-0.34l1.43,-1.11l0.02,-1.15l-1.01,-1.12l0.28,-0.48l-0.7,-1.19l-4.63,-3.83l-1.79,-0.89l-0.92,0.36l-3.56,5.22l-0.53,2.34l3.34,-33.36l2.55,-12.04l1.09,-15.98l3.2,-5.75l1.08,-0.08l-0.29,2.7l1.44,2.01l4.22,2.89l3.51,1.53l7.32,7.13l1.65,2.15l1.65,6.53l1.42,7.99l2.13,4.49l2.13,2.43l2.35,2.0l2.44,1.49l0.52,1.41l-0.17,1.23l0.35,3.2l0.54,1.31l0.97,0.73l0.45,-0.0l0.16,-0.42l-0.81,-4.06l0.53,-2.18l-0.8,-1.78l-1.38,-1.23l1.66,0.3l2.68,1.57l0.51,-0.03l0.06,-0.51l-1.72,-2.53l-5.08,-1.82l-2.05,-1.4l-1.05,-1.86l-0.76,-2.33l-2.32,-14.51l-0.81,-2.98l-2.08,-4.88l-2.62,-4.07l-2.95,-2.95l-8.61,-5.47l-0.48,-1.77l-2.47,-1.03l-3.22,-2.81l-4.04,-1.44l-2.76,-2.39l-2.34,0.33l-0.67,-0.24l0.99,-5.73l3.71,-0.99l0.98,0.04l3.79,3.91l1.46,1.04l4.4,1.81l0.48,-0.15l-0.05,-0.5l-1.38,-1.36l-5.52,-3.9l-1.51,-1.58l-1.36,-4.22l2.03,-1.93l0.85,-0.46l1.1,-0.0l0.61,-0.43l0.19,-1.83l-0.98,-1.77l0.89,-0.77l-0.02,-0.68l-0.92,-0.54l-1.09,-2.34l1.55,0.32l1.08,-0.72l0.78,-1.42l-0.03,-0.9l-1.1,-1.07l-1.08,-0.37l-0.71,-3.23l-1.9,-1.16l0.55,-0.47l-0.04,-0.64l-1.96,-1.09l0.07,-0.62l-0.38,-0.5l-2.85,-0.2l-0.39,-0.36l0.27,-0.97l1.24,-1.31l-0.29,-1.3l0.52,-0.79l4.3,-2.4l0.5,-0.98l-0.01,-0.83l-0.87,-2.37l1.16,-1.51l0.86,-0.51l6.69,-1.49l0.44,0.35l-0.06,0.32l-1.0,1.63l0.99,0.9l1.99,-0.09l4.86,-0.96l1.46,0.21l4.42,2.32l3.79,-1.72l2.86,-0.19l2.34,-2.04l2.77,-0.34l0.86,-1.23l-0.25,-0.98l-0.76,-0.79l-2.09,-1.47l-1.48,-0.05l-0.2,-0.92l0.59,-2.98l-0.97,-4.09l1.47,-2.55l-0.66,-4.53l-1.62,-2.86l-0.6,-3.2l-3.78,-6.41l-0.05,-0.67l0.8,-2.07l-0.78,-1.19l-1.4,-1.1l-3.53,-1.93l-0.48,-0.54l-0.88,-1.94l-0.43,-2.43l-0.91,-1.07l-1.53,-0.78l-2.22,-3.06l-2.05,-1.29l0.13,-0.56l1.47,0.22l2.4,1.36l1.33,0.38l4.31,-0.56l5.13,0.68l3.99,-0.34l1.28,-0.41l1.37,-1.03l2.73,-1.24l0.34,-1.13l-0.81,-1.37l1.0,-0.85l1.73,-0.42l2.13,0.74l5.97,-1.69l6.45,-0.7l5.88,-0.12l0.56,0.42l1.0,2.22l1.71,0.55l0.45,-0.18l1.48,-2.08l2.51,-0.92l1.0,-2.45l1.89,-2.08l0.9,-0.26l2.97,0.49l1.47,2.34l0.64,0.37l0.98,-0.07l1.14,-0.55l0.13,1.56l0.57,0.55l2.68,-0.26l0.19,0.85l-0.35,1.75l0.25,0.7l0.48,0.33l1.15,0.07l2.51,-0.61l1.03,1.31l1.83,0.26l-0.34,5.65l0.36,1.29l1.37,1.15l1.25,0.23l2.61,-0.25l2.91,0.46l1.93,-1.14l1.04,-0.24l5.49,-0.33l0.79,-0.44l0.19,-0.71l-0.77,-1.6l-0.1,-0.95l5.63,2.78l1.17,1.63l1.3,3.39l7.23,9.31l2.64,1.85l1.67,1.93l0.84,2.19l-0.61,2.63l0.01,1.65l0.57,2.3l0.55,0.83l2.33,2.03l3.29,1.27l0.85,2.04l0.88,0.33l3.79,0.0l1.03,0.35l0.88,0.74l0.67,1.18l-0.49,1.9l0.16,1.06l0.74,0.86l1.78,1.01l0.54,0.76l-1.01,2.95l0.15,0.46l1.04,0.72l2.54,0.83l3.65,-0.3l1.07,-0.33l1.0,-1.33l1.05,-0.24l1.47,1.8l3.13,1.64l2.0,-1.13l3.93,-3.54l0.68,-0.15l2.17,0.53l2.02,-0.06l0.36,1.35l0.7,0.52l1.01,0.19l1.02,-0.2l1.87,-1.33l3.01,0.41l0.9,-0.2l1.03,-0.98l0.25,-2.59l0.71,-0.54l0.76,0.32l1.92,1.93l0.96,0.16l2.07,-1.12l1.08,-0.24l5.41,0.14l2.45,0.84l3.5,0.01l2.22,0.72l3.19,-0.59l5.83,0.29l2.01,2.5l1.67,1.44l0.91,2.78l0.59,0.64l0.74,0.43l2.88,0.63l0.67,0.63l1.08,2.07l0.77,0.02l0.86,-0.61l1.19,0.76l2.45,3.45l1.01,3.07l2.11,3.67l-0.39,3.35l0.22,1.7l2.06,4.03l-0.15,3.39l-1.62,1.78l-1.56,3.24l-2.36,2.46l-1.64,-0.11l-1.29,0.59l-1.33,1.29l-1.33,0.73l-0.92,1.43l0.25,0.94l1.58,1.96l0.73,2.07l0.5,0.47l1.47,0.35l0.84,0.76l1.85,2.04l0.51,1.09l-0.24,3.82l-0.55,0.67l-1.67,0.69l-0.46,0.57l-0.73,2.83l0.51,1.34l1.35,1.7l0.25,4.1l1.11,1.0l-1.14,4.37l-0.87,1.76l-2.16,-0.09l-3.12,-1.6l-1.18,-0.01l-1.52,0.59l-0.21,0.82l0.95,0.93l0.15,0.84l-1.24,2.6l-1.06,0.64l-1.96,2.84l-3.1,1.35l-0.66,2.04l-2.65,2.08l-0.16,1.81l0.96,1.75l-0.04,1.26l-2.76,5.43l-2.8,2.03l-0.55,0.87l-0.03,0.76l1.6,2.88l-0.03,0.57l-4.22,1.17l-4.52,0.2l-1.94,0.88l-1.38,-0.66l-0.83,-0.05l-4.06,1.88l-3.12,0.95l-1.23,-0.04l-3.73,-1.98l-1.24,-1.82l-2.13,-1.68l-3.07,-1.73l-1.98,-0.53l-2.06,0.56l-0.77,-1.17l-0.7,-0.11l-1.4,1.03l-1.03,0.25l-3.64,2.43l-0.29,1.46l1.3,3.78l-0.03,0.72l-0.72,1.24l-0.01,2.07l-2.54,2.21l-1.66,2.62l-2.23,0.65l-0.87,1.1l-0.29,0.94l0.72,1.44l-0.03,0.57l-1.25,1.78l-4.31,2.66l-2.39,0.56l-0.98,0.82l-3.33,5.17l-3.48,2.85l-2.93,1.29l-0.86,0.82l-0.26,0.78l1.31,2.09l0.06,1.85l0.83,2.15l2.02,2.25l-0.18,3.0l-0.59,0.58l-4.81,0.36l-1.13,-0.2l-1.77,-0.98l-0.77,0.08l-0.72,0.57l-0.27,2.47l-0.74,1.55l-0.06,0.88l0.85,1.37l2.45,0.96l0.36,0.51l-2.45,5.11l-2.16,1.72l0.1,0.72l1.14,0.8l-0.03,0.97l-1.25,0.21l-2.22,-0.7l-1.4,0.32l-0.49,0.48l-0.46,1.35l-2.26,1.33l-1.04,2.84l-3.57,1.87l-1.05,0.18l-2.71,-2.15l-1.51,-0.47l-5.15,1.53l-2.7,-0.26l-1.21,0.8l-4.35,1.91l-1.3,0.2l-3.0,1.53l-4.83,-1.62l-0.8,0.09l-1.07,0.84l-1.29,1.99l-1.07,0.78l-0.59,0.02l-0.58,-0.74l-0.76,-0.21l-2.4,0.81l-0.9,1.56l0.26,2.33l-0.72,0.77l-2.48,-0.06l-1.1,-0.37l-0.37,-0.73l0.78,-1.23l-0.06,-1.08l-0.91,-0.88l-1.22,-0.35l-1.33,0.44l-1.59,1.05l-1.8,1.72l-1.77,0.13l-2.38,-0.3l-2.89,1.82l-0.59,0.71l-0.12,1.04l1.31,1.37l1.05,2.2l-1.49,3.87l-0.05,2.41l0.82,1.36l-1.48,3.09l-1.21,0.16l-0.79,0.5l-0.11,0.65l0.54,1.41l-1.07,1.59l-0.25,1.25l0.98,0.76l0.47,1.52l0.52,0.63l2.33,-0.0l5.59,1.04l1.06,0.66l0.67,1.47l1.56,1.16l2.16,4.89l-0.31,0.26l-1.15,-0.07l-0.56,0.49l0.03,2.28l0.52,0.69l0.76,0.17l1.43,-1.29l0.75,0.02l-0.11,3.16l1.06,3.23l-0.48,0.48l-1.62,0.52l-0.96,1.06l-0.61,2.64l0.6,2.08l-0.4,0.75l-1.97,1.89l-1.1,3.23l-1.55,0.13l-1.74,2.98l-2.28,1.29l-0.98,1.23l0.15,3.83l-0.4,0.28l-2.98,0.33l-2.69,2.77l-0.17,0.81l0.39,1.61l-0.03,1.69l-1.67,2.29l-0.35,1.23l0.55,3.77l-0.88,-0.07l-0.78,1.18l-0.86,-0.35l-4.31,2.79l-1.69,0.12l-3.22,-1.34l-1.7,-0.07l-0.41,0.38l-0.09,1.49l-1.58,0.74l-0.62,-1.55l-1.55,-0.25l-0.08,-0.92l-2.44,-2.91l-3.24,-2.0l-1.85,-0.11l-0.47,-0.41l-0.25,-0.49l0.25,-1.36l-1.4,-2.86l-1.82,-0.51l-4.68,0.75l-4.79,-0.35l-2.24,-0.65l-2.95,-2.22l-3.08,-0.49l-2.02,-1.09l-2.32,0.15l-4.04,-2.44l-3.6,-0.59l-1.04,-0.56l-0.92,-0.94l-0.21,-0.75l0.38,-0.75l1.21,-0.93l-0.15,-0.71l-1.6,-0.32l-1.53,0.56l-1.05,1.06l-0.53,1.66l-0.16,1.94l-0.41,0.78l-0.81,0.24l-3.0,-0.46l-1.26,-0.64l-1.02,-1.03l-0.63,-1.32l3.7,-3.88l0.95,-2.41l0.66,-2.96l-0.35,-3.1l-2.03,-1.72l-2.04,0.3l-2.51,-1.16l-3.21,-0.56l-1.3,0.75l-0.75,1.77l-1.7,0.25l-0.8,-0.46l-0.49,-1.68l0.17,-0.84l-0.85,-0.76l-1.84,-0.58l-3.76,1.0l-0.43,-1.87l-0.91,-1.03l-1.52,-0.66l0.07,-2.41ZM309.11,602.32l1.15,-0.9l0.67,-2.47l-0.61,-1.33l-1.64,-0.44l-1.19,0.8l-0.49,2.49l0.63,1.45l1.49,0.4ZM307.84,608.3l0.94,-0.4l1.08,-1.94l-0.6,-1.74l-1.63,-0.95l-0.46,0.07l-1.45,1.45l-0.2,1.38l0.25,1.08l0.52,0.68l1.55,0.37ZM235.41,400.43l1.09,0.41l1.35,-0.28l0.64,0.57l0.15,2.37l0.68,0.73l-0.16,1.32l2.38,1.46l0.35,0.53l-0.41,3.62l-0.61,1.91l-0.67,0.91l-0.62,-0.25l-0.84,-2.53l-1.25,-2.19l-3.59,-3.54l-1.32,-0.83l-2.14,-2.59l0.33,-1.57l-1.72,-3.8l1.1,0.13l1.99,0.91l3.27,2.7ZM219.58,381.29l3.07,-0.67l0.94,0.18l0.51,0.48l-0.09,0.29l-1.95,-0.5l-0.35,0.62l1.41,1.8l1.75,-0.06l1.83,-0.69l0.25,0.77l1.02,0.43l6.19,0.88l1.32,0.74l1.5,1.94l-0.96,0.35l-3.3,-0.75l-5.87,-3.31l-3.6,0.51l-0.76,-0.27l-2.9,-2.73Z", "name": "Aquitaine-Limousin-Poitou-Charentes"}, "FR-RE": {"path": "M761.79,701.36l1.08,0.18l1.12,-0.39l1.21,0.39l2.77,-0.03l2.17,1.11l3.51,0.8l0.97,0.55l2.4,2.39l0.54,1.06l0.32,2.77l0.52,1.06l1.9,1.97l0.91,3.81l1.85,0.93l1.43,2.47l3.94,1.89l0.84,0.82l0.32,1.39l-1.08,2.72l-1.31,6.18l-0.27,4.98l-0.6,1.25l-1.42,0.53l-4.24,0.16l-2.56,1.32l-1.76,0.26l-1.74,-0.1l-1.22,-0.48l-1.58,0.46l-1.92,0.08l-3.62,-0.55l-3.79,-2.43l-5.72,-1.87l-1.23,-0.75l-1.75,-2.11l-3.42,-0.26l-3.52,-4.42l-0.9,-1.55l-0.63,-4.75l-3.33,-4.36l-1.6,-3.39l0.0,-1.42l0.43,-1.55l0.75,-1.19l2.55,-1.05l1.15,-1.41l0.43,-1.65l-0.32,-1.19l0.55,-0.82l-0.29,-0.86l0.61,-0.27l2.76,-0.09l5.6,-3.4l4.93,-0.0l2.25,0.81Z", "name": "R\u00e9union"}}, "height": 749.2159980728637, "projection": {"type": "mill", "centralMeridian": 0.0}, "width": 900.0});
\ No newline at end of file
diff --git a/lib/menu-walker.php b/lib/menu-walker.php
new file mode 100644 (file)
index 0000000..c9773bb
--- /dev/null
@@ -0,0 +1,119 @@
+<?php
+/**
+ * Customize the output of menus for Foundation top bar
+ */
+if ( ! class_exists( 'Glm_Theme_Top_Bar_Walker' ) ) :
+class Glm_Theme_Top_Bar_Walker extends Walker_Nav_Menu {
+    function display_element( $element, &$children_elements, $max_depth, $depth = 0, $args, &$output ) {
+        static $mainLevelCounter;
+        if ($depth == 0) {
+            ++$mainLevelCounter;
+        }
+        $element->has_children = ! empty( $children_elements[ $element->ID ] );
+        $element->classes[] = ( $element->current || $element->current_item_ancestor ) ? 'active' : '';
+        $element->classes[] = ( $element->has_children && 1 !== $max_depth ) ? 'has-dropdown' : '';
+        $element->classes[] = ( $element->post_parent == 0 && $mainLevelCounter < 5 ) ? '' : 'drop-left parent';
+        parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
+    }
+
+    function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) {
+        $item_html = '';
+        parent::start_el( $item_html, $object, $depth, $args );
+
+        // Insert style to display page's thumbnail $depth == 0 && has_post_thumbnail((int)$object->object_id
+        $item_style = '';
+//        echo "<pre>", print_r($object), "</pre>";
+        /*if ( $depth !== 0 && has_post_thumbnail( (int)$object->object_id ) ) {
+             $thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( (int)$object->object_id ), 'large' );
+            
+            $item_style .= "<style>
+            #menu-item-".$object->ID.":before { 
+            display: inline-block;
+            width: 200px; 
+            height: 100px; 
+            content: ' '; 
+            background-image: url('".$thumbnail[0]."');
+            background-size: cover;
+            </style>";
+            
+        } else if( $depth !== 0 && $object->type == "taxonomy") { 
+            
+            //$thumbnail = z_taxonomy_image_url( (int)$object->object_id );
+
+            $item_style .= "<style>
+            #menu-item-".$object->ID.":before { 
+            display: inline-block;
+            width: 200px; 
+            height: 100px; 
+            content: ' '; 
+            background-image: url('".$thumbnail."');
+            background-size: cover;
+            </style>";
+            
+        } else if( $depth !== 0 && ! has_post_thumbnail( (int)$object->object_id ) ){
+            
+            $thumbnail = get_template_directory_uri() . '/assets/header-images-2.jpg';
+            $item_style .= "<style>
+            #menu-item-".$object->ID.":before { 
+            display: inline-block;
+            width: 200px; 
+            height: 100px; 
+            content: ' '; 
+            background-image: url('".$thumbnail."');
+            background-size: cover;
+            </style>";
+        }
+        */
+        //$output .= ( 0 == $depth ) ? '<li class="divider"></li>' : '';
+        $classes = empty( $object->classes ) ? array() : (array) $object->classes;
+        if ( in_array( 'label', $classes ) ) {
+            //$output .= '<li class="divider"></li>';
+            $item_html = preg_replace( '/<a[^>]*>(.*)<\/a>/iU', '<label>$1</label>', $item_html );
+        }
+        if ( in_array( 'divider', $classes ) ) {
+            $item_html = preg_replace( '/<a[^>]*>( .* )<\/a>/iU', '', $item_html );
+        }
+        if ($item_style)
+            $output .= $item_style;
+        $output .= $item_html;
+    }
+
+    function start_lvl( &$output, $depth = 0, $args = array() ) {
+        $output .= "\n<ul class=\"sub-menu dropdown\">\n";
+    }
+}
+endif;
+if ( ! class_exists( 'Glm_Theme_Off_Canvas_Walker' ) ) :
+class Glm_Theme_Off_Canvas_Walker extends Walker_Nav_Menu {
+    function display_element( $element, &$children_elements, $max_depth, $depth = 0, $args, &$output ) {
+        $element->has_children = ! empty( $children_elements[ $element->ID ] );
+        $element->classes[] = ( $element->current || $element->current_item_ancestor ) ? 'active' : '';
+        $element->classes[] = ( $element->has_children && 1 !== $max_depth ) ? 'page_item_has_children' : '';
+        $element->classes[] = 'page_item';
+
+        parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
+    }
+
+    function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) {
+        $item_html = '';
+        parent::start_el( $item_html, $object, $depth, $args );
+
+        $classes = empty( $object->classes ) ? array() : (array) $object->classes;
+
+        if ( in_array( 'label', $classes ) ) {
+            $item_html = preg_replace( '/<a[^>]*>(.*)<\/a>/iU', '<label>$1</label>', $item_html );
+        }
+
+        $output .= $item_html;
+    }
+
+    function start_lvl( &$output, $depth = 0, $args = array() ) {
+        $output .= "\n<ul class=\"children\">\n";
+    }
+
+    function end_lvl(&$output, $depth = 0, $args = array()){
+        $output .= '</ul>';
+    }
+}
+endif;
+?>
diff --git a/lib/navigation.php b/lib/navigation.php
new file mode 100644 (file)
index 0000000..65b541a
--- /dev/null
@@ -0,0 +1,342 @@
+<?php
+
+register_nav_menus(array(
+  'top-bar' => 'Site Navigation',
+  'footer'  => 'Footer Navigation',
+  'second-header' => 'Secondary Header Navigation'     
+));
+
+/**
+ * Top Bar
+ */
+if ( ! function_exists( 'glm_theme_top_bar' ) ) {
+  function glm_theme_top_bar() {
+      wp_nav_menu(array(
+          'container' => false,                           // remove nav container
+          'container_class' => '',                        // class of container
+          'menu' => '',                                   // menu name
+          'menu_class' => '',                             // adding custom nav class
+          'theme_location' => 'top-bar',                  // where it's located in the theme
+          'before' => '',                                 // before each link <a>
+          'after' => '',                                  // after each link </a>
+          'link_before' => '',                            // before each link text
+          'link_after' => '',                             // after each link text
+          'depth' => 3,                                   // limit the depth of the nav
+          'fallback_cb' => false,                         // fallback function (see below)
+          'walker' => new Glm_Theme_Top_Bar_Walker()
+      ));
+  }
+}
+
+/**
+ * Mobile off-canvas
+ */
+if ( ! function_exists( 'glm_theme_mobile_off_canvas' ) ) {
+    function glm_theme_mobile_off_canvas() {
+        echo '<div class="left-off-canvas-list">';
+        echo '<ul><li class="page_item"><a href="' . home_url() . '">Home</a></li>';
+        echo glm_get_mobile_nav_menu( 'top-bar' );
+        echo '</ul></div>';
+    }
+}
+
+function glm_get_mobile_nav_menu( $theme_location )
+{
+    $menu = wp_nav_menu(array(
+        'echo'            => false,             // don't echo
+        'container'       => false,             // remove nav container
+        'container_class' => '',                // class of container
+        'menu'            => '',                // menu name
+        'menu_class'      => 'off-canvas-list', // adding custom nav class
+        'theme_location'  => $theme_location,       // where it's located in the theme
+        'before'          => '',                // before each link <a>
+        'after'           => '',                // after each link </a>
+        'link_before'     => '',                // before each link text
+        'link_after'      => '',                // after each link text
+        'depth'           => 5,                 // limit the depth of the nav
+        'fallback_cb'     => false,             // fallback function (see below)
+        'walker'          => new Glm_Theme_Off_Canvas_Walker()
+    ));
+    return preg_replace( array( '%^<ul[^>]*>%', '%</ul>$%' ), '', $menu );
+}
+
+/**
+ * Footer
+ */
+if ( ! function_exists( 'glm_theme_footer' ) ) {
+  function glm_theme_footer() {
+      wp_nav_menu(array(
+          'container' => false,                           // remove nav container
+          'container_class' => '',                        // class of container
+          'menu' => '',                                   // menu name
+          'menu_class' => '',                             // adding custom nav class
+          'theme_location' => 'footer',                   // where it's located in the theme
+          'before' => '',                                 // before each link <a>
+          'after' => '',                                  // after each link </a>
+          'link_before' => '',                            // before each link text
+          'link_after' => '',                             // after each link text
+          'depth' => 1,                                   // limit the depth of the nav
+          'fallback_cb' => false,                         // fallback function (see below)
+      ));
+  }
+}
+
+/**
+ * glm_page_menu
+ *
+ * Grab the top level pages and their sub pages as the main navigation
+ */
+function glm_page_menu($parent = 0, $class = '')
+{
+    $menuConfig   = glm_get_menu_options();
+    $frontPageId  = get_option('page_on_front');
+    $parents      = array();
+    $args         = array(
+        'post_type'   => 'page',
+        'parent'      => $parent,
+        'number'      => '',
+        'exclude'     => $frontPageId,
+        'post_status' => 'publish',
+        'sort_order'  => 'asc',
+        'sort_column' => 'menu_order'
+    );
+    if ($parent == 0 && $menuConfig['menu_options']['main_level_pages']) {
+        $args['include'] = $menuConfig['menu_options']['main_level_pages'];
+    }
+    $pages = get_pages($args);
+    echo '<ul'.(($class)?' class="'.$class.'"':'').'><!-- begin -->'."\n";
+    foreach ($pages as $page) {
+        $childs = get_pages('child_of=' . $page->ID);
+        if (count($childs) > 0) {
+            echo '<li class="has-dropdown">'."\n";
+            echo '<a href="'.get_permalink($page->ID).'">'.$page->post_title.'</a>'."\n";
+            echo glm_page_menu($page->ID, 'sub-menu dropdown');
+            echo '</li>'."\n";
+        } else {
+            echo '<li><a href="'.get_permalink($page->ID).'">'.$page->post_title.'</a></li>'."\n";
+        }
+    }
+    echo '</ul><!-- end -->'."\n";
+}
+
+/**
+ * glm_offcanvas_menu
+ *
+ * Generate the list of pages as nested ul li list
+ */
+function glm_offcanvas_menu()
+{
+    wp_page_menu(array(
+        'depth' => 0,
+        'sort_column' => 'menu_order',
+        'menu_class' => 'left-off-canvas-list'
+    ));
+}
+
+/**
+ * get_menu_options
+ *
+ * Grab the menu options from the theme.ini file
+ */
+function glm_get_menu_options()
+{
+    static $menu_options;
+    $themeConfig = get_template_directory() . '/theme.ini';
+
+    if (!$menu_options && is_file($themeConfig)) {
+        $menu_options = parse_ini_file($themeConfig, true);
+    }
+    return $menu_options;
+}
+
+function glm_side_menu() {
+    global $post;
+    $parents = get_post_ancestors($post->ID);
+    $id = ($parents) ? $parents[count($parents)-1]: $post->ID;
+    $parent = get_page( $id );
+    if ($id == 0) {
+        $ID = $post->ID;
+    } else {
+        $ID = $parent->ID;
+    }
+    echo '<h1>'.get_the_title($ID).'</h1>';
+    echo '<ul class="sidebar"><!-- begin -->'."\n";
+    echo wp_list_pages( 'child_of='.$ID.'&title_li=&depth=1&echo=0');
+    echo '</ul><!-- end -->'."\n";
+}
+
+//<?php
+//
+//register_nav_menus(array(
+//  'top-bar' => 'Site Navigation',
+//  'regions' => 'Regions'
+//));
+//
+///**
+// * Top Bar
+// */
+//if ( ! function_exists( 'glm_theme_top_bar' ) ) {
+//  function glm_theme_top_bar() {
+//      wp_nav_menu(array(
+//          'container' => false,                           // remove nav container
+//          'container_class' => '',                        // class of container
+//          'menu' => '',                                   // menu name
+//          'menu_class' => '',                             // adding custom nav class
+//          'theme_location' => 'top-bar',                  // where it's located in the theme
+//          'before' => '',                                 // before each link <a>
+//          'after' => '',                                  // after each link </a>
+//          'link_before' => '',                            // before each link text
+//          'link_after' => '',                             // after each link text
+//          'depth' => 3,                                   // limit the depth of the nav
+//          'fallback_cb' => false,                         // fallback function (see below)
+//          'walker' => new Glm_Theme_Top_Bar_Walker()
+//      ));
+//  }
+//}
+//
+///**
+// * Mobile off-canvas
+// */
+//if ( ! function_exists( 'glm_theme_mobile_off_canvas' ) ) {
+//    function glm_theme_mobile_off_canvas() {
+//        echo '<div class="left-off-canvas-list">';
+//        echo '<ul><li class="page_item"><a href="' . home_url() . '">Home</a></li>';
+//        echo glm_get_mobile_nav_menu( 'top-bar' );
+//        echo '</ul></div>';
+//    }
+//}
+///**
+// * Mobile off-canvas
+// */
+//if ( ! function_exists( 'glm_regions_mobile_off_canvas' ) ) {
+//    function glm_regions_mobile_off_canvas() {
+//        echo '<div class="regions-menu">';
+//        echo glm_get_mobile_nav_menu( 'regions' );
+//        echo '</ul></div>';
+//    }
+//}
+//
+//function glm_get_mobile_nav_menu( $theme_location )
+//{
+//    $menu = wp_nav_menu(array(
+//        'echo'            => false,             // don't echo
+//        'container'       => false,             // remove nav container
+//        'container_class' => '',                // class of container
+//        'menu'            => '',                // menu name
+//        'menu_class'      => 'off-canvas-list', // adding custom nav class
+//        'theme_location'  => $theme_location,       // where it's located in the theme
+//        'before'          => '',                // before each link <a>
+//        'after'           => '',                // after each link </a>
+//        'link_before'     => '',                // before each link text
+//        'link_after'      => '',                // after each link text
+//        'depth'           => 5,                 // limit the depth of the nav
+//        'fallback_cb'     => false,             // fallback function (see below)
+//        'walker'          => new Glm_Theme_Off_Canvas_Walker()
+//    ));
+//    return preg_replace( array( '%^<ul[^>]*>%', '%</ul>$%' ), '', $menu );
+//}
+//
+///**
+// * Footer
+// */
+//if ( ! function_exists( 'glm_theme_footer' ) ) {
+//  function glm_theme_footer() {
+//      wp_nav_menu(array(
+//          'container' => false,                           // remove nav container
+//          'container_class' => '',                        // class of container
+//          'menu' => '',                                   // menu name
+//          'menu_class' => '',                             // adding custom nav class
+//          'theme_location' => 'footer',                   // where it's located in the theme
+//          'before' => '',                                 // before each link <a>
+//          'after' => '',                                  // after each link </a>
+//          'link_before' => '',                            // before each link text
+//          'link_after' => '',                             // after each link text
+//          'depth' => 1,                                   // limit the depth of the nav
+//          'fallback_cb' => false,                         // fallback function (see below)
+//      ));
+//  }
+//}
+//
+///**
+// * glm_page_menu
+// *
+// * Grab the top level pages and their sub pages as the main navigation
+// */
+//function glm_page_menu($parent = 0, $class = '')
+//{
+//    $menuConfig   = glm_get_menu_options();
+//    $frontPageId  = get_option('page_on_front');
+//    $parents      = array();
+//    $args         = array(
+//        'post_type'   => 'page',
+//        'parent'      => $parent,
+//        'number'      => '',
+//        'exclude'     => $frontPageId,
+//        'post_status' => 'publish',
+//        'sort_order'  => 'asc',
+//        'sort_column' => 'menu_order'
+//    );
+//    if ($parent == 0 && $menuConfig['menu_options']['main_level_pages']) {
+//        $args['include'] = $menuConfig['menu_options']['main_level_pages'];
+//    }
+//    $pages = get_pages($args);
+//    echo '<ul'.(($class)?' class="'.$class.'"':'').'><!-- begin -->'."\n";
+//    foreach ($pages as $page) {
+//        $childs = get_pages('child_of=' . $page->ID);
+//        if (count($childs) > 0) {
+//            echo '<li class="has-dropdown">'."\n";
+//            echo '<a href="'.get_permalink($page->ID).'">'.$page->post_title.'</a>'."\n";
+//            echo glm_page_menu($page->ID, 'sub-menu dropdown');
+//            echo '</li>'."\n";
+//        } else {
+//            echo '<li><a href="'.get_permalink($page->ID).'">'.$page->post_title.'</a></li>'."\n";
+//        }
+//    }
+//    echo '</ul><!-- end -->'."\n";
+//}
+//
+///**
+// * glm_offcanvas_menu
+// *
+// * Generate the list of pages as nested ul li list
+// */
+//function glm_offcanvas_menu()
+//{
+//    wp_page_menu(array(
+//        'depth' => 0,
+//        'sort_column' => 'menu_order',
+//        'menu_class' => 'left-off-canvas-list'
+//    ));
+//}
+//
+///**
+// * get_menu_options
+// *
+// * Grab the menu options from the theme.ini file
+// */
+//function glm_get_menu_options()
+//{
+//    static $menu_options;
+//    $themeConfig = get_template_directory() . '/theme.ini';
+//
+//    if (!$menu_options && is_file($themeConfig)) {
+//        $menu_options = parse_ini_file($themeConfig, true);
+//    }
+//    return $menu_options;
+//}
+//
+//function glm_side_menu() {
+//    global $post;
+//    $parents = get_post_ancestors($post->ID);
+//    $id = ($parents) ? $parents[count($parents)-1]: $post->ID;
+//    $parent = get_page( $id );
+//    if ($id == 0) {
+//        $ID = $post->ID;
+//    } else {
+//        $ID = $parent->ID;
+//    }
+//    echo '<h1>'.get_the_title($ID).'</h1>';
+//    echo '<ul class="sidebar"><!-- begin -->'."\n";
+//    echo wp_list_pages( 'child_of='.$ID.'&title_li=&depth=1&echo=0');
+//    echo '</ul><!-- end -->'."\n";
+//}
diff --git a/nggallery/album-glmalbums.php b/nggallery/album-glmalbums.php
new file mode 100644 (file)
index 0000000..9ebf91f
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/**
+Template Page for the album overview
+
+Follow variables are useable :
+
+    $album       : Contain information about the first album
+    $albums      : Contain information about all albums
+    $galleries   : Contain all galleries inside this album
+    $pagination  : Contain the pagination content
+
+ You can check the content when you insert the tag <?php var_dump($variable) ?>
+ If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
+**/
+?>
+<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($galleries)) : ?>
+
+<div class="ngg-albumoverview">
+
+    <!-- List of galleries -->
+    <?php foreach ($galleries as $gallery) : ?>
+
+    <div class="ngg-glmalbums ngg-album-compact small-6 medium-4 large-3">
+        <div class="ngg-album-compactbox">
+            <div class="ngg-album-link">
+                <a class="Link" href="<?php echo nextgen_esc_url($gallery->pagelink) ?>">
+                    <img class="Thumb" alt="<?php echo esc_attr($gallery->title) ?>" src="<?php echo nextgen_esc_url($gallery->previewurl) ?>"/>
+                </a>
+            </div>
+        </div>
+        <?php if (!empty($image_gen_params)) {
+            $max_width = 'style="max-width: ' . ($image_gen_params['width'] + 20) . 'px"';
+        } else {
+            $max_width = '';
+        } ?>
+        <section class="album-meta-wrapper">
+            <h4>
+                <a class="ngg-album-desc"
+                   title="<?php echo esc_attr($gallery->title); ?>"
+                   href="<?php echo nextgen_esc_url($gallery->pagelink); ?>"
+                   <?php echo $max_width; ?>>
+                   <?php echo_safe_html($gallery->title); ?>
+                </a>
+            </h4>
+            <p class="ngg-album-gallery-image-counter">
+                <?php if ($gallery->counter > 0) { ?>
+                    <strong><?php echo $gallery->counter; ?></strong>&nbsp;<?php _e('Photos', 'nggallery'); ?>
+                <?php } else { ?>
+                    &nbsp;
+                <?php } ?>
+            </p>
+        </section>
+    </div>
+    <?php endforeach; ?>
+    <!-- Pagination -->
+    <br class="ngg-clear"/>
+    <?php echo $pagination ?>
+</div>
+
+<?php endif; ?>
diff --git a/nggallery/gallery-glmphotos-8.php b/nggallery/gallery-glmphotos-8.php
new file mode 100644 (file)
index 0000000..28bb6c9
--- /dev/null
@@ -0,0 +1,55 @@
+<?php 
+/**
+Template Page for the gallery overview
+
+Follow variables are useable :
+
+       $gallery     : Contain all about the gallery
+       $images      : Contain all images, path, title
+       $pagination  : Contain the pagination content
+
+ You can check the content when you insert the tag <?php var_dump($variable) ?>
+ If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
+**/
+?>
+<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
+
+       <!-- Thumbnails -->
+    <?php $i = 0; ?>
+        <ul class="gallery row small-block-grid-3 medium-block-grid-6 large-block-grid-8">
+       <?php foreach ( $images as $image ) : ?>
+        <li>
+            <div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box imgBorderMe" <?php echo $image->style ?> >
+
+                <div class="ngg-gallery-thumbnail" >
+                    <a href="<?php echo nextgen_esc_url($image->imageURL) ?>"
+                title="<?php echo esc_attr($image->description) ?>"
+                data-src="<?php echo nextgen_esc_url($image->imageURL) ?>"
+                data-thumbnail="<?php echo nextgen_esc_url($image->thumbnailURL); ?>"
+                data-image-id="<?php echo esc_attr($image->pid); ?>"
+                data-title="<?php echo esc_attr($image->alttext); ?>"
+                data-description="<?php echo esc_attr($image->description); ?>"
+                <?php echo $image->thumbcode ?> >
+                            <?php if ( !$image->hidden ) { ?>
+                        
+                        <div class="image_overlay">
+                            <img title="<?php echo esc_attr($image->alttext) ?>" alt="<?php echo esc_attr($image->alttext) ?>" src="<?php echo nextgen_esc_url($image->thumbnailURL) ?>" <?php echo $image->size ?> />
+                        </div>
+                    <span class="photoTitle" title="<?php echo esc_attr($image->alttext) ?>"><?php if (!$image->hidden) { echo esc_attr($image->alttext); }?></span>
+                            <?php } ?>
+                    </a>
+                </div>
+                
+            </div>
+        </li>
+       <?php if ( $image->hidden ) continue; ?>
+       <?php if ( $gallery->columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
+       <br style="clear: both" />
+       <?php } ?>
+       <?php endforeach; ?>
+        </ul>
+       <!-- Pagination -->
+       <?php echo $pagination ?>
+</ul>
+
+<?php endif; ?>
diff --git a/nggallery/gallery-glmphotos-narrow.php b/nggallery/gallery-glmphotos-narrow.php
new file mode 100644 (file)
index 0000000..bc07527
--- /dev/null
@@ -0,0 +1,55 @@
+<?php 
+/**
+Template Page for the gallery overview
+
+Follow variables are useable :
+
+       $gallery     : Contain all about the gallery
+       $images      : Contain all images, path, title
+       $pagination  : Contain the pagination content
+
+ You can check the content when you insert the tag <?php var_dump($variable) ?>
+ If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
+**/
+?>
+<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
+
+       <!-- Thumbnails -->
+    <?php $i = 0; ?>
+        <ul class="gallery row small-block-grid-1 medium-block-grid-2 large-block-grid-3">
+       <?php foreach ( $images as $image ) : ?>
+        <li>
+            <div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box imgBorderMe" <?php echo $image->style ?> >
+
+                <div class="ngg-gallery-thumbnail" >
+                    <a href="<?php echo nextgen_esc_url($image->imageURL) ?>"
+                title="<?php echo esc_attr($image->description) ?>"
+                data-src="<?php echo nextgen_esc_url($image->imageURL) ?>"
+                data-thumbnail="<?php echo nextgen_esc_url($image->thumbnailURL); ?>"
+                data-image-id="<?php echo esc_attr($image->pid); ?>"
+                data-title="<?php echo esc_attr($image->alttext); ?>"
+                data-description="<?php echo esc_attr($image->description); ?>"
+                <?php echo $image->thumbcode ?> >
+                            <?php if ( !$image->hidden ) { ?>
+                        
+                        <div class="image_overlay">
+                            <img title="<?php echo esc_attr($image->alttext) ?>" alt="<?php echo esc_attr($image->alttext) ?>" src="<?php echo nextgen_esc_url($image->thumbnailURL) ?>" <?php echo $image->size ?> />
+                        </div>
+                    <span class="photoTitle" title="<?php echo esc_attr($image->alttext) ?>"><?php if (!$image->hidden) { echo esc_attr($image->alttext); }?></span>
+                            <?php } ?>
+                    </a>
+                </div>
+                
+            </div>
+        </li>
+       <?php if ( $image->hidden ) continue; ?>
+       <?php if ( $gallery->columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
+       <br style="clear: both" />
+       <?php } ?>
+       <?php endforeach; ?>
+        </ul>
+       <!-- Pagination -->
+       <?php echo $pagination ?>
+</ul>
+
+<?php endif; ?>
diff --git a/nggallery/gallery-glmphotos.php b/nggallery/gallery-glmphotos.php
new file mode 100644 (file)
index 0000000..c5329e2
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+/**
+Template Page for the gallery overview
+
+Follow variables are useable :
+
+       $gallery     : Contain all about the gallery
+       $images      : Contain all images, path, title
+       $pagination  : Contain the pagination content
+
+ You can check the content when you insert the tag <?php var_dump($variable) ?>
+ If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
+**/
+?>
+<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
+
+<div class="ngg-galleryoverview" id="<?php echo $gallery->anchor ?>">
+       <!-- Thumbnails -->
+    <?php $i = 0; ?>
+        <ul class="gallery row small-block-grid-2 medium-block-grid-3 large-block-grid-4">
+       <?php foreach ( $images as $image ) : ?>
+        <li>
+            <div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box imgBorderMe" <?php echo $image->style ?> >
+
+                <div class="ngg-gallery-thumbnail" >
+                    <a href="<?php echo nextgen_esc_url($image->imageURL) ?>"
+                title="<?php echo esc_attr($image->description) ?>"
+                data-src="<?php echo nextgen_esc_url($image->imageURL) ?>"
+                data-thumbnail="<?php echo nextgen_esc_url($image->thumbnailURL); ?>"
+                data-image-id="<?php echo esc_attr($image->pid); ?>"
+                data-title="<?php echo esc_attr($image->alttext); ?>"
+                data-description="<?php echo esc_attr($image->description); ?>"
+                <?php echo $image->thumbcode ?> >
+                            <?php if ( !$image->hidden ) { ?>
+
+                        <div class="image_overlay">
+                            <img
+                            title="<?php echo esc_attr($image->alttext) ?>"
+                            alt="<?php echo esc_attr($image->alttext) ?>"
+                            src="<?php echo nextgen_esc_url($image->thumbnailURL) ?>"
+                            <?php echo $image->size ?> />
+                        </div>
+                    <?php
+                    $imageTitle = !preg_match(';is\d{2,}-\d{10,}-\d{5,}$;', $image->alttext) ? $image->alttext: '';
+                    ?>
+                    <span class="photoTitle" title="<?php echo esc_attr($imageTitle) ?>">
+                        <?php if (!$image->hidden) { echo esc_attr($imageTitle); }?>
+                    </span>
+                            <?php } ?>
+                    </a>
+                </div>
+
+            </div>
+        </li>
+       <?php if ( $image->hidden ) continue; ?>
+       <?php if ( $gallery->columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
+       <br style="clear: both" />
+       <?php } ?>
+       <?php endforeach; ?>
+        </ul>
+       <!-- Pagination -->
+       <?php echo $pagination ?>
+</ul>
+</div>
+
+<?php endif; ?>
diff --git a/nggallery/gallery-glmvideos.php b/nggallery/gallery-glmvideos.php
new file mode 100644 (file)
index 0000000..367627d
--- /dev/null
@@ -0,0 +1,72 @@
+<?php 
+/**
+Template Page for the gallery overview
+
+Follow variables are useable :
+
+       $gallery     : Contain all about the gallery
+       $images      : Contain all images, path, title
+       $pagination  : Contain the pagination content
+
+ You can check the content when you insert the tag <?php var_dump($variable) ?>
+ If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
+**/
+?>
+<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
+
+<ul id='gallery' class='gallery row small-block-grid-2 medium-block-grid-3 large-block-grid-4'>
+<?php if ($gallery->show_slideshow) { ?>
+       <!-- Slideshow link -->
+       <div class="slideshowlink">
+               <a class="slideshowlink" href="<?php echo nextgen_esc_url($gallery->slideshow_link) ?>">
+                       <?php echo $gallery->slideshow_link_text ?>
+               </a>
+       </div>
+<?php } ?>
+       <!-- Thumbnails -->
+    <?php $i = 0; ?>
+       <?php foreach ( $images as $image ) : ?>
+       <li>
+            <div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box imgBorderMe" <?php echo $image->style ?> >
+
+                <div class="ngg-gallery-thumbnail" >
+                    <a href="<?php echo nggcf_get_field($image->pid, "video_url"); ?>"
+                    title="<?php echo esc_attr($image->description); ?>"
+                    data-src="<?php echo nextgen_esc_url($image->imageURL); ?>"
+                    data-thumbnail="<?php echo nextgen_esc_url($image->thumbnailURL); ?>"
+                    data-image-id="<?php echo esc_attr($image->pid); ?>"
+                    data-title="<?php echo esc_attr($image->alttext); ?>"
+                    data-description="<?php echo esc_attr($image->description); ?>"
+                    data-url="<?php echo nggcf_get_field($image->pid, "video_url"); ?>"
+                    <?php echo $image->thumbcode ?> >
+                        <?php if ( !$image->hidden ) { ?>
+                        
+                        <div class="image_overlay">
+                            <img title="<?php echo esc_attr($image->alttext) ?>" alt="<?php echo esc_attr($image->alttext) ?>" src="<?php echo nextgen_esc_url($image->thumbnailURL) ?>" <?php echo $image->size ?> />
+                        </div>
+                    <span class="photoTitle"><?php if (!$image->hidden) { echo esc_attr($image->alttext); }?></span>
+                    
+                            <?php } ?>
+                    </a>
+                </div>
+                
+            </div>
+        </li>
+       <?php if ( $image->hidden ) continue; ?>
+       <?php if ( $gallery->columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
+       <br style="clear: both" />
+       <?php } ?>
+       <?php endforeach; ?>
+       
+       <!-- Pagination -->
+       <?php echo $pagination ?>
+</ul>
+<script>
+    jQuery(document).ready(function(){
+        jQuery(".ngg-fancybox").each(function (){
+            jQuery(this).addClass("various iframe");
+            jQuery(this).attr("href",jQuery(this).children("img").attr("title"));
+        });
+    });
+</script>
+<?php endif; ?>
diff --git a/package.json b/package.json
new file mode 100644 (file)
index 0000000..c2604a1
--- /dev/null
@@ -0,0 +1,14 @@
+{
+  "name": "FranceJourneys",
+  "description": "Gaslight Media",
+  "version": "0.0.1",
+  "devDependencies": {
+    "node-sass": "~2.0.1",
+    "grunt": "~0.4.5",
+    "grunt-contrib-watch": "~0.6.1",
+    "grunt-sass": "~0.18.0",
+    "grunt-contrib-uglify": "~0.7.0",
+    "grunt-contrib-concat": "~0.5.0",
+    "grunt-contrib-copy": "~0.7.0"
+  }
+}
\ No newline at end of file
diff --git a/parts/blog-feed-front.php b/parts/blog-feed-front.php
new file mode 100644 (file)
index 0000000..ba35dbb
--- /dev/null
@@ -0,0 +1,27 @@
+<?php $args = array( 'numberposts' => 4);?>
+<div id="home-feed-posts">
+<?php
+$lastposts = get_posts( $args );
+    $count = 0;
+foreach($lastposts as $post) : setup_postdata($post); ?>
+    <div class="home-feed-post">
+        <div class="row">
+            <?php if (has_post_thumbnail( $post->ID )) { ?>
+            <div class="small-11 small-centered columns text-center home-feed-post-image">
+                <?php echo get_the_post_thumbnail($post->ID, array(190, 190), array('class' => 'blog-excerpt-img-wrap')); ?>
+                </div>
+                <div class="small-12 medium-12 columns home-feed-post-content">
+                 <?php } else { ?>
+                <div class="small-12 columns home-feed-post-content">
+                <?php } ?>
+                <span class="meta date"><?php the_time('F j, Y') ?></span>
+                <h2 class="title-posts" href="<?php the_permalink(); ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+                
+                <div class="excerpt<?php echo $count ?>"><?php echo the_advanced_excerpt('length=265&length_type=characters&no_custom=1&ellipsis=%26hellip;&exclude_tags=a,img,p,strong,h1,h2,h3,hr,div'); ?></div>
+            </div>
+        </div>
+    </div>
+    <hr>
+        <?php $count++; ?>
+<?php endforeach; ?>
+</div>
\ No newline at end of file
diff --git a/parts/blog-feed-home.php b/parts/blog-feed-home.php
new file mode 100644 (file)
index 0000000..f80c3c0
--- /dev/null
@@ -0,0 +1,26 @@
+<?php $args = array( 'numberposts' => 2);?>
+<div id="home-feed-posts">
+<?php
+$lastposts = get_posts( $args );
+    $count = 0;
+foreach($lastposts as $post) : setup_postdata($post); ?>
+    <div class="home-feed-post">
+        <div class="row">
+            <?php if (has_post_thumbnail( $post->ID )) { ?>
+            
+                <div class="small-centered small-12 medium-uncentered medium-12 columns home-feed-post-content">
+                    <h3 class="title-posts" href="<?php the_permalink(); ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
+                    <span class="meta date">Posted on <?php the_time('F jS, Y') ?></span>
+                    <?php echo get_the_post_thumbnail($post->ID, array(680, 190), array('class' => 'blog-excerpt-img-wrap')); ?>
+                 <?php } else { ?>
+                <div class="small-centered small-12 medium-uncentered medium-12 columns home-feed-post-content">
+                    <h3 class="title-posts" href="<?php the_permalink(); ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
+                    <span class="meta date">Posted on <?php the_time('F jS, Y') ?></span>
+                <?php } ?>
+                <div class="excerpt<?php echo $count ?>"><?php echo the_advanced_excerpt('length=265&length_type=characters&no_custom=1&ellipsis=%26hellip;&exclude_tags=a,img,p,strong,h1,h2,h3,hr,div'); ?></div>
+            </div>
+        </div>
+    </div>
+        <?php $count++; ?>
+<?php endforeach; ?>
+</div>
\ No newline at end of file
diff --git a/parts/blog-sidebar-r.php b/parts/blog-sidebar-r.php
new file mode 100644 (file)
index 0000000..c051ab4
--- /dev/null
@@ -0,0 +1,33 @@
+        <div id="blog-side-info-wrapper" class="small-11 small-only-text-center medium-3 columns">
+            <div id="blog-side-info">
+                <form id="searchform" action="<?php echo esc_url( home_url() ); ?>" method="get">
+                    <div><input id="s" class="text" type="text" name="s" value="" />
+                    <input class="submit blogbutton" type="submit" name="submit" value="Search" />
+                    <input type="hidden" name="searchType" value="blog" /> </div>
+                </form>
+                <p>Recent Posts</p>
+                <ul>
+                <?php
+                        $args = array( 'numberposts' => '5','post_status'=>'publish' );
+                        $recent_posts = wp_get_recent_posts( $args );
+                        foreach( $recent_posts as $recent ){
+                                echo '<li><a href="' . get_permalink($recent["ID"]) . '">' .   $recent["post_title"].'</a> </li> ';
+                        }
+                ?>
+                </ul>
+                <p>Archive</p>
+                <ul><?php wp_get_archives( array( 'type' => 'monthly', 'limit' => 12 ) ); ?></ul>
+                <p>Categories</p>
+                <ul>
+                    <?php
+                    $args = array(
+                    'orderby' => 'name',
+                    'order' => 'ASC'
+                    );
+                  $categories = get_categories($args);
+                    foreach($categories as $category) {
+                      echo '<li><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </li> ';  }
+                    ?>
+                </ul>
+            </div>
+        </div>
\ No newline at end of file
diff --git a/parts/bread-crumbs.php b/parts/bread-crumbs.php
new file mode 100644 (file)
index 0000000..7603ea0
--- /dev/null
@@ -0,0 +1,7 @@
+<?php if(function_exists('bcn_display') && !is_front_page())
+{
+    echo "<div class=\"breadcrumbs\">";
+    bcn_display();
+    echo "</div>";
+}
+?>
diff --git a/parts/client-info-footer.php b/parts/client-info-footer.php
new file mode 100644 (file)
index 0000000..08e3e45
--- /dev/null
@@ -0,0 +1,26 @@
+<div id="footer_address" class=" medium-6 large-4 columns show-for-medium-up">
+    <?php if (function_exists('glm_get_clientinfo_option')) :?>
+    <div class="row">
+        <div class="medium-12 columns address">
+            <h4><?php echo glm_get_clientinfo_option('businessName');?></h4>
+            <?php if (glm_get_clientinfo_option('address')):?>
+                <span><?php echo glm_get_clientinfo_option('address');?>,</span> 
+                <span><?php echo glm_get_clientinfo_option('city');?>, <?php echo glm_get_clientinfo_option('state');?>
+                    <?php echo glm_get_clientinfo_option('zip');?></span>
+            <?php endif;?>
+            <?php if (glm_get_clientinfo_option('phone')) :?>
+                <span><?php echo glm_get_clientinfo_option('phone');?></span>
+            <?php endif;?>
+            <?php if (glm_get_clientinfo_option('phone2')) :?>
+                <span class="bullet"> &#8226; </span><span><?php echo glm_get_clientinfo_option('phone2');?></span>
+            <?php endif;?>
+            <?php if (glm_get_clientinfo_option('email')) :?>
+                <br><a href="#"><span><?php echo glm_get_clientinfo_option('email');?></span></a>
+            <?php endif;?>
+        </div>
+    </div>
+    
+    
+    <?php endif;?>
+</div>
+
diff --git a/parts/client-info-offcanvas.php b/parts/client-info-offcanvas.php
new file mode 100644 (file)
index 0000000..621dd83
--- /dev/null
@@ -0,0 +1,30 @@
+<?php if (function_exists('glm_get_clientinfo_option')) :?>
+<ul>
+    <li><?php echo glm_get_clientinfo_option('businessName');?></li>
+    <?php if (glm_get_clientinfo_option('address')):?>
+        <li><?php echo glm_get_clientinfo_option('address');?></li>
+        <li><?php echo glm_get_clientinfo_option('city');?>, <?php echo glm_get_clientinfo_option('state');?>
+            <?php echo glm_get_clientinfo_option('zip');?></li>
+    <?php endif;?>
+    <?php if (glm_get_clientinfo_option('address2')):?>
+        <li><?php echo glm_get_clientinfo_option('address2');?></li>
+        <li><?php echo glm_get_clientinfo_option('city2');?>, <?php echo glm_get_clientinfo_option('state2');?>
+            <?php echo glm_get_clientinfo_option('zip2');?></li>
+    <?php endif;?>
+    <?php if (glm_get_clientinfo_option('phone')) :?>
+        <li><?php echo glm_get_clientinfo_option('phone');?></li>
+    <?php endif;?>
+    <?php if (glm_get_clientinfo_option('phone2')) :?>
+        <li><?php echo glm_get_clientinfo_option('phone2');?></li>
+    <?php endif;?>
+    <?php if (glm_get_clientinfo_option('email')) :?>
+        <li><a href="mailto:voyage@francejourneys.com"><?php echo glm_get_clientinfo_option('email');?></a></li>
+    <?php endif;?>
+    <?php if (glm_get_clientinfo_option('fax')) :?>
+        <li><?php echo glm_get_clientinfo_option('fax');?></li>
+    <?php endif;?>
+    <?php if (glm_get_clientinfo_option('extra')) :?>
+        <li><?php echo glm_get_clientinfo_option('extra');?></li>
+    <?php endif;?>
+</ul>
+<?php endif;?>
diff --git a/parts/event-feed.php b/parts/event-feed.php
new file mode 100644 (file)
index 0000000..a7e7d16
--- /dev/null
@@ -0,0 +1 @@
+<?php echo do_shortcode('[glm-members-event-list template="eventsFeed.html" featured="True"]');?>
diff --git a/parts/glm-blocks.php b/parts/glm-blocks.php
new file mode 100644 (file)
index 0000000..1f0e399
--- /dev/null
@@ -0,0 +1,30 @@
+<?php if(function_exists('fetch_all_glm_blocks')):?>
+<?php $blocks = fetch_all_glm_blocks();?>
+<div class="blocks">
+    <?php foreach ($blocks as $block):?>
+        <div class="text-center small-12 medium-4 columns large-text-left block">
+            <?php if($block->url):?>
+                <a class="glm-block-image-container" href="<?php echo $block->url;?>"<?php if($block->externalUrl){echo ' target="_blank"';}?>>
+                <?php endif;?>
+                <?php echo get_the_post_thumbnail($block->ID, 'glm-block-image');?>
+                <?php if($block->url):?>
+                </a>
+            <?php endif;?>
+            <div class="block-area">
+                <?php if($block->url):?>
+                <a class="title-posts" href="<?php echo $block->url;?>"<?php if($block->externalUrl){echo ' target="_blank"';}?>>
+                <?php endif;?>
+                    <h4><?php echo $block->post_title;?></h4>
+                <?php if($block->url):?>
+                </a>
+                 <?php endif;?>
+                <p><?php echo $block->post_content . $block->post_excerpt;?></p>
+                <?php if($block->url):?>
+                <a class="blocks-readmore" href="<?php echo $block->url;?>">Read more...</a>
+                <?php endif;?>
+            </div>
+        </div>
+    <?php endforeach;?>
+</div>
+
+<?php endif;?>
diff --git a/parts/glm-carousel.php b/parts/glm-carousel.php
new file mode 100644 (file)
index 0000000..e40c779
--- /dev/null
@@ -0,0 +1,69 @@
+                <div class="row small-collapse">
+                    <div id="left_scroll" class="small-1 columns arrow">
+                        <a class="left"><img src="<?php bloginfo('template_url'); ?>/assets/arrow-left.jpg"></a>
+                    </div>
+                    <div id="carousel_container" class="small-10 columns">
+                        <h1 class="text-center"></h1>
+                        <div id='carousel_inner'>  
+<!--                            <ul id="carousel_ul" class="small-block-grid-1 medium-block-grid-4">-->
+                            
+                            <ul id="carousel_ul" >
+                                
+                            <?php
+                                //$meta_query   = WC()->query->get_meta_query();
+                                //$meta_query[] = array(
+                                //    'key'   => '_featured',
+                                //    'value' => 'yes'
+                                //);
+                                //$args = array(
+                                //    'post_type'   =>  'product',
+                                //    'stock'       =>  1,
+                                //    'showposts'   =>  6,
+                                //    'orderby'     =>  'date',
+                                //    'order'       =>  'DESC',
+                                //    'meta_query'  =>  $meta_query
+                                //);
+                                
+                            //$loop = new WP_Query( $args );
+                            
+                            //while ( $loop->have_posts() ) : $loop->the_post(); global $product; ?>
+                                <?php 
+                                //if (has_post_thumbnail( $loop->post->ID )) { 
+                                //  $url = get_post_thumbnail_id($loop->post->ID);
+                                //    $thumbnail = wp_get_attachment_image_src( $url, 'full', false);
+                                    
+                                //    if ($thumbnail){
+                                        // get relative path of url
+                                //         (string)$thumbnail = $thumbnail[0];
+                                //     }
+                                //    $product_url = get_permalink($loop->post->ID);
+                                //    $title = $loop->post->post_title;
+                                //    echo $title;
+           
+                                 ?> 
+                                    
+<!--
+                                    <li class="tour-slides" id="tour-slide-<?php //echo //$loop->post->ID; ?>" style="background: url('<?php //echo $thumbnail; ?>') no-repeat center center; background-size: cover;">
+                                        <a class='tour-link' href="<?php //echo $product_url; ?>"  data-title="<?php //echo $title; ?>"></a>
+                                    </li>
+-->
+                                 <?php
+                                //} else { ?> 
+                                    <li><?php //echo '<img src="'.$woocommerce->plugin_url().'/assets/images/placeholder.png" alt="Placeholder" width="200px" height="200px" />';?></li><span></span><?php
+                                //}
+                                
+                            //endwhile;
+                                
+                            ?>
+
+                            </ul>
+
+
+
+
+                        </div>
+                    </div>
+                    <div id="right_scroll" class="small-1 columns arrow">
+                        <a class="right"><img src="<?php bloginfo('template_url'); ?>/assets/arrow-right.jpg"></a>
+                    </div>
+                </div>
\ No newline at end of file
diff --git a/parts/glm-kitchen-sink.php b/parts/glm-kitchen-sink.php
new file mode 100644 (file)
index 0000000..9fde46a
--- /dev/null
@@ -0,0 +1,293 @@
+
+<div style="background:rgba(0,0,0,0.4);border:1px solid black;border-radius:5px;display:block;margin:5px auto;width:90%;max-width:500px">
+    <ul style="columns: 2;  -webkit-columns: 2;  -moz-columns: 2;">
+        <li><a href="#social">social</a></li>
+        <li><a href="#header">header</a></li>
+        <li><a href="#search">search</a></li>
+        <li><a href="#slideshow">slideshow</a></li>
+        <li><a href="#featured">featured</a></li>
+        <li><a href="#breacrumbs">breadcrumbs</a></li>
+        <li><a href="#glm-blocks">glm-blocks</a></li>
+        <li><a href="#paragraphs">paragraphs</a></li>
+        <li><a href="#images-background">images-background</a></li>
+        <li><a href="#images-captions">images-captions</a></li>
+        <li><a href="#images">images</a></li>
+        <li><a href="#paragraphs">paragraphs</a></li>
+        <li><a href="#test-header-fonts">test-header-fonts</a></li>
+        <li><a href="#test-lists">test-lists</a></li>
+        <li><a href="#test-table">test-table</a></li>
+        <li><a href="#ninja-form">ninja-form</a></li>
+        <li><a href="#image-gallery">image-gallery</a></li>
+        <li><a href="#video-gallery">video-gallery</a></li>
+        <li><a href="#event-calendar">event-calendar</a></li>
+        <li><a href="#footer">footer</a></li>
+        <li><a href="#address">address</a></li>
+        <li><a href="#copyright">copyright</a></li>
+        <li><a href="#"></a></li>
+        
+        <br><a name=""></a>
+    </ul>
+</div>
+
+<header></header>
+
+        <br><a name="social">social</a>
+        <p>temporary inline style: height 32, width 32, float left.</p>
+<div id="testsocial" class="row">
+    <style>
+        #testsocial .soc_icon {
+            height: 32px; width:32px; float: left;
+        }
+    </style>
+</div>
+
+<br><a name="header">header</a> 
+<div id="header" class="row"></div>
+
+<br><a name="search">search</a> 
+<div id="search" class="row">
+    <?php 
+    get_template_part('parts/search');
+     ?>
+</div>
+
+<div id="sample-content" class="row">
+   <div id="main-content" class="small-12 medium-6 large-8 columns">
+           <?php if(have_posts()) : while(have_posts()): the_post();?>
+           <?php the_content();?>
+       <p> <h2>sample Text in case there is no content</h2>
+                Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+            </p>
+           <?php endwhile; else:?>
+           <p><?php _e('Sorry, no posts yet');?></p>
+           <?php endif;?>
+   </div>
+   <div class="small-12 medium-6 large-4 columns small-text-center medium-text-left">
+       <?php get_sidebar(); ?>
+   </div>
+</div>
+
+        <br><a name="slideshow">slideshow</a> 
+<div id="slideshow" class="row">
+    <?php get_template_part('parts/slide-show'); ?>
+</div>
+        
+        <br><a name="featured">featured</a> 
+<div id="featured" class="row">
+</div>
+        
+        <br><a name="breadcrumbs">breadcrumbs</a> 
+<div id="breadcrumbs" class="row">
+    <?php get_template_part('parts/bread-crumbs'); ?>
+</div>
+        
+        <br><a name="paragraphs">paragraphs</a> 
+<div id="test-paragraphs" class="row">
+    <p>
+        Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+    </p>
+</div>
+        
+        <br><a name="glm-blocks">glm-blocks</a> 
+<div id="glm-blocks" class="row">
+    <?php get_template_part('parts/glm-blocks'); ?>
+</div>
+        
+        <br><a name="images-background">images-background</a> 
+<div id="background-images" class="row">
+    <div background-image="src: '../assets/logo.png'"></div>
+    <div background-image="src: '../assets/logo.png'">
+        some text on an image?
+    </div>
+</div>
+        
+        <br><a name="images-captions">images-captions</a> 
+<div id="test-images-captions" class="row">
+
+    <div class="wp-caption alignright">
+        <img alt="This is alt text for the image" src="http://placehold.it/250x250">
+        <p class="wp-caption-text">Guests and staff join for a farewell photo</p>
+    </div>
+    <p>
+        Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+    </p>
+    <div class="wp-caption alignleft">
+        <img alt="This is alt text for the image" src="http://placehold.it/250x250">
+        <p class="wp-caption-text">Guests and staff join for a farewell photo</p>
+    </div>
+    <p>
+        Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+    </p>
+    <div class="wp-caption aligncenter">
+        <img alt="This is alt text for the image" src="http://placehold.it/250x250">
+        <p class="wp-caption-text">Guests and staff join for a farewell photo</p>
+    </div>
+    <p>
+        Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+    </p>
+    <div class="wp-caption">
+        <img alt="This is alt text for the image" src="http://placehold.it/250x250">
+        <p class="wp-caption-text">Guests and staff join for a farewell photo</p>
+    </div>
+    <p>
+        Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+    </p>
+</div>
+
+        <br><a name="images">images</a> 
+<div id="test-images" class="row">
+    <div class="alignright">
+        <img alt="This is alt text for the image" src="http://placehold.it/250x250">
+    </div>
+    <p>
+        Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+    </p>
+    <hr>
+    <div class="alignleft">
+        <img alt="This is alt text for the image" src="http://placehold.it/250x250">
+    </div>
+    <p>
+        Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+    </p>
+    <hr>
+    <div class="aligncenter">
+        <img alt="This is alt text for the image" src="http://placehold.it/250x250">
+    </div>
+    <p>
+        Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+    </p>
+    <hr>
+    <div class="">
+        <img alt="This is alt text for the image" src="http://placehold.it/250x250">
+    </div>
+    <p>
+        Yúyo tihta atalantëa wen nu. Lau nú engë rotelë, telpë ananta ré llo. San ré yávë ohtatyaro. Vén sú telpë yanen laira. Mel ehtë teren tanga nu. Hwarma tareldar at ëar, ep man norna carcassë.
+    </p>
+</div>
+        
+        <br><a name="test-header-fonts">test-header-fonts</a> 
+<div id="test-header-fonts" class="row">
+    <p> this is a paragraph for reference. Be sure to keep an eye on the line-height below</p>
+    <h1>This is a H1 element and should be large, prominent, and sparse, likely used only once on a page at the top.</h1>
+    <p> this is a paragraph for reference.</p>
+    <h2>This is a H2 element and should be prominent, likely used as headers for paragraphs.</h2>
+    <p> this is a paragraph for reference.</p>
+    <h3>This is a h3 element and should stand out, may be used as headers for paragraphs or drawing attention to certain elements</h3>
+    <p> this is a paragraph for reference.</p>
+    <h4>This is a h4 element and will likely not be used or be the same size as the surrounding P elements.</h4>
+    <p> this is a paragraph for reference.</p>
+    <h5>This is a h5 element and will likely not be used or be the same size as the surrounding P elements.</h5>
+    <p> this is a paragraph for reference.</p>
+</div>
+        
+        <br><a name="test-lists">test-lists</a> 
+<div id="test-lists" class="row">
+    UL, bulleted
+    <ul>
+        <li>content</li>
+        <li>content</li>
+        <li>content</li>
+        <li>content</li>
+        <li>content</li>
+        <li>content</li>
+        <li>
+            oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized contented
+        </li>
+    </ul>
+    <br>
+    OL, numbered
+    <ol>
+        <li>content</li>
+        <li>content</li>
+        <li>content</li>
+        <li>content</li>
+        <li>content</li>
+        <li>content</li>
+        <li>
+            oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized content oversized contented
+        </li>
+    </ol>
+</div>
+        
+        <br><a name="test-table">test-table</a> 
+<div id="test-table" class="row">
+    <table>
+        <thead>
+            <tr>
+                <td>head data0,0</td>
+                <td>head data0,1</td>
+                <td>head data0,2</td>
+                <td>head data0,3</td>
+            </tr>
+        </thead>
+        <tbody>
+            <tr>
+                <td>body data1,0</td>
+                <td>body data1,1</td>
+                <td>body data1,2</td>
+                <td>body data1,3</td>
+            </tr>
+            <tr>
+                <td>body data2,0</td>
+                <td>body data2,1</td>
+                <td>body data2,2</td>
+                <td>body data2,3</td>                
+            </tr>
+        </tbody>
+    </table>
+</div>
+        
+        <br><a name="ninja-form">ninja-form</a> 
+<div id="ninja-form" class="row">
+    Insert ninja form here.
+</div>
+
+        <br><a name="image-gallery">image-gallery</a> 
+        <h2> below momentarily won't work, nextgen might not use shortcodes anymore</h2>
+<div id="image-gallery" class="row">
+    <?php do_shortcode('[ngg_images gallery_ids="23" template=glmphotos display_type="photocrati-nextgen_basic_slideshow"]');?>
+    <?php do_shortcode('[nggallery gallery_ids="1" template=glmphotos display_type="photocrati-nextgen_basic_slideshow"]');?>
+</div>
+
+        <br><a name="video-gallery">video-gallery</a> 
+<div id="video-gallery" class="row">
+    <h2>this will only work with nextgen custom fields plugin installed</h2>
+    <h2>but below won't work at all at the moment</h2>
+    
+        <?php do_shortcode('[ngg_images gallery_ids="24" template=glmphotos display_type="photocrati-nextgen_basic_slideshow"]');?>
+        <?php do_shortcode('[nggallery id=24 template="glmvideos" display_type="photocrati-nextgen_basic_slideshow"]');?>
+</div>
+        
+        <br><a name="event-calendar">event-calendar</a> 
+<div id="event-calendar" class="row">
+    <h2>this will only work with ai1ec time.ly event calendar plugin installed</h2>
+    <?php do_shortcode('[ai1ec view="agenda" events_limit="3"]');?>
+    <?php do_shortcode('[ai1ec view="stream" events_limit="3"]');?>
+</div>
+        
+        <br><a name="footer">footer</a> 
+<footer>
+    Example footer.
+</footer>
+
+        <br><a name="address">address</a> 
+<div id="address">
+    <span>Business Name</span>
+    <span class="bullet"> &#8226; </span>
+    <span>123 Lane Street, P.O. Box 321</span>
+    <span class="bullet"> &#8226; </span>
+    <span>Village City, MI 49586</span>
+    <span class="bullet"> &#8226; </span>
+    <span>231-123-1231</span>
+    <span class="bullet"></span>
+    <span><a href="<?php echo home_url();?>/contact-us">Contact Us</a></span>
+</div>
+        
+        <br><a name="copyright">copyright</a> 
+<div id="copyright" class="row">
+    <span>&copy; <?php echo date('Y');?> </span>
+    <span class="bullet"> &#8226; </span>
+    <span> All Rights Reserved.</span>
+    <span class="bullet"> &#8226; </span>
+    <span> Produced by <a target="_blank" href="http://www.gaslightmedia.com">Gaslight Media</a></span>
+</div>
\ No newline at end of file
diff --git a/parts/interactive-map.php b/parts/interactive-map.php
new file mode 100644 (file)
index 0000000..5622602
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+
+// Custom variables used by the jQuery for the interactive map
+wp_register_script('wp_vars_for_vmap',get_stylesheet_directory_uri().'/js/vmap/dist/jquery.vmap.js');
+
+$blocks = fetch_all_glm_blocks(REGIONS_GROUP);
+//$new_wp_query = new WP_Query();
+//$all_wp_pages = $new_wp_query->query(array('post_type' => 'page', 'post_parent' => $toursPageID));
+foreach ($blocks as $block) {
+    $tourPages[] = $block->ID;
+    
+    if ( has_post_thumbnail($block) ) {
+        $imageAttributes = wp_get_attachment_image_src(get_post_thumbnail_id($block->ID),'glm-block-image'); 
+        $tourImage = $imageAttributes[0];
+    } else {
+        $tourImage = get_template_directory_uri().'/assets/tours-default.jpg';
+    }
+    $tourUrl = $block->url ? $block->url : "#";
+    $tourTitle = $block->post_title ? $block->post_title : "";
+    $tourContent = $block->post_content ? nl2br($block->post_content) : "";
+    $tourData[$block->ID] = [            
+        'image' => $tourImage,
+        'url' => $tourUrl,
+        'title' => $tourTitle,
+        'content' => $tourContent,
+    ];
+}
+
+// Enqueued script with localized data.
+wp_enqueue_script( 'wp_vars_for_vmap' );
+wp_localize_script( 'wp_vars_for_vmap', 'tourData', $tourData );
+
+?>        
+
+<script src="<?php echo get_stylesheet_directory_uri() ; ?>/js/vmap/dist/jquery.vmap.js"></script>
+<link href="<?php echo get_stylesheet_directory_uri() ; ?>/js/vmap/dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css">
+<script src="<?php echo get_stylesheet_directory_uri() ; ?>/js/vmap/dist/maps/jquery.vmap.fr_regions_2016_mill.js"></script>
+<ul id="interactive-map">
+    <li class="drop-centered menu-item menu-item-object-page menu-item-has-children has-dropdown drop-left not-click">
+        <a href="#">Regions of France</a>
+        <ul class="dropdown">
+            <div id="map"></div>
+            <div id="mapRegionData">
+<!--                <a class="jqvmap-header" href="">
+                    REGIONS OF FRANCE
+                </a>-->
+            </div>
+            <div class="jqvmap-region_button glm-button button">Click any region to find out more!</div>
+        </ul>
+    </li>
+</ul>
+<script>
+    //jQuery('#map').vectorMap({map: 'fr_regions_2016_mill'});
+    
+jQuery('#map').vectorMap(
+{
+    map: 'fr_regions_2016_mill',
+    backgroundColor: '#fff',
+    borderColor: '#cdcdcd',
+    borderOpacity: 0.25,
+    borderWidth: 2,
+    color: '#ababab',
+    enableZoom: false,
+    hoverColor: '#006a71',
+    hoverOpacity: null,
+    normalizeFunction: 'linear',
+    scaleColors: ['#b6d6ff', '#005ace'],
+    selectedColor: '#c9dfaf',
+    selectedRegions: null,
+    showTooltip: true,
+    showLabel: true,
+    pins: {
+        "fr-gf" : "Guyane<br>française",
+        "fr-h"  : "Corse",
+        "fr-f"  : "Centre Val de <br>Loire",
+        "fr-e"  : "Bretagne",
+        "fr-x1" : "Bourgogne-Franche-<br>Comté",
+        "fr-mq" : "Martinique",
+        "fr-yt" : "Mayotte",
+        "fr-x4" : "Grand Est",
+        "fr-x5" : "Occitaine",
+        "fr-x6" : "Hauts-de-France",
+        "fr-x7" : "Auvergne-Rhône<br>-Alpes",
+        "fr-x3" : "Normandy",
+        "fr-r"  : "Pays de la<br>Loire",
+        "fr-gp" : "Guadeloupe",
+        "fr-u"  : "Provence-Alpes<br>-Côte-d'Azur",
+//        "fr-u"  : "Paca",
+        "fr-j"  : "Île-de-<br>France",
+        "fr-x2" : "Nouvelle Aquitaine",
+        "fr-re" : "Réunion"
+    }
+//    onRegionClick: function(element, code, region)
+//    {
+//        var message = 'You clicked "'
+//            + region
+//            + '" which has the code: '
+//            + code.toUpperCase();
+//
+//        alert(message);
+//    }
+    
+});
+</script>
\ No newline at end of file
diff --git a/parts/off-canvas-menu.php b/parts/off-canvas-menu.php
new file mode 100644 (file)
index 0000000..4dd28b5
--- /dev/null
@@ -0,0 +1,13 @@
+<aside class="left-off-canvas-menu hide-for-large-up opensearchserver.ignore">
+    <?php glm_theme_mobile_off_canvas(); ?>
+    <?php get_template_part('parts/search');?>
+    <ul class="offcanvas-social-list">
+        
+    </ul>
+    <?php get_template_part('parts/client-info-offcanvas');?>
+    
+</aside>
+<!--
+<aside class="right-off-canvas-menu">
+    
+</aside>-->
diff --git a/parts/search.php b/parts/search.php
new file mode 100644 (file)
index 0000000..a8b83f3
--- /dev/null
@@ -0,0 +1,4 @@
+<form role="search" method="get" class="searchform" action="<?php echo home_url('/').'site-search/'; ?>">
+     <input class="search-input" type="text" placeholder="Search" value="" name="query">
+     <input class="search-button button" type="submit" value="Search" name="submit">
+</form>
\ No newline at end of file
diff --git a/parts/shop-sidebar.php b/parts/shop-sidebar.php
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/parts/slide-show.php b/parts/slide-show.php
new file mode 100644 (file)
index 0000000..8b4c100
--- /dev/null
@@ -0,0 +1,10 @@
+<?php if (is_front_page()) : ?>
+       <div id="slideshow">
+        <?php 
+            echo do_shortcode("[metaslider id=597]"); 
+        ?>
+            <?php if ( is_active_sidebar( 'slideshow' ) ) : ?>
+               <?php dynamic_sidebar( 'slideshow' ); ?>
+            <?php endif; ?>
+       </div>
+<?php endif; ?>
diff --git a/parts/top-bar.php b/parts/top-bar.php
new file mode 100644 (file)
index 0000000..56298f5
--- /dev/null
@@ -0,0 +1,10 @@
+<nav class="top-bar text-justify show-for-large-up" data-topbar role="navigation">
+    <section class="top-bar-section">
+        <?php glm_theme_top_bar(); ?>
+    </section>
+</nav>
+<nav class="tab-bar show-for-medium-down">
+    <section class="left-small">
+        <a class="left-off-canvas-toggle menu-icon" href="#"><span>Menu</span></a>
+    </section>
+</nav>
diff --git a/robots.txt b/robots.txt
new file mode 100644 (file)
index 0000000..214e411
--- /dev/null
@@ -0,0 +1,4 @@
+# www.robotstxt.org/
+# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
+
+User-agent: *
diff --git a/screenshot.png b/screenshot.png
new file mode 100644 (file)
index 0000000..94a1ef3
Binary files /dev/null and b/screenshot.png differ
diff --git a/scss/_blog.scss b/scss/_blog.scss
new file mode 100644 (file)
index 0000000..a961e29
--- /dev/null
@@ -0,0 +1,150 @@
+
+.home-feed-post {
+    padding-bottom: 25px;
+//    @media #{$small-only} {
+//        > * {
+//            text-align: center;
+//        }
+//    }
+}
+input[type="submit"].blogbutton {
+    border-radius: 3px;
+    color: $white;
+    border: 2px solid $white;
+    font-weight: bold;
+    font-size: 13px;
+    padding: 2px 5px;
+    margin-top: -10px;
+    text-transform: uppercase;
+    &:hover {
+        cursor: pointer;
+        background: $white;
+        border: 2px solid #035C84;
+        color:  white;
+    }
+}
+#blog-posts-over{
+    .search_result_context{
+        margin-bottom: 5px;
+    }
+}
+#blog-posts-over article {
+//    padding-top: 10px;
+//    margin-bottom: 15px;
+    display: inline-block;
+    width: 100%;
+    z-index: 0;
+    line-height: 120%;
+    .entry-header {
+        background: transparent;
+    }
+    #addthis_wrapper {
+        margin-top: 3px;
+    }
+    p {
+//        padding-bottom: 15px;
+    }
+    a.read-more {
+        border: 2px solid $white;
+        font-weight: bold;
+        font-size: 13px;
+        padding: 0 3px;
+        display: inline;
+        text-transform: uppercase;
+        &:hover {
+            background: $white;
+            border: 2px solid $blue;
+            color: $dark-tan;
+        }
+    }
+     .entry-header {
+        margin-bottom: 15px;
+        .entry-title {
+            margin-bottom: 0;
+        }
+        .meta.date {
+            font-weight: bold;
+            font-size: 13px;
+//            font-weight: bold;
+        }
+    }
+    h1.entry-title{
+        line-height: 1.2;
+        font-size: rem-calc(38);
+    }
+    .single-title{
+        & a{
+            text-decoration: none;
+        }
+        padding-bottom: 15px;
+    }
+}
+article .entry-header .featured-image-wrap{
+    margin-bottom: 25px;
+}
+.blog-excerpt-date{
+    font-size: 12px;
+    margin-bottom: 10px;
+    color: grey;
+
+}
+/*#searchform div input &[type="text"] {
+    width: 95%;
+}*/
+#blog-posts-over .entry-meta {
+    text-align: center;
+    color: #757575;
+    font-size: 12px;
+}
+#blog-posts-over > div {
+    margin: 25px 0 50px 0;
+}
+#blog-side-info {
+    #searchform {
+        margin-bottom: 30px;
+    }
+    p {
+        margin-bottom: 0;
+    }
+}
+@media #{$small-only} {
+    #blog-side-info-wrapper {
+        float: none;
+        margin: 0 auto;
+        clear: both;
+    }
+    #blog-side-info {
+        padding-left: 0;
+        border-left: 0;
+        ul {
+            margin-left: 0;
+            margin-top:10px;
+        }
+        #searchform {
+            padding: 35px 0;
+            #s {
+                width: 100%;
+            }
+        }
+    }
+}
+#blog-side-info {
+    padding-right: 10px;
+    ul {
+        list-style-type: none;
+        li {
+            margin-bottom: 15px;
+        }
+    }
+}
+.blog-featured-home, .blog-featured-archive{
+    height: 250px;
+    float: left;
+    background-size: cover;
+    background-repeat: no-repeat;
+    background-position: center;
+}
+#addthis_wrapper{
+    float: right;
+}
+
diff --git a/scss/_body.scss b/scss/_body.scss
new file mode 100644 (file)
index 0000000..3e942e8
--- /dev/null
@@ -0,0 +1,13 @@
+body {
+    .shadow-wrapper {
+        margin: 0 auto;
+        background: $white;
+        box-shadow: 0 0 15px -6px $black;
+        -ms-box-shadow: 0 0 15px -6px $black;
+        -moz-box-shadow: 0 0 15px -6px $black;
+        -webkit-box-shadow: 0 0 15px -6px $black;
+        
+        max-width: 1000px;
+        padding-top: rem-calc(20);
+    }
+}
diff --git a/scss/_content.scss b/scss/_content.scss
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/scss/_copyright.scss b/scss/_copyright.scss
new file mode 100644 (file)
index 0000000..abcf7fe
--- /dev/null
@@ -0,0 +1,24 @@
+#copyright {
+    position: relative;
+    z-index: 0;
+    background: $green;
+    padding: 5px 0;
+    margin: 0 auto;
+    float: none;
+    text-align: center;
+    span {
+        font-size: rem-calc(10);
+        color: $white;
+        a {
+            color: $white;
+            text-decoration: underline;
+        }
+    }
+}
+#footer_address span.bullet,
+#copyright span.bullet {
+    margin: 0 5px;
+    @media #{$small-only} {
+        display: none !important;
+    }
+}
diff --git a/scss/_defaults.scss b/scss/_defaults.scss
new file mode 100644 (file)
index 0000000..78383e3
--- /dev/null
@@ -0,0 +1,55 @@
+// This document will contain all the styles that we want to apply to every
+//  site. Make sure this is placed before _structures (if that is still the
+//  primary css file).
+
+h1,h2,h3,h4,h5,h6 {
+    clear: both;
+}
+
+/* PLUGINS */
+/* Nextgen */
+.gallery li a img { // without this images will overlap each other at certain widths
+    display: block;
+    width: 100%;
+}
+.ngg-gallery-thumbnail, .ngg-gallery-thumbnail-box {
+    float: none !important;
+}
+.ngg-album-compact h4 .ngg-album-desc {
+    height: auto !important;
+    font-family: $font-family-serif;
+    font-weight: 400;
+}
+.ngg-album-compact .album-meta-wrapper h4 a {
+    font-style: normal;
+}
+.album-meta-wrapper {
+    display: block;
+    height: 54px;
+    margin-bottom: 20px;
+}
+.ngg-glmalbums {
+    margin: 10px 0;
+    min-height: 260px;
+    @media #{$small-only} {
+        min-height: 180px;
+    }
+}
+.ngg-album-link {
+    text-align: center;
+}
+/* Ninja Forms */
+.ninja-forms-form-wrap {
+    max-width: 600px;
+    margin: 0 auto;
+    input[type=submit] {
+        @include button();
+        display: block;
+        margin: 0 auto;
+    }
+}
+/* For fixing cellphones not showing phone numbers because of /helpful/ auto-coloring */
+a[href^=tel]{
+    color:inherit;
+    text-decoration:none;
+}
\ No newline at end of file
diff --git a/scss/_left-off-canvas.scss b/scss/_left-off-canvas.scss
new file mode 100644 (file)
index 0000000..480faa0
--- /dev/null
@@ -0,0 +1,122 @@
+/* for the mobile menu */
+aside.left-off-canvas-menu {
+//  background-color: rgba(0, 0, 0, 0.7);
+//  color: white;
+}
+aside.left-off-canvas-menu li.page_item {
+  display: block;
+  overflow: hidden;
+  position: relative;
+  padding: 4px 8px;
+}
+aside.left-off-canvas-menu .off-canvas-list ul li a {
+  line-height: 20px;
+  color: white;
+  border-bottom: 1px solid #b1b3b6;
+  background-repeat: no-repeat;
+  background-position: 3px 50%;
+}
+aside.left-off-canvas-menu li.page_item_has_children a.toggle {
+  position: absolute;
+  right: 10px;
+  top: 5px;
+  width: auto;  
+    text-decoration: none;
+    &:before {
+        @include off-canvas-point(right, $white, 17px);
+    }
+    &:hover {
+        background: transparent;
+    }
+}
+aside.left-off-canvas-menu li.page_item_has_children a.toggle.open {
+    @include off-canvas-point(down, $white);
+}
+aside.left-off-canvas-menu ul.children {
+  display: none;
+}
+aside.left-off-canvas-menu .off-canvas-list ul li > ul li > a {
+  padding-left: 10px;
+  margin-left: 25px;
+  line-height: 18px;
+}
+aside.left-off-canvas-menu ul.open {
+  display: block;
+}
+.left-off-canvas-menu {
+        list-style: none;
+        li {
+            a {
+                color: $white;
+                font-size: rem-calc(16);
+                line-height: 1.2;
+                margin-bottom: 5px;
+                border-color: white;
+            }
+            a:hover {
+                color: $dark-tan;
+            }
+            .dropdown {
+                list-style: none;
+            }
+        }
+        ul {
+            list-style: none;
+
+            padding: 10px 0;
+            li {
+                color: $white;
+                a {
+                    color: $white;
+                }
+                ul {
+                    list-style: none;
+                    li {
+                        a {
+                            width: 85%;
+                            display: block;
+                            white-space: pre-wrap;
+                        }
+                    }
+                }
+            }
+        }
+    .searchform {
+        .search-button {
+            float: none;
+            margin: 0 auto 10px;
+            
+            display: block;
+        }
+    }
+}
+.offcanvas-social-list {
+    @include inline-list;
+    margin-left: auto;
+    display: inline-block;
+    li a.facebook, li a.insta, li a.twit, li a.tube {
+        background: url(../assets/Social-Icons-Set-color.png) no-repeat;
+        width: 25px;
+        height: 25px;
+        display: block;
+    }
+    li {
+        display: inline-block;
+        padding: 5px;
+        a {
+            &.facebook {
+                background-position: -672px 0;
+            }
+            &.insta {
+                background-position: -751px 0;
+            }
+            &.twit {
+                background-position: -712px 0;
+            }
+            &.tube {
+                background-position: -792px 0;
+            }
+        }
+    }
+}
+/* End Mobile Menu */
diff --git a/scss/_main.scss b/scss/_main.scss
new file mode 100644 (file)
index 0000000..4bb29b1
--- /dev/null
@@ -0,0 +1,542 @@
+.page-front {
+    @media #{$small-only}{
+        position: relative;
+    }
+    #block-row {
+        margin-top: 100px;
+        .blocks {
+            .block {
+                position: relative;
+                @media #{$small-only} {
+                    float: none;
+                    left: 0;
+                    right: 0;
+                    max-width: 395px;
+                    margin: 0 auto 15px;
+                }
+                img {
+                    border: 2px solid $white;
+                    width: 100%;
+                    height: 100%;
+                    box-shadow: 0 2px 5px 0 $black;
+                    -webkit-box-shadow: 0 2px 5px 0 $black;
+                    -moz-box-shadow: 0 2px 5px 0 $black;
+                    -ms-box-shadow: 0 2px 5px 0 $black;
+                    @media #{$small-only} {
+                        float: none;
+                        left: 0;
+                        right: 0;
+                    }
+                }
+                .block-area {
+                    max-width: 303.5px;
+                    position: absolute;
+                    z-index: 3;
+                    top: 0;
+                    display: block;
+                    width: 91%;
+                    height: 100%;
+                    h4 {
+                        background: #80153f;
+                        position: absolute;
+                        bottom: 5px;
+                        display: block;
+                        padding: 0 5px;
+                        width: 98.5%;
+                        left: 2px;
+                        text-align: center;
+                        line-height: 1.8;
+                        font-size: rem-calc(19);
+                        @media screen and (min-width: 871px) and (max-width: 969px){
+                                font-size: rem-calc(17);
+                            }
+                        @media screen and (min-width: 847px) and (max-width: 870px){
+                            font-size: rem-calc(16);
+                            width: 96.5%;
+                        }
+                        @media screen and (min-width: 811px) and (max-width: 846px){
+                            font-size: rem-calc(15);
+                            width: 96.5%;
+                        }
+                        @media screen and (min-width: 774px) and (max-width: 810px){
+                            font-size: rem-calc(14);
+                            width: 96%;
+                        }
+                        @media screen and (min-width: 641px) and (max-width: 773px){
+                            font-size: rem-calc(12);
+                            width: 96%;
+                        }
+                        @media screen and (min-width: 385px) and (max-width: 640px){
+                            width: 100%;
+                        }
+                        @media screen and (min-width: 365px) and (max-width: 384px){
+                            width: 99.6%;
+                        }
+                        @media screen and (min-width: 320px) and (max-width: 364px){
+                            width: 99%;
+                        }
+                        @media #{$small-only} {
+                            float: none;
+                            left: 0;
+                            right: 0;
+                        }
+                    }
+                    &:hover {
+                        min-height: 200px;
+                        background: rgba($black, 0.8);
+                        height: auto;
+                        h4 {
+                            position: relative;
+                            top: 0px;
+                            display: block;
+                            width: 98.5%;
+                            left: 2px;
+                            padding: 0 5px;
+                            font-size: rem-calc(19);
+                            text-align: center;
+                            line-height: 1.8;
+                            @media screen and (min-width: 855px) and (max-width: 924px){
+                                font-size: rem-calc(18);
+                            }
+                            @media screen and (min-width: 847px) and (max-width: 854px){
+                                font-size: rem-calc(18);
+                                width: 96.5%;
+                            }
+                            @media screen and (min-width: 774px) and (max-width: 846px){
+                                font-size: rem-calc(16);
+                                width: 96.5%;
+                            }
+                            @media screen and (min-width: 641px) and (max-width: 773px){
+                                font-size: rem-calc(13);
+                                width: 96.5%;
+                            }
+                            @media screen and (min-width: 320px) and (max-width: 640px){
+                                width: 100%;
+                            }
+                            @media #{$small-only} {
+                                float: none;
+                                left: 0;
+                                right: 0;
+                            }
+                        }
+                        p {
+                            padding: 0 10px;
+                            display: inline-block;
+                            color: $white;
+                        }
+                        a.blocks-readmore {
+                            padding: 0 10px;
+                            display: inline-block;
+                            color: $white;
+                            &:hover {
+                                color: $green;
+                            }
+                        }
+                    }
+                    @media #{$small-only} {
+                        max-width: 365px;
+                        width: 92.5%;
+                        &:hover {
+                            min-height: 240.5px;
+                        }
+                    }
+                }
+                p {
+                    display: none;
+                }
+                a.blocks-readmore {
+                    display: none;    
+                }
+            }
+        }
+    }
+    #main-content {
+        h1 {
+            font-size: rem-calc(32);
+            font-family: Roman;
+            font-style: italic;
+            color: $dark-tan;
+        }
+    }
+}
+.page-inside {
+    @media #{$small-only}{
+        position: relative;
+    }
+}
+#main-content {
+    h4 {
+        color: $blue;
+    }
+}
+#slide-cover {
+    position: absolute;
+    top: 200px;
+    height: 575px;
+    @include gradient(rgba($white, 0), $white);
+    width: 100%;
+//    @media screen and (min-width: 1025px) and (max-width: 1300px){
+//        height: 100%;
+//        max-height: 500px;
+//        min-height: 450px;
+//    } 
+//    @media screen and (min-width: 1080px) and (max-width: 1250px){
+//        min-height: 400px;
+//    }
+//    @media screen and (min-width: 1025px) and (max-width: 1079px){
+//        min-height: 375px;
+//    }
+//    @media #{$medium-only}{
+//        position: relative;
+//        height: auto;
+//        min-height: 295px;
+//    }
+//    @media screen and (min-width: 1011px) and (max-width: 1024px){
+//        top: 110px;
+//    }
+//    @media screen and (min-width: 961px) and (max-width: 1010px){
+//        top: 105px;
+//    }
+//    @media screen and (min-width: 916px) and (max-width: 960px){
+//        top: 100px;
+//    }
+//    @media screen and (min-width: 830px) and (max-width: 915px){
+//        top: 85px;
+//    }
+//    @media screen and (min-width: 795px) and (max-width: 829px){
+//        top: 70px;
+//    }
+//    @media screen and (min-width: 770px) and (max-width: 794px){
+//        top: 55px;
+//    }
+//    @media screen and (min-width: 735px) and (max-width: 769px){
+//        top: 40px;
+//    }
+//    @media screen and (min-width: 700px) and (max-width: 734px){
+//        top: 30px;
+//    }
+//    @media screen and (min-width: 641px) and (max-width: 699px){
+//        top: 15px;
+//    }
+//    @media screen and (max-width: 640px) {
+//        height: auto;
+//        min-height: 200px;
+//        position: absolute;
+//        top: 136px;
+//    }
+//    @media screen and (max-width: 415px) {
+//        height: auto;
+//        min-height: 200px;
+//        position: absolute;
+//        top: 120px;
+//    }
+//    @media screen and (max-width: 385px) {
+//        height: auto;
+//        min-height: 200px;
+//        position: absolute;
+//        top: 110px;
+//    }
+//    @media screen and (max-width: 355px) {
+//        height: auto;
+//        min-height: 200px;
+//        position: absolute;
+//        top: 100px;
+//    }
+//    @media screen and (max-width: 330px) {
+//        height: auto;
+//        min-height: 200px;
+//        position: absolute;
+//        top: 90px;
+//    }
+}
+#content-wrapper {
+    position: relative;
+//    @media screen and (min-width: 795px) and (max-width: 1024px){
+//        top: -35px;
+//    }
+//    @media screen and (min-width: 770px) and (max-width: 794px){
+//        top: -45px;
+//    }
+//    @media screen and (min-width: 735px) and (max-width: 769px){
+//        top: -50px;
+//    }
+//    @media screen and (min-width: 700px) and (max-width: 734px){
+//        top: -65px;
+//    }
+//    @media screen and (min-width: 641px) and (max-width: 699px){
+//        top: -80px;
+//    }
+}
+#rotation {
+    margin: 20px 0 25px;
+    background: #f1efea;
+    padding: 25px 0px 30px;
+    position: relative;
+    width: 100%;
+    display: inline-block;
+    .event {
+        h6 {
+            padding: 0 15px;
+        }
+        span {
+            display: inline-block;
+            color: $green;
+        }
+    }
+    h1 {
+        font-weight: normal;
+        margin-top: 0;
+        line-height: 1.2;
+    }
+    .arrow {
+        position: relative;
+        top: 70px;
+        @media #{$small-only} {
+            top: 95px;
+        }
+    }
+    ul {
+        li a{
+            position: relative;
+            &:hover {
+                &:before {
+                    position: absolute;
+                    display: block;
+                    color: $white;
+                    font-size: rem-calc(20);
+                    content: attr(data-title);
+                    z-index: 3;
+                    top: 40%;
+                    left: 8%;
+                    text-align: center;
+                }
+                &:after {
+                    position: absolute;
+                    top: 0;
+                    left: 0px;
+                    height: 100%;
+                    width: 100%;
+//                  max-height: 193px;
+//                  max-width: 193px;
+                    background: rgba($black, 0.75);
+                    display: block;
+                    content: "";
+                    z-index: 2;
+                
+                }
+            }
+//            &:nth-child(2){
+//                &:hover {
+//                    &:before {
+//                        content: "Sample 2";
+//                    }
+//                }
+//            }
+//            &:nth-child(3){
+//                &:hover {
+//                    &:before {
+//                        content: "Sample 3";
+//                    }
+//                }
+//            }
+//            &:nth-child(4) {
+//                &:hover {
+//                    &:before {
+//                        content: "Sample 4";
+//                    }
+//                }
+//            }
+        }
+    }
+}
+#event-container {
+    
+}
+#home-feed-posts {
+    h3 {
+        margin-bottom: 0;
+        a {
+            color: $green;
+        }
+    }
+    span {
+        margin-bottom: 15px;
+        color: #808285;
+    }
+    img {
+        display: inline-block;
+        border-bottom: 5px solid $dark-tan;
+//        margin-bottom: 30px;
+        padding-top: 10px;
+        float: left;
+        margin-right: 15px;
+        @media #{$small-only} {
+            display: block;
+            float: none;
+            margin: 0 auto;
+        }
+    }
+    a.read-more {
+        display: inline;
+    }
+}
+.page-header {
+    position: relative;
+    top: 0;
+    max-height: 370px;
+
+    overflow-y: hidden;
+    z-index: -1;
+    width: 100%;
+    @media#{$small-only}{
+    }
+}
+main .page-header .header-image-background{
+    @media#{$small-only}{
+       
+    }
+}
+//@media(max-width: 640px){
+//   .search-results #header-image{
+//        height: 350px;
+//        min-height: 0px;
+//        max-height: none;
+//    }
+//}
+.breadcrumbs {
+    margin-top: 10px;
+}
+#content-bulk {
+    #con {
+        margin: 0;
+    }
+    h2 {
+        text-transform: uppercase;
+        font-size: 25px;
+    }
+    footer {
+        margin: 35px 0;
+        #address {
+            margin-top: 25px;
+            p {
+                font-size: 12px;
+                margin-top: 5px;
+            }
+            img {
+                margin: 0;
+                padding-right: 5px;
+            }
+            a {
+                font-size: 12px;
+            }
+        }
+        img {
+            box-shadow: none;
+        }
+    }
+}
+#carousel_inner {  
+    float:left; /* important for inline positioning */  
+    width:100%; /* important (this width = width of list item(including margin) * items shown */  
+    overflow: hidden;  /* important (hide the items outside the div) */  
+    /* non-important styling bellow */  
+    background: #F0F0F0;  
+    @media #{$medium-only} {
+        float: none;
+        margin: 0 auto;
+        width: 630px;
+    }
+    @media #{$small-only} {
+        width: 210px;
+        float:none;
+        margin: 0 auto;
+    }
+}  
+
+#carousel_ul {  
+    position:relative;  
+    left: -210px; /* important (this should be negative number of list items width(including margin) */  
+    list-style-type: none; /* removing the default styling for unordered list items */  
+    margin: 0px;  
+    padding: 0px;  
+    width: 9999px; /* important */  
+    /* non-important styling bellow */  
+    padding-bottom:10px;  
+}  
+
+#carousel_ul li{  
+    float: left; /* important for inline positioning of the list items */  
+    width:200px;  /* fixed width, important */  
+    /* just styling bellow*/  
+    padding:0px;  
+    height:200px;  
+    background: #000000;  
+    margin-top:10px;  
+    margin-bottom:10px;  
+    margin-left:5px;  
+    margin-right:5px;  
+}  
+
+#carousel_ul li img {  
+    margin-bottom:-4px; /* IE is making a 4px gap bellow an image inside of an anchor (<a href...>) so this is to fix that*/  
+    /* styling */  
+    cursor:pointer;  
+    cursor: hand;  
+    border:0px;  
+}  
+
+#left_scroll img, #right_scroll img{  
+    /*styling*/  
+    cursor: pointer;  
+    cursor: hand;  
+}  
+.tour-link{
+    display: inline-block;
+    width: 100%;
+    height: 100%;
+}
+#tours-tags-grid li{
+    display: inline-block;
+    margin: 15px;
+    max-width: 200px;
+    vertical-align: top;
+    & a{
+        font-size: 1.1rem;
+    }
+}
+.tag_image:hover{
+    cursor: pointer;
+}
+@media(max-width: 482px) and (min-width: 320px){
+    #tours-tags-grid {
+        text-align: center;
+    }
+}
+.related_tours{
+    list-style: none;
+    line-height: 1;
+    padding: 6px;
+    & a{
+        color: black;
+        font-family: "josefin sans";
+        line-height: 1;
+    }
+    
+}
+small.product_category_title_item{
+    text-align: left;
+    display: block;
+    font-size: 13px;
+    color: $burgandy;
+    margin-bottom: 7px;
+    margin-top: -3px;
+}
+#container #content .product .woocommerce-tabs .panel {
+    h1, h3, h4, h6{
+      color: $teal;
+    }
+    h2, h5{
+        color: $base;
+    }
+}
\ No newline at end of file
diff --git a/scss/_mixins.scss b/scss/_mixins.scss
new file mode 100644 (file)
index 0000000..cf454d0
--- /dev/null
@@ -0,0 +1,2 @@
+  @import "mixins/gradient";
+  @import "mixins/off-canvas-arrow";
\ No newline at end of file
diff --git a/scss/_page.footer.scss b/scss/_page.footer.scss
new file mode 100644 (file)
index 0000000..8ffe93a
--- /dev/null
@@ -0,0 +1,132 @@
+footer.main {
+    background-color: $green;
+    position: relative;
+    z-index: 1;
+//    bottom: 40px;
+    left: 0;
+    right: 0;
+    padding: 20px 0 0px;
+    box-shadow: 0 8px 10px 0px rgba(0, 0, 0, 0.5);
+    -ms-box-shadow: 0 8px 10px 0px rgba(0, 0, 0, 0.5);
+    -moz-box-shadow: 0 8px 10px 0px rgba(0, 0, 0, 0.5);
+    -webkit-box-shadow: 0 8px 10px 0px rgba(0, 0, 0, 0.5);
+//    @media only screen and (max-width: 1024px) {
+//        position: relative;
+//        bottom: 0;
+//    }
+    a {
+        color: $white;
+        text-decoration: underline;
+        &:hover {
+            color: $white;
+        }
+    }
+}
+#space {
+    background: url(../assets/general.jpg) no-repeat center center;
+    background-size: cover;
+    height: 400px;
+}
+#footer_address {
+    .address {
+//        padding-left: 10px;
+        margin-bottom: 10px;
+    }
+    .contact {
+//        padding-left: 10px;
+        margin-left: -5px;
+    }
+    .footer-img {
+        padding-top: 10px;
+    }
+    h4 {
+        text-transform: none;
+        letter-spacing: normal;
+        margin: 0;
+    }
+    span{
+        color: $white;
+        white-space: nowrap;
+    }
+    a {
+        span {
+            color: $white;
+            text-decoration: underline;
+        }
+        color: $white;
+        text-decoration: underline;
+    }
+}
+#footer-widget {
+    li {
+        list-style: none;
+        ul {
+            margin: 0;
+            list-style: none;
+            li {
+                display: inline-block;
+                padding: 0 5px;
+                width: auto;
+            }
+        }
+    }
+}
+.social {
+    display: inline-block;
+    ul {
+        list-style: none;
+        margin: 15px 0 0;
+        display: block;
+        li a.facebook, li a.insta, li a.twit, li a.tube {
+            background: url(../assets/Social-Icons-Set-color.png) no-repeat;
+            width: 25px;
+            height: 25px;
+            display: block;
+        }
+        li {
+            display: inline-block;
+            padding: 5px;
+            a {
+                &.facebook {
+                    background-position: -672px 0;
+                }
+                &.insta {
+                    background-position: -751px 0;
+                }
+                &.twit {
+                    background-position: -712px 0;
+                    
+                }
+                &.tube {
+                    background-position: -792px 0;
+                }
+            }
+        }
+    }
+}
+#connect {
+    padding-top: 20px;
+    background: #4c4d4f;
+    ul{
+        margin: 0;
+        list-style: none;
+        li {
+            background: none;
+            padding: 0 5px;
+            display: inline-block;
+            & > a {
+                display: block;
+                font-family: Open Sans, sans-serif;
+                font-size: 12px;
+                color: #fff;
+                padding: 20px 18px;
+                line-height: 1.2;
+            }
+            a {
+                &#current {
+                    background: $l-blue;
+                }
+            }
+        }
+    }
+}
diff --git a/scss/_page.header.scss b/scss/_page.header.scss
new file mode 100644 (file)
index 0000000..c665d62
--- /dev/null
@@ -0,0 +1,133 @@
+header.main {
+    padding-top: 5px;
+//    height: 137px;
+    background: $white;
+//    z-index: 5;
+    -webkit-box-shadow: 5px 3px 6px -3px #000000;
+   -moz-box-shadow: 5px 3px 6px -3px #000000;
+    box-shadow: 5px 3px 6px -3px #000000;
+//    @media(max-width: 732px) and (min-width: 639px){
+//        height: 177px;
+//    }
+//    @media #{$small-only}{
+//        height: auto;
+//        top: 0;
+//    }
+    
+    span {
+        color: $green;
+        font-size: rem-calc(16);
+        margin: 0 5px;
+    }
+    #logo-tag {
+        
+        h3 {
+            clear: none;
+            display: inline;
+            color: $green;
+            white-space: nowrap;
+       }
+        img#logo {
+            display: block;
+        }
+    }
+//    & #logo {
+//        img {
+//            margin-bottom: 15px;
+//        }
+//    }
+//    & .search {
+//        input {
+//            height: 20px;
+//            width: 167px;
+//            padding: 0 8px;
+//            margin: 13px 0px 0px 18px;
+//            border-radius: 3px;
+//            font-size: 10px;
+//            color: $black;
+//            display: inline-block;
+//        }
+//        a {
+//            &.magnifying-glass {
+//                font-size: 10em; /* This controls the size. */ 
+//                display: inline-block; 
+//                width: rem-calc(10); 
+//                height: rem-calc(10);
+//                border: rem-calc(2) solid $d-blue; 
+//                position: relative; 
+//                border-radius: 0.35em;
+//                margin: 0 0 0 -25px;
+//                &:before {
+//                    content: ""; 
+//                    display: inline-block; 
+//                    position: absolute; 
+//                    right: rem-calc(-7); 
+//                    bottom: rem-calc(-4); 
+//                    border-width: 0; 
+//                    background: $d-blue; 
+//                    width: rem-calc(8); 
+//                    height: rem-calc(2); 
+//                    -webkit-transform: rotate(45deg); 
+//                    -moz-transform: rotate(45deg);
+//                    -ms-transform: rotate(45deg);
+//                    transform: rotate(45deg);
+//                }
+//            }
+//        }
+//    }
+//    #sec-nav {
+//        position: relative;
+//        text-align: left;
+//        padding: 10px 0;
+//        margin: 0 0 15px 45px;
+//        ul {
+//            margin: 0;
+//            li {
+//                display: inline;
+//                a {
+//                    font-size: 12px;
+//                    color: $d-blue;
+//                    padding: 0 5px;
+//                    font-weight: bold;
+//                }
+//            }
+//        }
+//        & > ul > li {
+//            position: relative;
+//            &:before {
+//                color: $aluminum;
+//                content: "|";
+//                position: absolute;
+//                top: 2px;
+//                left: -15px;
+//                font-size: 14px;
+//                font-weight: bold;
+//                display:block;
+//                padding: 0 10px;
+//            }
+//            &:first-child:before {
+//                content: none;
+//            }
+//        }
+//    }
+//    img {
+//        margin-left: 5px;
+//    }
+//    .social {
+//        margin-top: -25px;
+//        padding-right: 0;
+//        a {
+//            float: right;
+//            margin: 0 5px;
+//            img {
+//                margin: 0;
+//            }
+//        }
+//    }
+}
+//@media(max-width: 480px){
+//    .search-results #header-image .no-featured{
+//        height: 250px;
+//    }
+//}
+
diff --git a/scss/_page.wrapper.scss b/scss/_page.wrapper.scss
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/scss/_plugins.scss b/scss/_plugins.scss
new file mode 100644 (file)
index 0000000..d6a0374
--- /dev/null
@@ -0,0 +1,3 @@
+@import "plugins/nextgen";
+@import "plugins/gravityForms";
+@import "plugins/woocommerce";
\ No newline at end of file
diff --git a/scss/_right-off-canvas.scss b/scss/_right-off-canvas.scss
new file mode 100644 (file)
index 0000000..2872914
--- /dev/null
@@ -0,0 +1,87 @@
+/* for the mobile menu */
+aside.right-off-canvas-menu {
+  background-color: $primary-color;
+  color: white;
+}
+aside.right-off-canvas-menu li.page_item {
+  display: block;
+  overflow: hidden;
+  position: relative;
+  padding: 4px 8px;
+}
+aside.right-off-canvas-menu .off-canvas-list ul li a {
+  line-height: 20px;
+  color: white;
+  border-bottom: 1px solid #b1b3b6;
+  background-repeat: no-repeat;
+  background-position: 3px 50%;
+}
+aside.right-off-canvas-menu li.page_item_has_children a.toggle {
+  position: absolute;
+  right: 10px;
+  top: 5px;
+    text-decoration: none;
+    &:before {
+        @include off-canvas-point(right, $white, 17px);
+    }
+    &:hover {
+        background: transparent;
+    }
+}
+aside.right-off-canvas-menu li.page_item_has_children a.toggle.open {
+    @include off-canvas-point(down, $white);
+}
+aside.right-off-canvas-menu ul.children {
+  display: none;
+}
+aside.right--menu .off-canvas-list ul li > ul li > a {
+  padding-left: 10px;
+  margin-left: 25px;
+  line-height: 18px;
+}
+aside.right-off-canvas-menu ul.open {
+  display: block;
+}
+.right-off-canvas-menu {
+        list-style: none;
+        li {
+            a {
+                color: $white;
+                font-size: rem-calc(16);
+                line-height: 1.2;
+                margin-bottom: 5px;
+                border-color: white;
+            }
+            a:hover {
+                color: black;
+            }
+            .dropdown {
+                list-style: none;
+            }
+        }
+        ul {
+            list-style: none;
+
+            padding: 10px 0;
+            li {
+                a {
+                    color: $white;
+                }
+                ul {
+                    list-style: none;
+                    li {
+                        a {
+                            width: 85%;
+                            display: block;
+                            white-space: pre-wrap;
+                        }
+                    }
+                }
+            }
+        }
+}
+.offcanvas-social-list {
+    @include inline-list;
+    margin-right: auto;
+}
+/* End Mobile Menu */
diff --git a/scss/_search.scss b/scss/_search.scss
new file mode 100644 (file)
index 0000000..bd3e3d3
--- /dev/null
@@ -0,0 +1,51 @@
+.search-top {
+        #searchform {
+            text-align: left;
+            display: inline-block;
+            position: relative;
+            #search-button {
+                width: 22px;
+                right: 0px;
+                position: absolute;
+                padding: 0;
+                border: 1px solid lightgray;
+            }
+        }
+        input {
+            height: 20px;
+            width: 167px;
+            padding: 0 8px;
+            margin: 13px 0px 0px 18px;
+            border-radius: 3px;
+            font-size: 10px;
+            color: $black;
+            display: inline-block;
+        }
+        a {
+            &.magnifying-glass {
+                font-size: 10em; /* This controls the size. */ 
+                width: rem-calc(12); 
+                height: rem-calc(12);
+                border: rem-calc(2) solid darkblue; 
+                position: absolute;
+                top: 15px;
+                border-radius: 0.35em;
+                margin: 0 0 0 -20px;
+                &:before {
+                    content: ""; 
+                    display: inline-block; 
+                    position: absolute; 
+                    right: rem-calc(-7); 
+                    bottom: rem-calc(-4); 
+                    border-width: 0; 
+                    background: darkblue; 
+                    width: rem-calc(8); 
+                    height: rem-calc(2); 
+                    -webkit-transform: rotate(45deg); 
+                    -moz-transform: rotate(45deg);
+                    -ms-transform: rotate(45deg);
+                    transform: rotate(45deg);
+                }
+            }
+        }
+}
\ No newline at end of file
diff --git a/scss/_settings.scss b/scss/_settings.scss
new file mode 100644 (file)
index 0000000..f0ad1dc
--- /dev/null
@@ -0,0 +1,1481 @@
+// Foundation by ZURB
+// foundation.zurb.com
+// Licensed under MIT Open Source
+
+//
+
+// Table of Contents
+// Foundation Settings
+//
+// a. Base
+// b. Grid
+// c. Global
+// d. Media Query Ranges
+// e. Typography
+// 01. Accordion
+// 02. Alert Boxes
+// 03. Block Grid
+// 04. Breadcrumbs
+// 05. Buttons
+// 06. Button Groups
+// 07. Clearing
+// 08. Dropdown
+// 09. Dropdown Buttons
+// 10. Flex Video
+// 11. Forms
+// 12. Icon Bar
+// 13. Inline Lists
+// 14. Joyride
+// 15. Keystrokes
+// 16. Labels
+// 17. Magellan
+// 18. Off-canvas
+// 19. Orbit
+// 20. Pagination
+// 21. Panels
+// 22. Pricing Tables
+// 23. Progress Bar
+// 24. Range Slider
+// 25. Reveal
+// 26. Side Nav
+// 27. Split Buttons
+// 28. Sub Nav
+// 29. Switch
+// 30. Tables
+// 31. Tabs
+// 32. Thumbnails
+// 33. Tooltips
+// 34. Top Bar
+// 36. Visibility Classes
+
+// a. Base
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// This is the default html and body font-size for the base rem value.
+$rem-base: 16px;
+
+// Allows the use of rem-calc() or lower-bound() in your settings
+@import "foundation/functions";
+
+// The default font-size is set to 100% of the browser style sheet (usually 16px)
+// for compatibility with browser-based text zoom or user-set defaults.
+
+// Since the typical default browser font-size is 16px, that makes the calculation for grid size.
+// If you want your base font-size to be different and not have it affect the grid breakpoints,
+// set $rem-base to $base-font-size and make sure $base-font-size is a px value.
+$base-font-size: 100%;
+
+// The $base-font-size is 100% while $base-line-height is 150%
+$base-line-height: 150%;
+
+// We use this to control whether or not CSS classes come through in the gem files.
+$include-html-classes: true;
+// $include-print-styles: true;
+$include-html-global-classes: $include-html-classes;
+
+// b. Grid
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-grid-classes: $include-html-classes;
+// $include-xl-html-grid-classes: false;
+
+$row-width: rem-calc(1000);
+$total-columns: 12;
+$column-gutter: rem-calc(30);
+
+//$last-child-float: $opposite-direction;
+
+// c. Global
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// We use these to define default font stacks
+$font-family-sans-serif: "Josefin Sans", sans-serif;
+$font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif;
+$font-family-monospace: Consolas, "Liberation Mono", Courier, monospace;
+
+// We use these to define default font weights
+$font-weight-normal: normal;
+$font-weight-bold: bold;
+
+$white       : #FFFFFF;
+$ghost       : #FAFAFA;
+$snow        : #F9F9F9;
+$vapor       : #F6F6F6;
+$white-smoke : #F5F5F5;
+$silver      : #EFEFEF;
+$smoke       : #EEEEEE;
+$gainsboro   : #DDDDDD;
+$iron        : #CCCCCC;
+$base        : #AAAAAA;
+$aluminum    : #999999;
+$jumbo       : #888888;
+$monsoon     : #777777;
+$steel       : #666666;
+$charcoal    : #555555;
+$tuatara     : #444444;
+$oil         : #333333;
+$jet         : #222222;
+$black       : #000000;
+$green       : #009543;
+$red         : #d2222a;
+$d-blue      : #014976;
+$l-blue      : #96d3f9;
+$blue        : #0065a4;
+$teal        : #006a71;
+$dark-teal   : #044d53;
+$tan         : #c8c0ab;
+$dark-tan    : #a6a090;
+$burgandy    : #572700;
+
+// We use these as default colors throughout
+$primary-color: #008CBA;
+$secondary-color: #e7e7e7;
+$alert-color: #f04124;
+$success-color: #43AC6A;
+$warning-color: #f08a24;
+$info-color: #a0d3e8;
+
+// We use these to control various global styles
+// $body-bg: $white;
+$body-font-color: $black;
+$body-font-family: $font-family-sans-serif;
+$body-font-weight: $font-weight-normal;
+$body-font-style: normal;
+
+// We use this to control font-smoothing
+// $font-smoothing: antialiased;
+
+// We use these to control text direction settings
+// $text-direction: ltr;
+// $opposite-direction: right;
+// $default-float: left;
+// $last-child-float: $opposite-direction;
+
+// We use these to make sure border radius matches unless we want it different.
+// $global-radius: 3px;
+// $global-rounded: 1000px;
+
+// We use these to control inset shadow shiny edges and depressions.
+// $shiny-edge-size: 0 1px 0;
+// $shiny-edge-color: rgba($white, .5);
+// $shiny-edge-active-color: rgba($black, .2);
+
+// d. Media Query Ranges
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+$small-range: (0em, 40em);
+$medium-range: (40.063em, 64em);
+$large-range: (64.063em, 90em);
+$xlarge-range: (90.063em, 120em);
+$xxlarge-range: (120.063em, 99999999em);
+
+$screen: "only screen";
+
+$landscape: "#{$screen} and (orientation: landscape)";
+$portrait: "#{$screen} and (orientation: portrait)";
+
+$small-up: $screen;
+$small-only: "#{$screen} and (max-width: #{upper-bound($small-range)})";
+
+$medium-up: "#{$screen} and (min-width:#{lower-bound($medium-range)})";
+$medium-only: "#{$screen} and (min-width:#{lower-bound($medium-range)}) and (max-width:#{upper-bound($medium-range)})";
+
+$medium-down: "#{$screen} and (min-width:#{lower-bound($small-range)}) and (max-width:#{upper-bound($medium-range)})";
+
+$large-up: "#{$screen} and (min-width:#{lower-bound($large-range)})";
+$large-only: "#{$screen} and (min-width:#{lower-bound($large-range)}) and (max-width:#{upper-bound($large-range)})";
+
+$large-down: "#{$screen} and (min-width:#{lower-bound($small-range)}) and (max-width:#{upper-bound($large-range)})";
+
+$xlarge-up: "#{$screen} and (min-width:#{lower-bound($xlarge-range)})";
+$xlarge-only: "#{$screen} and (min-width:#{lower-bound($xlarge-range)}) and (max-width:#{upper-bound($xlarge-range)})";
+
+$xxlarge-up: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)})";
+$xxlarge-only: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)}) and (max-width:#{upper-bound($xxlarge-range)})";
+
+// Legacy
+$small: $medium-up;
+$medium: $medium-up;
+$large: $large-up;
+
+// We use this as cursors values for enabling the option of having custom cursors in the whole site's stylesheet
+$cursor-crosshair-value: crosshair;
+$cursor-default-value: default;
+$cursor-disabled-value: not-allowed;
+$cursor-pointer-value: pointer;
+$cursor-help-value: help;
+$cursor-text-value: text;
+
+// e. Typography
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-type-classes: $include-html-classes;
+
+// We use these to control header font styles
+$header-font-family: $body-font-family;
+$header-font-weight: $font-weight-normal;
+$header-font-style: normal;
+$header-font-color: $jet;
+$header-line-height: 1.4;
+$header-top-margin: .2rem;
+$header-bottom-margin: .5rem;
+$header-text-rendering: optimizeLegibility;
+
+// We use these to control header font sizes
+$h1-font-size: rem-calc(48);
+$h2-font-size: rem-calc(36);
+$h3-font-size: rem-calc(32);
+$h4-font-size: rem-calc(19);
+$h5-font-size: rem-calc(18);
+$h6-font-size: rem-calc(18);
+
+// We use these to control header size reduction on small screens
+$h1-font-reduction: rem-calc(10);
+$h2-font-reduction: rem-calc(5);
+$h3-font-reduction: rem-calc(5);
+$h4-font-reduction: rem-calc(2);
+$h5-font-reduction: rem-calc(2);
+$h6-font-reduction: rem-calc(2);
+
+// These control how subheaders are styled.
+$subheader-line-height: 1.4;
+$subheader-font-color: scale-color($header-font-color, $lightness: 35%);
+$subheader-font-weight: $font-weight-normal;
+$subheader-top-margin: .2rem;
+$subheader-bottom-margin: .5rem;
+
+// A general <small> styling
+$small-font-size: 60%;
+$small-font-color: scale-color($header-font-color, $lightness: 35%);
+
+// We use these to style paragraphs
+// $paragraph-font-family: inherit;
+// $paragraph-font-weight: $font-weight-normal;
+ $paragraph-font-size: rem-calc(16);
+// $paragraph-line-height: 1.6;
+// $paragraph-margin-bottom: rem-calc(20);
+// $paragraph-aside-font-size: rem-calc(14);
+// $paragraph-aside-line-height: 1.35;
+// $paragraph-aside-font-style: italic;
+// $paragraph-text-rendering: optimizeLegibility;
+
+// We use these to style <code> tags
+// $code-color: $oil;
+// $code-font-family: $font-family-monospace;
+// $code-font-weight: $font-weight-normal;
+// $code-background-color: scale-color($secondary-color, $lightness: 70%);
+// $code-border-size: 1px;
+// $code-border-style: solid;
+// $code-border-color: scale-color($code-background-color, $lightness: -10%);
+// $code-padding: rem-calc(2) rem-calc(5) rem-calc(1);
+
+// We use these to style anchors
+// $anchor-text-decoration: none;
+ $anchor-text-decoration-hover: underline;
+ $anchor-font-color: $blue;
+ $anchor-font-color-hover: $green;
+
+// We use these to style the <hr> element
+// $hr-border-width: 1px;
+// $hr-border-style: solid;
+// $hr-border-color: $gainsboro;
+// $hr-margin: rem-calc(20);
+
+// We use these to style lists
+// $list-font-family: $paragraph-font-family;
+// $list-font-size: $paragraph-font-size;
+// $list-line-height: $paragraph-line-height;
+// $list-margin-bottom: $paragraph-margin-bottom;
+// $list-style-position: outside;
+// $list-side-margin: 1.1rem;
+// $list-ordered-side-margin: 1.4rem;
+// $list-side-margin-no-bullet: 0;
+// $list-nested-margin: rem-calc(20);
+// $definition-list-header-weight: $font-weight-bold;
+// $definition-list-header-margin-bottom: .3rem;
+// $definition-list-margin-bottom: rem-calc(12);
+
+// We use these to style blockquotes
+// $blockquote-font-color: scale-color($header-font-color, $lightness: 35%);
+// $blockquote-padding: rem-calc(9 20 0 19);
+// $blockquote-border: 1px solid $gainsboro;
+// $blockquote-cite-font-size: rem-calc(13);
+// $blockquote-cite-font-color: scale-color($header-font-color, $lightness: 23%);
+// $blockquote-cite-link-color: $blockquote-cite-font-color;
+
+// Acronym styles
+// $acronym-underline: 1px dotted $gainsboro;
+
+// We use these to control padding and margin
+// $microformat-padding: rem-calc(10 12);
+// $microformat-margin: rem-calc(0 0 20 0);
+
+// We use these to control the border styles
+// $microformat-border-width: 1px;
+// $microformat-border-style: solid;
+// $microformat-border-color: $gainsboro;
+
+// We use these to control full name font styles
+// $microformat-fullname-font-weight: $font-weight-bold;
+// $microformat-fullname-font-size: rem-calc(15);
+
+// We use this to control the summary font styles
+// $microformat-summary-font-weight: $font-weight-bold;
+
+// We use this to control abbr padding
+// $microformat-abbr-padding: rem-calc(0 1);
+
+// We use this to control abbr font styles
+// $microformat-abbr-font-weight: $font-weight-bold;
+// $microformat-abbr-font-decoration: none;
+
+// 01. Accordion
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-accordion-classes: $include-html-classes;
+
+// $accordion-navigation-padding: rem-calc(16);
+// $accordion-navigation-bg-color: $silver;
+// $accordion-navigation-hover-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -5%);
+// $accordion-navigation-active-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -3%);
+// $accordion-navigation-font-color: $jet;
+// $accordion-navigation-font-size: rem-calc(16);
+// $accordion-navigation-font-family: $body-font-family;
+
+// $accordion-content-padding: ($column-gutter/2);
+// $accordion-content-active-bg-color: $white;
+
+// 02. Alert Boxes
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-alert-classes: $include-html-classes;
+
+// We use this to control alert padding.
+// $alert-padding-top: rem-calc(14);
+// $alert-padding-default-float: $alert-padding-top;
+// $alert-padding-opposite-direction: $alert-padding-top + rem-calc(10);
+// $alert-padding-bottom: $alert-padding-top;
+
+// We use these to control text style.
+// $alert-font-weight: $font-weight-normal;
+// $alert-font-size: rem-calc(13);
+// $alert-font-color: $white;
+// $alert-font-color-alt: scale-color($secondary-color, $lightness: -66%);
+
+// We use this for close hover effect.
+// $alert-function-factor: -14%;
+
+// We use these to control border styles.
+// $alert-border-style: solid;
+// $alert-border-width: 1px;
+// $alert-border-color: scale-color($primary-color, $lightness: $alert-function-factor);
+// $alert-bottom-margin: rem-calc(20);
+
+// We use these to style the close buttons
+// $alert-close-color: $oil;
+// $alert-close-top: 50%;
+// $alert-close-position: rem-calc(4);
+// $alert-close-font-size: rem-calc(22);
+// $alert-close-opacity: 0.3;
+// $alert-close-opacity-hover: 0.5;
+// $alert-close-padding: 9px 6px 4px;
+// $alert-close-background: inherit;
+
+// We use this to control border radius
+// $alert-radius: $global-radius;
+
+// $alert-transition-speed: 300ms;
+// $alert-transition-ease: ease-out;
+
+// 03. Block Grid
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-block-grid-classes: $include-html-classes;
+// $include-xl-html-block-grid-classes: false;
+
+// We use this to control the maximum number of block grid elements per row
+// $block-grid-elements: 12;
+// $block-grid-default-spacing: rem-calc(20);
+
+// $align-block-grid-to-grid: false;
+// @if $align-block-grid-to-grid {$block-grid-default-spacing: $column-gutter;}
+
+// Enables media queries for block-grid classes. Set to false if writing semantic HTML.
+// $block-grid-media-queries: true;
+
+// 04. Breadcrumbs
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-nav-classes: $include-html-classes;
+
+// We use this to set the background color for the breadcrumb container.
+ $crumb-bg: $white;
+
+// We use these to set the padding around the breadcrumbs.
+// $crumb-padding: rem-calc(9 14 9);
+// $crumb-side-padding: rem-calc(12);
+
+// We use these to control border styles.
+// $crumb-function-factor: -10%;
+ $crumb-border-size: 0px;
+// $crumb-border-style: solid;
+// $crumb-border-color: scale-color($crumb-bg, $lightness: $crumb-function-factor);
+// $crumb-radius: $global-radius;
+
+// We use these to set various text styles for breadcrumbs.
+ $crumb-font-size: rem-calc(16);
+ $crumb-font-color: $black;
+ $crumb-font-color-current: $teal;
+// $crumb-font-color-unavailable: $aluminum;
+ $crumb-font-transform: none;
+ $crumb-link-decor: none;
+
+// We use these to control the slash between breadcrumbs
+ $crumb-slash-color: $black;
+ $crumb-slash: ">";
+
+// 05. Buttons
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-button-classes: $include-html-classes;
+
+// We use these to build padding for buttons.
+// $button-tny: rem-calc(10);
+// $button-sml: rem-calc(14);
+// $button-med: rem-calc(16);
+// $button-lrg: rem-calc(18);
+
+// We use this to control the display property.
+// $button-display: inline-block;
+// $button-margin-bottom: rem-calc(20);
+
+// We use these to control button text styles.
+// $button-font-family: $body-font-family;
+// $button-font-color: $white;
+// $button-font-color-alt: $oil;
+// $button-font-tny: rem-calc(11);
+// $button-font-sml: rem-calc(13);
+// $button-font-med: rem-calc(16);
+// $button-font-lrg: rem-calc(20);
+// $button-font-weight: $font-weight-normal;
+// $button-font-align: center;
+
+// We use these to control various hover effects.
+// $button-function-factor: -20%;
+
+// We use these to control button border styles.
+ $button-border-width: 3px;
+// $button-border-style: solid;
+ $button-bg-color: $green;
+// $button-bg-hover: scale-color($button-bg-color, $lightness: $button-function-factor);
+ $button-border-color: $white;
+// $secondary-button-bg-hover: scale-color($secondary-color, $lightness: $button-function-factor);
+// $secondary-button-border-color: $secondary-button-bg-hover;
+// $success-button-bg-hover: scale-color($success-color, $lightness: $button-function-factor);
+// $success-button-border-color: $success-button-bg-hover;
+// $alert-button-bg-hover: scale-color($alert-color, $lightness: $button-function-factor);
+// $alert-button-border-color: $alert-button-bg-hover;
+// $warning-button-bg-hover: scale-color($warning-color, $lightness: $button-function-factor);
+// $warning-button-border-color: $warning-button-bg-hover;
+// $info-button-bg-hover: scale-color($info-color, $lightness: $button-function-factor);
+// $info-button-border-color: $info-button-bg-hover;
+
+// We use this to set the default radius used throughout the core.
+// $button-radius: $global-radius;
+// $button-round: $global-rounded;
+
+// We use this to set default opacity and cursor for disabled buttons.
+// $button-disabled-opacity: 0.7;
+// $button-disabled-cursor: $cursor-default-value;
+
+// 06. Button Groups
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-button-classes: $include-html-classes;
+
+// Sets the margin for the right side by default, and the left margin if right-to-left direction is used
+// $button-bar-margin-opposite: rem-calc(10);
+// $button-group-border-width: 1px;
+
+// 07. Clearing
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-clearing-classes: $include-html-classes;
+
+// We use these to set the background colors for parts of Clearing.
+// $clearing-bg: $oil;
+// $clearing-caption-bg: $clearing-bg;
+// $clearing-carousel-bg: rgba(51,51,51,0.8);
+// $clearing-img-bg: $clearing-bg;
+
+// We use these to style the close button
+// $clearing-close-color: $iron;
+// $clearing-close-size: 30px;
+
+// We use these to style the arrows
+// $clearing-arrow-size: 12px;
+// $clearing-arrow-color: $clearing-close-color;
+
+// We use these to style captions
+// $clearing-caption-font-color: $iron;
+// $clearing-caption-font-size: 0.875em;
+// $clearing-caption-padding: 10px 30px 20px;
+
+// We use these to make the image and carousel height and style
+// $clearing-active-img-height: 85%;
+// $clearing-carousel-height: 120px;
+// $clearing-carousel-thumb-width: 120px;
+// $clearing-carousel-thumb-active-border: 1px solid rgb(255,255,255);
+
+// 08. Dropdown
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-dropdown-classes: $include-html-classes;
+
+// We use these to controls height and width styles.
+// $f-dropdown-max-width: 200px;
+// $f-dropdown-height: auto;
+// $f-dropdown-max-height: none;
+
+// Used for bottom position
+// $f-dropdown-margin-top: 2px;
+
+// Used for right position
+// $f-dropdown-margin-left: $f-dropdown-margin-top;
+
+// Used for left position
+// $f-dropdown-margin-right: $f-dropdown-margin-top;
+
+// Used for top position
+// $f-dropdown-margin-bottom: $f-dropdown-margin-top;
+
+// We use this to control the background color
+ $f-dropdown-bg: $white;
+
+// We use this to set the border styles for dropdowns.
+// $f-dropdown-border-style: solid;
+// $f-dropdown-border-width: 1px;
+// $f-dropdown-border-color: scale-color($white, $lightness: -20%);
+
+// We use these to style the triangle pip.
+// $f-dropdown-triangle-size: 6px;
+// $f-dropdown-triangle-color: $white;
+// $f-dropdown-triangle-side-offset: 10px;
+
+// We use these to control styles for the list elements.
+// $f-dropdown-list-style: none;
+// $f-dropdown-font-color: $charcoal;
+// $f-dropdown-font-size: rem-calc(13);
+// $f-dropdown-list-padding: rem-calc(5, 10);
+// $f-dropdown-line-height: rem-calc(18);
+// $f-dropdown-list-hover-bg: $smoke;
+// $dropdown-mobile-default-float: 0;
+
+// We use this to control the styles for when the dropdown has custom content.
+ $f-dropdown-content-padding: rem-calc(16);
+
+// Default radius for dropdown.
+// $f-dropdown-radius: $global-radius;
+
+
+// 09. Dropdown Buttons
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-button-classes: $include-html-classes;
+
+// We use these to set the color of the pip in dropdown buttons
+// $dropdown-button-pip-color: $white;
+// $dropdown-button-pip-color-alt: $oil;
+
+// We use these to set the size of the pip in dropdown buttons
+// $button-pip-tny: rem-calc(6);
+// $button-pip-sml: rem-calc(7);
+// $button-pip-med: rem-calc(9);
+// $button-pip-lrg: rem-calc(11);
+
+// We use these to style tiny dropdown buttons
+// $dropdown-button-padding-tny: $button-pip-tny * 7;
+// $dropdown-button-pip-size-tny: $button-pip-tny;
+// $dropdown-button-pip-opposite-tny: $button-pip-tny * 3;
+// $dropdown-button-pip-top-tny: (-$button-pip-tny / 2) + rem-calc(1);
+
+// We use these to style small dropdown buttons
+// $dropdown-button-padding-sml: $button-pip-sml * 7;
+// $dropdown-button-pip-size-sml: $button-pip-sml;
+// $dropdown-button-pip-opposite-sml: $button-pip-sml * 3;
+// $dropdown-button-pip-top-sml: (-$button-pip-sml / 2) + rem-calc(1);
+
+// We use these to style medium dropdown buttons
+// $dropdown-button-padding-med: $button-pip-med * 6 + rem-calc(3);
+// $dropdown-button-pip-size-med: $button-pip-med - rem-calc(3);
+// $dropdown-button-pip-opposite-med: $button-pip-med * 2.5;
+// $dropdown-button-pip-top-med: (-$button-pip-med / 2) + rem-calc(2);
+
+// We use these to style large dropdown buttons
+// $dropdown-button-padding-lrg: $button-pip-lrg * 5 + rem-calc(3);
+// $dropdown-button-pip-size-lrg: $button-pip-lrg - rem-calc(6);
+// $dropdown-button-pip-opposite-lrg: $button-pip-lrg * 2.5;
+// $dropdown-button-pip-top-lrg: (-$button-pip-lrg / 2) + rem-calc(3);
+
+// 10. Flex Video
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-media-classes: $include-html-classes;
+
+// We use these to control video container padding and margins
+// $flex-video-padding-top: rem-calc(25);
+// $flex-video-padding-bottom: 67.5%;
+// $flex-video-margin-bottom: rem-calc(16);
+
+// We use this to control widescreen bottom padding
+// $flex-video-widescreen-padding-bottom: 56.34%;
+
+// 11. Forms
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-form-classes: $include-html-classes;
+
+// We use this to set the base for lots of form spacing and positioning styles
+// $form-spacing: rem-calc(16);
+
+// We use these to style the labels in different ways
+// $form-label-pointer: pointer;
+// $form-label-font-size: rem-calc(14);
+// $form-label-font-weight: $font-weight-normal;
+// $form-label-line-height: 1.5;
+// $form-label-font-color: scale-color($black, $lightness: 30%);
+// $form-label-small-transform: capitalize;
+// $form-label-bottom-margin: 0;
+// $input-font-family: inherit;
+// $input-font-color: rgba(0,0,0,0.75);
+// $input-font-size: rem-calc(14);
+// $input-bg-color: $white;
+// $input-focus-bg-color: scale-color($white, $lightness: -2%);
+// $input-border-color: scale-color($white, $lightness: -20%);
+// $input-focus-border-color: scale-color($white, $lightness: -40%);
+// $input-border-style: solid;
+// $input-border-width: 1px;
+// $input-border-radius: $global-radius;
+// $input-disabled-bg: $gainsboro;
+// $input-disabled-cursor: $cursor-default-value;
+// $input-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
+// $input-include-glowing-effect: true;
+
+// We use these to style the fieldset border and spacing.
+// $fieldset-border-style: solid;
+// $fieldset-border-width: 1px;
+// $fieldset-border-color: $gainsboro;
+// $fieldset-padding: rem-calc(20);
+// $fieldset-margin: rem-calc(18 0);
+
+// We use these to style the legends when you use them
+// $legend-bg: $white;
+// $legend-font-weight: $font-weight-bold;
+// $legend-padding: rem-calc(0 3);
+
+// We use these to style the prefix and postfix input elements
+// $input-prefix-bg: scale-color($white, $lightness: -5%);
+// $input-prefix-border-color: scale-color($white, $lightness: -20%);
+// $input-prefix-border-size: 1px;
+// $input-prefix-border-type: solid;
+// $input-prefix-overflow: hidden;
+// $input-prefix-font-color: $oil;
+// $input-prefix-font-color-alt: $white;
+
+// We use this setting to turn on/off HTML5 number spinners (the up/down arrows)
+// $input-number-spinners: true;
+
+// We use these to style the error states for inputs and labels
+// $input-error-message-padding: rem-calc(6 9 9);
+// $input-error-message-top: -1px;
+// $input-error-message-font-size: rem-calc(12);
+// $input-error-message-font-weight: $font-weight-normal;
+// $input-error-message-font-style: italic;
+// $input-error-message-font-color: $white;
+// $input-error-message-bg-color: $alert-color;
+// $input-error-message-font-color-alt: $oil;
+
+// We use this to style the glowing effect of inputs when focused
+// $glowing-effect-fade-time: 0.45s;
+// $glowing-effect-color: $input-focus-border-color;
+
+// Select variables
+// $select-bg-color: $ghost;
+// $select-hover-bg-color: scale-color($select-bg-color, $lightness: -3%);
+
+
+// 12. Icon Bar
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// We use these to style the icon-bar and items
+// $icon-bar-bg: $oil;
+// $icon-bar-font-color: $white;
+// $icon-bar-font-color-hover: $icon-bar-font-color;
+// $icon-bar-font-size: 1rem;
+// $icon-bar-hover-color: $primary-color;
+// $icon-bar-icon-color: $white;
+// $icon-bar-icon-color-hover: $icon-bar-icon-color;
+// $icon-bar-icon-size: 1.875rem;
+// $icon-bar-image-width: 1.875rem;
+// $icon-bar-image-height: 1.875rem;
+// $icon-bar-active-color: $primary-color;
+// $icon-bar-item-padding: 1.25rem;
+
+// We use this to set default opacity and cursor for disabled icons.
+// $icon-bar-disabled-opacity: 0.7;
+
+// 13. Inline Lists
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-inline-list-classes: $include-html-classes;
+
+// We use this to control the margins and padding of the inline list.
+// $inline-list-top-margin: 0;
+// $inline-list-opposite-margin: 0;
+// $inline-list-bottom-margin: rem-calc(17);
+// $inline-list-default-float-margin: rem-calc(-22);
+// $inline-list-default-float-list-margin: rem-calc(22);
+
+// $inline-list-padding: 0;
+
+// We use this to control the overflow of the inline list.
+// $inline-list-overflow: hidden;
+
+// We use this to control the list items
+// $inline-list-display: block;
+
+// We use this to control any elements within list items
+// $inline-list-children-display: block;
+
+// 14. Joyride
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-joyride-classes: $include-html-classes;
+
+// Controlling default Joyride styles
+// $joyride-tip-bg: $oil;
+// $joyride-tip-default-width: 300px;
+// $joyride-tip-padding: rem-calc(18 20 24);
+// $joyride-tip-border: solid 1px $charcoal;
+// $joyride-tip-radius: 4px;
+// $joyride-tip-position-offset: 22px;
+
+// Here, we're setting the tip font styles
+// $joyride-tip-font-color: $white;
+// $joyride-tip-font-size: rem-calc(14);
+// $joyride-tip-header-weight: $font-weight-bold;
+
+// This changes the nub size
+// $joyride-tip-nub-size: 10px;
+
+// This adjusts the styles for the timer when its enabled
+// $joyride-tip-timer-width: 50px;
+// $joyride-tip-timer-height: 3px;
+// $joyride-tip-timer-color: $steel;
+
+// This changes up the styles for the close button
+// $joyride-tip-close-color: $monsoon;
+// $joyride-tip-close-size: 24px;
+// $joyride-tip-close-weight: $font-weight-normal;
+
+// When Joyride is filling the screen, we use this style for the bg
+// $joyride-screenfill: rgba(0,0,0,0.5);
+
+// 15. Keystrokes
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-keystroke-classes: $include-html-classes;
+
+// We use these to control text styles.
+// $keystroke-font: "Consolas", "Menlo", "Courier", monospace;
+// $keystroke-font-size: inherit;
+// $keystroke-font-color: $jet;
+// $keystroke-font-color-alt: $white;
+// $keystroke-function-factor: -7%;
+
+// We use this to control keystroke padding.
+// $keystroke-padding: rem-calc(2 4 0);
+
+// We use these to control background and border styles.
+// $keystroke-bg: scale-color($white, $lightness: $keystroke-function-factor);
+// $keystroke-border-style: solid;
+// $keystroke-border-width: 1px;
+// $keystroke-border-color: scale-color($keystroke-bg, $lightness: $keystroke-function-factor);
+// $keystroke-radius: $global-radius;
+
+// 16. Labels
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-label-classes: $include-html-classes;
+
+// We use these to style the labels
+// $label-padding: rem-calc(4 8 4);
+// $label-radius: $global-radius;
+
+// We use these to style the label text
+// $label-font-sizing: rem-calc(11);
+// $label-font-weight: $font-weight-normal;
+// $label-font-color: $oil;
+// $label-font-color-alt: $white;
+// $label-font-family: $body-font-family;
+
+// 17. Magellan
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-magellan-classes: $include-html-classes;
+
+// $magellan-bg: $white;
+// $magellan-padding: 10px;
+
+// 18. Off-canvas
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// Off Canvas Tab Bar Variables
+// $include-html-off-canvas-classes: $include-html-classes;
+
+ $tabbar-bg: $blue;
+// $tabbar-height: rem-calc(45);
+// $tabbar-icon-width: $tabbar-height;
+// $tabbar-line-height: $tabbar-height;
+// $tabbar-color: $white;
+// $tabbar-middle-padding: 0 rem-calc(10);
+
+// Off Canvas Divider Styles
+// $tabbar-left-section-border: solid 1px scale-color($tabbar-bg, $lightness: -50%);
+// $tabbar-right-section-border: $tabbar-left-section-border;
+
+
+// Off Canvas Tab Bar Headers
+// $tabbar-header-color: $white;
+// $tabbar-header-weight: $font-weight-bold;
+// $tabbar-header-line-height: $tabbar-height;
+// $tabbar-header-margin: 0;
+
+// Off Canvas Menu Variables
+// $off-canvas-width: rem-calc(250);
+ $off-canvas-bg: $blue;
+
+// Off Canvas Menu List Variables
+// $off-canvas-label-padding: 0.3rem rem-calc(15);
+// $off-canvas-label-color: $aluminum;
+// $off-canvas-label-text-transform: uppercase;
+// $off-canvas-label-font-size: rem-calc(12);
+// $off-canvas-label-font-weight: $font-weight-bold;
+// $off-canvas-label-bg: $tuatara;
+// $off-canvas-label-border-top: 1px solid scale-color($off-canvas-label-bg, $lightness: 14%);
+// $off-canvas-label-border-bottom: none;
+// $off-canvas-label-margin:0;
+// $off-canvas-link-padding: rem-calc(10, 15);
+ $off-canvas-link-color: $white;
+ $off-canvas-link-border-bottom: 1px solid $white;
+// $off-canvas-back-bg: #444;
+// $off-canvas-back-border-top: $off-canvas-label-border-top;
+// $off-canvas-back-border-bottom: $off-canvas-label-border-bottom;
+// $off-canvas-back-hover-bg: scale-color($off-canvas-back-bg, $lightness: -30%);
+// $off-canvas-back-hover-border-top: 1px solid scale-color($off-canvas-label-bg, $lightness: 14%);
+// $off-canvas-back-hover-border-bottom: none;
+
+// Off Canvas Menu Icon Variables
+ $tabbar-menu-icon-color: $white;
+// $tabbar-menu-icon-hover: scale-color($tabbar-menu-icon-color, $lightness: -30%);
+
+ $tabbar-menu-icon-text-indent: rem-calc(50);
+// $tabbar-menu-icon-width: $tabbar-icon-width;
+// $tabbar-menu-icon-height: $tabbar-height;
+// $tabbar-menu-icon-padding: 0;
+
+// $tabbar-hamburger-icon-width: rem-calc(16);
+// $tabbar-hamburger-icon-left: false;
+// $tabbar-hamburger-icon-top: false;
+// $tabbar-hamburger-icon-thickness: 1px;
+// $tabbar-hamburger-icon-gap: 6px;
+
+// Off Canvas Back-Link Overlay
+// $off-canvas-overlay-transition: background 300ms ease;
+// $off-canvas-overlay-cursor: pointer;
+// $off-canvas-overlay-box-shadow: -4px 0 4px rgba($black, 0.5), 4px 0 4px rgba($black, 0.5);
+// $off-canvas-overlay-background: rgba($white, 0.2);
+// $off-canvas-overlay-background-hover: rgba($white, 0.05);
+
+// Transition Variables
+// $menu-slide: "transform 500ms ease";
+
+// 19. Orbit
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-orbit-classes: $include-html-classes;
+
+// We use these to control the caption styles
+// $orbit-container-bg: none;
+// $orbit-caption-bg: rgba(51,51,51, 0.8);
+// $orbit-caption-font-color: $white;
+// $orbit-caption-font-size: rem-calc(14);
+// $orbit-caption-position: "bottom"; // Supported values: "bottom", "under"
+// $orbit-caption-padding: rem-calc(10 14);
+// $orbit-caption-height: auto;
+
+// We use these to control the left/right nav styles
+// $orbit-nav-bg: transparent;
+// $orbit-nav-bg-hover: rgba(0,0,0,0.3);
+// $orbit-nav-arrow-color: $white;
+// $orbit-nav-arrow-color-hover: $white;
+
+// We use these to control the timer styles
+// $orbit-timer-bg: rgba(255,255,255,0.3);
+// $orbit-timer-show-progress-bar: true;
+
+// We use these to control the bullet nav styles
+// $orbit-bullet-nav-color: $iron;
+// $orbit-bullet-nav-color-active: $aluminum;
+// $orbit-bullet-radius: rem-calc(9);
+
+// We use these to controls the style of slide numbers
+// $orbit-slide-number-bg: rgba(0,0,0,0);
+// $orbit-slide-number-font-color: $white;
+// $orbit-slide-number-padding: rem-calc(5);
+
+// Graceful Loading Wrapper and preloader
+// $wrapper-class: "slideshow-wrapper";
+// $preloader-class: "preloader";
+
+// Hide controls on small
+// $orbit-nav-hide-for-small: true;
+// $orbit-bullet-hide-for-small: true;
+// $orbit-timer-hide-for-small: true; 
+
+// 20. Pagination
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-pagination-classes: $include-html-classes;
+
+// We use these to control the pagination container
+// $pagination-height: rem-calc(24);
+// $pagination-margin: rem-calc(-5);
+
+// We use these to set the list-item properties
+// $pagination-li-float: $default-float;
+// $pagination-li-height: rem-calc(24);
+// $pagination-li-font-color: $jet;
+// $pagination-li-font-size: rem-calc(14);
+// $pagination-li-margin: rem-calc(5);
+
+// We use these for the pagination anchor links
+// $pagination-link-pad: rem-calc(1 10 1);
+// $pagination-link-font-color: $aluminum;
+// $pagination-link-active-bg: scale-color($white, $lightness: -10%);
+
+// We use these for disabled anchor links
+// $pagination-link-unavailable-cursor: default;
+// $pagination-link-unavailable-font-color: $aluminum;
+// $pagination-link-unavailable-bg-active: transparent;
+
+// We use these for currently selected anchor links
+// $pagination-link-current-background: $primary-color;
+// $pagination-link-current-font-color: $white;
+// $pagination-link-current-font-weight: $font-weight-bold;
+// $pagination-link-current-cursor: default;
+// $pagination-link-current-active-bg: $primary-color;
+
+// 21. Panels
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-panel-classes: $include-html-classes;
+
+// We use these to control the background and border styles
+// $panel-bg: scale-color($white, $lightness: -5%);
+// $panel-border-style: solid;
+// $panel-border-size: 1px;
+
+// We use this % to control how much we darken things on hover
+// $panel-function-factor: -11%;
+// $panel-border-color: scale-color($panel-bg, $lightness: $panel-function-factor);
+
+// We use these to set default inner padding and bottom margin
+// $panel-margin-bottom: rem-calc(20);
+// $panel-padding: rem-calc(20);
+
+// We use these to set default font colors
+// $panel-font-color: $oil;
+// $panel-font-color-alt: $white;
+
+// $panel-header-adjust: true;
+// $callout-panel-link-color: $primary-color;
+// $callout-panel-link-color-hover: scale-color($callout-panel-link-color, $lightness: -14%);
+
+// 22. Pricing Tables
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-pricing-classes: $include-html-classes;
+
+// We use this to control the border color
+// $price-table-border: solid 1px $gainsboro;
+
+// We use this to control the bottom margin of the pricing table
+// $price-table-margin-bottom: rem-calc(20);
+
+// We use these to control the title styles
+// $price-title-bg: $oil;
+// $price-title-padding: rem-calc(15 20);
+// $price-title-align: center;
+// $price-title-color: $smoke;
+// $price-title-weight: $font-weight-normal;
+// $price-title-size: rem-calc(16);
+// $price-title-font-family: $body-font-family;
+
+// We use these to control the price styles
+// $price-money-bg: $vapor;
+// $price-money-padding: rem-calc(15 20);
+// $price-money-align: center;
+// $price-money-color: $oil;
+// $price-money-weight: $font-weight-normal;
+// $price-money-size: rem-calc(32);
+// $price-money-font-family: $body-font-family;
+
+
+// We use these to control the description styles
+// $price-bg: $white;
+// $price-desc-color: $monsoon;
+// $price-desc-padding: rem-calc(15);
+// $price-desc-align: center;
+// $price-desc-font-size: rem-calc(12);
+// $price-desc-weight: $font-weight-normal;
+// $price-desc-line-height: 1.4;
+// $price-desc-bottom-border: dotted 1px $gainsboro;
+
+// We use these to control the list item styles
+// $price-item-color: $oil;
+// $price-item-padding: rem-calc(15);
+// $price-item-align: center;
+// $price-item-font-size: rem-calc(14);
+// $price-item-weight: $font-weight-normal;
+// $price-item-bottom-border: dotted 1px $gainsboro;
+
+// We use these to control the CTA area styles
+// $price-cta-bg: $white;
+// $price-cta-align: center;
+// $price-cta-padding: rem-calc(20 20 0);
+
+// 23. Progress Bar
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-media-classes: $include-html-classes;
+
+// We use this to set the progress bar height
+// $progress-bar-height: rem-calc(25);
+// $progress-bar-color: $vapor;
+
+// We use these to control the border styles
+// $progress-bar-border-color: scale-color($white, $lightness: 20%);
+// $progress-bar-border-size: 1px;
+// $progress-bar-border-style: solid;
+// $progress-bar-border-radius: $global-radius;
+
+// We use these to control the margin & padding
+// $progress-bar-margin-bottom: rem-calc(10);
+
+// We use these to set the meter colors
+// $progress-meter-color: $primary-color;
+// $progress-meter-secondary-color: $secondary-color;
+// $progress-meter-success-color: $success-color;
+// $progress-meter-alert-color: $alert-color;
+
+// 24. Range Slider
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-range-slider-classes: $include-html-classes;
+
+// These variabels define the slider bar styles
+// $range-slider-bar-width: 100%;
+// $range-slider-bar-height: rem-calc(16);
+
+// $range-slider-bar-border-width: 1px;
+// $range-slider-bar-border-style: solid;
+// $range-slider-bar-border-color: $gainsboro;
+// $range-slider-radius: $global-radius;
+// $range-slider-round: $global-rounded;
+// $range-slider-bar-bg-color: $ghost;
+// $range-slider-active-segment-bg-color: scale-color($secondary-color, $lightness: -1%);
+
+// Vertical bar styles
+// $range-slider-vertical-bar-width: rem-calc(16);
+// $range-slider-vertical-bar-height: rem-calc(200);
+
+// These variabels define the slider handle styles
+// $range-slider-handle-width: rem-calc(32);
+// $range-slider-handle-height: rem-calc(22);
+// $range-slider-handle-position-top: rem-calc(-5);
+// $range-slider-handle-bg-color: $primary-color;
+// $range-slider-handle-border-width: 1px;
+// $range-slider-handle-border-style: solid;
+// $range-slider-handle-border-color: none;
+// $range-slider-handle-radius: $global-radius;
+// $range-slider-handle-round: $global-rounded;
+// $range-slider-handle-bg-hover-color: scale-color($primary-color, $lightness: -12%);
+// $range-slider-handle-cursor: pointer;
+
+// $range-slider-disabled-opacity: 0.7;
+// $range-slider-disabled-cursor: $cursor-disabled-value;
+
+// 25. Reveal
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-reveal-classes: $include-html-classes;
+
+// We use these to control the style of the reveal overlay.
+// $reveal-overlay-bg: rgba($black, .45);
+// $reveal-overlay-bg-old: $black;
+
+// We use these to control the style of the modal itself.
+// $reveal-modal-bg: $white;
+// $reveal-position-top: rem-calc(100);
+// $reveal-default-width: 80%;
+// $reveal-max-width: $row-width;
+// $reveal-modal-padding: rem-calc(20);
+// $reveal-box-shadow: 0 0 10px rgba($black,.4);
+
+// We use these to style the reveal close button
+// $reveal-close-font-size: rem-calc(40);
+// $reveal-close-top: rem-calc(10);
+// $reveal-close-side: rem-calc(22);
+// $reveal-close-color: $base;
+// $reveal-close-weight: $font-weight-bold;
+
+// We use this to set the default radius used throughout the core.
+// $reveal-radius: $global-radius;
+// $reveal-round: $global-rounded;
+
+// We use these to control the modal border
+// $reveal-border-style: solid;
+// $reveal-border-width: 1px;
+// $reveal-border-color: $steel;
+
+// $reveal-modal-class: "reveal-modal";
+// $close-reveal-modal-class: "close-reveal-modal";
+
+// 26. Side Nav
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-nav-classes: $include-html-classes;
+
+// We use this to control padding.
+// $side-nav-padding: rem-calc(14 0);
+
+// We use these to control list styles.
+// $side-nav-list-type: none;
+// $side-nav-list-position: outside;
+// $side-nav-list-margin: rem-calc(0 0 7 0);
+
+// We use these to control link styles.
+// $side-nav-link-color: $primary-color;
+// $side-nav-link-color-active: scale-color($side-nav-link-color, $lightness: 30%);
+// $side-nav-link-color-hover: scale-color($side-nav-link-color, $lightness: 30%);
+// $side-nav-link-bg-hover: hsla(0, 0, 0, 0.025);
+// $side-nav-link-margin: 0;
+// $side-nav-link-padding: rem-calc(7 14);
+// $side-nav-font-size: rem-calc(14);
+// $side-nav-font-weight: $font-weight-normal;
+// $side-nav-font-weight-active: $side-nav-font-weight;
+// $side-nav-font-family: $body-font-family;
+// $side-nav-font-family-active: $side-nav-font-family;
+
+// We use these to control heading styles.
+// $side-nav-heading-color: $side-nav-link-color;
+// $side-nav-heading-font-size: $side-nav-font-size;
+// $side-nav-heading-font-weight: bold;
+// $side-nav-heading-text-transform: uppercase;
+
+// We use these to control border styles
+// $side-nav-divider-size: 1px;
+// $side-nav-divider-style: solid;
+// $side-nav-divider-color: scale-color($white, $lightness: 10%);
+
+// 27. Split Buttons
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-button-classes: $include-html-classes;
+
+// We use these to control different shared styles for Split Buttons
+// $split-button-function-factor: 10%;
+// $split-button-pip-color: $white;
+// $split-button-pip-color-alt: $oil;
+// $split-button-active-bg-tint: rgba(0,0,0,0.1);
+
+// We use these to control tiny split buttons
+// $split-button-padding-tny: $button-pip-tny * 10;
+// $split-button-span-width-tny: $button-pip-tny * 6;
+// $split-button-pip-size-tny: $button-pip-tny;
+// $split-button-pip-top-tny: $button-pip-tny * 2;
+// $split-button-pip-default-float-tny: rem-calc(-6);
+
+// We use these to control small split buttons
+// $split-button-padding-sml: $button-pip-sml * 10;
+// $split-button-span-width-sml: $button-pip-sml * 6;
+// $split-button-pip-size-sml: $button-pip-sml;
+// $split-button-pip-top-sml: $button-pip-sml * 1.5;
+// $split-button-pip-default-float-sml: rem-calc(-6);
+
+// We use these to control medium split buttons
+// $split-button-padding-med: $button-pip-med * 9;
+// $split-button-span-width-med: $button-pip-med * 5.5;
+// $split-button-pip-size-med: $button-pip-med - rem-calc(3);
+// $split-button-pip-top-med: $button-pip-med * 1.5;
+// $split-button-pip-default-float-med: rem-calc(-6);
+
+// We use these to control large split buttons
+// $split-button-padding-lrg: $button-pip-lrg * 8;
+// $split-button-span-width-lrg: $button-pip-lrg * 5;
+// $split-button-pip-size-lrg: $button-pip-lrg - rem-calc(6);
+// $split-button-pip-top-lrg: $button-pip-lrg + rem-calc(5);
+// $split-button-pip-default-float-lrg: rem-calc(-6);
+
+// 28. Sub Nav
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-nav-classes: $include-html-classes;
+
+// We use these to control margin and padding
+// $sub-nav-list-margin: rem-calc(-4 0 18);
+// $sub-nav-list-padding-top: rem-calc(4);
+
+// We use this to control the definition
+// $sub-nav-font-family: $body-font-family;
+// $sub-nav-font-size: rem-calc(14);
+// $sub-nav-font-color: $aluminum;
+// $sub-nav-font-weight: $font-weight-normal;
+// $sub-nav-text-decoration: none;
+// $sub-nav-padding: rem-calc(3 16);
+// $sub-nav-border-radius: 3px;
+// $sub-nav-font-color-hover: scale-color($sub-nav-font-color, $lightness: -25%);
+
+
+// We use these to control the active item styles
+
+// $sub-nav-active-font-weight: $font-weight-normal;
+// $sub-nav-active-bg: $primary-color;
+// $sub-nav-active-bg-hover: scale-color($sub-nav-active-bg, $lightness: -14%);
+// $sub-nav-active-color: $white;
+// $sub-nav-active-padding: $sub-nav-padding;
+// $sub-nav-active-cursor: default;
+
+// $sub-nav-item-divider: "";
+// $sub-nav-item-divider-margin: rem-calc(12);
+
+// 29. Switch
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-form-classes: $include-html-classes;
+
+// Controlling background color for the switch container
+// $switch-bg: $gainsboro;
+
+// We use these to control the switch heights for our default classes
+// $switch-height-tny: 1.5rem;
+// $switch-height-sml: 1.75rem;
+// $switch-height-med: 2rem;
+// $switch-height-lrg: 2.5rem;
+// $switch-bottom-margin: 1.5rem;
+
+// We use these to style the switch-paddle
+// $switch-paddle-bg: $white;
+// $switch-paddle-transition-speed: .15s;
+// $switch-paddle-transition-ease: ease-out;
+// $switch-active-color: $primary-color; 
+
+// 30. Tables
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-table-classes: $include-html-classes;
+
+// These control the background color for the table and even rows
+// $table-bg: $white;
+// $table-even-row-bg: $snow;
+
+// These control the table cell border style
+// $table-border-style: solid;
+// $table-border-size: 1px;
+// $table-border-color: $gainsboro;
+
+// These control the table head styles
+// $table-head-bg: $white-smoke;
+// $table-head-font-size: rem-calc(14);
+// $table-head-font-color: $jet;
+// $table-head-font-weight: $font-weight-bold;
+// $table-head-padding: rem-calc(8 10 10);
+
+// These control the table foot styles
+// $table-foot-bg: $table-head-bg;
+// $table-foot-font-size: $table-head-font-size;
+// $table-foot-font-color: $table-head-font-color;
+// $table-foot-font-weight: $table-head-font-weight;
+// $table-foot-padding: $table-head-padding;
+
+// These control the caption
+// table-caption-bg: transparent;
+// $table-caption-font-color: $table-head-font-color;
+// $table-caption-font-size: rem-calc(16);
+// $table-caption-font-weight: bold;
+
+// These control the row padding and font styles
+// $table-row-padding: rem-calc(9 10);
+// $table-row-font-size: rem-calc(14);
+// $table-row-font-color: $jet;
+// $table-line-height: rem-calc(18);
+
+// These are for controlling the layout, display and margin of tables
+// $table-layout: auto;
+// $table-display: table-cell;
+// $table-margin-bottom: rem-calc(20);
+
+
+// 31. Tabs
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-tabs-classes: $include-html-classes;
+
+// $tabs-navigation-padding: rem-calc(16);
+// $tabs-navigation-bg-color: $silver;
+// $tabs-navigation-active-bg-color: $white;
+// $tabs-navigation-hover-bg-color: scale-color($tabs-navigation-bg-color, $lightness: -6%);
+// $tabs-navigation-font-color: $jet;
+// $tabs-navigation-active-font-color: $tabs-navigation-font-color;
+// $tabs-navigation-font-size: rem-calc(16);
+// $tabs-navigation-font-family: $body-font-family;
+
+// $tabs-content-margin-bottom: rem-calc(24);
+// $tabs-content-padding: ($column-gutter/2);
+
+// $tabs-vertical-navigation-margin-bottom: 1.25rem;
+
+// 32. Thumbnails
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-media-classes: $include-html-classes;
+
+// We use these to control border styles
+// $thumb-border-style: solid;
+// $thumb-border-width: 4px;
+// $thumb-border-color: $white;
+// $thumb-box-shadow: 0 0 0 1px rgba($black,.2);
+// $thumb-box-shadow-hover: 0 0 6px 1px rgba($primary-color,0.5);
+
+// Radius and transition speed for thumbs
+// $thumb-radius: $global-radius;
+// $thumb-transition-speed: 200ms;
+
+// 33. Tooltips
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-tooltip-classes: $include-html-classes;
+
+// $has-tip-border-bottom: dotted 1px $iron;
+// $has-tip-font-weight: $font-weight-bold;
+// $has-tip-font-color: $oil;
+// $has-tip-border-bottom-hover: dotted 1px scale-color($primary-color, $lightness: -55%);
+// $has-tip-font-color-hover: $primary-color;
+// $has-tip-cursor-type: help;
+
+// $tooltip-padding: rem-calc(12);
+// $tooltip-bg: $oil;
+// $tooltip-font-size: rem-calc(14);
+// $tooltip-font-weight: $font-weight-normal;
+// $tooltip-font-color: $white;
+// $tooltip-line-height: 1.3;
+// $tooltip-close-font-size: rem-calc(10);
+// $tooltip-close-font-weight: $font-weight-normal;
+// $tooltip-close-font-color: $monsoon;
+// $tooltip-font-size-sml: rem-calc(14);
+// $tooltip-radius: $global-radius;
+// $tooltip-rounded: $global-rounded;
+// $tooltip-pip-size: 5px;
+// $tooltip-max-width: 300px;
+
+// 34. Top Bar
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-top-bar-classes: $include-html-classes;
+
+// Background color for the top bar
+ $topbar-bg-color: $white;
+// $topbar-bg: $topbar-bg-color;
+
+// Height and margin
+ $topbar-height: rem-calc(50);
+// $topbar-margin-bottom: 0;
+
+// Controlling the styles for the title in the top bar
+// $topbar-title-weight: $font-weight-normal;
+// $topbar-title-font-size: rem-calc(17);
+
+// Set the link colors and styles for top-level nav
+ $topbar-link-color: $blue;
+ $topbar-link-color-hover: $blue;
+ $topbar-link-color-active: $blue;
+ $topbar-link-color-active-hover: $blue;
+ $topbar-link-weight: 600;
+ $topbar-link-font-size: rem-calc(18);
+// $topbar-link-hover-lightness: 0%; // Darken by 10%
+ $topbar-link-bg: rgba($white, 0);
+ $topbar-link-bg-hover: rgba($white, 0);
+// $topbar-link-bg-color-hover: $topbar-bg;
+ $topbar-link-bg-active: rgba($white, 0);
+ $topbar-link-bg-active-hover: rgba($white, 0);
+// $topbar-link-font-family: $body-font-family;
+ $topbar-link-text-transform: uppercase;
+// $topbar-link-padding: ($topbar-height / 3);
+// $topbar-back-link-size: rem-calc(18);
+ $topbar-link-dropdown-padding: rem-calc(16);
+// $topbar-button-font-size: 0.75rem;
+// $topbar-button-top: 7px;
+
+// Style the top bar dropdown elements
+ $topbar-dropdown-bg: $white;
+ $topbar-dropdown-link-color: $blue;
+ $topbar-dropdown-link-color-hover: $green;
+ $topbar-dropdown-link-bg: $white;
+ $topbar-dropdown-link-bg-hover: $white;
+// $topbar-dropdown-link-weight: $font-weight-normal;
+// $topbar-dropdown-toggle-size: 5px;
+// $topbar-dropdown-toggle-color: $white;
+// $topbar-dropdown-toggle-alpha: 0.4;
+
+// $topbar-dropdown-label-color: $monsoon;
+// $topbar-dropdown-label-text-transform: uppercase;
+// $topbar-dropdown-label-font-weight: $font-weight-bold;
+// $topbar-dropdown-label-font-size: rem-calc(10);
+// $topbar-dropdown-label-bg: $oil;
+
+// Top menu icon styles
+// $topbar-menu-link-transform: uppercase;
+// $topbar-menu-link-font-size: rem-calc(13);
+// $topbar-menu-link-weight: $font-weight-bold;
+// $topbar-menu-link-color: $white;
+// $topbar-menu-icon-color: $white;
+// $topbar-menu-link-color-toggled: $jumbo;
+// $topbar-menu-icon-color-toggled: $jumbo;
+// $topbar-menu-icon-position: $opposite-direction; // Change to $default-float for a left menu icon
+
+// Transitions and breakpoint styles
+// $topbar-transition-speed: 300ms;
+// Using rem-calc for the below breakpoint causes issues with top bar
+// $topbar-breakpoint: #{lower-bound($medium-range)}; // Change to 9999px for always mobile layout
+// $topbar-media-query: $medium-up;
+
+// Top-bar input styles
+// $topbar-input-height: rem-calc(28);
+
+// Divider Styles
+// $topbar-divider-border-bottom: solid 1px scale-color($topbar-bg-color, $lightness: 13%);
+// $topbar-divider-border-top: solid 1px scale-color($topbar-bg-color, $lightness: -50%);
+
+// Sticky Class
+// $topbar-sticky-class: ".sticky";
+ $topbar-arrows: false; //Set false to remove the triangle icon from the menu item
+// $topbar-dropdown-arrows: true; //Set false to remove the \00bb >> text from dropdown subnavigation li// 
+
+// 36. Visibility Classes
+// - - - - - - - - - - - - - - - - - - - - - - - - -
+
+// $include-html-visibility-classes: $include-html-classes;
+// $include-accessibility-classes: true;
+// $include-table-visibility-classes: true;
+// $include-legacy-visibility-classes: true;
diff --git a/scss/_shadow.wrapper.scss b/scss/_shadow.wrapper.scss
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/scss/_sidebar.scss b/scss/_sidebar.scss
new file mode 100644 (file)
index 0000000..8bf8dc2
--- /dev/null
@@ -0,0 +1,135 @@
+#sidebar {
+    padding-top: 25px;
+    background: #f2f9fc;
+    .row.collapse {
+        margin-left: 14px;
+    }
+    li {
+        list-style: none;
+        #calendar_wrap {
+            table#wp-calendar {
+                margin: 0 auto;
+            }
+        }
+    }
+    a {
+        font-size: 12px;
+    }
+    form {
+        margin: 0 12px 0 14px;
+        select {
+            padding: 0 rem-calc(8);
+            border-radius: 5px;
+            height: 25px;
+            margin: 0;
+            option {
+                font-size: 10px;
+            }
+        }
+    }
+    .small-block-grid-2 {
+        margin-top: 10px;
+        li {
+            padding: 0 rem-calc(10) rem-calc(10);
+            img {
+                border: 2px solid lightblue;
+            }
+        }
+        & > li:nth-of-type(2), & > li:nth-of-type(4) {
+            padding-left: 0;
+        }
+        & > li:nth-of-type(3), & > li:nth-of-type(4) {
+            padding-bottom: 20px;
+        }
+    }
+    h3 {
+        margin: 20px 0 0;
+    }
+    h1 {
+        margin: 0;
+        font-size: rem-calc(25);
+        text-transform: none;
+    }
+    input {
+        padding: 5px 0 5px 8px;
+        height: auto;
+        margin: 10px 0;
+    }
+    button {
+        border-radius: 2px;
+        padding: 0 10px;
+    }
+}
+#side-nav {
+    padding-top: 10px;
+    background: #f2f9fc;
+    h1 {
+        font-size: rem-calc(22);
+/*        margin: 5px 0 25px;*/
+    }
+    h4 {
+        font-weight: bold;
+        margin-left: 10px;
+    }
+    li {
+        list-style: none;
+    }
+    ul {
+        list-style: none;
+        margin: 0 0 20px;
+        li {
+            margin: 0 -15px;
+            padding: 5px 10px 5px 25px;
+            &:hover {
+                background: #81adc1;
+            }
+            a {
+                color: darkblue;
+                &:hover {
+                    color: $white;
+                }
+            }
+        }
+    }
+    h3 {
+        text-transform: none;
+        margin: 0;
+    }
+    input {
+        padding: 5px 0 5px 8px;
+        height: auto;
+        margin-bottom: 10px;
+    }
+    button {
+        border-radius: 2px;
+        padding: 0 10px;
+    }
+}
+#extra {
+    margin-top: 15px;
+    p {
+        line-height: 1.3;
+        &.title {
+            margin: 0;
+            &#last {
+                padding-top: 10px;
+            }
+        }
+        &#message {
+            text-transform: uppercase;
+            color: lightblue;
+            font-size: rem-calc(15);
+            margin: 40px 0;
+        }
+    }
+}
+.county-news {
+    font-weight: bold;
+}
+.current_page_item a {
+    font-weight: bold;
+}
+#ads_sidebar_container li {
+    list-style: outside none none;
+    text-align: center;
+}
\ No newline at end of file
diff --git a/scss/_slideshow.scss b/scss/_slideshow.scss
new file mode 100644 (file)
index 0000000..6956966
--- /dev/null
@@ -0,0 +1,26 @@
+#slideshow {
+    position: relative;
+//    top: 0;
+    min-height: 350px;
+    max-height: 640px;
+    overflow-y: hidden;
+    width: 100%;
+    z-index: -1;
+    list-style: none;
+    @media #{$small-only}{
+        position: relative;
+//        z-index: 0;
+        min-height: 200px;
+    }
+    #caption {
+        background: rgba(0, 0, 0, 0.75);
+        color: $white;
+        margin-top: -51px;
+        p {
+            padding: 10px 5px;
+            font-size: 12px;
+            margin: 0;
+            text-align: right;
+        }
+    }
+}
diff --git a/scss/_structure.scss b/scss/_structure.scss
new file mode 100644 (file)
index 0000000..295397a
--- /dev/null
@@ -0,0 +1,54 @@
+//1. Body
+//2. Header
+//3. Fonts
+//4. Top Bar
+//5. Off-Canvas
+.off-canvas-wrap {
+    min-height: 100%;
+    .inner-wrap {
+        min-height: 100vh;
+        height: 100%;
+    }
+}
+//6. Main
+h1 {
+//    font-weight: bold;
+    letter-spacing: 0.05em;
+    color: $green;
+}
+h2 {
+    font-family: Times;
+    font-style: italic;
+    color: $base;
+    letter-spacing: 0.025em;
+}
+h3 {
+    font-family: Times;
+    font-style: italic;
+    color: $green;
+}
+h4 {
+    font-weight: 600;
+    text-transform: uppercase;
+    color: $white;
+    letter-spacing: 0.05em;
+}
+h5 {
+    text-transform: uppercase;
+    color: $base;
+}
+h6 {
+    font-family: Times;
+    font-style: italic;
+    color: $green;
+}
+//7. Slideshow
+//8. Blog 
+//9. Sidebar
+//10. Links
+//11. Footer
+//12. Copyright
+
+#example.element {
+    background-color: transparent;
+}
\ No newline at end of file
diff --git a/scss/_topbar.scss b/scss/_topbar.scss
new file mode 100644 (file)
index 0000000..a0d9a8d
--- /dev/null
@@ -0,0 +1,241 @@
+.contain-to-grid {
+    box-shadow: 0 5px 10px -1px $aluminum;
+    .top-bar {
+        height: 73px;
+        box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.5);
+        margin-bottom: 10px;
+    }
+}
+.tab-bar {
+    .tab-bar-section.middle {
+//        left: 0;
+//        right: 2.8125rem;
+        text-align: right;
+    }
+    a.menu-icon {
+        span {
+            color: $white;
+        }
+    }
+}
+.top-bar {
+//    margin-top: -30px;
+    float: none;
+    margin: 0 auto;
+    width: 1000px;
+}
+.top-bar-section {
+    background: transparent;
+    display: inline-block;
+    height: auto;
+    line-height: 1;
+    ul{
+        li {
+            position: relative;
+            background: rgba($white, 0);
+            a {
+                position: relative;
+                &:hover {
+                    text-decoration: none;
+//                    border-bottom: 10px solid $teal;
+//                    border-left: 5px solid transparent;
+//                    border-right: 5px solid transparent;
+                }
+            }
+//            &:last-child:not(.has-form) {
+//                a:not(.button) {
+//                    padding-right: 0;
+//                }
+//            }
+            ul.dropdown {
+                z-index: 1;
+                position: relative;
+//                top: 0;
+//                left: 0 !important;
+//                right: auto !important;
+                display: block;
+                float: left;
+                padding: 10px 5px; 
+                width: 100%;
+                margin-left: 15px;
+                min-width: 400px;
+                background: $white;
+                border-bottom-left-radius: 5px;
+                border-bottom-right-radius: 5px;
+                border-color: $l-blue;
+                border-left-width: 1px;
+                border-bottom-width: 1px;
+                border-right-width: 1px;
+                border-top-width: 0;
+                border-style: solid;
+                li {
+                    position: relative;
+                    display: inline-block;
+                    float: left;
+                    width: 50%;
+                    padding: 0 15px;
+                    height: auto;
+                    &:first-child {
+                        display: none;
+                    }
+                    &:nth-child(odd) {
+                        float: left;
+                    }
+                    &:nth-child(even) {
+                        float: right;
+                    }
+                    &.active:not(.has-form) {
+                        background: $white;
+                        & > a:not(.button) {
+                            color: $blue;
+                            background: $white;
+                        }
+                    }
+                    a {
+                        padding: 10px 0 5px !important;
+                        font-size: rem-calc(16) !important;
+                        white-space: pre-wrap;
+                        border-bottom: 1px solid #dcddde;
+                    }
+                }
+            }
+            &.drop-left > .dropdown {
+                right: 0 !important; // may have to be 134px
+                left: auto !important;
+                float: right !important;
+            }
+//            ul.dropdown {
+//                z-index: 1;
+//                position: relative;
+//                left: 0 !important;
+//                right: auto !important;
+//                display: block;
+//                background: $white;
+//                width: 100%;
+//                min-width: 950px;
+//                border: 5px solid $teal;
+//                padding-bottom: 25px;
+//                li:hover {
+//                    a {
+//                        color: $tan;
+//                    }
+//                }
+//                li {
+//                    width: 25%;
+//                    text-align: center;
+//                    padding-top: 15px;
+//                    a {
+//                        font-size: rem-calc(16);
+//                        white-space: normal !important;
+//                        line-height: 10px;
+//                        float: none;
+//                        left: 0;
+//                        padding: 120px 0 0 0 !important;
+//                        position: absolute;
+//                        top: 0;
+//                        width: 85%;
+//                        margin: 0 7.5%;
+//                        background-color: transparent !important;
+//                    }
+//                    &:not(.has-form) a:not(.button){
+//                        line-height: 1.5;
+//                    }
+//                    &:last-child:not(.has-form) {
+//                        a:not(.button) {
+//                            padding: 0 rem-calc(20);
+//                        }
+//                    }
+//                }
+//                @media #{$medium-only}{
+//                    min-width: 600px;
+//                    li {
+//                        width: 50%;
+//                        a {
+//                            width: 96%;
+//                            margin: 0 2%;
+//                        }
+//                    }
+//                }
+//            }
+//            &.drop-left > .dropdown {
+//                right: 0 !important; // may have to be 134px
+//                left: auto !important;
+//                float: right !important;
+//            }
+//            &.drop-left.drop-centered > .dropdown {
+//                right: -213px !important; // may have to be 134px
+//                left: auto !important;
+//                float: right !important;
+//            }
+//            &.drop-right {
+//                ul.dropdown {
+//                    padding-left: 250px;
+//                    padding-right: 21px;
+//                    right: -1%;
+//                    left: auto;
+//                    top: 74px;
+//                    background: $white;
+//                    border-bottom-left-radius: 10px;
+//                    border-bottom-right-radius: 10px;
+//                    min-width: 500px;
+//                    box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.5);
+//                    -ms-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.5);
+//                    -moz-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.5);
+//                    -webkit-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.5);
+//                    li {
+//                        white-space: nowrap;
+//                        background: $white;
+//                        text-align: right;
+//                        border-bottom: 1px solid #e7e7e8;
+//                        padding: 5px 0;
+//                        &.nav-img-container {
+//                            img {
+//                                position: absolute;
+//                                left: 20px;
+//                                top: 23px;
+//                                border: 6px solid #fdefd4;
+//                            }
+//                            border: none;
+//                        }
+//                        a {
+//                            padding-left: 0;
+//                            text-align: left;
+//                            font-size: 18px;
+//                            &:hover {
+//                                color: $d-blue;
+//                                text-shadow: 0 0 1px $green;
+//                                text-shadow: 1 0 1px $green;
+//                                text-shadow: 0 1 1px $green;
+//                                text-shadow: -1 0 1px $green;
+//                                text-shadow: 0 -1 1px $green;
+//                            }
+//                        }
+//                    }
+//                }
+//            }
+        }
+    }
+    & > ul > li {
+        position: relative;
+        &:before {
+            color: $blue;
+            content: " | ";
+            position: absolute;
+                bottom: 15px;
+//                left: 50%;
+//                @include off-canvas-arrow(up, $green, 10px);
+            font-weight: bold;
+            display:block;
+            padding: 0;
+        }
+        &:first-child {
+            &:before {
+                display: none;
+            }
+        }
+    }
+}
+.menu-item-object-product_tag > a {
+word-wrap: break-word !important;
+
+}
diff --git a/scss/_wordpress.scss b/scss/_wordpress.scss
new file mode 100644 (file)
index 0000000..eac6a6e
--- /dev/null
@@ -0,0 +1,236 @@
+// Wordpress styles
+// Table of Contents
+// 01. Images
+
+
+// 01. Images
+// 02 Search and Post
+
+img.aligncenter {
+    display: block;
+    clear: both;
+    float:none;
+    padding:0;
+    margin-left: auto;
+    margin-right: auto;
+    }
+
+img.alignright {
+    padding: 0;
+    margin: 0 0 6px 11px;
+    display: inline;
+    }
+
+blockquote.alignleft,
+img.alignleft,
+.wp-caption.alignleft {
+    margin: rem-calc(7) rem-calc(35) rem-calc(7) 0;
+}
+
+blockquote.alignright,
+img.alignright,
+.wp-caption.alignright {
+    margin: rem-calc(7) 0 rem-calc(7) rem-calc(35);
+}
+img.alignleft {
+    padding: 0;
+    display: inline;
+    }
+img.alignleft, img.alignright, img.aligncenter, img.alignnone, div.wp-caption img {
+//    border: 1px solid $charcoal;
+}
+
+.alignright {
+    float: right;
+}
+.alignnone {
+    float: none;
+}
+.alignleft {
+    float: left;
+}
+.wp-caption {
+//    background: $charcoal;
+    width: auto;
+}
+.wp-caption-text {
+    font-family: Open Sans, sans-serif;
+    font-size: 9px;
+    color: $white;
+    font-style: italic;
+    margin: 0;
+    padding: 0 5px;
+}
+.gallery-one-title {
+    height: 45px;
+    font-size: 0.8em;
+    text-align: center;
+    font-family: sans-serif;
+    padding: 5px;
+}
+.gallery-holder {
+    margin: 10px 0 20px 0;
+}
+@media #{$small-range} {
+    img.alignright, img.alignleft, img.aligncenter {
+        width: 70% !important;
+        display: block;
+        margin-left: auto;
+        margin-right: auto;
+        float: none;
+        text-align: center;
+    }
+    div.wp-caption.alignright, div.wp-caption.alignleft {
+        width: 44% !important;
+        margin-left: auto;
+        margin-right: auto;
+        float: none;
+        text-align: center;
+    }
+    div.wp-caption.aligncenter {
+        width: 85% !important;
+        margin-left: auto;
+        margin-right: auto;
+        float: none;
+        text-align: center;
+    }
+    div.wp-caption.alignnone {
+        width: 85% !important;
+        float: none;
+    }
+    div.wp-caption.alignright, div.wp-caption.alignleft, div.wp-caption.aligncenter {
+        width: 100%;
+    }
+}
+@media #{$medium-range} {
+    img.aligncenter, img.alignnone {
+        width: 70% !important;
+        display: block;
+        margin-left: auto;
+        margin-right: auto;
+        float: none;
+        text-align: center;
+    }
+    div.wp-caption.aligncenter {
+        width: 74% !important;
+        margin-left: auto;
+        margin-right: auto;
+        float: none;
+        text-align: center;
+    }
+    div.wp-caption.aligncenter {
+        width: 100%;
+    }
+    div.wp-caption.alignnone {
+        width: 73% !important;
+        float: none;
+    }
+}
+
+.wp-caption {
+    max-width: 100%;
+    margin: 10px 20px;
+    padding: 5px;
+//    background-color: #f3f3f3;
+//    border: 1px solid #ddd;
+    text-align: center;
+    img {
+        width: 100%;
+    }
+    p.wp-caption-text {
+        padding: 5px;
+        width: 100%;
+        margin: 0;
+        color: black;
+        font-size: 14px;
+        font-style: italic;
+    }
+    &.aligncenter {
+        margin: 10px auto;
+    }
+}
+// end Images
+// 02 Search and Post
+@media #{$small-only} {
+    #blog-posts-over {
+//        padding: 0 !important;
+        margin: 0 !important;
+    }
+}
+.blog-posts-container {
+    margin: 30px 0 30px;
+    embed, iframe, object, video {
+        max-width: 100%;
+    }
+    a {
+        text-decoration: none;
+    }
+    header.entry-header {
+        h2.entry-title {
+            a {
+                color: #222;
+                margin-left: 0;
+            }
+        }
+    }
+    .wp-caption .wp-caption-text, .gallery-caption, .entry-caption {
+        overflow: hidden;
+        color: #757575;
+        font-size: 0.857143rem;
+        font-style: italic;
+        line-height: 2;
+    }
+    .date {
+        font-size: 12px;
+    }
+    footer.entry-meta {
+        color: #757575;
+        font-size: 0.928571rem;
+        line-height: 1.84615;
+        margin-top: 1.71429rem;
+        clear: both;
+        float: none;
+        margin-right: auto;
+    }
+    footer {
+        background: none;
+        clear: both;
+        padding: 15px 0 0;
+        position: relative;
+        text-align: center;
+    }
+}
+#content-wrapper {
+    h1, h2, h3, h4, h5, h6 {
+        clear: both;
+    }
+}
+.content {
+    background: #fff;
+/*    -webkit-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);
+    -moz-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);
+    box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);*/
+//    box-shadow: 3px 3px 8px -1px darkgrey;
+}
+#searchform_container {
+    margin-top: 20px;
+}
+#searchform {
+    max-width: 100%;
+    text-align: center;
+    div {
+        input.blogbutton {
+            @include gradient(#1999ce, #107098);
+        }
+    }
+}
+#blog-side-info {
+    border-left: 1px solid grey;
+    margin-top: 30px;
+    padding-left: 20px;
+    @media #{$small-only} {
+        text-align: center;
+    }
+}
+
+// End Search and Posts
diff --git a/scss/admin/tinymce.css b/scss/admin/tinymce.css
new file mode 100644 (file)
index 0000000..24e0f6a
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+GaslightMedia, all rights reserved.
+*/
+/* 
+    Created on : May 22, 2015, 11:19:44 AM
+    Author     : laury
+*/
+ /*
+ * To make the TINYMCE editor in wordpress reflect some of the default styles
+ * we have active on all our themes, thus leading to a more true WYSIWYG
+ * experience.
+ */
+#tinymce h1 {
+    clear: both;
+}
+
+#tinymce h2 {
+    clear: both;
+}
+
+#tinymce h3 {
+    clear: both;   
+}
+
+#tinymce h4 {
+    clear: both;   
+}
+
+#tinymce h5 {
+    clear: both;   
+}
+
+#tinymce h6 {
+    clear: both;   
+} 
\ No newline at end of file
diff --git a/scss/app.scss b/scss/app.scss
new file mode 100644 (file)
index 0000000..7ade1e7
--- /dev/null
@@ -0,0 +1,20 @@
+@import "settings";
+@import "foundation";
+@import "mixins";
+@import "wordpress";
+@import "defaults";
+@import "body";
+@import "page.header";
+@import "topbar";
+@import "main";
+@import "slideshow";
+@import "plugins";
+@import "blog";
+@import "sidebar";
+@import "search";
+@import "page.footer";
+@import "copyright";
+@import "structure";
+@import "left-off-canvas";
+//@import "right-off-canvas";
+
diff --git a/scss/mixins/_gradient.scss b/scss/mixins/_gradient.scss
new file mode 100644 (file)
index 0000000..916b89b
--- /dev/null
@@ -0,0 +1,40 @@
+/* 
+    Created on : Mar 5, 2015, 2:57:35 PM
+    Author     : laury
+*/
+
+@mixin gradient($from, $to) {
+    background: -webkit-linear-gradient(top, $from 80%, $to 100%);
+    background: -moz-linear-gradient(center top, $from 80%, $to 100%);
+    background: -ms-linear-gradient(top, $from 80%, $to 100%);
+//    @media screen and (min-width: 1290px) and (max-width: 1365px){
+//        background: -webkit-linear-gradient(top, $from 45%, $to 85%);
+//        background: -moz-linear-gradient(center top, $from 45%, $to 85%);
+//        background: -ms-linear-gradient(top, $from 45%, $to 85%);
+//    }
+//    @media screen and (min-width: 1250px) and (max-width: 1289px){
+//        background: -webkit-linear-gradient(top, $from 35%, $to 80%);
+//        background: -moz-linear-gradient(center top, $from 35%, $to 80%);
+//        background: -ms-linear-gradient(top, $from 35%, $to 80%);
+//    }
+//    @media screen and (min-width: 1080px) and (max-width: 1249px){
+//        background: -webkit-linear-gradient(top, $from 30%, $to 75%);
+//        background: -moz-linear-gradient(center top, $from 30%, $to 75%);
+//        background: -ms-linear-gradient(top, $from 30%, $to 75%);
+//    }
+//    @media screen and (min-width: 1025px) and (max-width: 1079px){
+//        background: -webkit-linear-gradient(top, $from 30%, $to 75%);
+//        background: -moz-linear-gradient(center top, $from 30%, $to 75%);
+//        background: -ms-linear-gradient(top, $from 30%, $to 75%);
+//    }
+//    @media #{$medium-only}{
+//        background: -webkit-linear-gradient(top, $from 5%, $to 35%);
+//        background: -moz-linear-gradient(center top, $from 5%, $to 35%);
+//        background: -ms-linear-gradient(top, $from 5%, $to 35%);
+//    }
+//    @media #{$small-only}{
+//        background: -webkit-linear-gradient(top, $from 0%, $to 30%);
+//        background: -moz-linear-gradient(center top, $from 0%, $to 30%);
+//        background: -ms-linear-gradient(top, $from 0%, $to 30%);
+//    }
+}
diff --git a/scss/mixins/_off-canvas-arrow.scss b/scss/mixins/_off-canvas-arrow.scss
new file mode 100644 (file)
index 0000000..fc1d27f
--- /dev/null
@@ -0,0 +1,42 @@
+@mixin off-canvas-arrow($direction: down, $color: white, $size: 20px) {
+  border-left: $size + 1 solid transparent;
+  border-right: $size + 1 solid transparent;
+   @if $direction == 'up' {
+    border-bottom: $size solid $color;
+    border-top: 0;
+    // if width is not passed, or empty do this
+   } @else {
+    border-top: $size solid $color;
+    border-bottom: 0;
+   }
+}
+@mixin off-canvas-point($direction: right, $color: red, $size: 1rem) {
+    @if $direction == 'down' {
+        content: '>';
+        transform: rotate(90deg);
+        color: $color;
+        height: $size;
+        width: $size;
+        font-size: $size;
+        font-weight: bold;
+        display: block;
+    } @if $direction == 'up' {
+        content: '>';
+        transform: rotate(-90deg);
+        color: $color;
+        height: $size;
+        width: $size;
+        font-size: $size;
+        font-weight: bold;
+        display: block;
+    } @else if $direction == 'right' {
+        content: '>';
+        transform: rotate(0deg);
+        color: $color;
+        height: $size;
+        width: $size;
+        font-size: $size;
+        font-weight: bold;
+        display: block;
+    }
+}
\ No newline at end of file
diff --git a/scss/plugins/_gravityForms.scss b/scss/plugins/_gravityForms.scss
new file mode 100644 (file)
index 0000000..66d8697
--- /dev/null
@@ -0,0 +1,11 @@
+.gform_wrapper .top_label li.gfield.gf_left_third, .gform_wrapper .top_label li.gfield.gf_middle_third, .gform_wrapper .top_label li.gfield.gf_right_third{
+//    vertical-align: inherit !important;
+}
+
+#input_1_14{
+    
+    min-width: 290px !important;
+}
+#tab-product_inquiry_tab .gform_title {
+    display: none;
+}
\ No newline at end of file
diff --git a/scss/plugins/_nextgen.scss b/scss/plugins/_nextgen.scss
new file mode 100644 (file)
index 0000000..3bb3619
--- /dev/null
@@ -0,0 +1,40 @@
+/* NextGen Gallery */
+.ngg-gallery-thumbnail, 
+.ngg-gallery-thumbnail-box {
+    float: none !important;
+}
+.gallery li a img { // without this images will overlap each other at certain widths
+    display: block;
+    width: 100%;
+}
+.ngg-gallery-thumbnail, .ngg-gallery-thumbnail-box {
+    float: none !important;
+}
+.ngg-album-compact h4 .ngg-album-desc {
+    height: auto !important;
+    font-family: $font-family-serif;
+    font-weight: 400;
+}
+.ngg-album-compact .album-meta-wrapper h4 a {
+    font-style: normal;
+}
+.album-meta-wrapper {
+    display: block;
+    height: 54px;
+    margin-bottom: 20px;
+}
+.ngg-glmalbums {
+    margin: 10px 0;
+}
+/* Ninja Forms */
+.ninja-forms-form-wrap {
+    max-width: 600px;
+    margin: 0 auto;
+    input[type=submit] {
+        @include button();
+        display: block;
+        margin: 0 auto;
+    }
+}
+
+/* End NextGen Gallery */
diff --git a/scss/plugins/_woocommerce.scss b/scss/plugins/_woocommerce.scss
new file mode 100644 (file)
index 0000000..990ec32
--- /dev/null
@@ -0,0 +1,1401 @@
+$blue : #006A71;
+$orange : #572700;
+/* WooCommerce */
+.woocommerce-wrapper #container {
+    max-width: 1000px;
+    margin: 0 auto;
+    float: left;
+}
+main.woocommerce,
+div.woocommerce {
+    font-family: Arial;
+    ul, ol, li {
+/*        list-style: none;*/
+    }
+    #woo-quick-display {
+        background-color: white;
+        border-radius: 3px;
+        border: 1px solid lightgrey;
+        padding: 5px;
+        font-size: 16px;
+        margin-bottom: 25px;
+        > div {
+            text-align: center;
+        }
+        .button {
+            border-radius: 3px;
+            display: inline;
+            margin-left: 15px;
+            margin-top: 12px;
+            padding: 2px 8px;
+            float: right;
+            margin: 12px 0 0 18px;
+            background-color: #476e70;
+            color: white;
+            &:hover {
+                background-color: $blue;
+            }
+        }
+        h3 {
+            padding-top: 0;
+            text-align: center;
+        }
+        p {
+            margin-bottom: 0;
+        }
+    }
+    ul.products, .products ol, .products dl {
+            list-style-type: none;
+    }
+    .woocommerce-error, 
+    .woocommerce-info, 
+    .woocommerce-message, 
+    .woocommerce-noreviews, 
+    p.no-comments {
+        border-left: 0.618em solid rgba(0, 0, 0, 0);
+        clear:both;
+        margin-bottom: 20px;
+        margin-left: 0px;
+        font-family: arial, sans-serif;
+        font-weight: bold;
+        min-height: 55px;
+        padding-top: 7px;
+        line-height: 1.2;
+        .button {
+            margin: 5px;
+            float: left;
+            padding: 5px;
+            border-radius: 3px;
+        }
+    }
+    #respond input#submit.alt, a.button.alt, button.button.alt, input.button.alt {
+        background-color: #476e70;
+        color: white;
+        &:hover {
+            background-color: $blue;
+        }
+    }
+    .cart-collaterals .cart_totals, .woocommerce-page .cart-collaterals .cart_totals {
+        float: right;
+        margin-bottom: 40px;
+        width: 100%;
+    }
+    h1.product_title {
+        color: $green;
+        line-height: 1.2;
+        font-size: 40px;
+        margin-bottom: 10px;
+    }
+    .onsale {
+        display: none;
+    }
+    .page-numbers {
+        list-style-type: none;
+        display: flex;
+        li {
+            margin: 0 10px;
+        }
+    }
+    #text [class*="column"] + [class*="column"]:last-child {
+        float: left;
+    }
+    #text > .product {
+        margin-bottom: 20px;
+    }
+    .product.type-product {
+        color: black;
+        display: block;
+        a.button {
+            padding: 5px;
+            border-radius: 3px;
+        }
+        a.button:hover {
+            color: $black;
+        }
+        > div {
+            padding: 5px;
+            border-radius: 5px;
+        }
+        .tab-description {
+            display: inline-block;
+            & p {
+                padding-top: 15px;
+            }
+        }
+        
+        .woocommerce-tabs ul.tabs {
+            padding: 0px;
+        }
+        .woocommerce-tabs ul.tabs li{
+            border-radius: 0px;
+        }
+         .woocommerce-tabs ul.tabs li.active{
+            border-color: lightgrey;
+        }
+        .woocommerce-tabs ul.tabs li.active::before {
+            border: none;
+        }
+        .woocommerce-tabs ul.tabs li.active::after{
+            border: none;
+        }
+        .woocommerce-tabs ul.tabs li::before {
+//            box-shadow: 2px 2px 0 $blue;
+//            border-width: 0 1px 1px 0;
+            border: none;
+        }
+        .woocommerce-tabs ul.tabs li::after, .woocommerce-tabs ul.tabs li::before {
+//            border-color: $blue;
+            border: none;
+        }
+        .woocommerce-tabs ul.tabs li::after {
+//            box-shadow: -2px 2px 0 $blue;
+            border: none;
+        }
+        .woocommerce-tabs ul.tabs li::after, .woocommerce-tabs ul.tabs li::before {
+//            border-color: $blue;
+            border:none;
+        }
+        .woocommerce-tabs {
+            width: 100%;
+            clear:both;
+    /*        display: table;*/
+            .wc-tab {
+                padding: 10px;
+                border: 1px solid lightgrey;
+            }
+            ul.wc-tabs {
+                &:before {
+                    border-bottom-color: lightgrey;
+                }
+                &:after {
+                    
+                }
+                li {
+                    margin-right: 8px;
+                    background-color: #D2D3D5;
+                    color: $orange;
+                    border: 1px solid #D3D3D3;
+                    border-bottom: 0;
+                    display: inline-block;
+                    color: $blue;
+                    &:before {
+                        border-bottom-color: $blue;
+                        box-shadow: none;
+                    }
+                    &:after {
+                        border-bottom-color: $blue;
+                    }
+                    &:hover {
+                        background: rgba(0, 0, 0, 0) url("../assets/repeating-pattern.jpg") repeat scroll 0 0;
+                        a {
+                            color: grey;
+                        }
+                    }
+                    a {
+                        display: block;
+                    }
+                    @media #{$large-up} {
+        /*                margin-left: -35px;*/
+                    }
+                    @media #{$medium-only} {
+        /*                margin-left: -23px;*/
+                    }
+
+                    @media #{$small-only} {
+                        width: 50%;
+                        margin: 0;
+                        font-size: 14px;
+                        text-align: center;
+                        a {
+                            font-size: 14px;
+                        }
+                        &:nth-child(2n) {
+                            float: right;
+                        }
+                    }
+                }
+                
+                li.active {
+//                    border-bottom-color: $blue;
+                    background-color: $white;
+                    border-width: 2px;
+                    color: #383838;
+                    &:before {
+                        box-shadow: 0;
+                        box-shadow: none;
+                    }
+                    &:after {
+                        box-shadow: -2px 2px 0 $blue;
+                    }
+                    &:hover {
+                        background: $white;
+                    }
+                    a:hover {
+                        color: #383838;
+                        
+                    }
+                    @media #{$small-only} {
+                        border-width: 1px;
+                    }
+                }
+                @media #{$small-only} {
+                    padding-left: 0;
+                }
+            }
+            .tabs .reviews_tab,
+            .tabs .additional_information_tab {
+                display: none;
+            }
+            > div.panel {
+                background-color: white;
+            }
+            p.stars {
+                a {
+                    font-size: 20px;
+                    padding: 0 10px;
+                }
+                a.active {
+                    background-color: $black;
+                    border-radius: 2px;
+                }
+            }
+
+        }
+        .sku_wrapper {
+            display: none;
+        }
+    }
+    #address_form {
+        small {
+            display: inline-block;
+            font-size: 100%;
+            padding: 9px;
+        }
+    }
+    #tiptip_content {
+        font-family: Arial;
+        font-size: 12px;
+    }
+    .single_variation_wrap .quantity {
+        float: right;
+        margin-bottom: 10px;
+        input {
+            display: inline-block;
+            background-color: white;
+            height:40px;
+            width: 50px;
+            padding: 0;
+            margin: 0 5px;
+        }
+    }
+    #payment .payment_methods  {
+        .form-row.place-order {
+            text-align: center;
+        }
+        ul.payment_methods {
+            list-style-type: none;
+        }
+        .payment_box > p {
+            margin: 0;
+        }
+        .payment_box fieldset {
+            margin: 0;
+            padding: 10px 10px 0;
+        }
+        .payment_box fieldset .form-row { 
+            width: 100%;
+        }
+        @media #{$large-up} {
+            .payment_box fieldset .form-row { 
+                width: 31%;
+                float: left;
+            }
+            .payment_box fieldset .clear {
+                clear: none;
+            }
+        }
+        .payment_box fieldset .form-row label {
+            padding: 0;
+        }
+        select[name="wc-intuit-qbms-test-condition"] {
+            margin: 0;
+        }
+        #wc-intuit-qbms-account-number{
+            max-width: 200px;
+        }
+    }
+    .pf-content {
+        margin-top: 20px;
+    }
+    table.shop_table {
+        width: 100%;
+        .coupon {
+            display: none;
+        }
+        .product-thumbnail {
+            display: none;
+            @media #{$large-up} {
+                display: default;
+            }
+
+        }
+        .quantity {
+            display:table;
+            .input-text {
+                margin: 0;
+            }
+            .minus,
+            .plus {
+                background-color: transparent;
+                box-shadow: none;
+                color: #a46497;
+                font-weight: 700;
+                width: 50px;
+                height: 40px;
+            }
+        }
+    }
+    .quantity .minus:hover, .quantity .plus:hover {
+        background-color: transparent;
+        color: inherit !important;
+    }
+    .checkout {
+        #customer_details {
+            display: inline-block;
+            width: 100%;
+            max-width: 600px;
+        }
+        .woocommerce-billing-fields, 
+        .woocommerce-shipping-fields {
+            margin: 0 auto 40px;
+            max-width: 600px;
+            padding: 20px;
+            border: 1px solid $secondary-color;
+            p {
+                margin-bottom: 15px;
+                input {
+                    margin-bottom: 15px;
+                }
+            }
+        }
+    }
+    #content-wrapper.woocommerce-wrapper {
+        .content {
+            padding: 20px 5px;
+        }
+        @media #{$small-only} {
+            .main {
+                padding: 0 10px;
+            }
+        }
+    }
+    #content {
+        margin-top: 25px;
+    }
+    .woocommerce-ordering select.orderby {
+        max-width: 200px;
+    }
+    main.page-inside #content-wrapper #main-content #main-text.shop-cat-list {
+        padding: 0 6px;
+    }
+    main.page-inside #content-wrapper #main-content #main-text.shop-cat-list .shop-cat-list-content > div {
+        padding: 0;
+    }
+    main.page-inside #content-wrapper .content {
+        border-bottom: 3px solid #c5aa6d;
+        box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.8);
+    }
+    #content-wrapper.woocommerce-wrapper .main.woo-single-product {
+        padding: 20px 3%;
+    }
+    nav.top-bar .top-bar-section > ul > li.drop > ul.dropdown .woocommerce { 
+        .products {
+            position: inherit;
+            border: 0 !important;
+        }
+        .product-category {
+            margin-bottom: 0;
+            height: 25px;
+        }
+        .product-category h3 {
+            font-size: 12px;
+            font-weight: normal;
+            padding: 0.5em 20px;
+        }
+        .product-category:hover h3 {
+            color: #25c2e6 !important;
+        }
+        img {
+            display: none;
+        }
+    }
+    .left-off-canvas-menu > ul > li.has-dropdown > ul.dropdown .woocommerce { 
+        .products {
+            position: inherit;
+            border: 0 !important;
+        }
+        .product-category {
+            margin-bottom: 0;
+            height: 28px;
+        }
+        .product-category h3 {
+            color: white;
+            font-size: 12px;
+            font-weight: normal;
+            padding: 0.5em 20px;
+        }
+        img {
+            display: none;
+        }
+        a {
+            margin-left: 40px;
+            padding: 0;
+        }
+    }
+    #payment .payment_methods label {
+        padding: 0 0 20px;
+        margin: 0;
+        width: 80%;
+    }
+    #shipping_method input[type="checkbox"]+label, input[type="radio"]+label {
+        margin-left: 25px;
+    }
+    .cart_item .product-name {
+        min-width: 160px;
+        font-size: 15px;
+        font-weight: bold;
+    }
+    .woocommerce-checkout-review-order-table .product-quantity {
+        float: right;
+    }
+    #content .cart_item td.product-name dl.variation dd, dd p, dt {
+        font-size: 12px;
+        font-weight: normal;
+        margin-bottom: 0;
+        line-height: 1;
+    }
+    #content td.product-name dl.variation {
+        dd, dt {
+            margin-bottom: 0;
+        }
+
+    }
+    #content .product.type-product .variations_form .variations {
+        margin: 0 auto;
+        width: auto;
+        min-width: 190px;
+        max-width: 220px;
+    }
+    .variations tbody,
+    .variations tbody tr {
+        display: block;
+    }
+    .page-numbers li {
+        float: left;
+    }
+    .related.products {
+        margin-top: 30px;
+    }
+    h3#ship-to-different-address {
+        font-weight: bold;
+    }
+    .woocommerce-breadcrumb {
+        display: none;
+    }
+
+    /* General CSS */
+    #content .product.type-product  {
+        .product_meta {
+            clear: both;
+            padding-top: 25px;
+        }
+        .product_meta a {
+            display: initial;
+        }
+        .product_meta .posted_in {
+            display: none;
+        }
+        .variations_form a.reset_variations {
+            display: none !important;
+        }
+        .variations_form {
+            clear: both;
+            display: table;
+            width: 100%;
+            margin-bottom: 20px;
+            .variations {
+                display: block;
+                margin: 0 auto;
+                width: auto;
+                min-width: 190px;
+                max-width: 220px;
+                border: 0;
+                margin-top: 30px;
+                ul {
+                    border: 1px solid darkgrey;
+                    margin-left: 0;
+                    text-align: left;
+                }
+                display: block;
+/*                @media #{$large-up} {
+                    display: inline-block;
+                    width: 50%;
+                }*/
+                .label {
+                    display: block;
+                }
+                .label label {
+                    color: white;
+                }
+                .value {
+                    padding-right: 0;
+                    display: block;
+                    fieldset {
+                        border: none;
+                        padding-top: 0;
+                        padding-bottom: 0;
+                        margin-top: 0;
+                        margin-bottom: 0;
+                        p {
+                            margin-bottom: 5px;
+                        }
+                    }
+                }
+                input[type="file"], input[type="checkbox"], input[type="radio"], select {
+                    margin-bottom: 0;
+                    margin-right: 0;
+                }
+                select {
+                    background-color: $blue;
+                    border-radius: 5px;
+                    color: white;
+                    border: none;
+                }
+                select * {
+                    background-color: lightblue;
+                    color: black;
+                }
+            }
+            .single_variation_wrap {
+                margin: 0 auto;
+                float: right;
+                clear: both;
+                .single_variation {
+                    padding: 10px;
+                    float: right;
+                    @media #{$small-only} {
+                        float:none;
+                        text-align: center;
+                    }
+                }
+            }
+            .variations_button button {
+                border-radius: 3px;
+                font-size: 16px;
+                margin: 12px 0 0;
+                padding: 8px 28px;
+            }
+            @media #{$medium-down} {
+
+                .variations, 
+                .single_variation_wrap,
+                .single_variation_wrap .variations_button,
+                .single_variation_wrap .variations_button .quantity {
+                    text-align:center;
+                    float: none;
+                    margin-left: auto;
+                    margin-right: auto;
+                    clear: both;
+                }
+                .single_variation_wrap .variations_button .quantity {
+                    clear: none;
+                }
+            }
+            @media #{$small-only} {
+                .single_variation_wrap {
+                    width: 100%;
+                }
+            }
+        }
+        h1.product_title {
+            color: $teal;
+            font-size: 27px;
+            font-family: open sans;
+            font-weight: bold;
+            line-height: 1;
+            margin: 0 auto;
+            width: 90%;
+            padding-bottom: 10px;
+        }
+        .single_add_to_cart_button {
+            border-radius: 3px;
+            clear: both;
+            float: right;
+            @media #{$medium-down} {
+                float:none;
+            }
+            background: rgba(0, 0, 0, 0) url("../assets/repeating-pattern.jpg") repeat scroll 0 0;
+            font-size: 16px;
+            margin: 12px 0 0;
+            padding: 8px 28px;
+            border:1px solid transparent;
+            &:hover, &:focus {
+                background-color: white;
+                border:1px solid $blue;
+            }
+        }
+        > div {
+            float: left;
+        }
+        .related.products {
+            width: 100%;
+        }
+        .quantity, .qty {         
+            float: right; 
+            @media #{$small-only} {
+                float:none;
+                margin: 0 auto;
+            }
+            display:table;
+            height: 25px;
+            padding: 2px 0 2px 5px;
+            .input-text {
+                margin: 0;
+            }
+            .minus,
+            .plus {
+                background-color: transparent;
+                box-shadow: none;
+                color: #a46497;
+                font-weight: 700;
+                width: 50px;
+                height: 40px;
+            }
+            .minus:hover, 
+            .plus:hover {
+                background-color: transparent;
+                color: inherit !important;
+            }
+        }
+        .cart-qty-label {
+            float: none;
+            text-align: center;
+            clear: both;
+            margin-left: 5px;
+        }
+        .price {
+            color: transparent;
+            margin-bottom: 0;
+            font-size: 32px;
+            margin: 0;
+            float: right;
+            text-align: right;
+            @media #{$small-only} {
+                float:none;
+                text-align: center;
+            }
+            display: block;
+            line-height: 1.0;
+            > * {
+                height: 40px;
+            }
+            span {
+                color: $orange;
+                font-size: 40px;
+                margin-top: -2px;
+            }
+            span:nth-child(2) {
+                display: none;
+            }
+            del {
+                color: $blue;
+            }
+        }
+        .price.price-single {
+            clear: both;
+            float: none;
+            text-align: left;
+            padding-bottom: 5px;
+            span {
+                color: black;
+                font-size: 22px;
+            }
+            @media #{$medium-down} {
+                text-align: center;
+            }
+        }
+        .stock {
+            color: black;
+            float: right;
+            @media #{$small-only} {
+                float:none;
+                text-align: center;
+            }
+            clear: both;
+            font-size: 14px;
+        }
+        @media #{$small-only} {
+            margin-top: 20px;
+            .images {
+                width: auto;
+                max-width: 260px;
+                margin: 0 auto;
+                float: none;
+            }
+            .summary.entry-summary {
+                width: 100%;
+            }
+            .summary.entry-summary h1 {
+                font-size: 32px;
+            }
+        }
+        .related .products .product.type-product h3 {
+            font-size: 13px;
+            font-weight: normal;
+        }
+        .summary.entry-summary > div[itemprop="description"] {
+            margin: 0 auto;
+            text-align: left;
+            width: 100%;
+        }
+    }
+    .shop_table.shop_table_responsive.cart {
+        margin-top: 20px;
+    }
+    .wc-proceed-to-checkout {
+        text-align: center;
+    }
+    /* End General CSS */
+
+
+    /* Product Detail page */
+    .main.woo-single-product{
+        float: left;
+    }
+    .main.woo-single-product #content {
+        .type-product {
+            .images {
+                border: 0 none;
+                float: none;
+                width: 100%;
+                max-width: 100%;
+                margin-bottom: 10px;
+                .woocommerce-main-image.zoom {
+                    display: block;
+//                    max-height: 440px;
+//                    height: 220px;
+//                    overflow: hidden;
+//                    border: 1px solid lightgrey;
+//                    border-radius: 2px;
+                }
+                .woocommerce-main-image.zoom .wp-post-image {
+//                    max-height: 440px;
+                    height: auto;
+                    margin: 0 auto;
+                    width: 100%;
+                    border-radius: 10px;
+                    border: 1px solid grey;
+                }
+                width: 100%;
+                @media #{$small-only} {
+                    width: 100%;
+                }
+                #wpb_wiz_img_id {
+//                    height: 220px;
+                }
+                
+            }
+            .summary.entry-summary {
+                width: 100%;
+                margin-bottom: 10px;
+                @media #{$small-only} {
+                    width: 100%;
+                }
+            }
+            .cart,
+            .price,
+            .quantity, 
+            .qty,
+            .stock,
+            .single_variation_wrap,
+            .single_variation_wrap .single_variation {
+                float:none;
+                text-align: center;
+                margin: 0 auto;
+            }
+            
+            .single_add_to_cart_button,
+            .single_add_to_cart_button button {
+                text-align: center;
+                margin-top: 12px;
+                float: none;
+            }
+            .woo-qty-wrapper {
+                margin: 0 auto;
+                width: 100px;
+            }
+            .cart-qty-label {
+                float:left;
+                clear: none;
+                text-align: center;
+            }
+        }
+        .thumbnails > a {
+            display: none;
+            padding: 0px;
+            height: 35px;
+            overflow: hidden;
+            border: 1px solid lightgrey;
+            border-radius: 2px;
+            img {
+                min-height: 35px;
+                min-width: 100%;
+            }
+        }
+        .product.has-default-attributes.has-children {
+            > .images {
+                opacity: 1;
+            }
+        }
+        .entry-summary .product_title {
+            margin-bottom: 10px;
+        }
+            /* Related products */
+        .related ul.products li.product:last-child,
+        .related ul.products li.product {
+            width: 33.33%;
+            height: 300px;
+            @media #{$small-only} {
+                width: 50%;
+                height: 260px;
+            }
+            float: left;
+            clear: none;
+            padding: 10px;
+            margin: 0;
+            img {
+                padding-right: 0;
+                max-height: 172px;
+                max-width: 207px;
+                padding-right: 15px;
+                width: 100%;
+            }
+            [itemprop="description"] {
+                display: none;
+            }
+            .price span.amount {
+                font-size: 22px;
+            }
+            .price > * {
+                height: 20px;
+            }
+            form.cart {
+                display: none;
+            }
+        }
+        /* End Related products */
+    }
+    /* End product detail page */
+
+    /* Products page */
+    #content ul.products {
+        display: table;
+        margin: 0 auto;
+        position: relative;
+        width: 100%;
+        @media #{$small-only} {
+            max-width: 470px;
+            padding: 0;
+        }
+        mark {
+            background-color: transparent;
+        }
+        li.product.type-product {
+            border: medium none;
+            height: auto;
+            padding: 10px;
+            clear: both;
+            width: 100%;
+            border: none;
+            margin: 0 auto 10px;
+            .variations_form {
+                clear: both;
+                display: table;
+                width: 100%;
+                margin-bottom: 20px;
+                .variations {
+                    float: right;
+                    @media #{$medium-down} {
+                        float: none;
+                    }
+                }
+            }
+            h3 {
+                font-size: 18px;
+                text-align: left;
+                padding: 10px 0 0;
+                font-style: normal;
+                font-family: "josefin sans";
+            }
+            @media #{$medium-down} {
+                margin-bottom: 25px;
+                h3 {
+                    text-align: center;
+                }
+            }
+            .product-list-link {
+                    display: block;
+                    height:220px;
+                    float: none;
+                    margin: 0 auto;
+                    max-width: 266px;
+                    overflow: hidden;
+                    border: 1px solid lightgrey;
+                    border-radius: 2px;
+                    .wp-post-image {
+                        min-height: 220px;
+                        width: 100%;
+                    }
+            }
+            .product-list-link-wrapper {
+                padding-right: 15px;
+            }
+            .wp-post-image {
+                margin-bottom: 0;
+                border: none;
+                padding-right: 15px;
+            }
+            > div {
+                margin: 0 auto;
+                padding: 5px;
+                border-radius: 5px;
+                width: 100%;
+                img {
+    /*                border: 2px solid $black;*/
+                    border-radius: 3px;
+                }
+            }
+            h3 {
+                font-weight: normal;
+            }
+            .count {
+                background-color: transparent;
+            }
+            & > div {
+                background-color: white;
+                h3 {
+                    color: $orange;
+                    font-size: 24px;
+                    margin-top: -2px;
+                }
+            }
+            p.products-short-desc {
+                line-height: 1.3;
+                margin-bottom: 0;
+            }
+            .woocommerce-variation-availability {
+                float: right;
+                @media #{$small-only} {
+                    float:none;
+                    text-align: center;
+                }
+            }
+            .woocommerce-variation-availability .stock {
+                margin-bottom: 0;
+            }
+            .more {
+                display: inline;
+                float: right;
+                
+                @media #{$medium-down} {
+                    float: none;
+                }
+                margin-left: 5px;
+                color: $blue;
+            }
+            .products-qty-contain {
+                span {
+                    margin-left: 5px;
+                }
+            }
+            .cart {
+                float: right;
+                text-align: right;
+                clear: both;
+                @media #{$small-only} {
+                    float:none;
+                    text-align: center;
+                }
+            }
+            .products-add-to-cart {
+                button {
+                    width: 100%;
+                }
+                clear: both;
+                float: right;
+            }
+        }
+        .added_to_cart {
+            border: 1px solid lightgrey;
+            border-radius: 4px;
+        }
+        a {
+            text-decoration: none;
+            &:hover {
+                text-shadow: none;
+            }
+        }
+    }
+    /* End Products page */
+    header.title {
+        box-shadow: none;
+        
+    }
+}/* End WooCommerce */ 
+
+.pp_content .pp_gallery {
+    height: 0;
+    overflow: hidden;
+    width: 0;
+}
+#woo-quick-cart-image {
+    img {
+        width: 24px;
+    }
+    > div {
+        float: left;
+    }
+    clear: none;
+    display: block;
+    float: left;
+    height: 26px;
+    padding: 2px;
+    width: 25px;
+}
+.woo-quick-cart-totals {
+    width:105px; 
+    @media #{$medium-up} {
+        margin-left:30px;
+        margin-top: 10px;
+    }
+}
+#woo-quick-checkout {
+    button {
+        float: right;
+    }
+}
+#cart-login {
+    > div {
+        float: left;
+        display: block;
+        text-align: center;
+        padding: 0 5px;
+    }
+    a {
+        color: black;
+    }
+    a:hover {
+        color: $blue;
+    }
+}
+/* Product categories */
+#main-content ul.products li.product-category.product,
+#content ul.products li.product-category.product {
+    width: 33.33%;
+    @media #{$small-only} {
+        width: 50%;
+    }
+    float: left;
+    padding: 20px;
+    margin: 0;
+    .products-image-container {
+        height: 200px;
+    }
+}
+
+/*#content ul.products li.product-category.product, 
+#content .woocommerce-page ul.products li.product-category.product {
+    @media #{$small-only} {
+        float: none;
+        margin: 0 auto 30px;
+    }
+}*/
+/* End product categories */
+
+/* Button styles */
+main .woocommerce #respond input#submit.alt:hover, main .woocommerce a.button.alt:hover, main .woocommerce button.button.alt:hover, main .woocommerce input.button.alt:hover {    
+        background: rgba(0, 0, 0, 0) url("../assets/repeating-pattern.jpg") repeat scroll 0 0;
+        border:1px solid $blue;
+}
+main .woocommerce #respond input#submit.alt, main .woocommerce a.button.alt, main .woocommerce button.button.alt, main .woocommerce input.button.alt {    
+        background: rgba(0, 0, 0, 0) url("../assets/repeating-pattern.jpg") repeat scroll 0 0;
+        border:1px solid white;
+}
+/* End Button styles */
+
+main.woocommerce ul.products li.product,main.woocommerce-page ul.products li.product,main.woocommerce-page[class*="columns-"] ul.products li.product,main.woocommerce[class*="columns-"] ul.products li.product {
+    clear: none;
+}
+
+    
+    /* Sidebar */
+.woocommerce {
+    .shop-sidebar {
+        margin-bottom: 20px;
+    }
+    .shop-sidebar ul.products > li.product {
+        width: 100%;
+        margin-bottom: 0px;
+        background-color: white;
+    }
+    .shop-sidebar ul.products {
+        margin-top: 0;
+    }
+    .shop-sidebar ul.products > li.product > a > h3 {
+        padding: 5px 0;
+        text-align: left;
+        font-weight: bold;
+        color: white;
+        line-height: 1.1;
+    }
+    .shop-sidebar {
+        list-style: outside none none;
+        margin-left: 0;
+    }
+    .shop-sidebar .products {
+        margin: 20px 0 0;
+    }
+    .shop-sidebar > li {
+        background: none repeat scroll 0 0 #2F4D4F;
+    //    border-bottom: 1px solid #ffffff;
+        padding: 2px 0 2px 15px;
+        &:first-child {
+            border-top-left-radius: 5px;
+            border-top-right-radius: 5px;
+        }
+        &:last-child {
+            border-bottom-left-radius: 5px;
+            border-bottom-right-radius: 5px;
+        }
+        a {
+            color: white;
+            text-transform: uppercase;
+        }
+    }
+    #sidebar-category .shop-sidebar ul.products li.current {
+        h3 {
+            color: $blue;
+        }
+
+        &:hover h3 {
+            color: white;
+        }
+    }
+
+    .shop-sidebar ul.products > li.product > a > div > img {
+        display: none;
+    }
+    #content-wrapper{
+        top: 0px;
+    }
+}
+    /* End sidebar */
+main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li, div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li{
+    margin-right: 5px;
+}
+main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active::after, div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active::after{
+    border: none;
+    box-shadow: none;
+}
+main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active::after, div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li.active::before{
+    border: none;
+    box-shadow: none;
+}
+#tab-photos_tab{
+    overflow: hidden;
+}
+
+@media(max-width: 480px){
+    #tab-photos_tab{
+        text-align: center;
+    }
+    .product_gallery_images{
+
+    }
+}
+//@media(max-width: 730px) and (min-width: 498px){
+//    #tab-photos_tab{
+// 
+//    }
+//    .product_gallery_images{
+//        display: inline-block;
+//        width: 250px;
+//        height: 225px;
+//        margin: 2px 9px 5px 40px;
+//    }
+//}
+@media#{$small-only}{
+    main.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li, div.woocommerce .product.type-product .woocommerce-tabs ul.wc-tabs li{
+        margin-right: 0px;
+    }
+}
+.side_bar{
+    float:right;
+    margin-top: 100px;
+}
+.cat-item, .product_term{
+    list-style: none;
+    padding-bottom: 15px;
+    line-height: 15px;
+}
+#tags_sidebar_container{
+    & h5 {
+        color: #006a71;
+    }
+    & #tags_sidebar .cat-item a {
+        
+        font-family: "josefin sans";
+        color: black;
+    }
+}
+#categories_sidebar_container{
+    margin-bottom: 30px;
+    list-style: none;
+    & h5{
+        color: #006a71;
+    } & ul li a {
+        
+        font-family: "josefin sans";
+        color: black;
+    }
+}
+#regions_sidebar li{
+    list-style: none;
+    line-height: 16px;
+    padding-bottom: 11px;
+    & h5 {
+        color: black;
+    }
+}
+#enquire_button{
+    border: 1px solid transparent;
+    border-radius: 7px;
+    padding: 10px 10px 10px 10px;
+    width: 100%;
+    
+    -moz-box-shadow:    3px 3px 5px 3px #A6A5A3;
+    -webkit-box-shadow: 3px 3px 5px 3px #A6A5A3;
+    box-shadow:         3px 3px 5px 3px #A6A5A3;
+}
+
+main.woocommerce #content ul.products li.product img , div.woocommerce #content ul.products li.product img {
+    color: transparent;
+    &:hover{
+        color: transparent;
+    }
+}
+#container #content ul.products li.product{
+    width: 33.33%;
+    clear: none;
+    float: left;
+}
+#container #content ul.products li.product{
+    width: 33.33%;
+    clear: none;
+    float: left;
+}
+@media#{$small-only}{
+    #container #content ul.products li.product{
+        width: 75%;
+        margin-left: 35px;
+        float: left;
+    }
+}
+.orderby, .woocommerce-result-count{
+    display: none;
+}
+ul.products{
+    & li a h3{
+        color: #006a71; 
+        display: inline-block;
+        padding-bottom: 10px !important;
+    }
+    & div[itemprop="description"] p{
+        line-height: 1.1;
+        color: black
+    }
+}
+div[itemprop="description"] p{
+    font-family: "josefin sans";
+}
+.woocommerce-tabs .tabs .product_inquiry_tab_tab{
+    background-color: #006a71 !important;
+    & a{
+        color: white !important;
+    }
+    
+}
+.product_featured_image{
+    margin: 0 auto;
+    max-height: 370px;
+    max-width: 1920px;
+    overflow-y: hidden;
+    position: relative;
+    top: 0;
+    width: 100%;
+    z-index: -1;
+    min-height: 0px;
+
+}
+woocommerce #content div.product .woocommerce-tabs ul.tabs li, .woocommerce div.product .woocommerce-tabs ul.tabs li, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li, .woocommerce-page div.product .woocommerce-tabs ul.tabs li{
+    left: 10px;
+}
+ul.products li .button.product_type_simple.ajax_add_to_cart{
+    display: none;
+}
+.st_sharethis {
+    float: right;
+    margin: 10px;
+    width: 58px;
+}
+#content-wrapper .stButton .sharethis {
+  background-image: url("../assets/share-icon.png") !important;
+  width: 52px;
+  height: 22px;
+}
+
+.products_image{
+    list-style: none;
+}
+li.products_image_container, a.product_image_link{
+    display: inline-block;
+    height: 200px; 
+    width: 200px;
+    margin: 5px;
+}
+.sidebar-headline{
+    margin-bottom: 1px;
+}
+ul#tags_sidebar div.sidebar-region{
+    line-height: 1.1;
+    margin-bottom: 5px;
+}
+.form-confirmation{
+    color: white;
+    background: #5E300B;
+    width: 550px;
+    height: 50px;
+    font-family: "josefin sans";
+    font-size: 20px; 
+    -moz-box-shadow: 3px 3px 5px 3px #A6A5A3;
+    -webkit-box-shadow: 3px 3px 5px 3px #A6A5A3;
+    box-shadow: 3px 3px 5px 3px #A6A5A3;
+    border-radius: 5px;
+    & .confirmation-text{
+       padding-top: 15px;
+        text-align: center;
+    }
+}
+#tab-description p {
+    padding-top: 15px;          
+}
\ No newline at end of file
diff --git a/search.php b/search.php
new file mode 100644 (file)
index 0000000..715a063
--- /dev/null
@@ -0,0 +1,116 @@
+<?php get_header(); ?>
+<main class="search-results">
+    <div id="header-image">
+        <?php echo glm_get_header();?>
+    </div>
+    
+    <div class="row">
+        <?php if (get_search_query() == "") { ?>
+        <br><h2 class="search-result-header small-12 columns">Please enter a query in the search box. </h2>
+        <?php } else { ?>
+        <br><h2 class="search-result-header small-12 columns">Search Results for "<?php echo get_search_query(); ?>"</h2>
+    </div>
+    
+    <div class="row">
+        <div id="blog-posts-over" class="small-12 columns">
+            <?php if(have_posts()) : while(have_posts()): the_post();?>
+                <?php if (is_search() && (isset($_GET['searchType']) && $_GET['searchType'] == 'blog') && ($post->post_type=='page')) continue; ?>
+            <div class="row content search-result-container">
+                <div class="small-11 small-centered columns">
+                    <article id="<?php the_ID()?>" <?php post_class()?>>
+                        <header class="entry-header">
+                            <h1 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h1>
+                            <span class="meta date">Posted on <?php the_time('F jS, Y') ?></span>
+                        </header>
+
+
+                <!-- Start of the Contextual/Highlight Search -->
+                                <?php
+                                // Configuration
+                                $max_length = 400; // Max length in characters
+                                $min_padding = 30; // Min length in characters of the context to place around found search terms
+
+                                // Load content as plain text
+                                global $wp_query, $post;
+                                $content = (!post_password_required($post) ? strip_tags(preg_replace(array("/\r?\n/", '@<\s*(p|br\s*/?)\s*>@'), array(' ', "\n"), apply_filters('the_content', $post->post_content))) : '');
+
+                                // Search content for terms
+                                $terms = $wp_query->query_vars['search_terms'];
+                                if ( preg_match_all('/'.str_replace('/', '\/', join('|', $terms)).'/i', $content, $matches, PREG_OFFSET_CAPTURE) ) {
+                                    $padding = max($min_padding, $max_length / (2*count($matches[0])));
+
+                                  // Construct extract containing context for each term
+                                  $output = '';
+                                  $last_offset = 0;
+                                  foreach ( $matches[0] as $match ) {
+                                    list($string, $offset) = $match;
+                                    $start  = $offset-$padding;
+                                    $end = $offset+strlen($string)+$padding;
+                                    // Preserve whole words
+                                    while ( $start > 1 && preg_match('/[A-Za-z0-9\'"-]/', $content{$start-1}) ) $start--;
+                                    while ( $end < strlen($content)-1 && preg_match('/[A-Za-z0-9\'"-]/', $content{$end}) ) $end++;
+                                    $start = max($start, $last_offset);
+                                    $context = substr($content, $start, $end-$start);
+                                    if ( $start > $last_offset ) $context = '...'.$context;
+                                    $output .= $context;
+                                    $last_offset = $end;
+                                  }
+
+                                  if ( $last_offset != strlen($content)-1 ) $output .= '...';
+                                } else {
+                                  $output = $content;
+                                }
+
+                                if ( strlen($output) > $max_length ) {
+                                  $end = $max_length-3;
+                                  while ( $end > 1 && preg_match('/[A-Za-z0-9\'"-]/', $output{$end-1}) ) $end--;
+                                  $output = substr($output, 0, $end) . '...';
+                                }
+
+                                // Highlight matches
+                                $context = nl2br(preg_replace('/'.str_replace('/', '\/', join('|', $terms)).'/i', '<strong>$0</strong>', $output));
+                                ?>
+
+                                <p class="search_result_context">
+                                  <?php echo $context ?>
+                                </p>
+                                <p>
+                                  <a href="<?php the_permalink() ?>" rel="bookmark">Read this entry</a>
+                                </p>
+                <!-- End of the Contextual/Highlight Search -->
+
+                        <?php //echo (function_exists('the_advanced_excerpt')) ? the_advanced_excerpt(): the_excerpt(); ?>
+                        <footer class="entry-meta small-12 medium-6 medium-push-3 center">
+                            <?php
+                            if (has_category()) {
+                                $post_categories = wp_get_post_categories( get_the_ID() );
+                                $cats = array();
+                                echo 'This entry was posted ';
+                                echo 'in';
+                                foreach($post_categories as $c){
+                                    $cat = get_category( $c );
+                                    $cats[] = array( 'name' => $cat->name, 'slug' => $cat->slug );
+                                    echo ', <a rel="category" title="View all posts in '. $cat->name . ' " href="'. $cat->slug .'">'. $cat->name .'</a>';
+                                }
+                                echo '.';
+                            }
+                            ?>
+                        </footer>
+                    </article>
+                </div>
+            </div>
+            <?php endwhile; ?>
+            <div class="navigation">
+                <span class="newer"><?php previous_posts_link(__('« Newer','example')) ?></span> <span class="older"><?php next_posts_link(__('Older »','example')) ?></span>
+            </div><!-- /.navigation -->
+            <?php else: ?>
+            <div id="post-404" class="noposts">
+                <p><?php _e('Sorry, no results were found.');?></p>
+            </div><!-- /#post-404 -->
+            <?php endif;?>
+        </div>
+            
+            <?php } ?> <!-- end empty query check -->
+        </div>
+    
+    <?php get_footer(); ?>
diff --git a/sidebar.php b/sidebar.php
new file mode 100644 (file)
index 0000000..fbad3f7
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+global $post, $product;
+$id = $post->ID;
+$product_meta = new WC_Product($id);
+$title = $product_meta->get_title();
+$region =  $product_meta->get_categories();
+
+?>
+<div id="sidebar-category">
+    <?php get_template_part('parts/shop-sidebar');?>    
+</div>
+<?php if ( ! is_shop() ){ ?>
+    <div id="enquire_button_container">
+    <a href="<?php echo get_permalink(163); ?>?sku=<?php echo $sku; ?>&title=<?php echo $title; ?>"><button id="enquire_button"> Inquire about this tour </button></a>
+</div>
+<?php } ?>
+
+
+<?php 
+  $taxonomy     = 'product_cat';
+  $orderby      = 'name';  
+  $show_count   = 0;      // 1 for yes, 0 for no
+  $pad_counts   = 0;      // 1 for yes, 0 for no
+  $hierarchical = 1;      // 1 for yes, 0 for no  
+  $title        = '';  
+  $empty        = 0;
+
+  $args = array(
+         'taxonomy'     => $taxonomy,
+         'orderby'      => $orderby,
+         'show_count'   => $show_count,
+         'pad_counts'   => $pad_counts,
+         'hierarchical' => $hierarchical,
+         'title_li'     => $title,
+         'hide_empty'   => $empty,
+  );
+
+$all_categories = get_categories( $args );
+
+?>
+<div id="tags_sidebar_container">
+    <h5 class="sidebar-headline"> Other Tours In: </h5>
+    
+    <!-- get the product category slugs -->
+    <?php
+        $terms = get_the_terms( $id, 'product_cat' );
+        foreach ($terms as $term) {
+            $region_slug = $term->slug;
+        } 
+    ?>
+    <ul id="tags_sidebar">
+        <!-- show related tours by category if on the single product page -->
+        <?php if( is_product() ) { ?>
+            <?php echo'<div class="sidebar-region">'. $region . '</div>'; ?>
+            <?php $args = array( 'post_type' => 'product', 'posts_per_page' => -1, 'product_cat' => $region_slug , 'orderby' => 'ASC' ); ?>
+
+            <?php $loop = new WP_Query( $args ); ?>
+            <?php while ( $loop->have_posts() ) : $loop->the_post(); global $product; ?>
+
+                <li class="related_tours"> <a href="<?php echo get_permalink($loop->post->ID); ?>"><?php echo esc_attr($loop->post->post_title); ?> </a> </li> 
+
+            <?php endwhile; ?>
+            <?php wp_reset_query(); ?>
+        <?php } else { ?> 
+        
+            <?php wp_list_categories( 'taxonomy=product_tag&pad_counts=1&title_li=' ); ?>
+        
+        <?php } ?>
+        
+    </ul>    
+</div>
+<!--<div id="categories_sidebar_container">
+    <h5><?php // _e( 'Regions of France', 'woothemes' ) ?></h5>
+    <ul id="regions_sidebar">
+        <?php
+//        foreach($all_categories as $category){
+//            echo '<li><a href="'.get_term_link($category->term_id) . '">'.$category->name . '</li>';
+//        }
+        ?>
+    </ul>-->
+<div id="ads_sidebar_container">
+    <?php if ( is_active_sidebar( 'shopsidead' ) ) : ?>
+       <?php dynamic_sidebar( 'shopsidead' ); ?>
+    <?php endif; ?>
+</div>
diff --git a/single.php b/single.php
new file mode 100644 (file)
index 0000000..ef8d645
--- /dev/null
@@ -0,0 +1,55 @@
+<?php get_header(); ?>
+<main class="blog-single">
+    <div id="header-image" class="page-header">
+        <?php echo glm_get_header();?>
+    </div>
+    
+    <div class="row">
+        <div id="blog-posts-over" class="small-12 medium-9 columns">
+            <?php if(have_posts()) : while(have_posts()): the_post();?>
+            <div class="row blog-post-container">
+                <div class="small-11 small-centered columns">
+                    <div class="row">
+                        <div class="small-12 columns">
+                            <article id="<?php the_ID()?>" <?php post_class()?>>
+                                <header class="entry-header">
+                                    <h2 class="entry-title single-title"><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h2>
+                                    <?php if ( has_post_thumbnail() ):?>
+                                             <?php if (get_post_type( $post ) != "ai1ec_event") { ?>
+                                        <div class="featured-image-wrap"><?php the_post_thumbnail("large"); ?></div>
+                                    <?php } ?>
+                                    <?php endif; ?>
+                                    <span class="meta date">Posted on <?php the_time('F jS, Y') ?></span>
+                                    <div id="addthis_wrapper">
+                                    <!-- AddThis Button BEGIN -->
+                                    <div class="addthis_toolbox addthis_default_style ">
+                                        <a class="addthis_counter addthis_pill_style"></a>
+                                    </div>
+                                    <script type="text/javascript">var addthis_config = {"data_track_addressbar":false};</script>
+                                    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5135fe4558d287a9"></script>
+                                    <!--                                        <script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js"></script>-->
+                                    <!-- AddThis Button END -->
+                                    </div><!--/#addthis_wrapper-->
+                                </header>
+                                <?php echo the_content(); ?>
+                                <?php if (!is_post_type("ai1ec_event")) { ?>
+                                
+                                <?php } ?>
+                            </article>
+                            <?php if ( comments_open() || get_comments_number() ) :
+                            comments_template();
+                            endif; ?>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <?php endwhile; ?>
+            <?php else: ?>
+            <div id="post-404" class="noposts">
+                <p><?php _e('Sorry, no results were found.');?></p>
+            </div><!-- /#post-404 -->
+            <?php endif;?>
+        </div>
+        <?php get_template_part('parts/blog-sidebar-r'); ?>
+    </div>
+    <?php get_footer(); ?>
\ No newline at end of file
diff --git a/style.css b/style.css
new file mode 100644 (file)
index 0000000..d728e0a
--- /dev/null
+++ b/style.css
@@ -0,0 +1,7 @@
+/*
+Theme Name: GenericFrance
+Author: Gaslight Media
+Author URI: http://www.gaslightmedia.com
+Description: A theme based off of FranceJourneys.
+Version: 1.0
+*/